commit
222e8f031c
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
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.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
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:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
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
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
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
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
@ -0,0 +1,133 @@
|
||||
algernon's layout
|
||||
=======================
|
||||
|
||||
This is an unconventional layout for the ErgoDox EZ. For more details about the
|
||||
history of the layout, see my
|
||||
[blog posts about my ErgoDox journey][blog-ergodox].
|
||||
|
||||
[blog-ergodox]: https://asylum.madhouse-project.org/blog/tags/ergodox/
|
||||
|
||||
Some of the things in the layout only work when one uses Spacemacs and GNOME
|
||||
under Linux. Your mileage may vary.
|
||||
|
||||
## Base layer
|
||||
|
||||
[![Base layer](images/base-layer.png)](http://www.keyboard-layout-editor.com/#/gists/28f7eb305fdbff943613e1dc7aa9e82b)
|
||||
|
||||
At its core, this is a Dvorak layout, with some minor changes (for example, `-`
|
||||
being on the left half, and on the innermost key of the bottom row on the
|
||||
right). The more interesting parts are how certain keys behave:
|
||||
|
||||
* The keys on the number row double as function keys, when held for a bit longer
|
||||
than an usual tap. This allows me to use the function keys without having to
|
||||
switch layers.
|
||||
* The `Shift`, `Alt`, and `Control` modifiers are one-shot. When tapped, they
|
||||
are considered active for the next key press only. When double tapped, they
|
||||
toggle on, until a third, single tap sometime later. When held, they act as
|
||||
expected. My usual pattern is that I use these for the next keypress only, so
|
||||
this behaviour is perfect. If I need them held, I'll just double-tap.
|
||||
* The `GUI` key is special, because when I double-tap it, it sends `GUI + w`,
|
||||
which pops up an application selector. It also switches to a one-shot layer,
|
||||
where the number row on the left half turns into app selector macros, for the
|
||||
most common things I usually want to switch to. Otherwise it behaves as on a
|
||||
normal layout.
|
||||
* The `ESC` key also doubles as a one-shot cancel key: if tapped while any of
|
||||
the one-shot modifiers are in-flight (as in, single-tapped, and not expired
|
||||
yet), it cancels all one-shot modifiers. Otherwise it sends the usual keycode.
|
||||
* The **Emacs** and **Hun** layer keys are one-shot, the **1Hand** is a toggle.
|
||||
* The **Lead** key allows me to type in a sequence of keys, and trigger some
|
||||
actions:
|
||||
- `LEAD u` enters unicode input mode, by sending the GTK+ key sequence that
|
||||
does this.
|
||||
- `LEAD l` uses the unicode input method to enter a `λ`.
|
||||
- `LEAD s` does a lot of magic to type in a shruggie: `¯\_(ツ)_/¯`
|
||||
- `LEAD w m` maximises the currently focused window.
|
||||
|
||||
## Hungarian layer
|
||||
|
||||
[![Hungarian layer](images/hun-layer.png)](http://www.keyboard-layout-editor.com/#/gists/b160f6ec90d58c127c114c89f66e9dc9)
|
||||
|
||||
On this layer, the accented characters are at the same position as their base
|
||||
variant. For some, which can have other diatribes, the long one is on top,
|
||||
short's on bottom. Tapping any of the accented characters takes us back to the
|
||||
base layer.
|
||||
|
||||
## Emacs layer
|
||||
|
||||
[![Emacs layer](images/emacs-layer.png)](http://www.keyboard-layout-editor.com/#/gists/c59c453f9fe1a3238ba1494e7e5c6892)
|
||||
|
||||
This layer is primarily for navigating text - and for some mousing and other
|
||||
things, because there was space. Most of the keys should be pretty
|
||||
self-explanatory, except for a few:
|
||||
|
||||
* There are three keys on the bottom row of the left side, that change how some
|
||||
of the other keys - explained just below - work. The keys are for *Emacs
|
||||
mode* (the default), *Terminal mode*, and *Traditional mode*, respectively.
|
||||
* The *Visual mode* key (the top big key on the left side) sends the `v` key in
|
||||
*Emacs mode*, to enter Visual mode in Spacemacs. In all other modes, it is a
|
||||
no-op.
|
||||
* The *Copy/Cut* key (the bottom big key on the left side) sends the copy
|
||||
command on tap, the cut one when held for longer than a normal tap. The **copy
|
||||
command** is `y` in *Emacs mode*, `Ctrl-Shift-c` in *Terminal mode*, and
|
||||
`Ctrl-c` in *Traditional mode*. The **cut command** is `x` in *Emacs mode*,
|
||||
`Ctrl-Shift-x` in *Terminal Mode* and `Ctrl-x` in *Traditional mode*.
|
||||
* The *Paste/Delete* key (the leftmost key on the left thumb cluster) sends the
|
||||
paste command on tap, the delete one when held longer than a normal tap. The
|
||||
**paste command** is `p` in *Emacs mode*, `Ctrl-Shift-v` in *Terminal mode*,
|
||||
and `Ctrl-v` in *Traditional mode*. The **delete command** is `d` in *Emacs
|
||||
mode*, and `DEL` in the other two.
|
||||
* The `A`, `I` and `R` keys will - after sending themselves - clear the layer
|
||||
back to the base layer. This allows a quick escape from the layer.
|
||||
|
||||
## One-handed layer
|
||||
|
||||
[![One-handed layer](images/one-handed-layer.png)](http://www.keyboard-layout-editor.com/#/gists/edff2495135955b8963198dace7f7ece)
|
||||
|
||||
The one-handed layer is used in situations where the right hand is occupied, by
|
||||
mousing around, for example. Tapping the `OTHER` key switches which side is
|
||||
active. For the most part, keys remain in their usual position. When the right
|
||||
half is active, keys are mirrored to the left half.
|
||||
|
||||
The differences are as follows:
|
||||
|
||||
* The `ESC` key has been moved to the bottom row, so the `OTHER` key is easier
|
||||
to tap.
|
||||
* Most keys on the thumb cluster now have dual uses, and these do not change
|
||||
when switching sides:
|
||||
- The `Space`/`Backspace` key sends `Space` on tap, `Backspace` when held
|
||||
for longer than a normal tap.
|
||||
- The `Enter`/`Shift` key sends `Enter` on short-tap, `Shift` on long-tap.
|
||||
* The `Apps`/`BASE` key can be used to go back to the base layer, by
|
||||
long-tapping it. A short-tap will send the `App` key, as usual.
|
||||
|
||||
# Building
|
||||
|
||||
To make my workflow easier, this layout is maintained in
|
||||
[its own repository][algernon:ez-layout]. To build it, you will need the
|
||||
[QMK][qmk] firmware checked out, and this repo either checked out, or symlinked
|
||||
to `keyboard/ergodox_ez/algernon`. One way to achieve that is this:
|
||||
|
||||
[algernon:ez-layout]: https://github.com/algernon/ergodox-layout
|
||||
[qmk]: https://github.com/jackhumbert/qmk_firmware
|
||||
|
||||
```
|
||||
$ git clone https://github.com/jackhumbert/qmk_firmware.git
|
||||
$ cd qmk_firmware/keyboard/ergodox_ez
|
||||
$ git clone https://github.com/algernon/ergodox-layout.git keymaps/algernon
|
||||
$ make KEYMAP=algernon
|
||||
```
|
||||
|
||||
From time to time, updates may be submitted back to the QMK repository. If you
|
||||
are reading it there, you can build the firmware like any other firmware
|
||||
included with it (assuming you are in the root directory of the firmware):
|
||||
|
||||
```
|
||||
$ cd keyboard/ergodox_ez
|
||||
$ make KEYMAP=algernon
|
||||
```
|
||||
|
||||
# License
|
||||
|
||||
The layout, being a derivative of the original TMK firmware which is under the
|
||||
GPL-2+, this layout is under the GPL as well, but GPL-3+, rather than the older
|
||||
version.
|
@ -0,0 +1,1259 @@
|
||||
:100000000C941C040C9463040C9463040C9463041B
|
||||
:100010000C9463040C9463040C9463040C946304C4
|
||||
:100020000C9463040C9463040C94D7130C94A914DB
|
||||
:100030000C945F220C9463040C9463040C9463048A
|
||||
:100040000C9463040C9463040C9463040C94630494
|
||||
:100050000C9463040C94C7220C9463040C94630402
|
||||
:100060000C9463040C9463040C9463040C94630474
|
||||
:100070000C9463040C9463040C9463040C94630464
|
||||
:100080000C9463040C9463040C9463040C94630454
|
||||
:100090000C9463040C9463040C9463040C94630444
|
||||
:1000A0000C9463040C9463040C9463041C065805BC
|
||||
:1000B00066056D0577059B05D505A60586058D05A5
|
||||
:1000C00093050A0610061606330536053B053E0560
|
||||
:1000D0004105440547054C054F0553065A06610680
|
||||
:1000E00068066F0676067606760676067606760645
|
||||
:1000F000760676067606760676069106A8067A06CF
|
||||
:10010000CB06DD06210516153815261638152616D8
|
||||
:100110007D15A0152616F51508167E187E18AA1846
|
||||
:10012000AA18ED180D19681A681A1819681AC5194D
|
||||
:10013000C519591A681A681A621AD219D219D2192D
|
||||
:10014000D219D219D219D219D219D219D219D21957
|
||||
:10015000D219D219D219D219D219E319F019F719F3
|
||||
:10016000FE19081A0128022800012C022C00012A7D
|
||||
:10017000022A00016502650001150215010B020B40
|
||||
:10018000011C021C01170217010B020B01100210C7
|
||||
:100190000105020501120212011B021B012802289F
|
||||
:1001A0000001060206010B020B01150215011202E5
|
||||
:1001B000120110021001280228000117021701087D
|
||||
:1001C0000208011502150110021001280228000181
|
||||
:1001D00008020801100210010402040106020601CF
|
||||
:1001E0001602160128022800011602160106020650
|
||||
:1001F000011802180107020701060206010F020F8B
|
||||
:100200000112021201180218010702070128022830
|
||||
:100210000001040204000115021500010C020C008B
|
||||
:1002200001E40119021902E40001E401E5011902E7
|
||||
:100230001902E502E400011302130002E501300295
|
||||
:10024000300113021301E500014C024C00010702CA
|
||||
:10025000070001E40106020602E40001E401E501F1
|
||||
:1002600006020602E502E400011C021C0001E40192
|
||||
:100270001B021B02E40001E401E5011B021B02E575
|
||||
:1002800002E400011B021B00011902190000810495
|
||||
:100290008900C800220024002135002B002D00AE6B
|
||||
:1002A000004A0000001C303400040033004D002CD4
|
||||
:1002B000301D30360012001400510003201E30376C
|
||||
:1002C0000008000D0052002A001F30130018000E15
|
||||
:1002D000003302052020301C000C001B000000042D
|
||||
:1002E0002065002F0000002602000002206500307B
|
||||
:1002F0000000002702000003552130090007000517
|
||||
:100300000000002A3022300A000B0010002D0014DB
|
||||
:10031000502330060017001A0050002C002430151E
|
||||
:1003200000110019004F00280025300F0016001D95
|
||||
:10033000004B000120263038003100AD004E000097
|
||||
:10034000000100010001000100010000001B30015C
|
||||
:10035000000100010001000100173001000100014F
|
||||
:10036000000100010018300100010001000100013E
|
||||
:10037000001930010001000100010001001A3001E4
|
||||
:100380000001000100000001000100010000000167
|
||||
:100390000000000100010001000000010000000158
|
||||
:1003A0000000000100010001000000010000000148
|
||||
:1003B0000001000100010001000000010001000136
|
||||
:1003C0000001000100000001000100010001000126
|
||||
:1003D0000000000100010001000100010001000116
|
||||
:1003E0000001000100010000000000000000000109
|
||||
:1003F0000001000000000000000E300000010001BC
|
||||
:1004000000000015300F3013300100010000000023
|
||||
:1004100000103000000100010000001630113014FF
|
||||
:100420003000000100000000001230000000000158
|
||||
:1004300000010000000000000000000100010000B9
|
||||
:1004400000000000000000000000000000000000AC
|
||||
:10045000000000000000000000000000000000009C
|
||||
:10046000000000000000000000010001000000008A
|
||||
:10047000000000000001000100000000000000007A
|
||||
:10048000000100002000000000000000000100004A
|
||||
:1004900000FD00FE00FF00AE00083000001C300030
|
||||
:1004A000000D300000093001001D304A0050004DA1
|
||||
:1004B000000A3001001E30520051005100000006B9
|
||||
:1004C000301F304B004F004E000000010020300074
|
||||
:1004D000000B301B00000001000F08053000000772
|
||||
:1004E00030000001000F08F9000000FA00000001D0
|
||||
:1004F0000021302102070000000000F60022300138
|
||||
:1005000030F2000330A900AC002330F000F1001AF3
|
||||
:1005100000AA00F50024300230F3000430A800F4F3
|
||||
:100520000025300C30000000000000AB00263046F3
|
||||
:10053000000000AD000000000035002B002D00AED3
|
||||
:10054000004A0000001C303400040033004D002B32
|
||||
:10055000301D30360012001400510028301E303794
|
||||
:100560000008000D00520027301F30130018000E45
|
||||
:10057000002C30010020301C000C001B000000018A
|
||||
:100580000029302F000000260200000100000000BA
|
||||
:10059000000000000000000000000000000000005B
|
||||
:1005A000000000000000000000000000000000004B
|
||||
:1005B000000000000000000000000000000000003B
|
||||
:1005C000000000000000000000000000000000002B
|
||||
:1005D000000000000000000000000000000000001B
|
||||
:1005E00000263038003100AD004E00000025300FED
|
||||
:1005F0000016001D004B002A302430150011001990
|
||||
:10060000004F0028302330060017001A0050002742
|
||||
:100610003022300A000B0010002C3001002130097C
|
||||
:10062000000700050000000100293030000000270D
|
||||
:1006300002000001000000000000000000000000B7
|
||||
:1006400000000000000000000000000000000000AA
|
||||
:10065000000000000000000000000000000000009A
|
||||
:10066000000000000000000000000000000000008A
|
||||
:10067000000000000000000000000000000000007A
|
||||
:100680000000000000000000001603450072006733
|
||||
:10069000006F0044006F007800200045005A000001
|
||||
:1006A0000016034500720067006F0044006F007879
|
||||
:1006B00000200045005A0000000403090409026DEF
|
||||
:1006C00000040100A0FA090400000103010100096F
|
||||
:1006D0002111010001223F000705810308000A09DA
|
||||
:1006E0000401000103010200092111010001224D52
|
||||
:1006F000000705820308000A090402000103000044
|
||||
:1007000000092111010001223600070583030800BA
|
||||
:100710000A0904030001030000000921110100017E
|
||||
:1007200022390007058403100001120110010000A6
|
||||
:100730000008EDFE07130100010200010501090692
|
||||
:10074000A101050719E029E71500250195087501A4
|
||||
:100750008102050819012905950575019102950188
|
||||
:100760007503910105071900297715002501957872
|
||||
:1007700075018102C005010980A1018502160100F1
|
||||
:1007800026B7001A01002AB700751095018100C034
|
||||
:10079000050C0901A1018503160100269C021A011E
|
||||
:1007A000002A9C02751095018100C005010902A173
|
||||
:1007B000010901A100050919012905150025019567
|
||||
:1007C0000575018102950175038101050109300953
|
||||
:1007D000311581257F950275088106093815812517
|
||||
:1007E0007F950175088106050C0A38021581257F61
|
||||
:1007F000950175088106C0C005010906A10105071C
|
||||
:1008000019E029E715002501950875018102950178
|
||||
:1008100075088101050819012905950575019102E1
|
||||
:100820009501750391010507190029FF150025FFA2
|
||||
:10083000950675088100C00011241FBECFEFDAE0D5
|
||||
:10084000DEBFCDBF04B603FE27C080914402909165
|
||||
:100850004502A0914602B09147028730904BA740D5
|
||||
:10086000B04BD1F41092440210924502109246020D
|
||||
:100870001092470214BE84B7877F84BF0FB6F894E6
|
||||
:10088000A89580916000886180936000109260005C
|
||||
:100890000FBEE0E0FFE3099511E0A0E0B1E0E2E483
|
||||
:1008A000FEE402C005900D92A035B107D9F722E011
|
||||
:1008B000A0E5B1E001C01D92A434B207E1F70E94A7
|
||||
:1008C0001A110C941F270C940000FF920F931F9392
|
||||
:1008D000CF93DF93EB01F42EFC018281882309F48E
|
||||
:1008E00058C082E00E942B1FE0910E01F0910F0191
|
||||
:1008F000808181FF05C081EE0E940F1811E001C0C8
|
||||
:1009000010E00E94772181FF0AC00E941D20811102
|
||||
:1009100006C081EE0E940F1810E001E001C0012F17
|
||||
:100920000E94702186EE0E947B1786EE0E940F18AF
|
||||
:10093000C433F2E0DF0719F485EE0E947B178C2F99
|
||||
:100940000E947B178C2F0E940F18002341F0C433A4
|
||||
:1009500082E0D80759F085EE0E947B1707C0C433A8
|
||||
:10096000E2E0DE0719F485EE0E940F188F2D0E9439
|
||||
:100970007B178F2D0E940F18011103C0C433D24082
|
||||
:1009800019F485EE0E940F18112319F081EE0E94D0
|
||||
:100990007B1780E090E0DF91CF911F910F91FF9046
|
||||
:1009A00008950F931F93CF93DF931F92CDB7DEB7B8
|
||||
:1009B00024EE260FFC018281022F10E0882381F0B3
|
||||
:1009C0000E9491229801220F331F225E3D4FF901B0
|
||||
:1009D000918380830F90DF91CF911F910F910895A4
|
||||
:1009E000C801880F991F825E9D4FFC018081918113
|
||||
:1009F00069830E949D226981893C910510F0625EA5
|
||||
:100A000005C0663211F06E5F01C06EE2862F698309
|
||||
:100A10000E947B176981862F0F90DF91CF911F91E4
|
||||
:100A20000F910C940F18CF93DF93EC01462F50E0F9
|
||||
:100A30004D32510508F0EBC1FA01EA5AFF4F0C9410
|
||||
:100A4000CF268A81882369F00E947721882339F094
|
||||
:100A50000E941D20811103C00E947021D8C189E22B
|
||||
:100A600097C189E291C144E050E002C042E150E008
|
||||
:100A700064E370E018C048E050E0FACF48E150E08D
|
||||
:100A8000F7CF4CE050E0F4CF42E150E002C048E143
|
||||
:100A900050E064E372E007C042E150E002C048E188
|
||||
:100AA00050E06EE270E0CE01DF91CF910C946504CE
|
||||
:100AB0008A81882311F080EF14C080EF0E944924BE
|
||||
:100AC00082EF0E9449240E94CE24A1C18A818823FA
|
||||
:100AD00011F080EF10C080EF15C08A81882329F0C3
|
||||
:100AE00081EF0E94E12382EF09C081EFE7CF8A8185
|
||||
:100AF000882339F081EF0E94E12383EF0E94E123F4
|
||||
:100B0000E2CF81EF0E94492483EFDBCF8A818823E3
|
||||
:100B100009F47DC1109250017AC18A81882309F4B9
|
||||
:100B200076C181E005C08A81882309F470C182E022
|
||||
:100B3000809350016CC180915001811168C18A81FC
|
||||
:100B4000882309F464C188E892E063C18A8188231C
|
||||
:100B500039F00E9491229093600180935F0157C108
|
||||
:100B600080915F01909160010E949D22209150012F
|
||||
:100B7000893C910568F0213041F008F430C1223001
|
||||
:100B800009F045C18DE692E044C186E792E041C19B
|
||||
:100B9000213041F008F426C1223009F038C182E545
|
||||
:100BA00092E037C18BE592E034C18A81882339F025
|
||||
:100BB0000E949122909362018093610128C18091EB
|
||||
:100BC0006101909162010E949D2220915001893C17
|
||||
:100BD000910548F0222309F408C1233008F017C119
|
||||
:100BE00088E492E016C1213009F402C130F02230CD
|
||||
:100BF00009F00DC180E292E00CC1E0910E01F0918C
|
||||
:100C00000F01808185FFF7C085EE0E940F188BE3EE
|
||||
:100C100092E0FFC08A818111F1C00E94EB1EF7C0F3
|
||||
:100C20008A818823D1F386E192E0F3C08A81882308
|
||||
:100C3000A1F381E192E0EDC08A81882309F183EE7E
|
||||
:100C40000E947B178D81982F907F91F080FD10C0BE
|
||||
:100C500082958F7090E0029774F08AE10E947B1772
|
||||
:100C600081E00E940A1F63E081E00E94752003C0BA
|
||||
:100C70008D818F708D8310925E0110925D01C7C0CF
|
||||
:100C80008D8182958F7090E0029734F08AE10E9406
|
||||
:100C90000F1881E00E948C200E94912290935E01A7
|
||||
:100CA00080935D01B4C08A81882309F4B0C088EEC6
|
||||
:100CB00091E0AFC08A81882309F4A9C08FEC91E04C
|
||||
:100CC000A8C08A81882309F4A2C08AEB91E0A1C060
|
||||
:100CD0008A81882309F49BC081EA91E09AC08A81C5
|
||||
:100CE000882309F494C088E791E093C0CE010E9464
|
||||
:100CF000D1048DC08A81882339F00E94912290937B
|
||||
:100D00005C0180935B0183C080915B0190915C01E9
|
||||
:100D10000E949D22893C910508F07FCF83E791E0F6
|
||||
:100D200078C08A81882339F00E94912290935A01D9
|
||||
:100D3000809359016CC08091590190915A010E9491
|
||||
:100D40009D22893C910508F05CC089E691E061C074
|
||||
:100D50008A81882339F00E949122909358018093D0
|
||||
:100D6000570155C080915701909158010E949D22D2
|
||||
:100D7000893C910508F448C0E0910E01F0910F0103
|
||||
:100D8000808181FF04C081EE0E940F1840C081EE77
|
||||
:100D90000E947B173CC08A818823C9F184E00E94AD
|
||||
:100DA000F51E81E0809356010E9491229093550197
|
||||
:100DB00080935401259A2D9A2AC08A81882339F17B
|
||||
:100DC00085E00E94F51E81E0809353010E949122EC
|
||||
:100DD0009093520180935101279A2F9A18C083E86B
|
||||
:100DE00092E017C088E692E014C08DE492E011C052
|
||||
:100DF00089E292E00EC086E392E00BC08BE192E0C4
|
||||
:100E000008C08EE691E005C084E691E002C080E073
|
||||
:100E100090E0DF91CF9108958FE090E0909389006A
|
||||
:100E20008093880090938B0080938A0090938D002C
|
||||
:100E300080938C00569A5E9A259A2D9A269A2E9A1D
|
||||
:100E4000279A2F9A2FEF83ED90E321508040904016
|
||||
:100E5000E1F700C0000056985E9825982D982698D6
|
||||
:100E60002E9827982F98089584EE0E947B1785EE80
|
||||
:100E70000E947B1788E10E947B1788E10E940F186F
|
||||
:100E800085EE0E940F1884EE0C940F180F931F9399
|
||||
:100E9000CF93DF93EC018E0188819981009741F017
|
||||
:100EA0000E947B172296F80180810E940F18F3CFD1
|
||||
:100EB000DF91CF911F910F9108951F93CF93DF93EF
|
||||
:100EC000CDB7DEB76A970FB6F894DEBF0FBECDBFC1
|
||||
:100ED0006091EC017091ED018091EE019091EF0134
|
||||
:100EE0000E94CD21182F80915D0190915E010097A5
|
||||
:100EF00041F00E949D22893C910518F083EE0E94EA
|
||||
:100F00000F18143049F410925301123051F4269AFC
|
||||
:100F10002E9A279A2F9A0BC010925601153099F7E6
|
||||
:100F200006C0133021F4259A2D9A269A2E9A8CEF1A
|
||||
:100F3000810F823008F050C0269A2E9A8091560177
|
||||
:100F4000882319F180915401909155010E949D22AE
|
||||
:100F5000853F914048F0E0910E01F0910F018081B2
|
||||
:100F600081FD02C025982D988091540190915501E2
|
||||
:100F70000E949D22893E934040F0259A2D9A0E941E
|
||||
:100F800091229093550180935401809153018823BD
|
||||
:100F900019F180915101909152010E949D22853F4B
|
||||
:100FA000914048F0E0910E01F0910F01808180FDA9
|
||||
:100FB00002C027982F9880915101909152010E9470
|
||||
:100FC0009D22893E934040F0279A2F9A0E949122B9
|
||||
:100FD0009093520180935101E0910E01F0910F0125
|
||||
:100FE000808181FF09C08FEF90E09093890080930A
|
||||
:100FF0008800259A2D9A14C00E94772181FF04C091
|
||||
:101000000E941D20882379F38FE090E0909389005F
|
||||
:10101000809388008DEF810F823010F025982D98F5
|
||||
:10102000E0910E01F0910F01808182FF09C08FEFE6
|
||||
:1010300090E090938B0080938A00269A2E9A14C099
|
||||
:101040000E94772182FF04C00E941D20882379F32B
|
||||
:101050008FE090E090938B0080938A008EEF810F59
|
||||
:10106000843010F026982E98E0910E01F0910F0137
|
||||
:10107000808180FF09C08FEF90E090938D00809376
|
||||
:101080008C00279A2F9A14C00E94772180FF04C0F9
|
||||
:101090000E941D20882379F38FE090E090938D00CB
|
||||
:1010A00080938C00153021F0123011F027982F9882
|
||||
:1010B00080918C01882309F410C180918A0190915C
|
||||
:1010C0008B010E949D22893E934008F406C1109234
|
||||
:1010D0008C010E94CF0B80918401909185014897EB
|
||||
:1010E00071F48091860190918701892B41F4809160
|
||||
:1010F000880190918901892B11F40E943407809115
|
||||
:101100008401909185010F97D9F480918601909187
|
||||
:101110008701892BA9F48091880190918901892BFD
|
||||
:1011200079F40E9434078CE0E5E1F1E0DE011196EC
|
||||
:1011300001900D928A95E1F7CE0101960E94460733
|
||||
:101140008091840190918501469709F086C0809135
|
||||
:10115000860190918701892B09F07FC080918801D9
|
||||
:1011600090918901892B09F078C00E94340784E0AE
|
||||
:101170000E947B1784E00E940F1889E00E947B1771
|
||||
:1011800089E00E940F188CE20E947B178CE20E947B
|
||||
:101190000F1881E30E947B1781E30E940F1885EEF0
|
||||
:1011A0000E947B178DE20E947B178DE20E940F1830
|
||||
:1011B00086E20E947B1786E20E940F1885EE0E944D
|
||||
:1011C0000F180E94340780E20E947B1780E20E9481
|
||||
:1011D0000F1887E20E947B1787E20E940F1886E0B3
|
||||
:1011E0000E947B1786E00E940F1881E20E947B1705
|
||||
:1011F00081E20E940F188CE20E947B178CE20E9411
|
||||
:101200000F1885EE0E947B1787E20E947B1787E20A
|
||||
:101210000E940F188DE20E947B178DE20E940F182A
|
||||
:1012200085EE0E940F1888E30E947B1788E30E94D6
|
||||
:101230000F180E94340784E00E947B1784E00E940C
|
||||
:101240000F1889E00E947B1789E00E940F188CE23A
|
||||
:101250000E947B178CE20E940F188091840190916C
|
||||
:1012600085014A97D1F58091860190918701409739
|
||||
:10127000A1F58091880190918901892B71F582EE09
|
||||
:101280000E947B178BE30E947B178BE30E940F1851
|
||||
:1012900082EE0E940F188FEF93ED20E38150904073
|
||||
:1012A0002040E1F700C000008AE1E1E2F1E0DE0168
|
||||
:1012B000119601900D928A95E1F7CE0101960E9458
|
||||
:1012C000460783EE0E947B1782E50E947B1782E52A
|
||||
:1012D0000E940F1883EE0E940F186A960FB6F894BA
|
||||
:1012E000DEBF0FBECDBFDF91CF911F9108950C944B
|
||||
:1012F0005D0756985E9825982D9826982E982798E1
|
||||
:101300002F988FEF90E090938900809388009093BE
|
||||
:101310008B0080938A0090938D0080938C00259A97
|
||||
:101320002D9A2FEF80E792E0215080409040E1F726
|
||||
:1013300000C00000269A2E9A2FEF80E792E02150FD
|
||||
:1013400080409040E1F700C00000279A2F9A2FEFCD
|
||||
:1013500080E792E0215080409040E1F700C000001B
|
||||
:1013600025982D982FEF80E792E021508040904003
|
||||
:10137000E1F700C0000026982E982FEF80E792E05A
|
||||
:10138000215080409040E1F700C0000027982F983E
|
||||
:1013900056985E9825982D9826982E9827982F98DD
|
||||
:1013A000089589EA8093800089E0809381002498E1
|
||||
:1013B0002C983F988AB18F748AB96E98479A8BB1EE
|
||||
:1013C000806B8BB9769A0E9479090C940C0780E2A5
|
||||
:1013D000809300018091630181110EC00E94360A42
|
||||
:1013E00081E0809363012FEF83ED90E321508040F3
|
||||
:1013F0009040E1F700C0000080E40E943C0A809326
|
||||
:10140000000181112EC00E94660A809300018111A3
|
||||
:1014100028C00E94660A80930001811122C08FE3D8
|
||||
:101420000E94660A8093000181111BC00E945E0A1F
|
||||
:1014300080E40E943C0A80930001811112C08CE07C
|
||||
:101440000E94660A8093000181110BC00E94660A07
|
||||
:1014500080930001811105C08FE30E94660A80938A
|
||||
:1014600000010E945E0A8091000108951092B90067
|
||||
:101470008AE08093B800089594EA9093BC0090911C
|
||||
:10148000BC0097FFFCCF9091B900987F983021F075
|
||||
:10149000903111F081E008958093BB0084E880933F
|
||||
:1014A000BC008091BC0087FFFCCF8091B900887F91
|
||||
:1014B000883111F0803471F780E0089584E98093D9
|
||||
:1014C000BC008091BC0084FDFCCF08958093BB00DC
|
||||
:1014D00084E88093BC008091BC0087FFFCCF909192
|
||||
:1014E000B900987F81E0983209F480E0089584E89B
|
||||
:1014F0008093BC008091BC0087FFFCCF8091BB0033
|
||||
:10150000089580910001811115C080E40E943C0A79
|
||||
:101510008093000181110CC082E10E94660A8093D1
|
||||
:101520000001811105C08FEF0E94660A80930001BF
|
||||
:101530000E945E0A84B1807F84B985B1807F85B9BD
|
||||
:101540008AB1837F8AB98BB1837F8BB93E984698E5
|
||||
:1015500008950E94E709809300010E94810A80B3E8
|
||||
:101560008C7080BB81B3836F81BBA5E6B1E0E3E7FC
|
||||
:10157000F1E08EE08E0F11921D928E13FCCF0C9431
|
||||
:10158000D109BF92CF92DF92EF92FF920F931F93F8
|
||||
:10159000CF93DF9380910001882379F080916401DB
|
||||
:1015A0008F5F80936401811108C00E94E7098093D6
|
||||
:1015B0000001811102C00E94790905E611E0C0E036
|
||||
:1015C000D0E0DD24D39482E0C82EEE24E394F12C05
|
||||
:1015D000C730D10500F580910001811164C080E41D
|
||||
:1015E0000E943C0A80930001811112C082E10E9496
|
||||
:1015F000660A8093000181110BC0C7010C2E01C047
|
||||
:10160000880F0A94EAF780950E94660A8093000189
|
||||
:101610000E945E0A48C0CA30A1F028F4C83059F0D0
|
||||
:10162000C93061F005C0CC3089F070F0CD3089F060
|
||||
:10163000209A289810C0219A29980DC0229A2A9899
|
||||
:101640000AC0239A2B9807C0529A01C0539A5B98FC
|
||||
:1016500002C03E9A469890EA9A95F1F79FB179991F
|
||||
:1016600002C082E001C080E091709D25982B7C999A
|
||||
:1016700002C084E001C080E0892B7D9902C038E07F
|
||||
:1016800001C030E0832B7E9902C020E101C020E040
|
||||
:10169000822B9FB19095991F9927991F9295990F29
|
||||
:1016A000907E892B0FC080910001811149C080E498
|
||||
:1016B0000E943C0A80930001882379F1B12C0E949A
|
||||
:1016C0005E0A8B2DF8019081981719F08083C092E3
|
||||
:1016D00001010E94810A21960F5F1F4FCE30D10574
|
||||
:1016E00009F076CF80910101882361F181508093C8
|
||||
:1016F0000101882339F08FE99FE00197F1F700C0DD
|
||||
:10170000000020C0A3E7B1E0E5E6F1E0CF01825F91
|
||||
:1017100091919D938E13FCCF15C083E10E94660AC0
|
||||
:10172000809300018111CACF81E40E943C0A80931A
|
||||
:1017300000018111C3CF0E94770AB82EB094BFCFA9
|
||||
:1017400080E0C0CF0E94770981E0DF91CF911F91A7
|
||||
:101750000F91FF90EF90DF90CF90BF900895E82F0A
|
||||
:10176000F0E0ED58FE4F8081089508950F931F9388
|
||||
:10177000CF93DF93C3E7D1E010E00C2F025F899194
|
||||
:1017800090E00E94C121180F0C13F9CF812FDF9137
|
||||
:10179000CF911F910F91089581E0089508950895C4
|
||||
:1017A0000F931F93CF93DF938C01FC01C081D181F4
|
||||
:1017B000CE010E94C61FBE010E946F0CEC01F80111
|
||||
:1017C0008281882309F446C080918C0181111FC059
|
||||
:1017D000C431F0E5DF0709F04DC00E94CE0B81E077
|
||||
:1017E00080938C010E94912290938B0180938A01B7
|
||||
:1017F000109283011092850110928401109287014A
|
||||
:1018000010928601109289011092880161C0809126
|
||||
:101810008A0190918B010E949D22883E934070F432
|
||||
:1018200080918301E82FF0E0EE0FFF1FEC57FE4F91
|
||||
:10183000D183C0838F5F809383014AC0C43880E521
|
||||
:10184000D807B9F5F8018281882341F0109281010F
|
||||
:1018500082E01EC0C43880E5D80759F58091810127
|
||||
:10186000811106C086E20E947B1786E20E940F1853
|
||||
:1018700082E01CC0C438F0E5DF0741F3C538D0452D
|
||||
:10188000D9F4F8018281882331F01092820180E23C
|
||||
:101890000E9437181DC080918201811106C087E225
|
||||
:1018A0000E947B1787E20E940F1880E20E943E1878
|
||||
:1018B0000FC0C538D04529F381E080938101809322
|
||||
:1018C0008201C801DF91CF911F910F910C94CC0B35
|
||||
:1018D00080E0DF91CF911F910F910895089596E0D8
|
||||
:1018E000799FF001112494E5899FE00DF11D1124E9
|
||||
:1018F000E60FF11DEE0FFF1FE756FD4F8591949106
|
||||
:101900000895880F991FFC01E35FFE4F8591949124
|
||||
:101910000895880F991FFC01E357FD4F859194911D
|
||||
:1019200008950F931F93CF93DF93EC01811590439C
|
||||
:1019300050F5C11580E2D80708F0C3C0CB3BD105F4
|
||||
:1019400090F4C83AD10508F06AC0C53AD10508F04C
|
||||
:101950005BC0C430D10508F0D0C1219709F0CAC1DD
|
||||
:1019600001E010E00AC2CF3FD10511F008F0C5C177
|
||||
:10197000C03FD10508F0A2C0CE01805E9109089752
|
||||
:1019800008F4BBC1B7C1C13090E5D90709F4A2C0C2
|
||||
:1019900020F5C0318FE4D80770F4C11590E4D90761
|
||||
:1019A00008F094C0C11521E3D20708F0A3C1DD27D8
|
||||
:1019B0008E01106CE2C1C115D04509F09BC10E9497
|
||||
:1019C000CD1A8FEF94E32CE0815090402040E1F756
|
||||
:1019D00000C000000E94EC22D0C1C11597E5D907D4
|
||||
:1019E00058F4C03121E5D20708F01CC1C43180E5AC
|
||||
:1019F000D80708F475C07EC1CE019057811590417B
|
||||
:101A000008F078C1DF7073C1C53AD10509F477C118
|
||||
:101A1000C63AD10509F076C102E810E4AEC1C83A71
|
||||
:101A2000D10509F472C1C93AD10509F471C1CA3AA4
|
||||
:101A3000D10509F470C1CB3AD10509F46FC1CC3A94
|
||||
:101A4000D10509F46EC1CD3AD10509F46DC1C03B91
|
||||
:101A5000D10509F46CC1CE3AD10509F46BC1CF3A76
|
||||
:101A6000D10509F46AC1C13BD10509F469C1C23B82
|
||||
:101A7000D10509F468C1C33BD10509F467C1C43B72
|
||||
:101A8000D10509F466C1C53BD10509F465C1C63B62
|
||||
:101A9000D10509F464C1C73BD10509F463C1C83B52
|
||||
:101AA000D10509F462C1C93BD10509F461C1CA3B42
|
||||
:101AB000D10509F460C100E014E45FC18E01106536
|
||||
:101AC0005CC1CE019F700E94890C58C1DF708E01ED
|
||||
:101AD000106A53C180910E02816080930E024DC145
|
||||
:101AE0000E944323811102C00E9429230E94562391
|
||||
:101AF00090E09093440280934302C23080E5D8077F
|
||||
:101B000021F480914302816086C0C43090E5D907FA
|
||||
:101B100021F48091430282607EC0C63020E5D20766
|
||||
:101B200021F480914302846076C0C83080E5D807F4
|
||||
:101B300019F48091430227C0CA3090E5D90721F4F7
|
||||
:101B400080914302806167C0CC3020E5D20721F448
|
||||
:101B50008091430280625FC0CE3080E5D80721F4D7
|
||||
:101B600080914302806457C0C03190E5D90721F4C9
|
||||
:101B70008091430280684FC0C23120E5D20729F42A
|
||||
:101B8000809143028460886046C0C33080E5D807F6
|
||||
:101B900021F4809143028E7F3EC0C53090E5D90785
|
||||
:101BA00021F4809143028D7F36C0C73020E5D207F3
|
||||
:101BB00021F4809143028B7F2EC0C93080E5D80785
|
||||
:101BC00019F48091430226C0CB3090E5D90721F467
|
||||
:101BD000809143028F7E1FC0CD3020E5D20721F4D3
|
||||
:101BE000809143028F7D17C0CF3080E5D80721F464
|
||||
:101BF000809143028F7B0FC0C13190E5D90721F45A
|
||||
:101C0000809143028F7707C0C331D04531F4809172
|
||||
:101C100043028B7F877F80934302809143020E941F
|
||||
:101C20005A23ABC08D2F99278F709927813091054A
|
||||
:101C3000D9F49E012370332702C0880F991F2A957B
|
||||
:101C4000E2F79C688E0144E0000F111F4A95E1F70E
|
||||
:101C500000271370802B912B53E0CC0FDD1F5A957A
|
||||
:101C6000E1F7C076DD272FC08230910531F4DC2FFB
|
||||
:101C7000CC278E01016F106A80C08330910569F412
|
||||
:101C8000CE018370992701E010E002C0000F111F00
|
||||
:101C90008A95E2F7C8019C680FC084309105B9F4B9
|
||||
:101CA000CE018370992701E010E002C0000F111FE0
|
||||
:101CB0008A95E2F7C8019A6823E0CC0FDD1F2A95C8
|
||||
:101CC000E1F7C07ED7708C010C2B1D2B56C08530E0
|
||||
:101CD000910531F4DC2FCC278E01046F106A4DC0C2
|
||||
:101CE000069709F04AC0CF71DD27DC2FCC278E0183
|
||||
:101CF000106243C000E010E040C08E013EC001E829
|
||||
:101D000010E43BC003E810E438C002EE14E435C030
|
||||
:101D100009EE14E432C00AEE14E42FC005EB14E41B
|
||||
:101D20002CC006EB14E429C007EB14E426C00CEC2D
|
||||
:101D300014E423C00DEC14E420C003E815E41DC036
|
||||
:101D40000AE815E41AC002E915E417C004E915E42D
|
||||
:101D500014C001E216E411C003E216E40EC004E26E
|
||||
:101D600016E40BC005E216E408C006E216E405C05E
|
||||
:101D700007E216E402C00AE216E4C801DF91CF913F
|
||||
:101D80001F910F91089596E0799FF001112494E539
|
||||
:101D9000899FE00DF11D1124E60FF11DEE0FFF1FCD
|
||||
:101DA000E756FD4F85919491803E9105E0F4803C8B
|
||||
:101DB000910558F58133910509F46FC048F48932D3
|
||||
:101DC000910509F463C08A32910509F46DC072C0AF
|
||||
:101DD00089339105E9F082389105D1F08533910579
|
||||
:101DE00009F44DC067C0833E910581F138F4803E0F
|
||||
:101DF0009105B9F0823E9105D9F05CC0863E91050F
|
||||
:101E000061F1873E9105A1F155C00E94810C0895B2
|
||||
:101E10002091430220FD02C021FF4CC080EE90E0E3
|
||||
:101E200049C08091430280FFF9CF89E390E042C02E
|
||||
:101E30008091430282FF0EC08091430284FF03C061
|
||||
:101E400080E090E037C083EE90E034C080914302A0
|
||||
:101E500082FFF2CF82EE90E02DC08091430283FF9B
|
||||
:101E60000BC08091430284FDEBCF87EE90E022C04F
|
||||
:101E70008091430283FFF5CF86EE90E01BC08091F6
|
||||
:101E8000430285FF07C089E290E014C080914302BD
|
||||
:101E900085FFF9CF85E390E00DC08091430286FF76
|
||||
:101EA00007C08AE290E006C08091430286FFF9CF26
|
||||
:101EB00081E390E00E94910C089508950C945D0FC9
|
||||
:101EC00080919D010895CF93DF9300D01F92CDB7ED
|
||||
:101ED000DEB79C0180913A02843019F593E0998332
|
||||
:101EE0003B832A839093E9008FEF9091E800815023
|
||||
:101EF00095FD06C095ED9A95F1F700008111F5CF9B
|
||||
:101F00008091E80085FF0DC040E050E063E070E0A4
|
||||
:101F1000CE0101960E94C7118091E8008E778093D0
|
||||
:101F2000E8000F900F900F90DF91CF910895CF931D
|
||||
:101F3000DF9300D01F92CDB7DEB720913A02243054
|
||||
:101F400021F522E029839B838A8383E08093E90043
|
||||
:101F50008FEF9091E800815095FD06C095ED9A9520
|
||||
:101F6000F1F700008111F5CF8091E80085FF0DC0E9
|
||||
:101F700040E050E063E070E0CE0101960E94C7119E
|
||||
:101F80008091E8008E778093E8000F900F900F907B
|
||||
:101F9000DF91CF91089520913A022430F1F422E0AC
|
||||
:101FA0002093E9002FEF3091E800215035FD06C065
|
||||
:101FB00035ED3A95F1F700002111F5CF2091E800B9
|
||||
:101FC00025FF0BC040E050E065E070E00E94C711C3
|
||||
:101FD0008091E8008E778093E8000895CF93DF9397
|
||||
:101FE000EC0190913A02943009F046C080910C01C6
|
||||
:101FF0008823D9F080910D018823B9F09093E900EE
|
||||
:102000008FEF9091E800815095FD06C095E19A957B
|
||||
:10201000F1F700008111F5CF8091E80085FF2CC019
|
||||
:1020200040E050E060E170E017C081E08093E9009B
|
||||
:102030008FEF9091E800815095FD06C095ED9A953F
|
||||
:10204000F1F700008111F5CF8091E80085FF14C001
|
||||
:1020500040E050E068E070E0CE010E94C71180913E
|
||||
:10206000E8008E778093E80080E1FE01ADE8B1E002
|
||||
:1020700001900D928A95E1F7DF91CF9108958091BB
|
||||
:102080003902811109C00E945C130E94B91380912A
|
||||
:10209000E20084608093E20008951092390208956E
|
||||
:1020A000089508950C94592242E061EC81E00E9469
|
||||
:1020B000D61242E061EC82E00E94D61242E061EC6E
|
||||
:1020C00083E00E94D61242E161EC84E00C94D612C7
|
||||
:1020D00080913C02833009F455C030F4813071F0B6
|
||||
:1020E000823009F48EC008958A3009F47AC08B30AA
|
||||
:1020F00009F460C0893009F09CC020C080913B0287
|
||||
:10210000813A09F096C08091E800877F8093E800CB
|
||||
:1021100080913F0290914002892B21F460E18DE88B
|
||||
:1021200091E003C060E080E090E070E00E94121255
|
||||
:102130008091E8008B778093E800089580913B02BE
|
||||
:10214000813209F076C080913F0290914002009761
|
||||
:1021500019F0039709F06DC08091E800877F8093A4
|
||||
:10216000E8008091E80082FD05C080913A0281116B
|
||||
:10217000F8CF5FC08091F10080939D018091E800CD
|
||||
:102180008B7753C080913B02813A09F052C0809115
|
||||
:102190003F0290914002892B09F04BC08091E800EA
|
||||
:1021A000877F8093E8008091E80080FFFCCF8091DA
|
||||
:1021B0000C0136C080913B028132D9F580913F02FB
|
||||
:1021C00090914002892BA9F58091E800877F809348
|
||||
:1021D000E8000E940B1380913D0280930C010C9447
|
||||
:1021E000CD1A80913B02813221F58091E800877FF2
|
||||
:1021F0008093E8000E940B1380913E0280939E0121
|
||||
:10220000089580913B02813AA1F48091E800877F94
|
||||
:102210008093E8008091E80080FFFCCF80919E01D0
|
||||
:102220008093F1008091E8008E778093E8000C9411
|
||||
:102230000B13089584B7877F84BF0FB6F894A895D1
|
||||
:1022400080916000886180936000109260000FBEF2
|
||||
:1022500090E080E80FB6F89480936100909361005D
|
||||
:102260000FBE0E94AE160E945C130E94B9138091AB
|
||||
:10227000E20084608093E20078940E943F160E94FE
|
||||
:10228000B01682E091E00E945A1680913A028530A1
|
||||
:1022900069F40E941D22809138028823B1F30E94C4
|
||||
:1022A0004B22882391F30E94B111EFCF0E94B61602
|
||||
:1022B000ECCF292F332723303105C9F064F42130C6
|
||||
:1022C000310581F02230310509F043C08DE690E000
|
||||
:1022D0002DEB36E042C021323105F1F022323105DA
|
||||
:1022E00041F137C082E190E02AE237E036C0992719
|
||||
:1022F0008130910541F08230910541F0892B49F5FB
|
||||
:10230000E9EBF6E005C0E1EAF6E002C0E9E8F6E054
|
||||
:10231000849190E09F0121C06430D8F4E62FF0E072
|
||||
:10232000EE0FFF1FE95BFE4F2081318189E090E0D5
|
||||
:1023300014C0643070F470E0FB01EE0FFF1FE15C2D
|
||||
:10234000FE4F20813181FB01E55CFE4F808190E0F2
|
||||
:1023500004C080E090E020E030E0FA013183208387
|
||||
:10236000089580E189BD82E189BD09B400FEFDCFF9
|
||||
:102370008091D8008F7D8093D8008091E0008260AA
|
||||
:102380008093E0008091E00081FDFCCF0895CF9222
|
||||
:10239000DF92EF92FF920F931F93CF93DF93EC01A5
|
||||
:1023A0008B016A010E942A13811133C0C114D10428
|
||||
:1023B00039F0F60180819181081B190BC80FD91FD4
|
||||
:1023C000E12CF12C0115110519F18091E80085FD32
|
||||
:1023D00016C08091E8008E778093E800C114D10484
|
||||
:1023E00049F0F60180819181E80EF91EF182E082C8
|
||||
:1023F00085E00FC00E942A13882321F30AC0899127
|
||||
:102400008093F10001501109FFEFEF1AFF0ADACFB4
|
||||
:1024100080E0DF91CF911F910F91FF90EF90DF90BF
|
||||
:10242000CF9008952091410230914202261737073C
|
||||
:1024300048F06115710539F42091E8002E7720935A
|
||||
:10244000E80001C0B90140E061157105A9F12091D2
|
||||
:102450003A02222309F443C0253009F442C02091F6
|
||||
:10246000E80023FD40C02091E80022FD32C0209109
|
||||
:10247000E80020FFE9CF4091F3002091F20030E026
|
||||
:10248000342BFC01CF016115710559F0283031055D
|
||||
:1024900040F481918093F100615071092F5F3F4FAB
|
||||
:1024A000F1CF41E02830310509F040E02091E8000B
|
||||
:1024B0002E772093E800C8CF4111C9CF0AC0809180
|
||||
:1024C0003A02882361F0853061F08091E80083FD55
|
||||
:1024D0000AC08091E80082FFF2CF80E0089582E098
|
||||
:1024E000089583E0089581E008952091410230919C
|
||||
:1024F00042022617370748F06115710539F420911B
|
||||
:10250000E8002E772093E80001C0B901FC0120E02B
|
||||
:102510006115710591F180913A02882309F440C058
|
||||
:10252000853009F43FC08091E80083FD3DC0809173
|
||||
:10253000E80082FD2FC08091E80080FFE9CF209164
|
||||
:10254000F3008091F20090E0922B6115710559F033
|
||||
:102550008830910540F424912093F1003196615028
|
||||
:1025600071090196F2CF21E0089709F020E08091EF
|
||||
:10257000E8008E778093E800CBCF2111CCCF0AC042
|
||||
:1025800080913A02882361F0853061F08091E80003
|
||||
:1025900083FD0AC08091E80082FFF2CF80E00895B9
|
||||
:1025A00082E0089583E0089581E00895982F9730A0
|
||||
:1025B00058F59093E900981739F07091EC0020914C
|
||||
:1025C000ED005091F00003C0242F762F50E021FF42
|
||||
:1025D00019C03091EB003E7F3093EB003091ED005D
|
||||
:1025E0003D7F3093ED003091EB0031603093EB0094
|
||||
:1025F0007093EC002093ED005093F0002091EE00DA
|
||||
:1026000027FF07C09F5FD3CF8F708093E90081E0E1
|
||||
:10261000089580E0089580913B0287FF11C080916A
|
||||
:10262000E80082FD05C080913A028111F8CF11C007
|
||||
:102630008091E8008B770BC080913A02882349F0A3
|
||||
:102640008091E80080FFF8CF8091E8008E7780933A
|
||||
:10265000E80008952091E4003091E50095E640916E
|
||||
:10266000EC00842F817040FF22C08091E80080FD43
|
||||
:102670001CC080913A02882391F0853091F08091BE
|
||||
:10268000EB0085FD10C04091E4005091E500421739
|
||||
:10269000530729F39A01915011F784E0089582E0DD
|
||||
:1026A000089583E0089581E0089580E008954091C1
|
||||
:1026B000E80042FFDECF08950E94CA130E94D213A1
|
||||
:1026C000E0EEF0E0808181608083E8EDF0E08081E1
|
||||
:1026D0008F77808319BCA7EDB0E08C918E7F8C93AF
|
||||
:1026E00080818F7E80831092390208950F931F930B
|
||||
:1026F000CF93DF930E94CA130E94D213C8EDD0E09B
|
||||
:1027000088818F77888388818068888388818F7D9E
|
||||
:10271000888319BC10923A02109236021092380245
|
||||
:102720001092370200EE10E0F80180818B7F8083E9
|
||||
:1027300088818160888342E060E080E00E94D61258
|
||||
:10274000E1EEF0E080818E7F8083E2EEF0E0808138
|
||||
:1027500081608083808188608083F80180818E7FA2
|
||||
:102760008083888180618883DF91CF911F910F9151
|
||||
:102770000895E8EDF0E080818F7E8083E7EDF0E062
|
||||
:1027800080818160808384E082BF81E08093390210
|
||||
:102790000C947613E8EDF0E080818E7F80831092B8
|
||||
:1027A000E20008951092DA001092E10008951F925D
|
||||
:1027B0000F920FB60F9211242F933F934F935F9375
|
||||
:1027C0006F937F938F939F93AF93BF93EF93FF93F9
|
||||
:1027D0008091E10082FF0BC08091E20082FF07C080
|
||||
:1027E0008091E1008B7F8093E1000E943E168091F2
|
||||
:1027F000DA0080FF1FC08091D80080FF1BC080914D
|
||||
:10280000DA008E7F8093DA008091D90080FF0DC0BE
|
||||
:1028100080E189BD82E189BD09B400FEFDCF81E080
|
||||
:1028200080933A020E943F1005C019BC10923A02F0
|
||||
:102830000E944D108091E10080FF19C08091E2005C
|
||||
:1028400080FF15C08091E2008E7F8093E20080912E
|
||||
:10285000E20080618093E2008091D80080628093E2
|
||||
:10286000D80019BC85E080933A020E9451108091F3
|
||||
:10287000E10084FF30C08091E20084FF2CC080E141
|
||||
:1028800089BD82E189BD09B400FEFDCF8091D800E9
|
||||
:102890008F7D8093D8008091E1008F7E8093E1004E
|
||||
:1028A0008091E2008F7E8093E2008091E20081605F
|
||||
:1028B0008093E20080913602882311F084E007C003
|
||||
:1028C0008091E30087FD02C081E001C083E0809336
|
||||
:1028D0003A020E9452108091E10083FF29C080914A
|
||||
:1028E000E20083FF25C08091E100877F8093E100B3
|
||||
:1028F00082E080933A02109236028091E1008E7F4E
|
||||
:102900008093E1008091E2008E7F8093E2008091CD
|
||||
:10291000E20080618093E20042E060E080E00E949B
|
||||
:10292000D6128091F00088608093F0000E945010D1
|
||||
:10293000FF91EF91BF91AF919F918F917F916F9197
|
||||
:102940005F914F913F912F910F900FBE0F901F906D
|
||||
:1029500018951F920F920FB60F9211242F933F9349
|
||||
:102960004F935F936F937F938F939F93AF93BF9397
|
||||
:10297000CF93DF93EF93FF93C091E900CF708091E5
|
||||
:10298000EC00D82FD17080FDD0E81092E900809142
|
||||
:10299000F000877F8093F00078940E94ED141092ED
|
||||
:1029A000E9008091F00088608093F000CD2BCF701B
|
||||
:1029B000C093E900FF91EF91DF91CF91BF91AF916B
|
||||
:1029C0009F918F917F916F915F914F913F912F9147
|
||||
:1029D0000F900FBE0F901F9018951F93CF93DF930A
|
||||
:1029E000CDB7DEB7AA970FB6F894DEBF0FBECDBF46
|
||||
:1029F000EBE3F2E088E08E0F9091F10091938E135B
|
||||
:102A0000FBCF0E9468108091E80083FF1FC1809176
|
||||
:102A10003B0290913C02492F50E04A30510508F0AA
|
||||
:102A200015C1FA01ED57FF4F0C94CF26803881F085
|
||||
:102A3000823809F00BC180913F028F708093E900CA
|
||||
:102A40008091EB0085FB882780F91092E90006C091
|
||||
:102A50008091370290913802911182609091E80044
|
||||
:102A6000977F9093E8008093F1001092F100C8C026
|
||||
:102A7000282F2D7F09F0EAC0882319F0823061F0F9
|
||||
:102A8000E5C080913D02813009F0E0C0933009F04B
|
||||
:102A900080E0809338022BC080913D02811127C0D5
|
||||
:102AA00080913F028F7009F4D1C08093E90020919A
|
||||
:102AB000EB0020FF1CC0933021F48091EB0080627A
|
||||
:102AC00014C09091EB0090619093EB0021E030E016
|
||||
:102AD000A90102C0440F551F8A95E2F74093EA000E
|
||||
:102AE0001092EA008091EB0088608093EB001092D6
|
||||
:102AF000E9008091E800877F86C08111A7C010910E
|
||||
:102B00003D021F778091E3008078812B8093E30062
|
||||
:102B10008091E800877F8093E8000E940B138091EA
|
||||
:102B2000E80080FFFCCF8091E30080688093E300A1
|
||||
:102B3000111102C082E001C083E080933A0286C096
|
||||
:102B40008058823008F082C080913D0290913E0210
|
||||
:102B50008C3D53E0950779F583E08A838AE2898387
|
||||
:102B60004FB7F894DE01139620E03EE051E2E32FE8
|
||||
:102B7000F0E050935700E49120FF03C0E295EF701E
|
||||
:102B80003F5FEF708E2F90E0EA3010F0C79601C0E3
|
||||
:102B9000C0968D939D932F5F243149F74FBF80914D
|
||||
:102BA000E800877F8093E8006AE270E0CE0101963A
|
||||
:102BB0000E94121214C0AE014F5F5F4F60913F023E
|
||||
:102BC0000E945911BC01892B09F440C09091E80082
|
||||
:102BD000977F9093E80089819A810E947512809175
|
||||
:102BE000E8008B778093E80031C0803879F58091D8
|
||||
:102BF000E800877F8093E800809136028093F1009F
|
||||
:102C00008091E8008E778093E8000E940B131EC02D
|
||||
:102C100081111CC090913D029230C0F48091E80077
|
||||
:102C2000877F8093E800909336020E940B13809177
|
||||
:102C30003602811106C08091E30087FD02C081E069
|
||||
:102C400001C084E080933A020E9454108091E80011
|
||||
:102C500083FF0AC08091E800877F8093E80080911D
|
||||
:102C6000EB0080628093EB00AA960FB6F894DEBF6B
|
||||
:102C70000FBECDBFDF91CF911F9108950895CF93DF
|
||||
:102C800080913A028823A1F0C091E900CF70909121
|
||||
:102C9000EC00892F817090FD80E8C82B1092E9002C
|
||||
:102CA0008091E80083FD0E94ED14CF70C093E9008D
|
||||
:102CB000CF9108959093A4018093A3010895E0918A
|
||||
:102CC000A301F091A401309721F00190F081E02D53
|
||||
:102CD000099480E00895E091A301F091A401309758
|
||||
:102CE00021F00280F381E02D09940895E091A30181
|
||||
:102CF000F091A401309721F00480F581E02D099432
|
||||
:102D000008952091A1013091A2018217930771F0DB
|
||||
:102D10009093A2018093A101E091A301F091A401FD
|
||||
:102D2000309721F00680F781E02D099408952091D5
|
||||
:102D30009F013091A0018217930771F09093A00139
|
||||
:102D400080939F01E091A301F091A401309721F0BD
|
||||
:102D50000084F185E02D0994089508950C94AD1632
|
||||
:102D60000E9488220E94A90A0C940E239F92AF927F
|
||||
:102D7000BF92CF92DF92EF92FF920F931F93CF9368
|
||||
:102D8000DF9300D000D000D0CDB7DEB70E94C10ADB
|
||||
:102D90000DE010E0AA24A394B12C902E802F0E9465
|
||||
:102DA000AF0B98012A553E4F6901F901F080F826D2
|
||||
:102DB000A1F40150110988F78FEF89838A831B8260
|
||||
:102DC0000E9491228160782F9D838C8349815A8152
|
||||
:102DD0006B818D810E944D172FC090910E0291FF43
|
||||
:102DE00004C08E830E94B50B8E8125E030E0A501E2
|
||||
:102DF000022E01C0440F0A94EAF7E42E4F21C1F0DD
|
||||
:102E000029839A828E2191E009F490E09B830E94AD
|
||||
:102E100091228160782F9D838C8349815A816B81B7
|
||||
:102E20008D810E944D17F6018081E826E08204C062
|
||||
:102E300021503109E0F6BDCF0E94D9241091A5019F
|
||||
:102E40000E945F161817B9F00E945F168093A501C3
|
||||
:102E500026960FB6F894DEBF0FBECDBFDF91CF919F
|
||||
:102E60001F910F91FF90EF90DF90CF90BF90AF90A8
|
||||
:102E70009F900C945E0F26960FB6F894DEBF0FBE9F
|
||||
:102E8000CDBFDF91CF911F910F91FF90EF90DF9019
|
||||
:102E9000CF90BF90AF909F900895CF93DF93CDB721
|
||||
:102EA000DEB72B970FB6F894DEBF0FBECDBF4F83B2
|
||||
:102EB000588769877A878B87DE01119686E0FD0146
|
||||
:102EC00011928A95E9F785E0FE01379601900D92FF
|
||||
:102ED0008A95E1F749815A816B817C818D819E8140
|
||||
:102EE0000E946B1D2B960FB6F894DEBF0FBECDBFB0
|
||||
:102EF000DF91CF910895882309F490C09CEF980F3B
|
||||
:102F0000913A18F40E94AE200DC090E2980F9830CC
|
||||
:102F100058F4877091E001C0990F8A95EAF7892FDC
|
||||
:102F20000E9437210C948B219BE5980F933070F40D
|
||||
:102F3000853A29F0863A31F083E890E005C081E8CF
|
||||
:102F400090E002C082E890E00C94811698E5980F1A
|
||||
:102F5000933108F063C0883A39F1893A41F18A3AED
|
||||
:102F600049F18B3A51F18C3A59F18D3A61F1803B3C
|
||||
:102F700069F18E3A71F18F3A79F1813B81F1823BAF
|
||||
:102F800089F1833B91F1843B99F1853BA1F1863B2B
|
||||
:102F9000A9F1873BB1F1883BB9F1893BC1F18A3B8B
|
||||
:102FA000C9F180E090E038C082EE90E035C089EE53
|
||||
:102FB00090E032C08AEE90E02FC085EB90E02CC00C
|
||||
:102FC00086EB90E029C087EB90E026C08CEC90E087
|
||||
:102FD00023C08DEC90E020C083E891E01DC08AE81A
|
||||
:102FE00091E01AC082E991E017C084E991E014C031
|
||||
:102FF00081E292E011C083E292E00EC084E292E0AE
|
||||
:103000000BC085E292E008C086E292E005C087E24C
|
||||
:1030100092E002C08AE292E00C9497160895882309
|
||||
:1030200029F19CEF980F913A18F40E94F0200DC0FE
|
||||
:1030300090E2980F983058F4877091E001C0990F92
|
||||
:103040008A95EAF7892F0E943D210C948B219BE5FC
|
||||
:10305000980F933020F480E090E00C948116885A09
|
||||
:10306000833120F480E090E00C9497160895882333
|
||||
:1030700021F00E9437210C948B210895882321F0A0
|
||||
:103080000E943D210C948B2108958F929F92AF92C4
|
||||
:10309000BF92DF92EF92FF920F931F93CF93DF9334
|
||||
:1030A0007C01D62FC72FFC010281158112951F705C
|
||||
:1030B0000E944A20882319F082E00E948C2001118E
|
||||
:1030C0000E9454210E94A720882379F0002369F0F0
|
||||
:1030D00080E28D0F883048F082E00E948C200E94B0
|
||||
:1030E000A72091E0D82ED92601C0D12CEC2FE29553
|
||||
:1030F000EF70F0E0E357FF4F0C94CF268C2F807FCA
|
||||
:10310000CF70882311F0C295C07F002389F0CC23B3
|
||||
:1031100009F4C4C180E28D0F883020F48C2F0E9406
|
||||
:10312000372103C08C2F0E9447210E948B21B6C1FA
|
||||
:103130008D2F0E940F18CC2309F4CAC1D05E8C2FAA
|
||||
:10314000D83018F40E943D2102C00E944D210E94F7
|
||||
:103150008B21BEC18C2F807FCF70803211F0C29541
|
||||
:10316000C07FDD2319F0D13029F12DC0002381F07B
|
||||
:10317000112369F1113021F48C2F0E946721A8C11D
|
||||
:10318000123029F50E9470218C2F0E9417201FC039
|
||||
:10319000112369F0113041F40E9434218C2309F489
|
||||
:1031A00097C10E941A2003C0123009F491C10E94F5
|
||||
:1031B000702111C0002321F0123008F089C107C02E
|
||||
:1031C000111186C108C0002321F0111167C18C2F95
|
||||
:1031D000F1C011116AC18C2FF3C08C2F8695869592
|
||||
:1031E000837090E0009719F0019761F071C100239E
|
||||
:1031F00021F08D2F9C2F937002C080E090E00E9400
|
||||
:10320000811666C1002321F08D2F9C2F937002C080
|
||||
:1032100080E090E00E9497165BC18D2F002319F08B
|
||||
:103220000E94E12302C00E9449240E94CE2450C182
|
||||
:103230008C2F837009F050C001114AC18D2F8295E7
|
||||
:1032400086958770880F880F9D2F9F70892E912CEF
|
||||
:10325000A12CB12C082E04C0880C991CAA1CBB1CE4
|
||||
:103260000A94D2F7D4FF14C00FE010E020E030E061
|
||||
:10327000B901A80104C0440F551F661F771F8A9526
|
||||
:10328000D2F7CB01BA01609570958095909503C0F7
|
||||
:1032900060E070E0CB01C695C695C370D0E0C23047
|
||||
:1032A000D10561F0C330D10581F0682979298A29D7
|
||||
:1032B0009B29219771F00E94B31E0AC168297929C0
|
||||
:1032C0008A299B290E94CF1E03C10E94B31EC501FB
|
||||
:1032D000B4010E94971EFCC0002319F08C2F81704E
|
||||
:1032E00001C08695882309F4F3C08D2F82958695B9
|
||||
:1032F0008770880F880F9D2F9F70892E912CA12C8D
|
||||
:10330000B12C082E04C0880C991CAA1CBB1C0A9462
|
||||
:10331000D2F7D4FF14C00FE010E020E030E0B90194
|
||||
:10332000A80104C0440F551F661F771F8A95D2F766
|
||||
:10333000CB01BA01609570958095909503C060E0CF
|
||||
:1033400070E0CB01C695C695C3704C2F50E042305B
|
||||
:10335000510569F04330510589F0682979298A2996
|
||||
:103360009B294130510571F00E948D1FB1C0682921
|
||||
:1033700079298A299B290E94A91FAAC00E948D1F12
|
||||
:10338000C501B4010E94711FA3C08D2F90E0FC0104
|
||||
:10339000E05EF109E531F10508F07BC0E356FF4F2F
|
||||
:1033A0000C94CF26DF708C2F8F71002331F00E9498
|
||||
:1033B0000A1F8D2F0E9437188BC00E942B1F8D2F44
|
||||
:1033C0000E943E1885C0002339F0111181C08C2F56
|
||||
:1033D0008F710E94501F7CC0123008F079C0F7CF67
|
||||
:1033E000002339F08C2F8F710E940A1F71C00023B7
|
||||
:1033F000C9F38C2F8F710E942B1F6AC0002329F004
|
||||
:103400008C2F8F710E94F51E63C00E94EB1E60C05E
|
||||
:103410000023B9F00E9414200E943D210E94462002
|
||||
:10342000843029F40E9485208C2F8F7162C0123065
|
||||
:1034300008F06CC0CF718C2F0E940A1F63E08C2FA4
|
||||
:103440000DC00E9414200E9437211230A0F00E946B
|
||||
:1034500085200E941A2064E08C2F8F71DF91CF911C
|
||||
:103460001F910F91FF90EF90DF90BF90AF909F90D2
|
||||
:103470008F900C94752081E0DF91CF911F910F9177
|
||||
:10348000FF90EF90DF90BF90AF909F908F900C9443
|
||||
:103490008C20002339F0112309F4A4CF8D2F0E9432
|
||||
:1034A0007B1716C0112309F4A4CF8D2F0E940F188B
|
||||
:1034B0000FC04C2F4F706D2FC7010E9413050E9443
|
||||
:1034C0000F1E06C04C2F4F706D2FC7010E946E0C4F
|
||||
:1034D000DD20E1F00E94462080FD18C0F701128235
|
||||
:1034E0000E9440200E940A1FC7010E94921A0E9457
|
||||
:1034F0004020DF91CF911F910F91FF90EF90DF90CF
|
||||
:10350000BF90AF909F908F900C942B1FDF91CF9125
|
||||
:103510001F910F91FF90EF90DF90BF90AF909F9021
|
||||
:103520008F9008950F931F93CF93DF93EC018881C1
|
||||
:1035300099812B813C81232BB9F09F3F11F48F3F60
|
||||
:1035400099F0CE010E94D00B882371F068817981B7
|
||||
:103550008A810E9410208C010E94C51F0E948C1E2F
|
||||
:10356000B801CE010E944518DF91CF911F910F91B4
|
||||
:1035700008950E9454210E9464210E9426210E94E5
|
||||
:103580008B210E947E250E94CE2480E090E00E9444
|
||||
:10359000811680E090E00C9497160E9444210C94D0
|
||||
:1035A000B91A0E940520292F22952F7030E02C3067
|
||||
:1035B00031054CF42A3031056CF4225031092230A7
|
||||
:1035C0003105A8F407C02C30310569F02F303105E2
|
||||
:1035D00051F00DC0803F69F018F4803E40F409C0FE
|
||||
:1035E000843F29F406C093FB882780F9089580E082
|
||||
:1035F000089581E00895CF93DF9300D000D01F920B
|
||||
:10360000CDB7DEB70F900F900F900F900F90DF9116
|
||||
:10361000CF910895CF93DF9300D000D000D0CDB7E5
|
||||
:10362000DEB726960FB6F894DEBF0FBECDBFDF9192
|
||||
:10363000CF9108951F93CF93DF93C091B40116E00B
|
||||
:103640008091B501C81799F0D0E01C9FF0011D9F33
|
||||
:10365000F00D1124EA54FE4F408151816281738143
|
||||
:10366000848195810E940A1B2196C770E9CFDF9162
|
||||
:10367000CF911F9108954091E6015091E70160912B
|
||||
:10368000E8017091E9018091EA019091EB010C94BD
|
||||
:103690000A1B8091EB0182958F7009F054C08091D4
|
||||
:1036A000E801882309F44FC08091B401A091B501CD
|
||||
:1036B0006091E6017091E7014091E9015091EA01C2
|
||||
:1036C000B6E08A1709F43FC090E041155105C1F1F9
|
||||
:1036D0007F3F11F46F3FA1F1B89FF001B99FF00D4A
|
||||
:1036E0001124EA54FE4F218172132AC020816213F3
|
||||
:1036F00027C02281211124C023813481241735075A
|
||||
:1037000010F421503109241B350B283C3105C0F43D
|
||||
:103710002091EB012F7020612093EB0126E0289F80
|
||||
:10372000F001299FF00D1124E554FE4F80818F7028
|
||||
:103730008061808386EE91E00E94921A0C941A1B9D
|
||||
:1037400001968770BECF0895CF92DF92EF92FF92DD
|
||||
:103750000F931F93CF93DF93CDB7DEB762970FB66A
|
||||
:10376000F894DEBF0FBECDBF8C0185E0F801DE010D
|
||||
:103770001D9601900D928A95E1F7D8014C91119612
|
||||
:103780005C91119712966C9112971396CD90DC90E4
|
||||
:1037900014973091E6017091E7018091E9019091D1
|
||||
:1037A000EA01009709F46BC17F3F19F43F3F09F428
|
||||
:1037B00066C1E090E801EE2009F4C0C02091EB0161
|
||||
:1037C000C816D90628F0F601E81BF90BCF0104C092
|
||||
:1037D000809590958C0D9D1DFF24F394883C910558
|
||||
:1037E00078F0F12C207F09F0C6C07C2DD98AC88AD8
|
||||
:1037F00089890E94FB1A86EE91E00E94921AB1C05C
|
||||
:10380000822F807F09F046C0751314C0341312C094
|
||||
:10381000611110C02F7020612093EB010E943B1BAF
|
||||
:1038200086EE91E00E94921A8091EB01D8011596E4
|
||||
:103830008C932EC0CD2819F15F3F11F44F3FF9F062
|
||||
:10384000F62E61111CC08091B4012091B50136E0C3
|
||||
:10385000821709F45AC090E0389FF001399FF00DAB
|
||||
:103860001124EA54FE4F7181571306C0708147132B
|
||||
:1038700003C07281711103C001968770E9CFF62EE3
|
||||
:10388000662309F418C18091EB0181608093EB01FC
|
||||
:10389000F12C11C1751308C0341306C0611104C0A6
|
||||
:1038A0008091EB01D801C3C04D875E878D859E85D1
|
||||
:1038B0006A8B0E94D11A6A898823E1F16623D1F1CB
|
||||
:1038C0002091EB01822F82958F7090E0029774F027
|
||||
:1038D0008091E6019091E70198878F831986DB86B6
|
||||
:1038E000CA862C87CE0107960E94921A86E0F801BC
|
||||
:1038F000A6EEB1E001900D928A95E1F70E94491B76
|
||||
:103900000E943B1BFF24F394D6C04D875E878D85B4
|
||||
:103910009E850E940520292F22952F7030E02230AD
|
||||
:1039200031050CF0BCC09F7009F0B6C0805E8830D5
|
||||
:1039300008F4C1C0C8010E94921AE4CFC816D90683
|
||||
:1039400008F453C0F601E81BF90BCF01883C910540
|
||||
:1039500008F450C0F12C7C2DD98AC88A89890E942C
|
||||
:10396000FB1AE6EEF1E086E0DF011D928A95E9F7A9
|
||||
:103970000E943B1BA0C0751314C0341312C0611108
|
||||
:1039800010C08091EB01F8018583C8010E94921A52
|
||||
:1039900086E0E6EEF1E0DF011D928A95E9F7FE2C64
|
||||
:1039A0008AC04D875E878D859E856A8B0E94D11A5D
|
||||
:1039B0006A89882309F4BECF662309F4BBCF20911E
|
||||
:1039C000EB01822F82958F7090E002970CF48ECFDE
|
||||
:1039D0008091E6019091E7019A8389831B82DD82C1
|
||||
:1039E000CC822E83CE0101967FCF809590958C0D51
|
||||
:1039F0009D1DACCFF62E662309F49CCF75132EC007
|
||||
:103A000034132CC02091EB0120FD1FC0822F829522
|
||||
:103A10008F70D9F0D80115962C9315978F3049F0F7
|
||||
:103A20008F5F982F9295907F822F8F70892B15969C
|
||||
:103A30008C93C8010E94921A86E0F801A6EEB1E0CC
|
||||
:103A400001900D928A95E1F793CF86E0F801A6EEFA
|
||||
:103A5000B1E001900D928A95E1F72DC04D875E8708
|
||||
:103A60008D859E850E94D11A811140CF8091EB01F6
|
||||
:103A700081608093EB01C8010E94921A1CC06623EA
|
||||
:103A800009F458CF4D875E878D859E850E94D11A97
|
||||
:103A9000882309F44FCF2ACF811148CF0CC024309E
|
||||
:103AA00031050CF047CF9F7009F440CFF8019581A4
|
||||
:103AB000907F09F03BCF8F2D62960FB6F894DEBF52
|
||||
:103AC0000FBECDBFDF91CF911F910F91FF90EF906F
|
||||
:103AD000DF90CF9008951F93CF93DF93CDB7DEB7DC
|
||||
:103AE0002C970FB6F894DEBF0FBECDBF4F8358871B
|
||||
:103AF00069877A878B879C87CE0107960E94A41BD3
|
||||
:103B0000882369F08F8198852A853B85232BF1F1E5
|
||||
:103B10009F3F09F063C08F3F09F060C037C086E067
|
||||
:103B2000FE013796DE01119601900D928A95E1F71C
|
||||
:103B30006F817885EA85FB85309741F17F3F11F4ED
|
||||
:103B40006F3F21F12091B50130E0C90101968770E6
|
||||
:103B500099274091B40150E08417950709F447C0B4
|
||||
:103B600069837A83FD83EC8396E0929FD001939FD3
|
||||
:103B7000B00D1124AA54BE4FFE01319601900D9252
|
||||
:103B80009A95E1F78093B5010E941A1B16E0809187
|
||||
:103B9000B4019091B5018917C1F1189FC00111249A
|
||||
:103BA0008A549E4F0E94A41B882379F1E091B401AE
|
||||
:103BB0001E9FF0011124EA54FE4F40815181628121
|
||||
:103BC0007381848195810E940A1B8091B40190E0E9
|
||||
:103BD0000196877099278093B401D9CF4F8158857A
|
||||
:103BE00069857A858B859C850E940A1BCFCF0E94B0
|
||||
:103BF000CD1A1092B5011092B401E6EEF1E086E024
|
||||
:103C0000DF011D928A95E9F7C1CF2C960FB6F89483
|
||||
:103C1000DEBF0FBECDBFDF91CF911F910895EF9210
|
||||
:103C2000FF920F931F93CF93DF938C01892B09F49D
|
||||
:103C30006CC0F12CEE24E394E8012196F801849104
|
||||
:103C4000843740F4843008F051C0813081F08230F4
|
||||
:103C500019F15BC0853709F444C0A8F19CE7980FBF
|
||||
:103C6000903708F052C08F770E940F1841C00E5F46
|
||||
:103C70001F4FFE01C49180E28C0F883048F4C7705A
|
||||
:103C80008E2D01C0880FCA95EAF70E94572114C0F3
|
||||
:103C90008C2F0E947B172DC00E5F1F4FFE01C49119
|
||||
:103CA00080E28C0F883058F4C7708E2D01C0880FC9
|
||||
:103CB000CA95EAF70E945D210E948B211AC08C2FC1
|
||||
:103CC0000E940F1816C00E5F1F4FFE01C491CC2337
|
||||
:103CD00081F08FE99FE00197F1F700C00000C1502B
|
||||
:103CE000F6CF0E5F1F4FFE01F49003C00E947B17BA
|
||||
:103CF0008E018F2D882309F49FCFEFE9FFE03197E4
|
||||
:103D0000F1F700C000008150F5CFDF91CF911F91F6
|
||||
:103D10000F91FF90EF90089508956093F0017093D4
|
||||
:103D2000F1018093F2019093F3010C94B91A0F936F
|
||||
:103D30001F930091F0011091F1012091F201309157
|
||||
:103D4000F301DC01CB01802B912BA22BB32B8093B1
|
||||
:103D5000F0019093F101A093F201B093F3011F9150
|
||||
:103D60000F910C94B91A0F931F930091F0011091C9
|
||||
:103D7000F1012091F2013091F301DC01CB018023AC
|
||||
:103D80009123A223B3238093F0019093F101A09398
|
||||
:103D9000F201B093F3011F910F910C94B91A0F9394
|
||||
:103DA0001F930091F0011091F1012091F2013091E7
|
||||
:103DB000F301DC01CB0180279127A227B327809351
|
||||
:103DC000F0019093F101A093F201B093F3011F91E0
|
||||
:103DD0000F910C94B91A1092EC011092ED0110920F
|
||||
:103DE000EE011092EF010C94B91A41E050E060E04E
|
||||
:103DF00070E004C0440F551F661F771F8A95D2F7E5
|
||||
:103E00004093EC015093ED016093EE017093EF014C
|
||||
:103E10000C94B91A41E050E060E070E004C0440F37
|
||||
:103E2000551F661F771F8A95D2F78091EC019091FC
|
||||
:103E3000ED01A091EE01B091EF01482B592B6A2BB7
|
||||
:103E40007B2B4093EC015093ED016093EE01709356
|
||||
:103E5000EF010C94B91A41E050E060E070E004C05A
|
||||
:103E6000440F551F661F771F8A95D2F740955095CE
|
||||
:103E7000609570958091EC019091ED01A091EE011B
|
||||
:103E8000B091EF01482359236A237B234093EC012F
|
||||
:103E90005093ED016093EE017093EF010C94B91A09
|
||||
:103EA00041E050E060E070E004C0440F551F661F21
|
||||
:103EB000771F8A95D2F78091EC019091ED01A09146
|
||||
:103EC000EE01B091EF01482759276A277B274093DD
|
||||
:103ED000EC015093ED016093EE017093EF010C94AF
|
||||
:103EE000B91A0F931F930091EC011091ED012091ED
|
||||
:103EF000EE013091EF01DC01CB01802B912BA22B45
|
||||
:103F0000B32B8093EC019093ED01A093EE01B0935D
|
||||
:103F1000EF011F910F910C94B91A0F931F93009109
|
||||
:103F2000EC011091ED012091EE013091EF01DC01E7
|
||||
:103F3000CB0180239123A223B3238093EC019093A0
|
||||
:103F4000ED01A093EE01B093EF011F910F910C943E
|
||||
:103F5000B91A0F931F930091EC011091ED0120917C
|
||||
:103F6000EE013091EF01DC01CB0180279127A227E0
|
||||
:103F7000B3278093EC019093ED01A093EE01B093F1
|
||||
:103F8000EF011F910F910C94B91A0895CF92DF920F
|
||||
:103F9000EF92FF920F931F93CF93DF938C01C0900A
|
||||
:103FA000F001D090F101E090F201F090F3018091E6
|
||||
:103FB000EC019091ED01A091EE01B091EF01C82AC2
|
||||
:103FC000D92AEA2AFB2ACFE1D0E0D701C6010C2E7C
|
||||
:103FD00004C0B695A795979587950A94D2F780FF68
|
||||
:103FE00006C0B8018C2F0E94C30E019721F42197BF
|
||||
:103FF00060F780E001C08C2FDF91CF911F910F916E
|
||||
:10400000FF90EF90DF90CF900895CF93DF93EC0176
|
||||
:104010000E94C61FBE010E94C30EDF91CF9108957A
|
||||
:10402000CB010E94052008958091F90108958093A5
|
||||
:10403000F90108951092F90108950E9491222091AA
|
||||
:10404000F7013091F8018217930750F00E949122F6
|
||||
:104050002091F7013091F801821B930B9C010AC05B
|
||||
:104060000E9491222091F7013091F801209530951E
|
||||
:10407000280F391F81E0283B3B4008F480E0089579
|
||||
:104080008091F60185958595859508958091F60135
|
||||
:10409000877008950E9491222091F4013091F501DA
|
||||
:1040A00082179307A8F00E9491222091F401309189
|
||||
:1040B000F501821B930B883B9B4010F480E013C0FA
|
||||
:1040C0008091F60182FB882780F991E089270BC057
|
||||
:1040D0000E9491222091F4013091F50120953095B4
|
||||
:1040E000820F931FE8CF8170089598E0899F900117
|
||||
:1040F0001124262B2093F6010E940A1F0E94912270
|
||||
:104100009093F5018093F40108951092F6011092B6
|
||||
:10411000F5011092F40108952091F6018095822313
|
||||
:104120008093F601982F977089F430E0482F082E7D
|
||||
:10413000000C550B2417350749F085958595859515
|
||||
:104140000E942B1F1092F5011092F4010895909196
|
||||
:10415000F601977081E009F480E0089590910C01D8
|
||||
:10416000992321F090910D01911109C020910E0128
|
||||
:1041700030910F01F90132969FEF40E01FC0982F58
|
||||
:104180009695969596959F3050F5E0910E01F09199
|
||||
:104190000F01E90FF11D877021E030E0A90102C095
|
||||
:1041A000440F551F8A95E2F7CA019181892B8183BB
|
||||
:1041B00008959F3F39F04F5F4E3041F051915813B1
|
||||
:1041C000F8CF0DC05111F7CF942FF5CF9F3F39F0A5
|
||||
:1041D000F901E90FF11D97FDFA958283089508957D
|
||||
:1041E00090910C01992321F090910D01911109C03A
|
||||
:1041F00020910E0130910F01F9013296205F3F4F5F
|
||||
:104200001FC0982F9695969596959F30F0F4E09163
|
||||
:104210000E01F0910F01E90FF11D877021E030E0F0
|
||||
:10422000A90102C0440F551F8A95E2F7CA01809583
|
||||
:1042300091818923818308953196E217F30729F04C
|
||||
:1042400090819813F9CF1082F7CF089581E090E024
|
||||
:10425000E0910E01F0910F01E80FF91F1082019615
|
||||
:1042600080319105A9F7089580910D0208959091EC
|
||||
:104270000D02892B80930D020895809590910D0277
|
||||
:10428000892380930D02089510920D020895909154
|
||||
:104290000C02892B80930C020895809590910C025A
|
||||
:1042A000892380930C02089510920C020895909136
|
||||
:1042B0000B02892B80930B020895809590910B023D
|
||||
:1042C000892380930B02089510920B020895809326
|
||||
:1042D000FA010E9491229093F8018093F7010895CA
|
||||
:1042E0001092FA011092F8011092F701089580914E
|
||||
:1042F000FA01089580910E0190910F01FC01319611
|
||||
:104300009C01205F3F4F80E0919191118F5FE217F8
|
||||
:10431000F307D1F70895E0910E01F0910F0180911C
|
||||
:104320000D028083E0910E01F0910F019081809148
|
||||
:104330000C02892B8083E0910E01F0910F01908196
|
||||
:1043400080910B02892B80838091FA01882399F058
|
||||
:104350000E941D2081110E947021E0910E01F091B8
|
||||
:104360000F0190818091FA01892B80830E947A212C
|
||||
:1043700081110E94702180910E0190910F010C9487
|
||||
:104380006B1620E0009739F0AC01415051098423AD
|
||||
:1043900095232F5FF7CF822F0895CF92DF92EF9270
|
||||
:1043A000FF926C01EE24FF24C114D104E104F10456
|
||||
:1043B00021F0C701B60120E101C020E0C72ED82EB0
|
||||
:1043C000E92EFF24C114D104E104F10419F0285F9F
|
||||
:1043D000C701B6016B017C0154E0F694E794D794D1
|
||||
:1043E000C7945A95D1F7C114D104E104F10419F02E
|
||||
:1043F0002C5FC701B6016B017C0142E0F694E794A3
|
||||
:10440000D794C7944A95D1F7C114D104E104F104BB
|
||||
:1044100019F02E5FC701B601DC01CB01B695A79557
|
||||
:1044200097958795892B8A2B8B2B09F02F5F822FED
|
||||
:10443000FF90EF90DF90CF90089580913A02843002
|
||||
:1044400039F110920F0220E488E190E00FB6F89461
|
||||
:10445000A895809360000FBE2093600080E00E94CA
|
||||
:104460005E0F83B7817F846083BF83B7816083BF22
|
||||
:104470007894889583B78E7F83BF0FB6F894A895FC
|
||||
:1044800080916000886180936000109260000FBE90
|
||||
:104490000895089508950E9449220E94C10A0E9429
|
||||
:1044A0004A220E94B60B91E0811101C090E0892F51
|
||||
:1044B00008950E94CD1A0E945F160C945E0F1F9201
|
||||
:1044C0000F920FB60F9211248F939F93AF93BF93C8
|
||||
:1044D00080910F02811113C08091100290911102FE
|
||||
:1044E000A0911202B09113024196A11DB11D8093BB
|
||||
:1044F000100290931102A0931202B0931302BF9185
|
||||
:10450000AF919F918F910F900FBE0F901F901895B4
|
||||
:1045100082E084BD93E095BD9AEF97BD80936E00D5
|
||||
:1045200008952FB7F8948091100290911102A091F4
|
||||
:104530001202B09113022FBF0895CF92DF92EF9233
|
||||
:10454000FF920F931F932FB7F89440911002509150
|
||||
:10455000110260911202709113022FBF6A017B0158
|
||||
:10456000EE24FF248C0120E030E0C016D106E206E4
|
||||
:10457000F30610F4415051099A01281B390BC90167
|
||||
:104580001F910F91FF90EF90DF90CF9008951F92B1
|
||||
:104590000F920FB60F9211248F939F93AF93BF93F7
|
||||
:1045A0008091100290911102A0911202B091130219
|
||||
:1045B0000196A11DB11D8093100290931102A0934A
|
||||
:1045C0001202B0931302BF91AF919F918F910F9000
|
||||
:1045D0000FBE0F901F9018950E945C13F8942FEF58
|
||||
:1045E00087EA91E6215080409040E1F700C000004A
|
||||
:1045F00087E090EBDC018093440290934502A09306
|
||||
:104600004602B09347029CE088E10FB6F894A89563
|
||||
:10461000809360000FBE90936000FFCF0E94432301
|
||||
:10462000811102C00E9429230E944E2380930E0212
|
||||
:104630000E9456238093430287FB882780F980934A
|
||||
:104640000D010E945223682F70E080E090E00C94EE
|
||||
:104650008D1E6DEE7EEF80E090E00E94092760E005
|
||||
:1046600082E090E00E94F72660E083E090E00E9404
|
||||
:10467000F72660E084E090E00E94F72660E085E0A5
|
||||
:1046800090E00C94F72680E090E00E94F12621E073
|
||||
:104690008D3E9E4F09F020E0822F089582E090E049
|
||||
:1046A0000C94E92683E090E00C94E92684E090E005
|
||||
:1046B0000C94E926682F84E090E00C94F726809112
|
||||
:1046C000170280FF0BC06091130185E0689FB00165
|
||||
:1046D000112475956795759567952BC081FF09C065
|
||||
:1046E0006091130185E0689FB0011124759567956D
|
||||
:1046F00020C082FF07C06091130185E0689FB00170
|
||||
:10470000112417C0909118029923D1F060911201E1
|
||||
:10471000961788F72091130185E0289F90011124B6
|
||||
:10472000929FA001939F500D112470E0CA010E9436
|
||||
:10473000BB266038710540F46115710539F002C07F
|
||||
:1047400065E070E0862F08958FE7089581E0089571
|
||||
:104750008091170280FF08C06091110170E075958B
|
||||
:1047600067957595679521C081FF06C0609111011D
|
||||
:1047700070E07595679519C082FF04C060911101C2
|
||||
:1047800070E010C0909118029923C1F0609110015F
|
||||
:104790009617A0F780911101899FC001112470E044
|
||||
:1047A0000E94BB266038710528F46115710521F05F
|
||||
:1047B000862F08958FE7089581E0089561E070E005
|
||||
:1047C000F4CF803F21F40E945F23819504C0813F94
|
||||
:1047D00029F40E945F2380931B020895823F21F4F5
|
||||
:1047E0000E945F23819504C0833F29F40E945F23C8
|
||||
:1047F00080931A020895893F19F40E94A82305C0E6
|
||||
:104800008A3F31F40E94A823819580931C02089569
|
||||
:104810008B3F21F40E94A823819504C08C3F29F48A
|
||||
:104820000E94A82380931D020895843F21F4809163
|
||||
:104830001902816017C0853F21F4809119028260BE
|
||||
:1048400011C0863F21F48091190284600BC0873F1C
|
||||
:1048500021F480911902886005C0883F31F480916D
|
||||
:10486000190280618093190208958D3F21F480918F
|
||||
:10487000170281600BC08E3F21F480911702826085
|
||||
:1048800005C08F3F29F4809117028460809317023E
|
||||
:104890000895803F39F480911B0287FF6CC010920D
|
||||
:1048A0001B0269C0813F29F480911B021816BCF3DA
|
||||
:1048B00062C090911A02823F29F497FF5CC0109267
|
||||
:1048C0001A0259C0833F19F41916CCF354C0893F1A
|
||||
:1048D00041F480911C0218160CF04DC010921C027D
|
||||
:1048E0004AC08A3F29F480911C0287FF44C0F6CF5A
|
||||
:1048F0008B3F39F480911D0287FF3DC010921D024D
|
||||
:104900003AC08C3F29F480911D021816BCF333C0C5
|
||||
:10491000843F21F4809119028E7F17C0853F21F4D6
|
||||
:10492000809119028D7F11C0863F21F48091190278
|
||||
:104930008B7F0BC0873F21F480911902877F05C0D0
|
||||
:10494000883F31F4809119028F7E8093190213C041
|
||||
:104950008D3F21F4809117028E7F0BC08E3F21F492
|
||||
:10496000809117028D7F05C08F3F29F48091170237
|
||||
:104970008B7F8093170280911A0281110EC0809163
|
||||
:104980001B0281110AC080911C02811106C0809116
|
||||
:104990001D02811102C010921802089589E192E06F
|
||||
:1049A0000E9476160E949122909315028093140221
|
||||
:1049B00008951F93CF93DF93809114029091150275
|
||||
:1049C0000E949D22AC0190911802992321F0209120
|
||||
:1049D000140130E006C0209116028AE0289F900161
|
||||
:1049E00011244217530708F485C080911A02C09120
|
||||
:1049F0001B02D0911C0210911D02811107C0C11130
|
||||
:104A000075C0D11173C0111171C074C09F3F19F0EE
|
||||
:104A10009F5F90931802181624F40E945F238093DE
|
||||
:104A20001A0280911A0287FF05C00E945F238195B8
|
||||
:104A300080931A021C1624F40E945F2380931B02A9
|
||||
:104A400080911B0287FF05C00E945F2381958093A0
|
||||
:104A50001B0260911A02662331F1C0911B02CC2324
|
||||
:104A600011F1062E000C770B880B990B0E94C225C2
|
||||
:104A700023E333E343E35FE30E9426260E948A2573
|
||||
:104A800060931A026C2FCC0F770B880B990B0E9446
|
||||
:104A9000C22523E333E343E35FE30E9426260E941B
|
||||
:104AA0008A2560931B021D1624F40E94A82380937C
|
||||
:104AB0001C0280911C0287FF05C00E94A8238195DB
|
||||
:104AC00080931C02111624F40E94A82380931D02D7
|
||||
:104AD00080911D0287FF05C00E94A82381958093C5
|
||||
:104AE0001D02DF91CF911F910C94CE249F3F09F0BE
|
||||
:104AF0008FCF97CFDF91CF911F910895E9E1F2E039
|
||||
:104B000085E0DF011D928A95E9F710921802109254
|
||||
:104B1000170208950E9491256894B1110C942026E3
|
||||
:104B200008950E94052688F09F5798F0B92F99277D
|
||||
:104B3000B751B0F0E1F0660F771F881F991F1AF088
|
||||
:104B4000BA95C9F714C0B13091F00E941F26B1E0A8
|
||||
:104B500008950C941F26672F782F8827B85F39F0A7
|
||||
:104B6000B93FCCF3869577956795B395D9F73EF421
|
||||
:104B700090958095709561957F4F8F4F9F4F0895C9
|
||||
:104B8000E89409C097FB3EF49095809570956195E7
|
||||
:104B90007F4F8F4F9F4F9923A9F0F92F96E9BB279D
|
||||
:104BA0009395F695879577956795B795F111F8CF19
|
||||
:104BB000FAF4BB0F11F460FF1BC06F5F7F4F8F4F84
|
||||
:104BC0009F4F16C0882311F096E911C0772321F07A
|
||||
:104BD0009EE8872F762F05C0662371F096E8862F12
|
||||
:104BE00070E060E02AF09A95660F771F881FDAF769
|
||||
:104BF000880F9695879597F9089557FD9058440F1B
|
||||
:104C0000551F59F05F3F71F04795880F97FB991F2B
|
||||
:104C100061F09F3F79F087950895121613061406E8
|
||||
:104C2000551FF2CF4695F1DF08C016161706180675
|
||||
:104C3000991FF1CF86957105610508940895E89450
|
||||
:104C4000BB2766277727CB0197F908950E9439265D
|
||||
:104C50000C94AA260E949C2638F00E94A32620F0DD
|
||||
:104C6000952311F00C9493260C94992611240C94FE
|
||||
:104C700020260E94FD2570F3959FC1F3950F50E00B
|
||||
:104C8000551F629FF001729FBB27F00DB11D639FFE
|
||||
:104C9000AA27F00DB11DAA1F649F6627B00DA11DA4
|
||||
:104CA000661F829F2227B00DA11D621F739FB00D4A
|
||||
:104CB000A11D621F839FA00D611D221F749F3327BA
|
||||
:104CC000A00D611D231F849F600D211D822F762F53
|
||||
:104CD0006A2F11249F5750409AF0F1F088234AF030
|
||||
:104CE000EE0FFF1FBB1F661F771F881F915050409C
|
||||
:104CF000A9F79E3F510580F00C9493260C94202632
|
||||
:104D00005F3FE4F3983ED4F3869577956795B79522
|
||||
:104D1000F795E7959F5FC1F7FE2B880F911D96953C
|
||||
:104D2000879597F9089597F99F6780E870E060E0AC
|
||||
:104D300008959FEF80EC089500240A941616170634
|
||||
:104D400018060906089500240A941216130614067C
|
||||
:104D500005060895092E0394000C11F4882352F0DF
|
||||
:104D6000BB0F40F4BF2B11F460FF04C06F5F7F4F97
|
||||
:104D70008F4F9F4F089597FB072E16F4009407D08E
|
||||
:104D800077FD09D00E94D52607FC05D03EF490950A
|
||||
:104D900081959F4F0895709561957F4F0895EE0F0F
|
||||
:104DA000FF1F0590F491E02D0994AA1BBB1B51E154
|
||||
:104DB00007C0AA1FBB1FA617B70710F0A61BB70B8B
|
||||
:104DC000881F991F5A95A9F780959095BC01CD0130
|
||||
:104DD0000895F999FECF92BD81BDF89A992780B5C3
|
||||
:104DE0000895A8E1B0E042E050E00C941127262F8E
|
||||
:104DF000F999FECF92BD81BDF89A019700B40216D1
|
||||
:104E000039F01FBA20BD0FB6F894FA9AF99A0FBE7E
|
||||
:104E100008950196272F0E94F8260C94F726DC01AE
|
||||
:104E2000CB01FC01F999FECF06C0F2BDE1BDF89AB5
|
||||
:104E3000319600B40D9241505040B8F70895F8945F
|
||||
:024E4000FFCFA2
|
||||
:104E42002002600FEE0FCB0F970F630F0101FB01E2
|
||||
:104E52002808010214270020000500050028000090
|
||||
:104E620000100004001B002D0009001200060018AB
|
||||
:104E720000160008000700280000003F4D3639F8F0
|
||||
:104E820007AB0775073C07CF06E80601071A0700BC
|
||||
:00000001FF
|
@ -0,0 +1,27 @@
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H 1
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#undef MOUSEKEY_TIME_TO_MAX
|
||||
#undef MOUSEKEY_MAX_SPEED
|
||||
|
||||
#define MOUSEKEY_TIME_TO_MAX 1
|
||||
#define MOUSEKEY_MAX_SPEED 2
|
||||
|
||||
#undef MOUSEKEY_DELAY
|
||||
#define MOUSEKEY_DELAY 0
|
||||
|
||||
#undef MOUSEKEY_WHEEL_DELAY
|
||||
#define MOUSEKEY_WHEEL_DELAY 0
|
||||
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
||||
|
||||
#undef LEADER_TIMEOUT
|
||||
#define LEADER_TIMEOUT 1000
|
||||
|
||||
#endif
|
After Width: | Height: | Size: 93 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 84 KiB |
@ -0,0 +1,932 @@
|
||||
/*
|
||||
* algernon's ErgoDox EZ layout, please see the README.md file!
|
||||
*/
|
||||
|
||||
#include "ergodox_ez.h"
|
||||
#include "led.h"
|
||||
#include "debug.h"
|
||||
#include "action_layer.h"
|
||||
#include "action_util.h"
|
||||
#include "mousekey.h"
|
||||
#include "timer.h"
|
||||
|
||||
/* Layers */
|
||||
|
||||
#define BASE 0 // default layer
|
||||
#define APPSEL 1 // application select layer
|
||||
#define HUN 2 // Hungarian layer
|
||||
#define EMACS 3 // (Spac)Emacs layer
|
||||
#define OHLFT 4 // One-handed, left side
|
||||
#define OHRGT 5 // One-handed, right side
|
||||
|
||||
/* Macros */
|
||||
|
||||
#define A_GUI 0 // GUI magic
|
||||
#define A_ESC 44 // OSM-clearing ESC
|
||||
|
||||
#define A_MUL 1 // mouse up-left
|
||||
#define A_MUR 2 // mouse up-right
|
||||
#define A_MDL 3 // mouse down-left
|
||||
#define A_MDR 4 // mouse down-right
|
||||
|
||||
#define AE_VIS 5 // Visual mode
|
||||
#define AE_PSTDEL 6 // Paste/Delete
|
||||
#define AE_CPYC 7 // Copy/Cut
|
||||
#define AE_EMACS 8 // Emacs copy & paste mode
|
||||
#define AE_TERM 9 // Terminal copy & paste mode
|
||||
#define AE_OTHER 10 // Other copy & paste mode
|
||||
#define AE_INS 11 // Insert mode
|
||||
#define AE_OVR 12 // Overwrite mode
|
||||
#define AE_APPND 13 // Append
|
||||
|
||||
#define HU_AA 14 // Á
|
||||
#define HU_OO 15 // Ó
|
||||
#define HU_EE 16 // É
|
||||
#define HU_UU 17 // Ú
|
||||
#define HU_II 18 // Í
|
||||
#define HU_OE 19 // Ö
|
||||
#define HU_UE 20 // Ü
|
||||
#define HU_OEE 21 // Ő
|
||||
#define HU_UEE 22 // Ű
|
||||
|
||||
#define APP_SLK 23 // Slack
|
||||
#define APP_EMCS 24 // Emacs
|
||||
#define APP_TERM 25 // Terminal
|
||||
#define APP_CHRM 26 // Chrome
|
||||
#define APP_MSIC 27 // Music
|
||||
|
||||
#define KF_1 28 // 1, F1
|
||||
#define KF_2 29 // 2, F2
|
||||
#define KF_3 30 // ...
|
||||
#define KF_4 31
|
||||
#define KF_5 32
|
||||
#define KF_6 33
|
||||
#define KF_7 34
|
||||
#define KF_8 35
|
||||
#define KF_9 36
|
||||
#define KF_10 37
|
||||
#define KF_11 38 // =, F11
|
||||
|
||||
#define OH_BSSPC 39
|
||||
#define OH_ENTSFT 40
|
||||
#define OH_BASE 41
|
||||
#define OH_LEFT 42
|
||||
#define OH_RIGHT 43
|
||||
|
||||
/* Fn keys */
|
||||
#define F_BSE 0
|
||||
#define F_HUN 1
|
||||
#define F_GUI 2
|
||||
#define F_SFT 3
|
||||
#define F_ALT 4
|
||||
#define F_CTRL 5
|
||||
|
||||
/* States & timers */
|
||||
|
||||
uint8_t m_visual_state = 0;
|
||||
static uint16_t m_cutdel_timer;
|
||||
static uint16_t m_copypaste_timer;
|
||||
|
||||
uint16_t gui_timer = 0;
|
||||
|
||||
uint16_t kf_timers[12];
|
||||
|
||||
uint16_t oh_base_timer = 0;
|
||||
uint16_t oh_bsspc_timer = 0;
|
||||
uint16_t oh_entsft_timer = 0;
|
||||
|
||||
#define OH_BLINK_INTERVAL 500
|
||||
|
||||
uint8_t oh_left_blink = 0;
|
||||
uint16_t oh_left_blink_timer = 0;
|
||||
uint8_t oh_right_blink = 0;
|
||||
uint16_t oh_right_blink_timer = 0;
|
||||
|
||||
enum {
|
||||
CP_EMACS = 0,
|
||||
CP_TERM = 1,
|
||||
CP_OTHER = 2,
|
||||
};
|
||||
|
||||
uint8_t cp_mode = CP_EMACS;
|
||||
|
||||
/* The Keymap */
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Keymap 0: Base Layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 | Apps | | Apps | 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| = F11 |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | Tab | ' | , | . | P | Y | [ | | ] | F | G | C | R | L | / |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | - | A | O | E | U | I |------| |------| D | H | T | N | S | \ |
|
||||
* |-----------+------+------+------+------+------| ( | | ) |------+------+------+------+------+-----------|
|
||||
* | Play/Pause| ; | Q | J | K | X | | | | B | M | W | V | Z | Stop |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | Home | End | Down | Up | : | | - | Left | Right| PgUp | PgDn |
|
||||
* `-----------------------------------' `-----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | LAlt | GUI | |EMACS | 1HND |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | Ctrl | | LEAD | | |
|
||||
* |Backsp|LShift|------| |------| Enter| Space|
|
||||
* | | | ESC | | HUN | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[BASE] = KEYMAP(
|
||||
// left hand
|
||||
KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3),M(KF_4),M(KF_5),KC_APP
|
||||
,KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
|
||||
,KC_MINS ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
|
||||
,KC_MPLY ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
|
||||
,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,KC_COLN
|
||||
|
||||
,F(F_ALT),F(F_GUI)
|
||||
,F(F_CTRL)
|
||||
,KC_BSPC,F(F_SFT),M(A_ESC)
|
||||
|
||||
// right hand
|
||||
,KC_APP ,M(KF_6),M(KF_7),M(KF_8),M(KF_9) ,M(KF_10) ,M(KF_11)
|
||||
,KC_RBRC ,KC_F ,KC_G ,KC_C ,KC_R ,KC_L ,KC_SLSH
|
||||
,KC_D ,KC_H ,KC_T ,KC_N ,KC_S ,KC_BSLS
|
||||
,KC_RPRN ,KC_B ,KC_M ,KC_W ,KC_V ,KC_Z ,KC_MSTP
|
||||
,KC_MINS,KC_LEFT,KC_RGHT ,KC_PGUP ,KC_PGDN
|
||||
|
||||
,OSL(EMACS),M(OH_LEFT)
|
||||
,KC_LEAD
|
||||
,F(F_HUN),KC_ENT ,KC_SPC
|
||||
),
|
||||
|
||||
/* Keymap 1: Application select layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | |Music |Slack |Emacs |Term |Chrome| | | | | | | | | |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | | | | |------| |------| | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
|
||||
[APPSEL] = KEYMAP(
|
||||
// left hand
|
||||
KC_TRNS ,M(APP_MSIC),M(APP_SLK),M(APP_EMCS),M(APP_TERM),M(APP_CHRM),KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
|
||||
// right hand
|
||||
,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
),
|
||||
|
||||
|
||||
/* Keymap 2: Hungarian Layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | | | Ő | | Ű | | | | | | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | Á | Ó | É | Ú | Í |------| |------| | | | | | |
|
||||
* |-----------+------+------+------+------+------| | | |------+------+------+------+------+-----------|
|
||||
* | | | Ö | | Ü | | | | | | | | | | |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | | | | | |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* | | | | | | | |
|
||||
* | | |------| |------| | |
|
||||
* | | | | | BASE | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
|
||||
[HUN] = KEYMAP(
|
||||
// left hand
|
||||
KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS
|
||||
,KC_NO ,KC_NO ,M(HU_OEE),KC_NO ,M(HU_UEE),KC_NO ,KC_NO
|
||||
,KC_NO ,M(HU_AA),M(HU_OO) ,M(HU_EE),M(HU_UU) ,M(HU_II)
|
||||
,KC_TRNS ,KC_NO ,M(HU_OE) ,KC_NO ,M(HU_UE) ,KC_NO ,KC_NO
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_NO
|
||||
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
|
||||
// right hand
|
||||
,KC_TRNS ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_TRNS ,KC_TRNS ,KC_TRNS ,KC_TRNS
|
||||
|
||||
,KC_NO ,KC_NO
|
||||
,KC_NO
|
||||
,F(F_BSE),KC_TRNS ,KC_TRNS
|
||||
),
|
||||
|
||||
/* Keymap 3: Spacemacs layer
|
||||
*
|
||||
* ,-----------------------------------------------------. ,-----------------------------------------------------.
|
||||
* | MS Slow | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |ScrLCK| |ScrLCK| 6 F6 | 7 F7 | 8 F8 | 9 F9 | 0 F10| F11 |
|
||||
* |-----------+------+------+------+------+-------------| |------+------+------+------+------+------+-----------|
|
||||
* | MS Normal | | Home | Up | PgUp | |Visual| |Scroll| $ |MsUpL | MsUp |MsUpR | R |PrintScreen|
|
||||
* |-----------+------+------+------+------+------| Mode | | Up |------+------+------+------+------+-----------|
|
||||
* | MS Fast |APPEND| Left | Down | Right| INS |------| |------| D |MsLeft| MsDn |MsRght| | |
|
||||
* |-----------+------+------+------+------+------| Cut | |Scroll|------+------+------+------+------+-----------|
|
||||
* | Play/Pause| | End | Down | PgDn | X | Copy | | Down | |MsDnL | W |MsDnR | | Stop |
|
||||
* `-----------+------+------+------+------+-------------' `-------------+------+------+------+------+-----------'
|
||||
* |EmacsM|TermM |OtherM| | | |Vol Up|Vol Dn| Mute | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
* ,-------------. ,-------------.
|
||||
* | Alt | GUI | | BASE | MClk |
|
||||
* ,------|------|------| |------+------+------.
|
||||
* |Delete| | Ctrl | | Prev |Left |Right |
|
||||
* | |LShift|------| |------| Click| Click|
|
||||
* |Paste | | ESC | | Next | | |
|
||||
* `--------------------' `--------------------'
|
||||
*/
|
||||
[EMACS] = KEYMAP(
|
||||
// left hand
|
||||
KC_ACL0 ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,LGUI(KC_L)
|
||||
,KC_ACL1 ,KC_NO ,KC_HOME ,KC_UP ,KC_PGUP ,KC_NO ,M(AE_VIS)
|
||||
,KC_ACL2 ,M(AE_APPND) ,KC_LEFT ,KC_DOWN ,KC_RIGHT,M(AE_INS)
|
||||
,KC_MPLY ,KC_NO ,KC_END ,KC_DOWN ,KC_PGDN ,KC_X ,M(AE_CPYC)
|
||||
,M(AE_EMACS),M(AE_TERM) ,M(AE_OTHER),KC_NO ,KC_NO
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,M(AE_PSTDEL),KC_TRNS ,KC_TRNS
|
||||
|
||||
// right hand
|
||||
,LGUI(KC_L),M(KF_6) ,M(KF_7) ,M(KF_8) ,M(KF_9) ,M(KF_10) ,M(KF_11)
|
||||
,KC_WH_U ,KC_DLR ,M(A_MUL),KC_MS_U ,M(A_MUR),M(AE_OVR),KC_PSCR
|
||||
,KC_D ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_NO ,KC_NO
|
||||
,KC_WH_D ,KC_NO ,M(A_MDL),KC_W ,M(A_MDR),KC_NO ,KC_MSTP
|
||||
,KC_VOLU ,KC_VOLD ,KC_MUTE ,KC_NO ,KC_NO
|
||||
|
||||
,KC_TRNS ,KC_MS_BTN3
|
||||
,KC_MPRV
|
||||
,KC_MNXT ,KC_BTN1 ,KC_BTN2
|
||||
),
|
||||
|
||||
/* Keymap 5: One-handed, left side
|
||||
*
|
||||
* ,-----------------------------------------------------.
|
||||
* | `~ | 1 F1 | 2 F2 | 3 F3 | 4 F4 | 5 F5 |A BSE|
|
||||
* |-----------+------+------+------+------+-------------|
|
||||
* | Tab | ' | , | . | P | Y | [ |
|
||||
* |-----------+------+------+------+------+------| |
|
||||
* | - | A | O | E | U | I |------|
|
||||
* |-----------+------+------+------+------+------| ( |
|
||||
* | Play/Pause| ; | Q | J | K | X | |
|
||||
* `-----------+------+------+------+------+-------------'
|
||||
* | Home | End | Down | Up | ESC |
|
||||
* `-----------------------------------'
|
||||
* ,-------------.
|
||||
* | LAlt | GUI |
|
||||
* ,------|------|------|
|
||||
* |BackSp|LShift| Ctrl |
|
||||
* | | |------|
|
||||
* |Space |Enter |OTHER |
|
||||
* `--------------------'
|
||||
*/
|
||||
[OHLFT] = KEYMAP(
|
||||
// left hand
|
||||
KC_GRV ,M(KF_1) ,M(KF_2) ,M(KF_3) ,M(KF_4) ,M(KF_5) ,M(OH_BASE)
|
||||
,KC_TAB ,KC_QUOT ,KC_COMM ,KC_DOT ,KC_P ,KC_Y ,KC_LBRC
|
||||
,KC_MINS ,KC_A ,KC_O ,KC_E ,KC_U ,KC_I
|
||||
,KC_MPLY ,KC_SCLN ,KC_Q ,KC_J ,KC_K ,KC_X ,KC_LPRN
|
||||
,KC_HOME ,KC_END ,KC_DOWN ,KC_UP ,M(A_ESC)
|
||||
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,M(OH_BSSPC),M(OH_ENTSFT),M(OH_RIGHT)
|
||||
|
||||
// right hand
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
|
||||
,KC_NO ,KC_NO
|
||||
,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO
|
||||
),
|
||||
|
||||
/* Keymap 6: One-handed, right side
|
||||
*
|
||||
* ,-----------------------------------------------------.
|
||||
* | = F11 | 0 F10| 9 F9 | 8 F8 | 7 F7 | 6 F6 |A BSE|
|
||||
* |-----------+------+------+------+------+-------------|
|
||||
* | / | L | R | C | G | F | ] |
|
||||
* |-----------+------+------+------+------+------| |
|
||||
* | \ | S | N | T | H | D |------|
|
||||
* |-----------+------+------+------+------+------| ) |
|
||||
* | Stop | Z | V | W | M | B | |
|
||||
* `-----------+------+------+------+------+-------------'
|
||||
* | PgDn | PgUp | Right| Left | ESC |
|
||||
* `-----------------------------------'
|
||||
* ,-------------.
|
||||
* | LAlt | GUI |
|
||||
* ,------|------|------|
|
||||
* |BackSp|LShift| Ctrl |
|
||||
* | | |------|
|
||||
* |Space |Enter |OTHER |
|
||||
* `--------------------'
|
||||
*/
|
||||
[OHRGT] = KEYMAP(
|
||||
// left hand
|
||||
M(KF_11) ,M(KF_10) ,M(KF_9) ,M(KF_8) ,M(KF_7) ,M(KF_6) ,M(OH_BASE)
|
||||
,KC_SLSH ,KC_L ,KC_R ,KC_C ,KC_G ,KC_F ,KC_RBRC
|
||||
,KC_BSLS ,KC_S ,KC_N ,KC_T ,KC_H ,KC_D
|
||||
,KC_MSTP ,KC_Z ,KC_V ,KC_W ,KC_M ,KC_B ,KC_RPRN
|
||||
,KC_PGDN ,KC_PGUP ,KC_RGHT ,KC_LEFT ,M(A_ESC)
|
||||
|
||||
,KC_TRNS ,KC_TRNS
|
||||
,KC_TRNS
|
||||
,M(OH_BSSPC),M(OH_ENTSFT),M(OH_LEFT)
|
||||
|
||||
// right hand
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
|
||||
|
||||
,KC_NO ,KC_NO
|
||||
,KC_NO
|
||||
,KC_NO ,KC_NO ,KC_NO
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
[F_BSE] = ACTION_LAYER_CLEAR(ON_PRESS)
|
||||
,[F_HUN] = ACTION_LAYER_INVERT(HUN, ON_PRESS)
|
||||
,[F_GUI] = ACTION_MACRO_TAP(A_GUI)
|
||||
,[F_SFT] = ACTION_MODS_ONESHOT (MOD_LSFT)
|
||||
,[F_ALT] = ACTION_MODS_ONESHOT (MOD_LALT)
|
||||
,[F_CTRL] = ACTION_MODS_ONESHOT (MOD_LCTL)
|
||||
};
|
||||
|
||||
macro_t *ang_do_hun (keyrecord_t *record, uint16_t accent, uint16_t hun_char)
|
||||
{
|
||||
uint8_t need_shift = 0;
|
||||
uint8_t hold_shift = 0;
|
||||
|
||||
if (!record->event.pressed)
|
||||
return MACRO_NONE;
|
||||
|
||||
layer_off (HUN);
|
||||
|
||||
if (keyboard_report->mods & MOD_BIT (KC_LSFT)) {
|
||||
hold_shift = 1;
|
||||
need_shift = 1;
|
||||
unregister_code (KC_LSFT);
|
||||
}
|
||||
if ((get_oneshot_mods () & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out ()) {
|
||||
need_shift = 1;
|
||||
hold_shift = 0;
|
||||
unregister_code (KC_LSFT);
|
||||
}
|
||||
|
||||
clear_oneshot_mods ();
|
||||
|
||||
register_code (KC_RALT);
|
||||
unregister_code (KC_RALT);
|
||||
if (accent == (KC_DQT)) {
|
||||
register_code (KC_RSFT);
|
||||
}
|
||||
register_code (accent);
|
||||
unregister_code (accent);
|
||||
if (need_shift && accent != (KC_DQT)) {
|
||||
register_code (KC_RSFT);
|
||||
} else if (accent == (KC_DQT) && !need_shift) {
|
||||
unregister_code (KC_RSFT);
|
||||
}
|
||||
register_code (hun_char);
|
||||
unregister_code (hun_char);
|
||||
if (need_shift || accent == (KC_DQT))
|
||||
unregister_code (KC_RSFT);
|
||||
if (hold_shift)
|
||||
register_code (KC_LSFT);
|
||||
|
||||
return MACRO_NONE;
|
||||
}
|
||||
|
||||
void ang_handle_kf (keyrecord_t *record, uint8_t id)
|
||||
{
|
||||
uint8_t code = id - KF_1;
|
||||
|
||||
if (record->event.pressed) {
|
||||
kf_timers[code] = timer_read ();
|
||||
} else {
|
||||
uint8_t kc;
|
||||
|
||||
if (timer_elapsed (kf_timers[code]) > TAPPING_TERM) {
|
||||
// Long press
|
||||
kc = KC_F1 + code;
|
||||
} else {
|
||||
if (id == KF_11)
|
||||
kc = KC_EQL;
|
||||
else
|
||||
kc = KC_1 + code;
|
||||
}
|
||||
|
||||
register_code (kc);
|
||||
unregister_code (kc);
|
||||
}
|
||||
}
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
switch(id) {
|
||||
case A_ESC:
|
||||
if (record->event.pressed) {
|
||||
if ((get_oneshot_mods ()) && !has_oneshot_mods_timed_out ()) {
|
||||
clear_oneshot_mods ();
|
||||
} else {
|
||||
register_code (KC_ESC);
|
||||
}
|
||||
} else {
|
||||
unregister_code (KC_ESC);
|
||||
}
|
||||
break;
|
||||
|
||||
/* Hungarian layer */
|
||||
case HU_AA:
|
||||
return ang_do_hun (record, KC_QUOT, KC_A);
|
||||
case HU_OO:
|
||||
return ang_do_hun (record, KC_QUOT, KC_O);
|
||||
case HU_EE:
|
||||
return ang_do_hun (record, KC_QUOT, KC_E);
|
||||
case HU_UU:
|
||||
return ang_do_hun (record, KC_QUOT, KC_U);
|
||||
case HU_II:
|
||||
return ang_do_hun (record, KC_QUOT, KC_I);
|
||||
case HU_OE:
|
||||
return ang_do_hun (record, KC_DQT, KC_O);
|
||||
case HU_UE:
|
||||
return ang_do_hun (record, KC_DQT, KC_U);
|
||||
case HU_OEE:
|
||||
return ang_do_hun (record, KC_EQL, KC_O);
|
||||
case HU_UEE:
|
||||
return ang_do_hun (record, KC_EQL, KC_U);
|
||||
|
||||
/* Mouse movement */
|
||||
case A_MUL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MUR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_UP);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_UP);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MDL:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_LEFT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_LEFT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
case A_MDR:
|
||||
if (record->event.pressed) {
|
||||
mousekey_on(KC_MS_DOWN);
|
||||
mousekey_on(KC_MS_RIGHT);
|
||||
} else {
|
||||
mousekey_off(KC_MS_DOWN);
|
||||
mousekey_off(KC_MS_RIGHT);
|
||||
}
|
||||
mousekey_send();
|
||||
break;
|
||||
|
||||
/* EMACS layer stuff */
|
||||
case AE_EMACS:
|
||||
if (record->event.pressed) {
|
||||
cp_mode = CP_EMACS;
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_TERM:
|
||||
if (record->event.pressed) {
|
||||
cp_mode = CP_TERM;
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_OTHER:
|
||||
if (record->event.pressed) {
|
||||
cp_mode = CP_OTHER;
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_VIS:
|
||||
if (cp_mode == CP_EMACS && record->event.pressed) {
|
||||
return MACRO(T(V), END);
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_CPYC:
|
||||
if (record->event.pressed) {
|
||||
m_copypaste_timer = timer_read ();
|
||||
} else {
|
||||
if (timer_elapsed (m_copypaste_timer) > TAPPING_TERM) {
|
||||
// Long press: Cut
|
||||
switch (cp_mode) {
|
||||
case CP_EMACS:
|
||||
return MACRO(T(X), END);
|
||||
break;
|
||||
case CP_TERM:
|
||||
return MACRO(D(RCTRL), D(RSFT), T(X), U(RSFT), U(RCTRL), END);
|
||||
break;
|
||||
case CP_OTHER:
|
||||
return MACRO(D(RCTRL), T(X), U(RCTRL), END);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// Short press: Copy
|
||||
switch (cp_mode) {
|
||||
case CP_EMACS:
|
||||
return MACRO(T(Y), END);
|
||||
break;
|
||||
case CP_TERM:
|
||||
return MACRO(D(RCTRL), D(RSFT), T(C), U(RSFT), U(RCTRL), END);
|
||||
break;
|
||||
case CP_OTHER:
|
||||
return MACRO(D(RCTRL), T(C), U(RCTRL), END);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_PSTDEL:
|
||||
if (record->event.pressed) {
|
||||
m_cutdel_timer = timer_read ();
|
||||
} else {
|
||||
if (timer_elapsed (m_cutdel_timer) > TAPPING_TERM) {
|
||||
// Long press: Delete
|
||||
switch (cp_mode) {
|
||||
case CP_EMACS:
|
||||
return MACRO(T(D), END);
|
||||
break;
|
||||
case CP_TERM:
|
||||
case CP_OTHER:
|
||||
return MACRO(T(DEL), END);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// Short press: Paste
|
||||
switch (cp_mode) {
|
||||
case CP_EMACS:
|
||||
if (keyboard_report->mods & MOD_BIT(KC_RSFT)) {
|
||||
unregister_code (KC_RSFT);
|
||||
return MACRO(U(RSFT), T(RBRC), T(P), D(RSFT), END);
|
||||
}
|
||||
else
|
||||
return MACRO(T(P), END);
|
||||
break;
|
||||
case CP_TERM:
|
||||
return MACRO(D(RCTRL), D(RSFT), T(V), U(RSFT), U(RCTRL), END);
|
||||
break;
|
||||
case CP_OTHER:
|
||||
return MACRO(D(RCTRL), T(V), U(RCTRL), END);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_INS:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(I), END);
|
||||
} else {
|
||||
layer_clear();
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_OVR:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(R), END);
|
||||
} else {
|
||||
layer_clear();
|
||||
}
|
||||
break;
|
||||
|
||||
case AE_APPND:
|
||||
if (record->event.pressed) {
|
||||
return MACRO(T(A), END);
|
||||
} else {
|
||||
layer_clear();
|
||||
}
|
||||
break;
|
||||
|
||||
/* GUI & AppSel */
|
||||
case A_GUI:
|
||||
if (record->event.pressed) {
|
||||
register_code (KC_LGUI);
|
||||
if (record->tap.count && !record->tap.interrupted) {
|
||||
if (record->tap.count >= 2) {
|
||||
register_code (KC_W);
|
||||
layer_on (APPSEL);
|
||||
set_oneshot_layer (APPSEL, ONESHOT_START);
|
||||
}
|
||||
} else {
|
||||
record->tap.count = 0;
|
||||
}
|
||||
gui_timer = 0;
|
||||
} else {
|
||||
if (record->tap.count >= 2)
|
||||
{
|
||||
unregister_code (KC_W);
|
||||
clear_oneshot_layer_state (ONESHOT_PRESSED);
|
||||
}
|
||||
gui_timer = timer_read ();
|
||||
}
|
||||
break;
|
||||
|
||||
case APP_SLK:
|
||||
if (record->event.pressed)
|
||||
return MACRO(T(S), T(C), T(U), T(D), T(C), T(L), T(O), T(U), T(D), T(ENT), END);
|
||||
break;
|
||||
|
||||
case APP_EMCS:
|
||||
if (record->event.pressed)
|
||||
return MACRO(T(E), T(M), T(A), T(C), T(S), T(ENT), END);
|
||||
break;
|
||||
|
||||
case APP_TERM:
|
||||
if (record->event.pressed)
|
||||
return MACRO(T(T), T(E), T(R), T(M), T(ENT), END);
|
||||
break;
|
||||
|
||||
case APP_CHRM:
|
||||
if (record->event.pressed)
|
||||
return MACRO(T(C), T(H), T(R), T(O), T(M), T(ENT), END);
|
||||
break;
|
||||
|
||||
case APP_MSIC:
|
||||
if (record->event.pressed)
|
||||
return MACRO(T(R), T(H), T(Y), T(T), T(H), T(M), T(B), T(O), T(X), T(ENT), END);
|
||||
break;
|
||||
|
||||
/* Function keys */
|
||||
case KF_1 ... KF_11:
|
||||
ang_handle_kf (record, id);
|
||||
break;
|
||||
|
||||
/* 1HAND layout */
|
||||
case OH_BASE:
|
||||
if (record->event.pressed) {
|
||||
oh_base_timer = timer_read ();
|
||||
} else {
|
||||
if (timer_elapsed (oh_base_timer) > TAPPING_TERM) {
|
||||
layer_clear ();
|
||||
} else {
|
||||
return MACRO (T(APP), END);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OH_BSSPC:
|
||||
if (record->event.pressed) {
|
||||
oh_bsspc_timer = timer_read ();
|
||||
} else {
|
||||
if (timer_elapsed (oh_bsspc_timer) > TAPPING_TERM) {
|
||||
return MACRO (T(BSPC), END);
|
||||
} else {
|
||||
return MACRO (T(SPC), END);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OH_ENTSFT:
|
||||
if (record->event.pressed) {
|
||||
oh_entsft_timer = timer_read ();
|
||||
} else {
|
||||
if (timer_elapsed (oh_entsft_timer) > TAPPING_TERM) {
|
||||
if (keyboard_report->mods & MOD_BIT(KC_LSFT))
|
||||
unregister_code (KC_LSFT);
|
||||
else
|
||||
register_code (KC_LSFT);
|
||||
} else {
|
||||
return MACRO (T(ENT), END);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case OH_LEFT:
|
||||
if (record->event.pressed) {
|
||||
layer_move (OHLFT);
|
||||
oh_left_blink = 1;
|
||||
oh_left_blink_timer = timer_read ();
|
||||
ergodox_right_led_1_on ();
|
||||
}
|
||||
break;
|
||||
|
||||
case OH_RIGHT:
|
||||
if (record->event.pressed) {
|
||||
layer_move (OHRGT);
|
||||
oh_right_blink = 1;
|
||||
oh_right_blink_timer = timer_read ();
|
||||
ergodox_right_led_3_on ();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return MACRO_NONE;
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_init_user(void) {
|
||||
ergodox_led_all_set (LED_BRIGHTNESS_LO);
|
||||
ergodox_led_all_on();
|
||||
_delay_ms(1000);
|
||||
ergodox_led_all_off();
|
||||
};
|
||||
|
||||
LEADER_EXTERNS();
|
||||
|
||||
void ang_do_unicode (void) {
|
||||
register_code (KC_RCTL);
|
||||
register_code (KC_RSFT);
|
||||
register_code (KC_U);
|
||||
unregister_code (KC_U);
|
||||
unregister_code (KC_RSFT);
|
||||
unregister_code (KC_RCTL);
|
||||
}
|
||||
|
||||
void ang_tap (uint16_t codes[]) {
|
||||
for (int i = 0; codes[i] != 0; i++) {
|
||||
register_code (codes[i]);
|
||||
unregister_code (codes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
#define TAP_ONCE(code) \
|
||||
register_code (code); \
|
||||
unregister_code (code)
|
||||
|
||||
// Runs constantly in the background, in a loop.
|
||||
void matrix_scan_user(void) {
|
||||
uint8_t layer = biton32(layer_state);
|
||||
|
||||
if (gui_timer && timer_elapsed (gui_timer) > TAPPING_TERM)
|
||||
unregister_code (KC_LGUI);
|
||||
|
||||
if (layer != OHLFT)
|
||||
oh_left_blink = 0;
|
||||
if (layer != OHRGT)
|
||||
oh_right_blink = 0;
|
||||
|
||||
if (layer == HUN) {
|
||||
ergodox_right_led_2_on();
|
||||
ergodox_right_led_3_on();
|
||||
} else if (layer == EMACS) {
|
||||
ergodox_right_led_1_on();
|
||||
ergodox_right_led_2_on();
|
||||
}
|
||||
|
||||
if (layer == OHLFT || layer == OHRGT) {
|
||||
ergodox_right_led_2_on();
|
||||
|
||||
if (oh_left_blink) {
|
||||
if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL) {
|
||||
if ((keyboard_report->mods & MOD_BIT(KC_LSFT)) == 0)
|
||||
ergodox_right_led_1_off ();
|
||||
}
|
||||
if (timer_elapsed (oh_left_blink_timer) > OH_BLINK_INTERVAL * 2) {
|
||||
ergodox_right_led_1_on ();
|
||||
oh_left_blink_timer = timer_read ();
|
||||
}
|
||||
}
|
||||
|
||||
if (oh_right_blink) {
|
||||
if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL) {
|
||||
if ((keyboard_report->mods & MOD_BIT(KC_LCTRL)) == 0)
|
||||
ergodox_right_led_3_off ();
|
||||
}
|
||||
if (timer_elapsed (oh_right_blink_timer) > OH_BLINK_INTERVAL * 2) {
|
||||
ergodox_right_led_3_on ();
|
||||
oh_right_blink_timer = timer_read ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (keyboard_report->mods & MOD_BIT(KC_LSFT) ||
|
||||
((get_oneshot_mods() & MOD_BIT(KC_LSFT)) && !has_oneshot_mods_timed_out())) {
|
||||
ergodox_right_led_1_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_1_on ();
|
||||
} else {
|
||||
ergodox_right_led_1_set (LED_BRIGHTNESS_LO);
|
||||
if (layer != OHLFT && layer != EMACS)
|
||||
ergodox_right_led_1_off ();
|
||||
}
|
||||
|
||||
if (keyboard_report->mods & MOD_BIT(KC_LALT) ||
|
||||
((get_oneshot_mods() & MOD_BIT(KC_LALT)) && !has_oneshot_mods_timed_out())) {
|
||||
ergodox_right_led_2_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_2_on ();
|
||||
} else {
|
||||
ergodox_right_led_2_set (LED_BRIGHTNESS_LO);
|
||||
if (layer != OHRGT && layer != HUN && layer != OHLFT && layer != EMACS)
|
||||
ergodox_right_led_2_off ();
|
||||
}
|
||||
|
||||
if (keyboard_report->mods & MOD_BIT(KC_LCTRL) ||
|
||||
((get_oneshot_mods() & MOD_BIT(KC_LCTRL)) && !has_oneshot_mods_timed_out())) {
|
||||
ergodox_right_led_3_set (LED_BRIGHTNESS_HI);
|
||||
ergodox_right_led_3_on ();
|
||||
} else {
|
||||
ergodox_right_led_3_set (LED_BRIGHTNESS_LO);
|
||||
if (layer != OHRGT && layer != HUN)
|
||||
ergodox_right_led_3_off ();
|
||||
}
|
||||
|
||||
LEADER_DICTIONARY() {
|
||||
leading = false;
|
||||
leader_end ();
|
||||
|
||||
SEQ_ONE_KEY (KC_U) {
|
||||
ang_do_unicode ();
|
||||
}
|
||||
|
||||
SEQ_ONE_KEY (KC_L) {
|
||||
/* λ */
|
||||
ang_do_unicode ();
|
||||
|
||||
uint16_t codes[] = {KC_0, KC_3, KC_B, KC_B, KC_ENT, 0};
|
||||
ang_tap (codes);
|
||||
}
|
||||
|
||||
SEQ_ONE_KEY (KC_S) {
|
||||
ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
|
||||
TAP_ONCE (KC_BSLS);
|
||||
register_code (KC_RSFT); TAP_ONCE (KC_MINS); TAP_ONCE (KC_9); unregister_code (KC_RSFT);
|
||||
ang_do_unicode (); TAP_ONCE (KC_3); TAP_ONCE (KC_0); TAP_ONCE (KC_C); TAP_ONCE (KC_4); TAP_ONCE (KC_SPC);
|
||||
register_code (KC_RSFT); TAP_ONCE (KC_0); TAP_ONCE (KC_MINS); unregister_code (KC_RSFT);
|
||||
TAP_ONCE (KC_SLSH);
|
||||
ang_do_unicode (); TAP_ONCE (KC_A); TAP_ONCE (KC_F); TAP_ONCE (KC_SPC);
|
||||
}
|
||||
|
||||
SEQ_TWO_KEYS (KC_W, KC_M) {
|
||||
register_code (KC_LALT);
|
||||
register_code (KC_F2);
|
||||
unregister_code (KC_F2);
|
||||
unregister_code (KC_LALT);
|
||||
|
||||
_delay_ms (1000);
|
||||
|
||||
uint16_t codes[] = {KC_M, KC_A, KC_X, KC_MINS, KC_F, KC_O, KC_C, KC_U, KC_S, KC_E, KC_D, KC_ENT, 0};
|
||||
ang_tap (codes);
|
||||
register_code (KC_LGUI);
|
||||
register_code (KC_UP);
|
||||
unregister_code (KC_UP);
|
||||
unregister_code (KC_LGUI);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
BOOTMAGIC_ENABLE=no
|
||||
COMMAND_ENABLE=no
|
||||
SLEEP_LED_ENABLE=no
|
||||
UNICODE_ENABLE=no
|
@ -1,30 +0,0 @@
|
||||
/*
|
||||
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include "keymap_common.h"
|
||||
|
||||
|
||||
/* translates key to keycode */
|
||||
uint8_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
|
||||
{
|
||||
return pgm_read_byte(&keymaps[(layer)][(key.row)][(key.col)]);
|
||||
}
|
||||
|
||||
/* translates Fn keycode to action */
|
||||
action_t keymap_fn_to_action(uint8_t keycode)
|
||||
{
|
||||
return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
|
||||
}
|
@ -0,0 +1,158 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# On command line:
|
||||
#
|
||||
# make all = Make software.
|
||||
#
|
||||
# make clean = Clean out built project files.
|
||||
#
|
||||
# make coff = Convert ELF to AVR COFF.
|
||||
#
|
||||
# make extcoff = Convert ELF to AVR Extended COFF.
|
||||
#
|
||||
# make program = Download the hex file to the device.
|
||||
# Please customize your programmer settings(PROGRAM_CMD)
|
||||
#
|
||||
# make teensy = Download the hex file to the device, using teensy_loader_cli.
|
||||
# (must have teensy_loader_cli installed).
|
||||
#
|
||||
# make dfu = Download the hex file to the device, using dfu-programmer (must
|
||||
# have dfu-programmer installed).
|
||||
#
|
||||
# make flip = Download the hex file to the device, using Atmel FLIP (must
|
||||
# have Atmel FLIP installed).
|
||||
#
|
||||
# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
|
||||
# (must have dfu-programmer installed).
|
||||
#
|
||||
# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
|
||||
# (must have Atmel FLIP installed).
|
||||
#
|
||||
# make debug = Start either simulavr or avarice as specified for debugging,
|
||||
# with avr-gdb or avr-insight as the front end for debugging.
|
||||
#
|
||||
# make filename.s = Just compile filename.c into the assembler code only.
|
||||
#
|
||||
# make filename.i = Create a preprocessed source file for use in submitting
|
||||
# bug reports to the GCC project.
|
||||
#
|
||||
# To rebuild project do "make clean" then "make all".
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# Target file name (without extension).
|
||||
TARGET = kc60
|
||||
|
||||
|
||||
# Directory common source filess exist
|
||||
TOP_DIR = ../..
|
||||
TMK_DIR = ../../tmk_core
|
||||
|
||||
# Directory keyboard dependent files exist
|
||||
TARGET_DIR = .
|
||||
|
||||
# # project specific files
|
||||
SRC = kc60.c
|
||||
|
||||
ifdef KEYMAP
|
||||
SRC := keymaps/$(KEYMAP).c $(SRC)
|
||||
else
|
||||
SRC := keymaps/default.c $(SRC)
|
||||
endif
|
||||
|
||||
CONFIG_H = config.h
|
||||
|
||||
# MCU name
|
||||
#MCU = at90usb1287
|
||||
MCU = atmega32u4
|
||||
|
||||
# Processor frequency.
|
||||
# This will define a symbol, F_CPU, in all source code files equal to the
|
||||
# processor frequency in Hz. You can then use this symbol in your source code to
|
||||
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
|
||||
# automatically to create a 32-bit value in your source code.
|
||||
#
|
||||
# This will be an integer division of F_USB below, as it is sourced by
|
||||
# F_USB after it has run through any CPU prescalers. Note that this value
|
||||
# does not *change* the processor frequency - it should merely be updated to
|
||||
# reflect the processor speed set externally so that the code can use accurate
|
||||
# software delays.
|
||||
F_CPU = 16000000
|
||||
|
||||
|
||||
#
|
||||
# LUFA specific
|
||||
#
|
||||
# Target architecture (see library "Board Types" documentation).
|
||||
ARCH = AVR8
|
||||
|
||||
# Input clock frequency.
|
||||
# This will define a symbol, F_USB, in all source code files equal to the
|
||||
# input clock frequency (before any prescaling is performed) in Hz. This value may
|
||||
# differ from F_CPU if prescaling is used on the latter, and is required as the
|
||||
# raw input clock is fed directly to the PLL sections of the AVR for high speed
|
||||
# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
|
||||
# at the end, this will be done automatically to create a 32-bit value in your
|
||||
# source code.
|
||||
#
|
||||
# If no clock division is performed on the input clock inside the AVR (via the
|
||||
# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
|
||||
F_USB = $(F_CPU)
|
||||
|
||||
# Interrupt driven control endpoint task(+60)
|
||||
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
|
||||
|
||||
|
||||
# Boot Section Size in *bytes*
|
||||
# Teensy halfKay 512
|
||||
# Teensy++ halfKay 1024
|
||||
# Atmel DFU loader 4096
|
||||
# LUFA bootloader 4096
|
||||
# USBaspLoader 2048
|
||||
OPT_DEFS += -DBOOTLOADER_SIZE=4096
|
||||
|
||||
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = yes # Console for debug(+400)
|
||||
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||
KEYBOARD_LOCK_ENABLE = yes # Allow locking of keyboard via magic key
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
NKRO_ENABLE = no # USB Nkey Rollover
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
|
||||
|
||||
ifdef KEYMAP
|
||||
|
||||
ifeq ("$(wildcard keymaps/$(KEYMAP).c)","")
|
||||
ifneq ("$(wildcard keymaps/$(KEYMAP)/makefile.mk)","")
|
||||
include keymaps/$(KEYMAP)/makefile.mk
|
||||
endif
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
ifneq ("$(wildcard keymaps/default/makefile.mk)","")
|
||||
include keymaps/default/makefile.mk
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# Optimize size but this may cause error "relocation truncated to fit"
|
||||
#EXTRALDFLAGS = -Wl,--relax
|
||||
|
||||
# Search Path
|
||||
VPATH += $(TARGET_DIR)
|
||||
VPATH += $(TOP_DIR)
|
||||
VPATH += $(TMK_DIR)
|
||||
|
||||
include $(TOP_DIR)/quantum/quantum.mk
|
||||
|
@ -0,0 +1,24 @@
|
||||
kc60 keyboard firmware
|
||||
======================
|
||||
|
||||
## Quantum MK Firmware
|
||||
|
||||
For the full Quantum feature list, see [the parent README.md](/README.md).
|
||||
|
||||
## Building
|
||||
|
||||
Download or clone the whole firmware and navigate to the keyboard/kc60 folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file.
|
||||
|
||||
Depending on which keymap you would like to use, you will have to compile slightly differently.
|
||||
|
||||
### Default
|
||||
To build with the default keymap, simply run `make`.
|
||||
|
||||
### Other Keymaps
|
||||
Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files.
|
||||
|
||||
To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
|
||||
```
|
||||
$ make KEYMAP=[default|jack|<name>]
|
||||
```
|
||||
Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
|
@ -0,0 +1,161 @@
|
||||
/*
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_H
|
||||
#define CONFIG_H
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x6060
|
||||
#define DEVICE_VER 0x0001
|
||||
#define MANUFACTURER You
|
||||
#define PRODUCT kc60v2
|
||||
#define DESCRIPTION A custom keyboard
|
||||
|
||||
/* key matrix size */
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 14
|
||||
|
||||
/*
|
||||
* Keyboard Matrix Assignments
|
||||
*
|
||||
* Change this to how you wired your keyboard
|
||||
* COLS: AVR pins used for columns, left to right
|
||||
* ROWS: AVR pins used for rows, top to bottom
|
||||
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
|
||||
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
|
||||
*
|
||||
*/
|
||||
|
||||
// Possible pins for columns include: F1 F0 E6 D7 D6 D4 C7 C6 B7 B5 B4 B3 B1 B0
|
||||
// Pins for rows include: D0 D1 F6 F7 D5
|
||||
#define MATRIX_ROW_PINS { D0, D1, F6, F7, D5 }
|
||||
#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3 }
|
||||
#define UNUSED_PINS
|
||||
|
||||
/* COL2ROW or ROW2COL */
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||
#define DEBOUNCING_DELAY 5
|
||||
|
||||
/* define if matrix has ghost (lacks anti-ghosting diodes) */
|
||||
//#define MATRIX_HAS_GHOST
|
||||
|
||||
/* number of backlight levels */
|
||||
#define BACKLIGHT_LEVELS 3
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/*
|
||||
* Force NKRO
|
||||
*
|
||||
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
|
||||
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
|
||||
* makefile for this to work.)
|
||||
*
|
||||
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
|
||||
* until the next keyboard reset.
|
||||
*
|
||||
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
|
||||
* fully operational during normal computer usage.
|
||||
*
|
||||
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
|
||||
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
|
||||
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
|
||||
* power-up.
|
||||
*
|
||||
*/
|
||||
//#define FORCE_NKRO
|
||||
|
||||
/*
|
||||
* Magic Key Options
|
||||
*
|
||||
* Magic keys are hotkey commands that allow control over firmware functions of
|
||||
* the keyboard. They are best used in combination with the HID Listen program,
|
||||
* found here: https://www.pjrc.com/teensy/hid_listen.html
|
||||
*
|
||||
* The options below allow the magic key functionality to be changed. This is
|
||||
* useful if your keyboard/keypad is missing keys and you want magic key support.
|
||||
*
|
||||
*/
|
||||
|
||||
/* key combination for magic key command */
|
||||
#define IS_COMMAND() ( \
|
||||
keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
|
||||
)
|
||||
|
||||
/* control how magic key switches layers */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
|
||||
|
||||
/* override magic key keymap */
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
|
||||
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
|
||||
//#define MAGIC_KEY_HELP1 H
|
||||
//#define MAGIC_KEY_HELP2 SLASH
|
||||
//#define MAGIC_KEY_DEBUG D
|
||||
//#define MAGIC_KEY_DEBUG_MATRIX X
|
||||
//#define MAGIC_KEY_DEBUG_KBD K
|
||||
//#define MAGIC_KEY_DEBUG_MOUSE M
|
||||
//#define MAGIC_KEY_VERSION V
|
||||
//#define MAGIC_KEY_STATUS S
|
||||
//#define MAGIC_KEY_CONSOLE C
|
||||
//#define MAGIC_KEY_LAYER0_ALT1 ESC
|
||||
//#define MAGIC_KEY_LAYER0_ALT2 GRAVE
|
||||
//#define MAGIC_KEY_LAYER0 0
|
||||
//#define MAGIC_KEY_LAYER1 1
|
||||
//#define MAGIC_KEY_LAYER2 2
|
||||
//#define MAGIC_KEY_LAYER3 3
|
||||
//#define MAGIC_KEY_LAYER4 4
|
||||
//#define MAGIC_KEY_LAYER5 5
|
||||
//#define MAGIC_KEY_LAYER6 6
|
||||
//#define MAGIC_KEY_LAYER7 7
|
||||
//#define MAGIC_KEY_LAYER8 8
|
||||
//#define MAGIC_KEY_LAYER9 9
|
||||
//#define MAGIC_KEY_BOOTLOADER PAUSE
|
||||
//#define MAGIC_KEY_LOCK CAPS
|
||||
//#define MAGIC_KEY_EEPROM E
|
||||
//#define MAGIC_KEY_NKRO N
|
||||
//#define MAGIC_KEY_SLEEP_LED Z
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
//#define NO_ACTION_MACRO
|
||||
//#define NO_ACTION_FUNCTION
|
||||
|
||||
#endif
|
@ -0,0 +1,111 @@
|
||||
#include "kc60.h"
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_init_user(void) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
};
|
||||
|
||||
__attribute__ ((weak))
|
||||
void matrix_scan_user(void) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
bool process_action_user(keyrecord_t *record) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
return true;
|
||||
}
|
||||
|
||||
__attribute__ ((weak))
|
||||
void led_set_user(uint8_t usb_led) {
|
||||
// leave this function blank - it can be defined in a keymap file
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// put your keyboard start-up code here
|
||||
// runs once when the firmware starts up
|
||||
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
backlight_init_ports();
|
||||
#endif
|
||||
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
// put your looping keyboard code here
|
||||
// runs every cycle (a lot)
|
||||
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
bool process_action_kb(keyrecord_t *record) {
|
||||
// put your per-action keyboard code here
|
||||
// runs for every action, just before processing by the firmware
|
||||
|
||||
return process_action_user(record);
|
||||
}
|
||||
|
||||
void led_set_kb(uint8_t usb_led) {
|
||||
// put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
|
||||
|
||||
led_set_user(usb_led);
|
||||
}
|
||||
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
#define CHANNEL OCR1B
|
||||
|
||||
void backlight_init_ports()
|
||||
{
|
||||
|
||||
// Setup PB6 as output and output low.
|
||||
DDRB |= (1<<6);
|
||||
PORTB &= ~(1<<6);
|
||||
|
||||
// Use full 16-bit resolution.
|
||||
ICR1 = 0xFFFF;
|
||||
|
||||
// I could write a wall of text here to explain... but TL;DW
|
||||
// Go read the ATmega32u4 datasheet.
|
||||
// And this: http://blog.saikoled.com/post/43165849837/secret-konami-cheat-code-to-high-resolution-pwm-on
|
||||
|
||||
// Pin PB7 = OCR1C (Timer 1, Channel C)
|
||||
// Compare Output Mode = Clear on compare match, Channel C = COM1B1=1 COM1C0=0
|
||||
// (i.e. start high, go low when counter matches.)
|
||||
// WGM Mode 14 (Fast PWM) = WGM13=1 WGM12=1 WGM11=1 WGM10=0
|
||||
// Clock Select = clk/1 (no prescaling) = CS12=0 CS11=0 CS10=1
|
||||
|
||||
TCCR1A = _BV(COM1B1) | _BV(WGM11); // = 0b00001010;
|
||||
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10); // = 0b00011001;
|
||||
|
||||
backlight_init();
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level)
|
||||
{
|
||||
// Prevent backlight blink on lowest level
|
||||
PORTB &= ~(_BV(PORTB6));
|
||||
|
||||
if ( level == 0 )
|
||||
{
|
||||
// Turn off PWM control on PB6, revert to output low.
|
||||
TCCR1A &= ~(_BV(COM1B1));
|
||||
CHANNEL = 0x0;
|
||||
}
|
||||
else if ( level == BACKLIGHT_LEVELS)
|
||||
{
|
||||
// Turn on PWM control of PB6
|
||||
TCCR1A |= _BV(COM1B1);
|
||||
// Set the brightness
|
||||
CHANNEL = 0xFFFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Turn on PWM control of PB6
|
||||
TCCR1A |= _BV(COM1B1);
|
||||
// Set the brightness
|
||||
CHANNEL = 0xFFFF >> ((BACKLIGHT_LEVELS - level) * ((BACKLIGHT_LEVELS + 1) / 2));
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
@ -0,0 +1,36 @@
|
||||
#ifndef KC60_H
|
||||
#define KC60_H
|
||||
|
||||
#include "matrix.h"
|
||||
#include "keymap_common.h"
|
||||
#ifdef BACKLIGHT_ENABLE
|
||||
#include "backlight.h"
|
||||
#endif
|
||||
#include <avr/io.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// This a shortcut to help you visually see your layout.
|
||||
// The first section contains all of the arguements
|
||||
// The second converts the arguments into a multi-dimensional array
|
||||
#define KEYMAP( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, \
|
||||
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, \
|
||||
K40, K41, K42, K45, K4A, K4B, K4C, K4D \
|
||||
) { \
|
||||
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
|
||||
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
|
||||
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
|
||||
{ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D }, \
|
||||
{ K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, KC_NO,K4A, K4B, K4C, K4D } \
|
||||
}
|
||||
|
||||
void matrix_init_user(void);
|
||||
void matrix_scan_user(void);
|
||||
bool process_action_user(keyrecord_t *record);
|
||||
|
||||
void led_set_user(uint8_t usb_led);
|
||||
void backlight_init_ports(void);
|
||||
|
||||
#endif
|
@ -0,0 +1,24 @@
|
||||
// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
|
||||
// this is the style you want to emulate.
|
||||
|
||||
#include "kc60.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = KEYMAP( /* Basic QWERTY */
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, \
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
|
||||
KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, \
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, KC_RCTL, RESET \
|
||||
),
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM fn_actions[] = {
|
||||
|
||||
};
|
||||
|
||||
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
|
||||
{
|
||||
// MACRODOWN only works in this function
|
||||
return MACRO_NONE;
|
||||
};
|
@ -0,0 +1 @@
|
||||
tags
|
Loading…
Reference in new issue