good working version
authorIan Kelling <ian@iankelling.org>
Thu, 25 Aug 2016 00:37:28 +0000 (17:37 -0700)
committerIan Kelling <ian@iankelling.org>
Fri, 26 Aug 2016 02:57:22 +0000 (19:57 -0700)
No more history because it had lots of
files that shouldn't be checked in and it
wasn't worth fixing up the history

51 files changed:
.gitignore [new file with mode: 0644]
COPYING [new file with mode: 0644]
COPYING.gplv3 [new file with mode: 0644]
LICENSE [new file with mode: 0644]
README [new file with mode: 0644]
_site/assets/OpenSans.ttf [new file with mode: 0644]
_site/assets/cc-by-sa-4.0-80x15.png [new file with mode: 0644]
_site/assets/cc-by-sa.png [new file with mode: 0644]
_site/assets/cc-by-sa.svg [new file with mode: 0644]
_site/assets/favicon.png [new file with mode: 0644]
_site/assets/librejs-logo.png [new file with mode: 0644]
_site/assets/profile250.jpg [new file with mode: 0644]
_site/comment.rb [new file with mode: 0755]
_site/common.css [new file with mode: 0644]
_site/disabled.css [new file with mode: 0644]
_site/font/Open-Sans-regular/LICENSE.txt [new file with mode: 0644]
_site/font/Open-Sans-regular/Open-Sans-regular.eot [new file with mode: 0644]
_site/font/Open-Sans-regular/Open-Sans-regular.svg [new file with mode: 0644]
_site/font/Open-Sans-regular/Open-Sans-regular.ttf [new file with mode: 0644]
_site/font/Open-Sans-regular/Open-Sans-regular.woff [new file with mode: 0644]
_site/font/Open-Sans-regular/Open-Sans-regular.woff2 [new file with mode: 0644]
_site/font/fontello.eot [new file with mode: 0644]
_site/font/fontello.svg [new file with mode: 0644]
_site/font/fontello.ttf [new file with mode: 0644]
_site/font/fontello.woff [new file with mode: 0644]
_site/font/fontello.woff2 [new file with mode: 0644]
_site/git [new symlink]
_site/gitweb-footer.html [new file with mode: 0644]
_site/gitweb-site.css [new file with mode: 0644]
_site/ian-kelling-pubkey.asc [new file with mode: 0644]
_site/main.css [new file with mode: 0644]
_site/on2vote/on2-vote-detailed-analysis.txt [new file with mode: 0644]
_site/on2vote/vote.py [new file with mode: 0644]
_site/on2vote/votes.txt [new file with mode: 0644]
_site/robots.txt [new file with mode: 0644]
b.rb [new file with mode: 0644]
blog/2014-08-01-publishing-my-technical-notes.md [new file with mode: 0644]
blog/2014-08-07-python-uninstall.md [new file with mode: 0644]
blog/2014-09-29-say-on2.md [new file with mode: 0644]
blog/2014-10-14-on2-vote-results.md [new file with mode: 0644]
blog/2016-08-23-site-redesign.md [new file with mode: 0644]
build.rb [new file with mode: 0755]
drafts/.gitignore [new file with mode: 0644]
favorite-stuff.html [new file with mode: 0644]
feed.xml [new file with mode: 0644]
get-comments [new file with mode: 0755]
gimp-src/favicon.xcf [new file with mode: 0644]
iank-mod.el [new file with mode: 0644]
index.html [new file with mode: 0644]
set-comments [new file with mode: 0755]
setup.sh [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..9a8f6c5
--- /dev/null
@@ -0,0 +1,11 @@
+/_site/blog
+/_site/blog.html
+/_site/feed.xml
+/_site/music
+/proposed-comments
+/_site/favorite-stuff.html
+/_site/index.html
+
+
+/resume.md
+/_site/resume.html
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..d159169
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  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.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+                     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
+convey 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 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This 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.
diff --git a/COPYING.gplv3 b/COPYING.gplv3
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -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>.
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..d645695
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..017260f
--- /dev/null
+++ b/README
@@ -0,0 +1,56 @@
+Content and automated setup of iankelling.org
+
+
+* Setup
+
+setup.sh sets up apache and gitweb
+build.rb does static site generation
+
+Dependencies for running ./setup.sh DOMAIN: A modern debian based system
+(tested on debian 8, and debian 8 testing).
+
+Some shell scripts need to be sourced before running setup.sh:
+https://iankelling.org/git/?p=distro-functions;a=summary
+And some programs need to be in PATH:
+https://iankelling.org/git/?p=basic-https-conf;a=summary
+https://sallymae.club/git/?p=acme-tiny-wrapper;a=summary
+
+This repo does not include the repos under /git.  In my own version, under /git are links to the .git dirs of the respective repos under the
+hardcoded directory in setup.sh: gitroot=/a/bin/githtml. These
+directories are managed separately, mostly by rsyncing them.
+
+Only the latest version of resume is kept in the resume branch which
+gets rebased on master.
+
+./build.rb does have any dependencies, but it's not a generalized site
+generator, it has some content files specific to my site that it expects.
+
+Dates in the blog directory can be generated with date +%F
+
+
+* Comments
+
+New comments are stored in a sqlite database.  Ones that are not
+moderated for spam etc, are stored to disk for checkin on the next run
+of build.rb.  get-comments, set-comments, and iank-mod.el are for
+moderating new comments. With one emacs command, you get a buffer of the
+new comments, with keybinds to mark them for publishing, moderatation,
+banning, and execute changes.
+
+* Inspirations
+
+http://blog.zorinaq.com/release-of-hablog-and-new-design/?
+https://mjg59.dreamwidth.org/
+http://bettermotherfuckingwebsite.com
+https://eduardoboucas.com/blog/2015/05/11/rethinking-the-commenting-system-for-my-jekyll-site.html
+
+* License
+
+Non-software is cc-by-sa 4 unless stated otherwise.  Software is under
+GPLv2 or later unless stated otherwise. I'd use gplv3 or agpl, but it's
+simpler to use the same license as the gitweb javascript.
+
+The elisp is GPLv3 because emacs is.
+
+The opensans font is Apache2 licensed, from google fonts,
+the license is included in the LICENSE file.
diff --git a/_site/assets/OpenSans.ttf b/_site/assets/OpenSans.ttf
new file mode 100644 (file)
index 0000000..0dae9c3
Binary files /dev/null and b/_site/assets/OpenSans.ttf differ
diff --git a/_site/assets/cc-by-sa-4.0-80x15.png b/_site/assets/cc-by-sa-4.0-80x15.png
new file mode 100644 (file)
index 0000000..c1b97c4
Binary files /dev/null and b/_site/assets/cc-by-sa-4.0-80x15.png differ
diff --git a/_site/assets/cc-by-sa.png b/_site/assets/cc-by-sa.png
new file mode 100644 (file)
index 0000000..5d64b4a
Binary files /dev/null and b/_site/assets/cc-by-sa.png differ
diff --git a/_site/assets/cc-by-sa.svg b/_site/assets/cc-by-sa.svg
new file mode 100644 (file)
index 0000000..7288b4d
--- /dev/null
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="120"
+   height="42"
+   id="svg2759"
+   sodipodi:version="0.32"
+   inkscape:version="0.45+devel"
+   version="1.0"
+   sodipodi:docname="by-sa.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs2761" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#8b8b8b"
+     borderopacity="1"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="179"
+     inkscape:cy="89.569904"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="120px"
+     height="42px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1198"
+     inkscape:window-height="624"
+     inkscape:window-x="488"
+     inkscape:window-y="401" />
+  <metadata
+     id="metadata2764">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       transform="matrix(0.9937807,0,0,0.9936694,-177.69409,-74.436409)"
+       id="g287"
+       inkscape:export-filename="/mnt/hgfs/Bov/Documents/Work/2007/cc/identity/srr buttons/big/by-sa.png"
+       inkscape:export-xdpi="300.23013"
+       inkscape:export-ydpi="300.23013">
+       <path
+   id="path3817_2_"
+   nodetypes="ccccccc"
+   d="M 182.23532,75.39014 L 296.29928,75.59326 C 297.89303,75.59326 299.31686,75.35644 299.31686,78.77344 L 299.17721,116.34033 L 179.3569,116.34033 L 179.3569,78.63379 C 179.3569,76.94922 179.51999,75.39014 182.23532,75.39014 z"
+   style="fill:#aab2ab" />
+
+       <g
+   id="g5908_2_"
+   transform="matrix(0.872921,0,0,0.872921,50.12536,143.2144)">
+
+                       <path
+   id="path5906_2_"
+   cx="296.35416"
+   ry="22.939548"
+   cy="264.3577"
+   type="arc"
+   rx="22.939548"
+   d="M 187.20944,-55.6792 C 187.21502,-46.99896 180.18158,-39.95825 171.50134,-39.95212 C 162.82113,-39.94708 155.77929,-46.97998 155.77426,-55.66016 C 155.77426,-55.66687 155.77426,-55.67249 155.77426,-55.6792 C 155.76922,-64.36054 162.80209,-71.40125 171.48233,-71.40631 C 180.16367,-71.41193 187.20441,-64.37842 187.20944,-55.69824 C 187.20944,-55.69263 187.20944,-55.68591 187.20944,-55.6792 z"
+   style="fill:#ffffff" />
+
+               <g
+   id="g5706_2_"
+   transform="translate(-289.6157,99.0653)">
+                       <path
+   id="path5708_2_"
+   d="M 473.88455,-167.54724 C 477.36996,-164.06128 479.11294,-159.79333 479.11294,-154.74451 C 479.11294,-149.69513 477.40014,-145.47303 473.9746,-142.07715 C 470.33929,-138.50055 466.04281,-136.71283 461.08513,-136.71283 C 456.18736,-136.71283 451.96526,-138.48544 448.42003,-142.03238 C 444.87419,-145.57819 443.10158,-149.81537 443.10158,-154.74451 C 443.10158,-159.6731 444.87419,-163.94049 448.42003,-167.54724 C 451.87523,-171.03375 456.09728,-172.77618 461.08513,-172.77618 C 466.13342,-172.77618 470.39914,-171.03375 473.88455,-167.54724 z M 450.76657,-165.20239 C 447.81982,-162.22601 446.34701,-158.7395 446.34701,-154.74005 C 446.34701,-150.7417 447.80529,-147.28485 450.72125,-144.36938 C 453.63778,-141.45288 457.10974,-139.99462 461.1383,-139.99462 C 465.16683,-139.99462 468.66848,-141.46743 471.64486,-144.41363 C 474.47076,-147.14947 475.88427,-150.59069 475.88427,-154.74005 C 475.88427,-158.85809 474.44781,-162.35297 471.57659,-165.22479 C 468.70595,-168.09546 465.22671,-169.53131 461.1383,-169.53131 C 457.04993,-169.53131 453.59192,-168.08813 450.76657,-165.20239 z M 458.52106,-156.49927 C 458.07074,-157.4809 457.39673,-157.9715 456.49781,-157.9715 C 454.90867,-157.9715 454.11439,-156.90198 454.11439,-154.763 C 454.11439,-152.62341 454.90867,-151.55389 456.49781,-151.55389 C 457.54719,-151.55389 458.29676,-152.07519 458.74647,-153.11901 L 460.94923,-151.94598 C 459.8993,-150.0805 458.32417,-149.14697 456.22374,-149.14697 C 454.60384,-149.14697 453.30611,-149.64367 452.33168,-150.63653 C 451.35561,-151.62994 450.86894,-152.99926 450.86894,-154.7445 C 450.86894,-156.46008 451.37123,-157.82159 452.37642,-158.83013 C 453.38161,-159.83806 454.63347,-160.34264 456.13423,-160.34264 C 458.35435,-160.34264 459.94407,-159.46776 460.90504,-157.71978 L 458.52106,-156.49927 z M 468.8844,-156.49927 C 468.43353,-157.4809 467.77292,-157.9715 466.90201,-157.9715 C 465.28095,-157.9715 464.46988,-156.90198 464.46988,-154.763 C 464.46988,-152.62341 465.28095,-151.55389 466.90201,-151.55389 C 467.95304,-151.55389 468.68918,-152.07519 469.10925,-153.11901 L 471.36126,-151.94598 C 470.31301,-150.0805 468.74007,-149.14697 466.64358,-149.14697 C 465.02587,-149.14697 463.73095,-149.64367 462.75711,-150.63653 C 461.78494,-151.62994 461.29773,-152.99926 461.29773,-154.7445 C 461.29773,-156.46008 461.79221,-157.82159 462.78061,-158.83013 C 463.76843,-159.83806 465.02588,-160.34264 466.55408,-160.34264 C 468.77027,-160.34264 470.35776,-159.46776 471.3154,-157.71978 L 468.8844,-156.49927 z" />
+
+               </g>
+
+       </g>
+
+       <path
+   d="M 297.29639,74.91064 L 181.06688,74.91064 C 179.8203,74.91064 178.80614,75.92529 178.80614,77.17187 L 178.80614,116.66748 C 178.80614,116.94922 179.03466,117.17822 179.31639,117.17822 L 299.04639,117.17822 C 299.32813,117.17822 299.55713,116.94922 299.55713,116.66748 L 299.55713,77.17188 C 299.55713,75.92529 298.54297,74.91064 297.29639,74.91064 z M 181.06688,75.93213 L 297.29639,75.93213 C 297.97998,75.93213 298.53565,76.48828 298.53565,77.17188 C 298.53565,77.17188 298.53565,93.09131 298.53565,104.59034 L 215.4619,104.59034 C 212.41698,110.09571 206.55077,113.83399 199.81835,113.83399 C 193.083,113.83399 187.21825,110.09913 184.1748,104.59034 L 179.82666,104.59034 C 179.82666,93.09132 179.82666,77.17188 179.82666,77.17188 C 179.82664,76.48828 180.38329,75.93213 181.06688,75.93213 z"
+   id="path294" />
+
+       <g
+   enable-background="new    "
+   id="g296">
+               <path
+   d="M 265.60986,112.8833 C 265.68994,113.03906 265.79736,113.16504 265.93115,113.26172 C 266.06494,113.35791 266.22119,113.42969 266.40088,113.47608 C 266.58154,113.52296 266.76807,113.54639 266.96045,113.54639 C 267.09033,113.54639 267.22998,113.53565 267.3794,113.51368 C 267.52784,113.4922 267.66749,113.44972 267.79835,113.3877 C 267.92823,113.32569 268.03761,113.23975 268.12355,113.13086 C 268.21144,113.02197 268.25441,112.88379 268.25441,112.71533 C 268.25441,112.53515 268.19679,112.38916 268.08156,112.27685 C 267.9673,112.16455 267.81594,112.07177 267.62941,111.99658 C 267.44386,111.92236 267.23195,111.85693 266.9966,111.80078 C 266.76027,111.74463 266.52101,111.68262 266.27883,111.61377 C 266.02981,111.55176 265.78762,111.47559 265.55129,111.38525 C 265.31594,111.29541 265.10402,111.17822 264.9175,111.03515 C 264.73098,110.89208 264.58059,110.71337 264.46535,110.49853 C 264.35109,110.28369 264.29347,110.02392 264.29347,109.71923 C 264.29347,109.37646 264.36671,109.07958 264.51222,108.82763 C 264.6587,108.57568 264.85011,108.36572 265.08644,108.19726 C 265.32179,108.02929 265.58937,107.90478 265.8882,107.82372 C 266.18605,107.74315 266.48488,107.70263 266.78273,107.70263 C 267.13136,107.70263 267.46535,107.74169 267.78566,107.81982 C 268.105,107.89746 268.39015,108.02392 268.6382,108.19824 C 268.88722,108.37256 269.08449,108.59521 269.23097,108.86621 C 269.37648,109.13721 269.44972,109.46582 269.44972,109.85156 L 268.02784,109.85156 C 268.01514,109.65234 267.97315,109.4873 267.90284,109.35693 C 267.83155,109.22607 267.73682,109.12353 267.61964,109.04834 C 267.50148,108.97412 267.36671,108.9209 267.21534,108.89014 C 267.063,108.85889 266.89796,108.84326 266.71827,108.84326 C 266.60108,108.84326 266.48292,108.85596 266.36573,108.88037 C 266.24757,108.90576 266.14112,108.94922 266.04542,109.01123 C 265.94874,109.07373 265.86964,109.15137 265.80812,109.24463 C 265.7466,109.33838 265.71535,109.45654 265.71535,109.59961 C 265.71535,109.73047 265.73976,109.83643 265.78957,109.91699 C 265.83937,109.99804 265.93801,110.07275 266.08352,110.14111 C 266.22903,110.20947 266.43118,110.27832 266.68899,110.34668 C 266.9468,110.41504 267.28372,110.50244 267.70071,110.60791 C 267.82473,110.63281 267.99661,110.67822 268.21731,110.74365 C 268.43801,110.80908 268.65676,110.91308 268.87454,111.05615 C 269.09231,111.1997 269.27981,111.39111 269.43899,111.63037 C 269.59719,111.87012 269.67629,112.17676 269.67629,112.55029 C 269.67629,112.85547 269.61672,113.13867 269.49856,113.3999 C 269.3804,113.66162 269.20461,113.8872 268.97122,114.07666 C 268.73782,114.26709 268.44876,114.41455 268.10403,114.52051 C 267.75833,114.62647 267.35794,114.6792 266.90481,114.6792 C 266.53762,114.6792 266.18118,114.63379 265.83547,114.54346 C 265.49074,114.45313 265.18508,114.31104 264.92043,114.11768 C 264.65676,113.92432 264.4468,113.67774 264.29055,113.37891 C 264.13528,113.07959 264.06106,112.7251 264.06692,112.31397 L 265.4888,112.31397 C 265.48877,112.53809 265.52881,112.72803 265.60986,112.8833 z"
+   id="path298"
+   style="fill:#ffffff" />
+
+               <path
+   d="M 273.8667,107.8667 L 276.35986,114.53076 L 274.8374,114.53076 L 274.33349,113.04638 L 271.84033,113.04638 L 271.31787,114.53076 L 269.84326,114.53076 L 272.36377,107.8667 L 273.8667,107.8667 z M 273.95068,111.95264 L 273.11084,109.50928 L 273.09229,109.50928 L 272.22315,111.95264 L 273.95068,111.95264 z"
+   id="path300"
+   style="fill:#ffffff" />
+
+       </g>
+
+       <g
+   enable-background="new    "
+   id="g302">
+               <path
+   d="M 239.17821,107.8667 C 239.49559,107.8667 239.78563,107.89502 240.04735,107.95068 C 240.30907,108.00683 240.53368,108.09863 240.72118,108.22607 C 240.9077,108.35351 241.05321,108.52295 241.15575,108.73437 C 241.25829,108.94579 241.31005,109.20703 241.31005,109.51806 C 241.31005,109.854 241.23388,110.13329 241.08056,110.35742 C 240.92822,110.58154 240.70165,110.76465 240.40283,110.90771 C 240.81494,111.02587 241.12256,111.23291 241.32568,111.5288 C 241.5288,111.82469 241.63037,112.18114 241.63037,112.59814 C 241.63037,112.93408 241.56494,113.22509 241.43408,113.47119 C 241.30322,113.7168 241.12646,113.91748 240.90576,114.07324 C 240.68408,114.229 240.43115,114.34424 240.14795,114.41845 C 239.86377,114.49365 239.57275,114.53075 239.27295,114.53075 L 236.03662,114.53075 L 236.03662,107.86669 L 239.17821,107.86669 L 239.17821,107.8667 z M 238.99071,110.56201 C 239.25243,110.56201 239.46727,110.5 239.63622,110.37597 C 239.80419,110.25146 239.88817,110.05029 239.88817,109.77099 C 239.88817,109.61572 239.85985,109.48828 239.80419,109.38915 C 239.74755,109.28954 239.67333,109.21239 239.57958,109.15624 C 239.48583,109.10058 239.37841,109.06151 239.25731,109.04003 C 239.13524,109.01806 239.00926,109.00732 238.8784,109.00732 L 237.50535,109.00732 L 237.50535,110.56201 L 238.99071,110.56201 z M 239.07664,113.39014 C 239.22019,113.39014 239.35691,113.37647 239.48777,113.34815 C 239.61863,113.32032 239.73484,113.27344 239.83445,113.2085 C 239.93406,113.14307 240.01316,113.0542 240.07273,112.94239 C 240.1323,112.83058 240.1616,112.68751 240.1616,112.51319 C 240.1616,112.17139 240.06492,111.92725 239.87156,111.78126 C 239.6782,111.63527 239.42234,111.56202 239.10496,111.56202 L 237.50535,111.56202 L 237.50535,113.39014 L 239.07664,113.39014 z"
+   id="path304"
+   style="fill:#ffffff" />
+
+               <path
+   d="M 241.88914,107.8667 L 243.53269,107.8667 L 245.09324,110.49854 L 246.64402,107.8667 L 248.27781,107.8667 L 245.80418,111.97315 L 245.80418,114.53077 L 244.33543,114.53077 L 244.33543,111.93604 L 241.88914,107.8667 z"
+   id="path306"
+   style="fill:#ffffff" />
+
+       </g>
+
+       <g
+   id="g6316_1_"
+   transform="matrix(0.624995,0,0,0.624995,391.2294,176.9332)">
+
+                       <path
+   id="path6318_1_"
+   cx="475.97119"
+   ry="29.209877"
+   cy="252.08646"
+   type="arc"
+   rx="29.209877"
+   d="M -175.0083,-139.1153 C -175.00204,-129.7035 -182.62555,-122.06751 -192.03812,-122.06049 C -201.44913,-122.05341 -209.08512,-129.67774 -209.09293,-139.09028 C -209.09293,-139.09809 -209.09293,-139.10749 -209.09293,-139.1153 C -209.09919,-148.52784 -201.47413,-156.1623 -192.06311,-156.17011 C -182.65054,-156.17713 -175.01456,-148.55207 -175.0083,-139.14026 C -175.0083,-139.13092 -175.0083,-139.1239 -175.0083,-139.1153 z"
+   style="fill:#ffffff" />
+
+               <g
+   id="g6320_1_"
+   transform="translate(-23.9521,-89.72962)">
+                       <path
+   id="path6322_1_"
+   d="M -168.2204,-68.05536 C -173.39234,-68.05536 -177.76892,-66.25067 -181.35175,-62.64203 C -185.02836,-58.90759 -186.86588,-54.48883 -186.86588,-49.38568 C -186.86588,-44.28253 -185.02836,-39.89416 -181.35175,-36.22308 C -177.67673,-32.55114 -173.29859,-30.71521 -168.2204,-30.71521 C -163.07974,-30.71521 -158.62503,-32.56677 -154.85312,-36.26996 C -151.30307,-39.78558 -149.52652,-44.15827 -149.52652,-49.38568 C -149.52652,-54.6123 -151.33432,-59.03265 -154.94843,-62.64203 C -158.5625,-66.25067 -162.98599,-68.05536 -168.2204,-68.05536 z M -168.17352,-64.69519 C -163.936,-64.69519 -160.33752,-63.20221 -157.37655,-60.21466 C -154.38748,-57.25836 -152.89214,-53.64899 -152.89214,-49.38568 C -152.89214,-45.09186 -154.35466,-41.52856 -157.28438,-38.69653 C -160.36876,-35.64727 -163.99849,-34.12304 -168.17351,-34.12304 C -172.34856,-34.12304 -175.94701,-35.63244 -178.96892,-38.64965 C -181.9908,-41.66918 -183.50176,-45.24657 -183.50176,-49.38567 C -183.50176,-53.52398 -181.97518,-57.13414 -178.92205,-60.21465 C -175.9939,-63.20221 -172.41107,-64.69519 -168.17352,-64.69519 z" />
+
+                       <path
+   id="path6324_1_"
+   d="M -176.49548,-52.02087 C -175.75171,-56.71856 -172.44387,-59.22949 -168.30008,-59.22949 C -162.33911,-59.22949 -158.70783,-54.90448 -158.70783,-49.1372 C -158.70783,-43.50982 -162.57194,-39.13793 -168.39383,-39.13793 C -172.39856,-39.13793 -175.98297,-41.60277 -176.63611,-46.43877 L -171.93292,-46.43877 C -171.7923,-43.92778 -170.1626,-43.04418 -167.83447,-43.04418 C -165.1813,-43.04418 -163.4563,-45.50908 -163.4563,-49.27709 C -163.4563,-53.22942 -164.94693,-55.32244 -167.74228,-55.32244 C -169.79074,-55.32244 -171.55948,-54.57787 -171.93292,-52.02087 L -170.56418,-52.02789 L -174.26734,-48.32629 L -177.96894,-52.02789 L -176.49548,-52.02087 z" />
+
+               </g>
+
+       </g>
+
+       <g
+   id="g313">
+               <circle
+   cx="242.56226"
+   cy="90.224609"
+   r="10.8064"
+   id="circle315"
+   sodipodi:cx="242.56226"
+   sodipodi:cy="90.224609"
+   sodipodi:rx="10.8064"
+   sodipodi:ry="10.8064"
+   style="fill:#ffffff" />
+
+               <g
+   id="g317">
+                       <path
+   d="M 245.68994,87.09766 C 245.68994,86.68116 245.35205,86.34424 244.93603,86.34424 L 240.16357,86.34424 C 239.74755,86.34424 239.40966,86.68115 239.40966,87.09766 L 239.40966,91.87061 L 240.74071,91.87061 L 240.74071,97.52295 L 244.3579,97.52295 L 244.3579,91.87061 L 245.68993,91.87061 L 245.68993,87.09766 L 245.68994,87.09766 z"
+   id="path319" />
+
+                       <circle
+   cx="242.5498"
+   cy="84.083008"
+   r="1.63232"
+   id="circle321"
+   sodipodi:cx="242.5498"
+   sodipodi:cy="84.083008"
+   sodipodi:rx="1.63232"
+   sodipodi:ry="1.63232" />
+
+               </g>
+
+               <path
+   clip-rule="evenodd"
+   d="M 242.53467,78.31836 C 239.30322,78.31836 236.56641,79.4458 234.32715,81.70215 C 232.0293,84.03516 230.88086,86.79736 230.88086,89.98633 C 230.88086,93.1753 232.0293,95.91846 234.32715,98.21338 C 236.625,100.50781 239.36133,101.65527 242.53467,101.65527 C 245.74756,101.65527 248.53272,100.49853 250.88819,98.18359 C 253.10889,95.98681 254.21827,93.2539 254.21827,89.98632 C 254.21827,86.71874 253.08936,83.95751 250.83057,81.70214 C 248.57178,79.4458 245.80615,78.31836 242.53467,78.31836 z M 242.56396,80.41797 C 245.2124,80.41797 247.46142,81.35156 249.31103,83.21875 C 251.18115,85.06592 252.11572,87.32227 252.11572,89.98633 C 252.11572,92.66992 251.20068,94.89746 249.36963,96.66699 C 247.4419,98.57275 245.17334,99.52539 242.56397,99.52539 C 239.9546,99.52539 237.70557,98.58252 235.81739,96.6958 C 233.92774,94.80957 232.98389,92.57324 232.98389,89.98633 C 232.98389,87.3999 233.93799,85.14404 235.84619,83.21875 C 237.67676,81.35156 239.9165,80.41797 242.56396,80.41797 z"
+   id="path323"
+   style="fill-rule:evenodd" />
+
+       </g>
+
+</g>
+  </g>
+</svg>
diff --git a/_site/assets/favicon.png b/_site/assets/favicon.png
new file mode 100644 (file)
index 0000000..e817ebc
Binary files /dev/null and b/_site/assets/favicon.png differ
diff --git a/_site/assets/librejs-logo.png b/_site/assets/librejs-logo.png
new file mode 100644 (file)
index 0000000..0bb6eb2
Binary files /dev/null and b/_site/assets/librejs-logo.png differ
diff --git a/_site/assets/profile250.jpg b/_site/assets/profile250.jpg
new file mode 100644 (file)
index 0000000..d6426ac
Binary files /dev/null and b/_site/assets/profile250.jpg differ
diff --git a/_site/comment.rb b/_site/comment.rb
new file mode 100755 (executable)
index 0000000..14f1152
--- /dev/null
@@ -0,0 +1,332 @@
+#!/usr/bin/env ruby
+# encoding: utf-8
+# Copyright (C) 2016 Ian Kelling
+
+# 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/>.
+
+# debian sets LANG=C when starting apache2.
+# the envoding comment above fixes the internal encoding afaik,
+# Found this at
+# https://stackoverflow.com/questions/20521371/set-utf-8-as-default-for-ruby-1-9-3
+# also note  man ruby's -E arg.
+Encoding.default_external = Encoding::UTF_8
+
+require 'cgi'
+require 'fileutils'
+require 'time'
+require 'sqlite3'
+
+require_relative '../b'
+include B
+
+# constanty things
+DEBUG = true
+CAPTCHA = -> {
+  c = []
+  x = (<<EOF).split("\n")
+What does a dog wag?
+tail
+Would you sleep better on a bed or a keyboard?
+bed
+Are there more or less than one million people on the Earth?
+more
+Which of Lilly and Robert is more commonly a woman’s name?
+lilly
+Which word has fewer letters, adorable or fox?
+fox
+What is the normal color of milk?
+white
+Which of Iceland and Turkey is an island nation?
+iceland
+Is a filesystem like a tree or a rose?
+tree
+What character is a tilde?
+~
+Which is brighter, the moon or the sun?
+(the )?sun
+Which is closer, the moon or the sun?
+(the )?moon
+What language is this sentence written in?
+english
+What animal says "meow" and catches mice?
+cat
+What animal quacks and has webbed feet?
+duck
+Which are better fliers: worms or birds?
+birds
+Which typically runs first: a kernel or a web browser?
+kernel
+EOF
+  while x.length > 0
+    c << x.pop(2)
+  end
+  c
+}[]
+
+def do_captcha
+  captcha_q = CAPTCHA.sample[0]
+  puts "Content-type: text/html\n\n"
+  puts skel('comment.rb', "#{DN}/captcha", <<EOF, ' / <a href="/blog.html">blog</a> / comment-captcha')
+<p>Hello friend. I haven't read a post from #{IP}, and I only remember for a few months, so:</p>
+<p>#{captcha_q}</p>
+
+<form action="/comment.rb" method="post">
+  <input class="misc" type="text" name="url">
+  <input name="goto" type="hidden" value="#{GOTO}">
+  <input name="question" type="hidden" value="#{captcha_q}">
+  <input name="answer">
+<br>Your comment:
+  <textarea rows="10" name="comment" maxlength="1000">#{COMMENT_TXT}</textarea>
+  <input type="submit" value="Submit">
+</form>
+EOF
+  exit 0
+end
+
+
+def fail(msg)
+  if DEBUG and msg
+    puts "Content-type: text/plain\n\n"
+    puts msg
+  else
+    redir
+  end
+  exit 0
+end
+
+def redir
+  File.write('/tmp/x', GOTO)
+  puts 'Status: 302 Found'
+  puts "Location: #{GOTO}#comment-section\n\n"
+  exit(0)
+end
+
+
+def bn(*args)
+  File.basename *args
+end
+
+
+###### begin error checking & arg parsing ######
+cgi = CGI.new
+IP = cgi.remote_addr
+
+if cgi.has_key?('goto')
+  GOTO = cgi['goto']
+else
+  GOTO = '/'
+  fail['redir to /']
+end
+
+if (cgi.has_key?('url') && cgi['url'] != "") || ! cgi.has_key?('comment')
+  fail["comment not in form or url in form. cgi.params: #{cgi.params}"]
+end
+
+COMMENT_TXT = cgi["comment"]
+
+
+if COMMENT_TXT.length > 1000 or GOTO.length > 150
+  fail['length of comment or goto is too great']
+end
+
+
+captchad = false
+if cgi.has_key?('answer') && cgi.has_key?('question')
+  if cgi['answer'].downcase !~ /^#{CAPTCHA.to_h[cgi['question']]}$/
+    do_captcha
+  end
+  captchad = true
+end
+
+
+-> {
+  found = false
+  Dir.foreach('blog') do |entry|
+    next if ['.','..'].any? { |f| f == entry }
+    if GOTO == 'blog/' + entry
+      found = true
+      break
+    end
+  end
+  fail['goto entry not found'] unless found
+}[]
+######### end error checking & arg parsing ########
+
+
+$db = db_init
+state = nil
+WHITELIST_CUTOFF = NOW - 4*DAY
+
+
+####### begin: state for ips we've seen before #######
+[[5, 60], # 1 min
+ [10, 60*5], # 5 min
+ [20, 60*60], # 60 min
+ [30, 60*60*24], # 1 day
+ [60, 60*60*24*7]] # 1 week
+  .each do |max_posts, date|
+
+  if $db.execute(<<-SQL, [NOW - date])[0][0] > max_posts
+  select count(*) from c
+  where date > ? and ip = '#{IP}'
+SQL
+    state = 'rate_limited'
+  end
+end
+
+state ||= 'suspect' if $db.execute(<<-SQL)[0][0] > 0
+  select count(*) from c
+  where ip = '#{IP}' and (
+state = 'banned' or
+state = 'rate_limited')
+SQL
+
+unless state
+  older_date = NOW - DAY*2
+  last_moderated = $db.execute(<<-SQL, [older_date])[-1][0]
+  select date from c
+  where ip = '#{IP}' and (
+    state = 'moderated' or
+    (date < ? and (state = 'timed' or state = 'known')))
+SQL
+  last_good = $db.execute(<<-SQL, [older_date])[-1][0]
+  select date from c
+  where ip = '#{IP}' and (
+    state = 'picked' or
+    (date < ? and (state = 'timed' or state = 'known')))
+SQL
+  if last_moderated && last_good
+    if last_good > last_moderated
+      state = 'known'
+    else
+      # these 2 waiting conditions are not actually needed,
+      # since waiting is the default, but meh.
+      state = 'waiting'
+    end
+  elsif last_moderated
+    state = 'waiting'
+  elsif last_good
+    state = 'known'
+  end
+end
+####### end: state for ips we've seen before #######
+
+####### begin: whitelist checking #########
+glob = "../blog/#{'?'*'YYYY-MM-DD-'.length}#{bn GOTO, '.*'}.md"
+md_file = Dir[glob][0]
+unless state
+  b = bn(md_file,'.*')
+  post_date = Time.parse(b[0..DATE_LEN]).to_i
+  if post_date > WHITELIST_CUTOFF
+    state = 'timed'
+  end
+end
+###### end: whitelist checking ########
+
+state ||= 'waiting'
+
+if state != 'known' && ! captchad
+  do_captcha
+end
+
+
+# states:
+# timed
+# # was posted a whitelist period, so automatically posted.
+# # whitelist periods are per page times when legit comments are
+# # much more likely than spam, so we automatically let comments through.
+
+# known
+# # ip posted good comment before: either, one in picked state, or
+# # a timed/known comment which is over 2 days old (I saw it and didn't remove
+# # it)
+
+# picked
+# # manually marked as a good comment, so publish it.
+
+# rate_limited
+# # posting too much, consider them a spammer.
+
+# moderated
+# # bad comment, but don't ban them
+
+# banned
+# # all comments from this ip dead, new comment's dont even go into the db.
+
+# waiting
+# # waiting for manual moderation, get's posted automatically if there
+# # is none in 24 hours
+
+# suspect
+# # had a bad post in the past. does not
+# # automatically get posted in time without moderation.
+
+
+# any of the manual states
+date = $db.execute(<<-SQL)[0][0]
+select max(date) from c where
+state = 'moderated' or
+state = 'banned' or
+state = 'picked'
+SQL
+
+# not the bad automatic states
+query = <<-SQL
+select count(*) from c where
+state != 'rate_limited' and
+state != 'suspect'
+SQL
+
+
+if date
+  new_count = $db.execute(query + 'and date > ?',date)
+else
+  new_count = $db.execute(query)
+end
+
+if new_count == 1
+  require 'net/smtp'
+  def send_email(opts={})
+    opts[:to]          ||= ENV['USER']
+    opts[:server]      ||= 'localhost'
+    opts[:from]        ||= ENV['USER']
+    opts[:from_alias]  ||= ENV['USER']
+    opts[:subject]     ||= "test subject"
+    opts[:body]        ||= ""
+
+    msg = <<END_OF_MESSAGE
+From: #{opts[:from_alias]} <#{opts[:from]}>
+To: <#{opts[:to]}>
+Subject: #{opts[:subject]}
+
+#{opts[:body]}
+END_OF_MESSAGE
+
+    Net::SMTP.start(opts[:server]) do |smtp|
+      smtp.send_message msg, opts[:from], opts[:to]
+    end
+  end
+  send_email :subject => 'new comments on iankelling.org'
+end
+
+$db.execute('insert into c values (NULL, ?, ?, ?, ?, ?)',
+            [state,
+             IP,
+             NOW,
+             GOTO,
+             COMMENT_TXT])
+
+post(md_file)
+
+redir
diff --git a/_site/common.css b/_site/common.css
new file mode 100644 (file)
index 0000000..d0c5e76
--- /dev/null
@@ -0,0 +1,28 @@
+/* a few other things are duplicated in main.css and gitweb.css,*/
+/* but they are for different classes and such, and it's not worth using*/
+/* css variables etc at this point. */
+
+/* nice font seen elsewhere. google -> stackoverflow -> localfont.com */
+/* If I didn't use this font, I'd just go with sans-serif */
+@font-face {
+    font-family: 'Open Sans';
+    font-weight: 400;
+    font-style: normal;
+    src: url('/font/Open-Sans-regular/Open-Sans-regular.eot');
+    src: url('/font/Open-Sans-regular/Open-Sans-regular.eot?#iefix') format('embedded-opentype'),
+    local('Open Sans'),
+    local('Open-Sans-regular'),
+    url('/font/Open-Sans-regular/Open-Sans-regular.woff2') format('woff2'),
+    url('/font/Open-Sans-regular/Open-Sans-regular.woff') format('woff'),
+    url('/font/Open-Sans-regular/Open-Sans-regular.ttf') format('truetype'),
+    url('/font/Open-Sans-regular/Open-Sans-regular.svg#Open Sans') format('svg');
+}
+
+
+body {
+    font-family: 'Open Sans',sans-serif;
+    /* default too bright. use gitweb's color */
+    background-color: #d9d8d1;
+    /* get rid of the small default margin so we can stripe the page */
+    margin: 0;
+}
diff --git a/_site/disabled.css b/_site/disabled.css
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/_site/font/Open-Sans-regular/LICENSE.txt b/_site/font/Open-Sans-regular/LICENSE.txt
new file mode 100644 (file)
index 0000000..d645695
--- /dev/null
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/_site/font/Open-Sans-regular/Open-Sans-regular.eot b/_site/font/Open-Sans-regular/Open-Sans-regular.eot
new file mode 100644 (file)
index 0000000..1d98e6e
Binary files /dev/null and b/_site/font/Open-Sans-regular/Open-Sans-regular.eot differ
diff --git a/_site/font/Open-Sans-regular/Open-Sans-regular.svg b/_site/font/Open-Sans-regular/Open-Sans-regular.svg
new file mode 100644 (file)
index 0000000..052c59f
--- /dev/null
@@ -0,0 +1,1637 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<defs >
+<font id="OpenSans" horiz-adv-x="1206" ><font-face
+    font-family="Open Sans"
+    units-per-em="2048"
+    panose-1="2 11 6 6 3 5 4 2 2 4"
+    ascent="2189"
+    descent="-600"
+    alphabetic="0" />
+<glyph unicode=" " glyph-name="space" horiz-adv-x="532" />
+<glyph unicode="!" glyph-name="exclam" horiz-adv-x="547" d="M326 403H221L170 1462H377L326 403ZM152 106Q152 242 272 242Q330 242 361 207T393 106Q393 42 361 7T272 -29Q220 -29 186 2T152 106Z" />
+<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="821" d="M319 1462L279 934H174L133 1462H319ZM688 1462L647 934H543L502 1462H688Z" />
+<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="1323" d="M981 899L915 559H1198V430H891L807 0H670L754 430H451L369 0H233L313 430H51V559H338L406 899H129V1026H428L510 1462H649L567 1026H872L956 1462H1090L1006 1026H1270V899H981ZM475 559H778L844
+899H541L475 559Z" />
+<glyph unicode="$" glyph-name="dollar" horiz-adv-x="1171" d="M1036 449Q1036 313 934 225T649 113V-119H520V104Q408 104 303 121T131 170V326Q214 289 322 266T520 242V682Q315 747 233 833T150 1055Q150 1186 251 1270T520 1372V1554H649V1374Q833 1369 1004
+1300L952 1169Q803 1228 649 1239V805Q806 755 884 708T999 599T1036 449ZM866 436Q866 508 822 552T649 641V252Q866 282 866 436ZM319 1057Q319 981 364 935T520 848V1235Q421 1219 370 1173T319 1057Z" />
+<glyph unicode="%" glyph-name="percent" horiz-adv-x="1686" d="M242 1026Q242 856 279 771T399 686Q563 686 563 1026Q563 1364 399 1364Q316 1364 279 1280T242 1026ZM700 1026Q700 798 624 682T399 565Q259 565 182 684T104 1026Q104 1253 178 1368T399 1483Q544
+1483 622 1364T700 1026ZM1122 440Q1122 269 1159 185T1280 100Q1364 100 1404 183T1444 440Q1444 611 1404 693T1280 776Q1196 776 1159 694T1122 440ZM1581 440Q1581 213 1505 97T1280 -20Q1138 -20 1062 99T985 440Q985 667 1059 782T1280 897Q1422 897 1501
+780T1581 440ZM1323 1462L512 0H365L1176 1462H1323Z" />
+<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="1495" d="M414 1171Q414 1102 450 1040T573 889Q702 964 752 1027T803 1174Q803 1251 752 1299T614 1348Q525 1348 470 1300T414 1171ZM569 129Q810 129 969 283L532 707Q421 639 375 595T307 499T285
+383Q285 266 362 198T569 129ZM113 379Q113 509 182 609T432 811Q347 906 317 955T268 1057T250 1167Q250 1317 348 1401T621 1485Q783 1485 876 1402T969 1169Q969 1062 901 972T676 788L1083 397Q1139 459 1172 542T1229 725H1397Q1329 439 1192 291L1491 0H1262L1077
+178Q959 72 837 26T565 -20Q350 -20 232 86T113 379Z" />
+<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="453" d="M319 1462L279 934H174L133 1462H319Z" />
+<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="606" d="M82 561Q82 826 159 1057T383 1462H545Q401 1269 329 1038T256 563Q256 323 330 94T543 -324H383Q236 -154 159 73T82 561Z" />
+<glyph unicode=")" glyph-name="parenright" horiz-adv-x="606" d="M524 561Q524 298 447 71T223 -324H63Q202 -136 276 93T350 563Q350 807 278 1038T61 1462H223Q370 1287 447 1056T524 561Z" />
+<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="1130" d="M657 1556L614 1161L1012 1272L1038 1090L657 1059L905 733L733 639L557 1001L397 639L221 733L463 1059L86 1090L115 1272L506 1161L463 1556H657Z" />
+<glyph unicode="+" glyph-name="plus" horiz-adv-x="1171" d="M653 791H1065V653H653V227H514V653H104V791H514V1219H653V791Z" />
+<glyph unicode="," glyph-name="comma" horiz-adv-x="502" d="M350 238L365 215Q339 115 290 -17T188 -264H63Q90 -160 122 -7T168 238H350Z" />
+<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="659" d="M84 473V625H575V473H84Z" />
+<glyph unicode="." glyph-name="period" horiz-adv-x="545" d="M152 106Q152 173 182 207T270 242Q328 242 360 208T393 106Q393 41 360 6T270 -29Q219 -29 186 2T152 106Z" />
+<glyph unicode="/" glyph-name="slash" horiz-adv-x="752" d="M731 1462L186 0H20L565 1462H731Z" />
+<glyph unicode="0" glyph-name="zero" horiz-adv-x="1171" d="M1069 733Q1069 354 950 167T584 -20Q348 -20 225 171T102 733Q102 1115 221 1300T584 1485Q822 1485 945 1292T1069 733ZM270 733Q270 414 345 269T584 123Q750 123 824 270T899 733Q899 1048 825
+1194T584 1341Q420 1341 345 1197T270 733Z" />
+<glyph unicode="1" glyph-name="one" horiz-adv-x="1171" d="M715 0H553V1042Q553 1172 561 1288Q540 1267 514 1244T276 1049L188 1163L575 1462H715V0Z" />
+<glyph unicode="2" glyph-name="two" horiz-adv-x="1171" d="M1061 0H100V143L485 530Q661 708 717 784T801 932T829 1087Q829 1204 758 1272T561 1341Q470 1341 389 1311T207 1202L119 1315Q321 1483 559 1483Q765 1483 882 1378T999 1094Q999 955 921 819T629
+475L309 162V154H1061V0Z" />
+<glyph unicode="3" glyph-name="three" horiz-adv-x="1171" d="M1006 1118Q1006 978 928 889T705 770V762Q881 740 966 650T1051 414Q1051 205 906 93T494 -20Q378 -20 282 -3T94 59V217Q189 170 296 146T500 121Q879 121 879 418Q879 684 461 684H317V827H463Q634
+827 734 902T834 1112Q834 1219 761 1280T561 1341Q465 1341 380 1315T186 1219L102 1331Q192 1402 309 1442T557 1483Q770 1483 888 1386T1006 1118Z" />
+<glyph unicode="4" glyph-name="four" horiz-adv-x="1171" d="M1130 336H913V0H754V336H43V481L737 1470H913V487H1130V336ZM754 487V973Q754 1116 764 1296H756Q708 1200 666 1137L209 487H754Z" />
+<glyph unicode="5" glyph-name="five" horiz-adv-x="1171" d="M557 893Q788 893 920 779T1053 465Q1053 238 909 109T510 -20Q263 -20 133 59V219Q203 174 307 149T512 123Q688 123 785 206T883 446Q883 752 508 752Q413 752 254 723L168 778L223 1462H950V1309H365L328
+870Q443 893 557 893Z" />
+<glyph unicode="6" glyph-name="six" horiz-adv-x="1171" d="M117 625Q117 1056 284 1269T780 1483Q893 1483 958 1464V1321Q881 1346 782 1346Q547 1346 423 1200T287 739H299Q409 911 647 911Q844 911 957 792T1071 469Q1071 241 947 111T610 -20Q383 -20 250
+150T117 625ZM608 121Q750 121 828 210T907 469Q907 614 834 697T616 780Q526 780 451 743T332 641T287 506Q287 403 327 314T440 173T608 121Z" />
+<glyph unicode="7" glyph-name="seven" horiz-adv-x="1171" d="M285 0L891 1309H94V1462H1067V1329L469 0H285Z" />
+<glyph unicode="8" glyph-name="eight" horiz-adv-x="1171" d="M584 1483Q784 1483 901 1390T1018 1133Q1018 1025 951 936T737 774Q915 689 990 596T1065 379Q1065 197 938 89T590 -20Q356 -20 230 82T104 373Q104 624 410 764Q272 842 212 932T152 1135Q152
+1294 269 1388T584 1483ZM268 369Q268 249 351 182T586 115Q735 115 818 185T901 377Q901 474 823 549T551 696Q402 632 335 555T268 369ZM582 1348Q457 1348 386 1288T315 1128Q315 1036 374 970T592 838Q735 898 794 967T854 1128Q854 1229 782 1288T582 1348Z"
+/>
+<glyph unicode="9" glyph-name="nine" horiz-adv-x="1171" d="M1061 838Q1061 -20 397 -20Q281 -20 213 0V143Q293 117 395 117Q635 117 757 265T891 721H879Q824 638 733 595T528 551Q334 551 220 667T106 991Q106 1219 233 1351T569 1483Q718 1483 829 1407T1001
+1184T1061 838ZM569 1341Q426 1341 348 1249T270 993Q270 849 342 767T561 684Q652 684 728 721T849 822T893 956Q893 1061 852 1150T738 1290T569 1341Z" />
+<glyph unicode=":" glyph-name="colon" horiz-adv-x="545" d="M152 106Q152 173 182 207T270 242Q328 242 360 208T393 106Q393 41 360 6T270 -29Q219 -29 186 2T152 106ZM152 989Q152 1124 270 1124Q393 1124 393 989Q393 924 360 889T270 854Q219 854 186 885T152 989Z" />
+<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="545" d="M350 238L365 215Q339 115 290 -17T188 -264H63Q90 -160 122 -7T168 238H350ZM147 989Q147 1124 266 1124Q389 1124 389 989Q389 924 356 889T266 854Q208 854 178 889T147 989Z" />
+<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="1171" d="M1065 242L104 664V762L1065 1241V1092L283 721L1065 393V242Z" />
+<glyph unicode="=" glyph-name="equal" horiz-adv-x="1171" d="M119 858V995H1049V858H119ZM119 449V586H1049V449H119Z" />
+<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="1171" d="M104 393L887 719L104 1092V1241L1065 762V664L104 242V393Z" />
+<glyph unicode="?" glyph-name="question" horiz-adv-x="879" d="M289 403V457Q289 574 325 649T459 809Q595 924 630 982T666 1122Q666 1224 601 1279T412 1335Q333 1335 258 1317T86 1249L27 1384Q216 1483 422 1483Q613 1483 719 1389T825 1124Q825 1051 806
+996T748 891T584 731Q483 645 451 588T418 436V403H289ZM240 106Q240 242 360 242Q418 242 449 207T481 106Q481 42 449 7T360 -29Q308 -29 274 2T240 106Z" />
+<glyph unicode="@" glyph-name="at" horiz-adv-x="1841" d="M1720 729Q1720 587 1676 469T1552 286T1368 221Q1282 221 1223 273T1153 406H1145Q1105 319 1031 270T854 221Q704 221 620 323T535 602Q535 806 653 933T963 1061Q1031 1061 1117 1049T1272 1014L1247
+544V522Q1247 344 1380 344Q1471 344 1528 451T1585 731Q1585 912 1511 1048T1301 1257T987 1331Q764 1331 599 1239T347 975T260 578Q260 273 421 109T885 -55Q1095 -55 1321 31V-102Q1129 -186 885 -186Q522 -186 322 13T121 571Q121 831 228 1034T533 1348T987
+1460Q1202 1460 1369 1370T1628 1113T1720 729ZM686 598Q686 344 881 344Q1088 344 1106 657L1120 918Q1048 938 963 938Q833 938 760 848T686 598Z" />
+<glyph unicode="A" glyph-name="A" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885Z" />
+<glyph unicode="B" glyph-name="B" horiz-adv-x="1327" d="M201 1462H614Q905 1462 1035 1375T1165 1100Q1165 970 1093 886T881 776V766Q1214 709 1214 416Q1214 220 1082 110T711 0H201V1462ZM371 836H651Q831 836 910 892T989 1083Q989 1206 901 1260T621 1315H371V836ZM371
+692V145H676Q853 145 942 213T1032 428Q1032 564 941 628T662 692H371Z" />
+<glyph unicode="C" glyph-name="C" horiz-adv-x="1292" d="M827 1331Q586 1331 447 1171T307 731Q307 444 441 288T825 131Q978 131 1174 186V37Q1022 -20 799 -20Q476 -20 301 176T125 733Q125 959 209 1129T453 1391T829 1483Q1059 1483 1231 1399L1159 1253Q993
+1331 827 1331Z" />
+<glyph unicode="D" glyph-name="D" horiz-adv-x="1493" d="M1368 745Q1368 383 1172 192T606 0H201V1462H649Q990 1462 1179 1273T1368 745ZM1188 739Q1188 1025 1045 1170T618 1315H371V147H578Q882 147 1035 296T1188 739Z" />
+<glyph unicode="E" glyph-name="E" horiz-adv-x="1139" d="M1016 0H201V1462H1016V1311H371V840H977V690H371V152H1016V0Z" />
+<glyph unicode="F" glyph-name="F" horiz-adv-x="1057" d="M371 0H201V1462H1016V1311H371V776H977V625H371V0Z" />
+<glyph unicode="G" glyph-name="G" horiz-adv-x="1491" d="M844 766H1341V55Q1225 18 1105 -1T827 -20Q495 -20 310 177T125 731Q125 959 216 1130T480 1392T883 1483Q1117 1483 1319 1397L1253 1247Q1055 1331 872 1331Q605 1331 455 1172T305 731Q305 435 449
+282T874 129Q1026 129 1171 164V614H844V766Z" />
+<glyph unicode="H" glyph-name="H" horiz-adv-x="1511" d="M1311 0H1141V688H371V0H201V1462H371V840H1141V1462H1311V0Z" />
+<glyph unicode="I" glyph-name="I" horiz-adv-x="571" d="M201 0V1462H371V0H201Z" />
+<glyph unicode="J" glyph-name="J" horiz-adv-x="547" d="M-12 -385Q-106 -385 -160 -358V-213Q-89 -233 -12 -233Q87 -233 138 -173T190 0V1462H360V14Q360 -176 264 -280T-12 -385Z" />
+<glyph unicode="K" glyph-name="K" horiz-adv-x="1257" d="M1257 0H1057L524 709L371 573V0H201V1462H371V737L1034 1462H1235L647 827L1257 0Z" />
+<glyph unicode="L" glyph-name="L" horiz-adv-x="1063" d="M201 0V1462H371V154H1016V0H201Z" />
+<glyph unicode="M" glyph-name="M" horiz-adv-x="1849" d="M848 0L352 1296H344Q358 1142 358 930V0H201V1462H457L920 256H928L1395 1462H1649V0H1479V942Q1479 1104 1493 1294H1485L985 0H848Z" />
+<glyph unicode="N" glyph-name="N" horiz-adv-x="1544" d="M1343 0H1149L350 1227H342Q358 1011 358 831V0H201V1462H393L1190 240H1198Q1196 267 1189 413T1184 623V1462H1343V0Z" />
+<glyph unicode="O" glyph-name="O" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042 129 1166 282T1290 733Q1290 1028
+1167 1180T801 1333Q558 1333 432 1180T305 733Z" />
+<glyph unicode="P" glyph-name="P" horiz-adv-x="1233" d="M1128 1036Q1128 814 977 695T543 575H371V0H201V1462H580Q1128 1462 1128 1036ZM371 721H524Q750 721 851 794T952 1028Q952 1173 857 1244T561 1315H371V721Z" />
+<glyph unicode="Q" glyph-name="Q" horiz-adv-x="1595" d="M1470 733Q1470 452 1357 266T1038 14L1386 -348H1139L854 -18L799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042
+129 1166 282T1290 733Q1290 1028 1167 1180T801 1333Q558 1333 432 1180T305 733Z" />
+<glyph unicode="R" glyph-name="R" horiz-adv-x="1266" d="M371 608V0H201V1462H602Q871 1462 999 1359T1128 1049Q1128 759 834 657L1231 0H1030L676 608H371ZM371 754H604Q784 754 868 825T952 1040Q952 1185 867 1249T592 1313H371V754Z" />
+<glyph unicode="S" glyph-name="S" horiz-adv-x="1124" d="M1026 389Q1026 196 886 88T506 -20Q246 -20 106 47V211Q196 173 302 151T512 129Q682 129 768 193T854 373Q854 449 824 497T722 587T504 680Q300 753 213 853T125 1114Q125 1283 252 1383T588 1483Q806
+1483 989 1403L936 1255Q755 1331 584 1331Q449 1331 373 1273T297 1112Q297 1036 325 988T419 899T623 809Q853 727 939 633T1026 389Z" />
+<glyph unicode="T" glyph-name="T" horiz-adv-x="1133" d="M651 0H481V1311H18V1462H1114V1311H651V0Z" />
+<glyph unicode="U" glyph-name="U" horiz-adv-x="1491" d="M1305 1462V516Q1305 266 1154 123T739 -20Q475 -20 331 124T186 520V1462H356V508Q356 325 456 227T750 129Q935 129 1035 227T1135 510V1462H1305Z" />
+<glyph unicode="V" glyph-name="V" horiz-adv-x="1219" d="M1036 1462H1219L692 0H524L0 1462H180L516 516Q574 353 608 199Q644 361 702 522L1036 1462Z" />
+<glyph unicode="W" glyph-name="W" horiz-adv-x="1896" d="M1477 0H1309L1014 979Q993 1044 967 1143T940 1262Q918 1130 870 973L584 0H416L27 1462H207L438 559Q486 369 508 215Q535 398 588 573L850 1462H1030L1305 565Q1353 410 1386 215Q1405 357 1458 561L1688
+1462H1868L1477 0Z" />
+<glyph unicode="X" glyph-name="X" horiz-adv-x="1182" d="M1174 0H981L588 643L188 0H8L494 764L41 1462H229L592 883L958 1462H1139L686 770L1174 0Z" />
+<glyph unicode="Y" glyph-name="Y" horiz-adv-x="1147" d="M573 731L963 1462H1147L659 567V0H487V559L0 1462H186L573 731Z" />
+<glyph unicode="Z" glyph-name="Z" horiz-adv-x="1169" d="M1087 0H82V133L858 1309H106V1462H1065V1329L289 154H1087V0Z" />
+<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="674" d="M623 -324H166V1462H623V1321H334V-182H623V-324Z" />
+<glyph unicode="\" glyph-name="backslash" horiz-adv-x="752" d="M186 1462L733 0H567L23 1462H186Z" />
+<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="674" d="M51 -182H340V1321H51V1462H508V-324H51V-182Z" />
+<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="1110" d="M49 551L483 1473H582L1059 551H907L535 1296L201 551H49Z" />
+<glyph unicode="_" glyph-name="underscore" horiz-adv-x="918" d="M922 -315H-4V-184H922V-315Z" />
+<glyph unicode="`" glyph-name="grave" horiz-adv-x="1182" d="M786 1241H676Q611 1293 522 1389T393 1548V1569H596Q628 1500 685 1410T786 1266V1241Z" />
+<glyph unicode="a" glyph-name="a" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784 1114 878 1027T973
+748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117Z" />
+<glyph unicode="b" glyph-name="b" horiz-adv-x="1255" d="M686 1114Q902 1114 1021 967T1141 549Q1141 279 1021 130T686 -20Q579 -20 491 19T342 141H330L295 0H176V1556H342V1178Q342 1051 334 950H342Q458 1114 686 1114ZM662 975Q492 975 417 878T342 549Q342
+318 419 219T666 119Q819 119 894 230T969 551Q969 765 894 870T662 975Z" />
+<glyph unicode="c" glyph-name="c" horiz-adv-x="975" d="M614 -20Q376 -20 246 126T115 541Q115 816 247 966T625 1116Q704 1116 783 1099T907 1059L856 918Q801 940 736 954T621 969Q287 969 287 543Q287 341 368 233T610 125Q747 125 891 184V37Q781 -20 614 -20Z" />
+<glyph unicode="d" glyph-name="d" horiz-adv-x="1255" d="M922 147H913Q798 -20 569 -20Q354 -20 235 127T115 545Q115 816 235 966T569 1116Q792 1116 911 954H924L917 1033L913 1110V1556H1079V0H944L922 147ZM590 119Q760 119 836 211T913 510V545Q913 778
+836 877T588 977Q442 977 365 864T287 543Q287 333 364 226T590 119Z" />
+<glyph unicode="e" glyph-name="e" horiz-adv-x="1149" d="M639 -20Q396 -20 256 128T115 539Q115 804 245 960T596 1116Q802 1116 922 981T1042 623V518H287Q292 325 384 225T645 125Q822 125 995 199V51Q907 13 829 -3T639 -20ZM594 977Q462 977 384 891T291
+653H864Q864 810 794 893T594 977Z" />
+<glyph unicode="f" glyph-name="f" horiz-adv-x="694" d="M670 967H391V0H225V967H29V1042L225 1102V1163Q225 1567 578 1567Q665 1567 782 1532L739 1399Q643 1430 575 1430Q481 1430 436 1368T391 1167V1096H670V967Z" />
+<glyph unicode="g" glyph-name="g" horiz-adv-x="1122" d="M1073 1096V991L870 967Q898 932 920 876T942 748Q942 587 832 491T530 395Q481 395 438 403Q332 347 332 262Q332 217 369 196T496 174H690Q868 174 963 99T1059 -119Q1059 -301 913 -396T487 -492Q272
+-492 156 -412T39 -186Q39 -86 103 -13T283 86Q241 105 213 145T184 238Q184 298 216 343T317 430Q232 465 179 549T125 741Q125 921 233 1018T539 1116Q625 1116 694 1096H1073ZM199 -184Q199 -273 274 -319T489 -365Q698 -365 798 -303T899 -133Q899 -44 844
+-10T637 25H438Q325 25 262 -29T199 -184ZM289 745Q289 630 354 571T535 512Q778 512 778 748Q778 995 532 995Q415 995 352 932T289 745Z" />
+<glyph unicode="h" glyph-name="h" horiz-adv-x="1257" d="M926 0V709Q926 843 865 909T674 975Q501 975 422 881T342 573V0H176V1556H342V1085Q342 1000 334 944H344Q393 1023 483 1068T690 1114Q891 1114 991 1019T1092 715V0H926Z" />
+<glyph unicode="i" glyph-name="i" horiz-adv-x="518" d="M342 0H176V1096H342V0ZM162 1393Q162 1450 190 1476T260 1503Q300 1503 329 1476T358 1393Q358 1337 329 1310T260 1282Q218 1282 190 1309T162 1393Z" />
+<glyph unicode="j" glyph-name="j" horiz-adv-x="518" d="M43 -492Q-52 -492 -111 -467V-332Q-42 -352 25 -352Q103 -352 139 -310T176 -180V1096H342V-168Q342 -492 43 -492ZM162 1393Q162 1450 190 1476T260 1503Q300 1503 329 1476T358 1393Q358 1337 329 1310T260
+1282Q218 1282 190 1309T162 1393Z" />
+<glyph unicode="k" glyph-name="k" horiz-adv-x="1075" d="M340 561Q383 622 471 721L825 1096H1022L578 629L1053 0H852L465 518L340 410V0H176V1556H340V731Q340 676 332 561H340Z" />
+<glyph unicode="l" glyph-name="l" horiz-adv-x="518" d="M342 0H176V1556H342V0Z" />
+<glyph unicode="m" glyph-name="m" horiz-adv-x="1905" d="M1573 0V713Q1573 844 1517 909T1343 975Q1188 975 1114 886T1040 612V0H874V713Q874 844 818 909T643 975Q487 975 415 882T342 575V0H176V1096H311L338 946H346Q393 1026 478 1071T670 1116Q927 1116
+1006 930H1014Q1063 1016 1156 1066T1368 1116Q1554 1116 1646 1021T1739 715V0H1573Z" />
+<glyph unicode="n" glyph-name="n" horiz-adv-x="1257" d="M926 0V709Q926 843 865 909T674 975Q502 975 422 882T342 575V0H176V1096H311L338 946H346Q397 1027 489 1071T694 1116Q892 1116 992 1021T1092 715V0H926Z" />
+<glyph unicode="o" glyph-name="o" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q467 -20 353 49T177 247T115 549Q115 817 249 966T621 1116Q851 1116 986 963T1122 549ZM287 549Q287 339 371 229T618 119Q781 119 865 228T950 549Q950 758 866
+866T616 975Q453 975 370 868T287 549Z" />
+<glyph unicode="p" glyph-name="p" horiz-adv-x="1255" d="M686 -20Q579 -20 491 19T342 141H330Q342 45 342 -41V-492H176V1096H311L334 946H342Q406 1036 491 1076T686 1116Q904 1116 1022 967T1141 549Q1141 279 1021 130T686 -20ZM662 975Q494 975 419 882T342
+586V549Q342 318 419 219T666 119Q808 119 888 234T969 551Q969 756 889 865T662 975Z" />
+<glyph unicode="q" glyph-name="q" horiz-adv-x="1255" d="M590 119Q756 119 832 208T913 508V545Q913 775 835 876T588 977Q442 977 365 864T287 543Q287 336 363 228T590 119ZM565 -20Q353 -20 234 129T115 545Q115 814 235 965T569 1116Q794 1116 915 946H924L948
+1096H1079V-492H913V-23Q913 77 924 147H911Q796 -20 565 -20Z" />
+<glyph unicode="r" glyph-name="r" horiz-adv-x="836" d="M676 1116Q749 1116 807 1104L784 950Q716 965 664 965Q531 965 437 857T342 588V0H176V1096H313L332 893H340Q401 1000 487 1058T676 1116Z" />
+<glyph unicode="s" glyph-name="s" horiz-adv-x="977" d="M883 299Q883 146 769 63T449 -20Q231 -20 109 49V203Q188 163 278 140T453 117Q583 117 653 158T723 285Q723 349 668 394T451 502Q298 559 234 601T138 698T106 827Q106 961 215 1038T514 1116Q691 1116
+860 1044L801 909Q636 977 502 977Q384 977 324 940T264 838Q264 794 286 763T359 704T551 623Q746 552 814 480T883 299Z" />
+<glyph unicode="t" glyph-name="t" horiz-adv-x="723" d="M530 117Q574 117 615 123T680 137V10Q653 -3 601 -11T506 -20Q188 -20 188 315V967H31V1047L188 1116L258 1350H354V1096H672V967H354V322Q354 223 401 170T530 117Z" />
+<glyph unicode="u" glyph-name="u" horiz-adv-x="1257" d="M332 1096V385Q332 251 393 185T584 119Q756 119 835 213T915 520V1096H1081V0H944L920 147H911Q860 66 770 23T563 -20Q363 -20 264 75T164 379V1096H332Z" />
+<glyph unicode="v" glyph-name="v" horiz-adv-x="1026" d="M416 0L0 1096H178L414 446Q494 218 508 150H516Q527 203 585 369T848 1096H1026L610 0H416Z" />
+<glyph unicode="w" glyph-name="w" horiz-adv-x="1593" d="M1071 0L870 643Q851 702 799 911H791Q751 736 721 641L514 0H322L23 1096H197Q303 683 358 467T422 176H430Q441 233 465 323T508 467L709 1096H889L1085 467Q1141 295 1161 178H1169Q1173 214 1190
+289T1399 1096H1571L1268 0H1071Z" />
+<glyph unicode="x" glyph-name="x" horiz-adv-x="1073" d="M440 561L59 1096H248L537 676L825 1096H1012L631 561L1032 0H844L537 444L227 0H39L440 561Z" />
+<glyph unicode="y" glyph-name="y" horiz-adv-x="1032" d="M2 1096H180L420 471Q499 257 518 162H526Q539 213 580 336T852 1096H1030L559 -152Q489 -337 396 -414T166 -492Q90 -492 16 -475V-342Q71 -354 139 -354Q310 -354 383 -162L444 -6L2 1096Z" />
+<glyph unicode="z" glyph-name="z" horiz-adv-x="958" d="M877 0H82V113L680 967H119V1096H862V967L272 129H877V0Z" />
+<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="776" d="M475 12Q475 -90 533 -136T705 -184V-324Q515 -322 411 -237T307 2V305Q307 409 244 453T61 498V639Q191 641 249 687T307 829V1135Q307 1290 415 1376T705 1462V1323Q475 1317 475 1124V829Q475
+614 252 575V563Q475 524 475 309V12Z" />
+<glyph unicode="|" glyph-name="bar" horiz-adv-x="1128" d="M494 1556H635V-496H494V1556Z" />
+<glyph unicode="}" glyph-name="braceright" horiz-adv-x="776" d="M522 575Q299 614 299 829V1124Q299 1317 72 1323V1462Q256 1462 361 1375T467 1135V829Q467 732 526 687T715 639V498Q593 498 530 454T467 305V2Q467 -151 365 -236T72 -324V-184Q183 -182
+241 -136T299 12V309Q299 423 354 483T522 563V575Z" />
+<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="1171" d="M338 713Q285 713 222 680T104 592V743Q204 852 348 852Q416 852 472 838T618 786Q684 758 733 745T829 731Q883 731 947 763T1065 852V702Q963 592 821 592Q749 592 686 608T551 657Q476 689
+431 701T338 713Z" />
+<glyph unicode="&#xa0;" glyph-name="nbspace" horiz-adv-x="532" />
+<glyph unicode="&#xa1;" glyph-name="exclamdown" horiz-adv-x="547" d="M219 684H324L375 -373H168L219 684ZM393 983Q393 848 272 848Q212 848 182 883T152 983Q152 1046 183 1082T272 1118Q323 1118 358 1086T393 983Z" />
+<glyph unicode="&#xa2;" glyph-name="cent" horiz-adv-x="1171" d="M971 240Q866 186 719 180V-20H586V186Q383 218 287 354T190 741Q190 1249 586 1311V1483H721V1319Q796 1316 867 1300T987 1260L938 1120Q805 1171 696 1171Q524 1171 443 1066T362 743Q362
+531 441 430T688 328Q829 328 971 387V240Z" />
+<glyph unicode="&#xa3;" glyph-name="sterling" horiz-adv-x="1171" d="M682 1481Q872 1481 1042 1397L981 1264Q827 1341 684 1341Q561 1341 499 1279T436 1077V782H858V655H436V434Q436 334 404 266T297 154H1092V0H63V141Q268 188 268 432V655H70V782H268V1098Q268
+1276 380 1378T682 1481Z" />
+<glyph unicode="&#xa4;" glyph-name="currency" horiz-adv-x="1171" d="M184 723Q184 845 258 952L123 1092L217 1184L352 1051Q456 1124 586 1124Q713 1124 815 1051L952 1184L1047 1092L913 954Q987 841 987 723Q987 592 913 489L1044 354L952 262L815 395Q713
+324 586 324Q452 324 352 397L217 264L125 356L258 492Q184 599 184 723ZM313 723Q313 611 391 531T586 451Q702 451 781 530T860 723Q860 837 780 918T586 999Q470 999 392 917T313 723Z" />
+<glyph unicode="&#xa5;" glyph-name="yen" horiz-adv-x="1171" d="M584 735L963 1462H1137L721 692H983V565H666V395H983V268H666V0H502V268H186V395H502V565H186V692H442L31 1462H209L584 735Z" />
+<glyph unicode="&#xa6;" glyph-name="brokenbar" horiz-adv-x="1128" d="M494 1556H635V780H494V1556ZM494 281H635V-496H494V281Z" />
+<glyph unicode="&#xa7;" glyph-name="section" horiz-adv-x="1057" d="M139 809Q139 895 182 963T303 1069Q229 1109 187 1164T145 1305Q145 1426 248 1495T549 1565Q643 1565 722 1551T899 1497L846 1366Q748 1405 681 1418T537 1432Q421 1432 363 1403T305 1309Q305
+1249 366 1207T582 1110Q768 1042 843 967T918 784Q918 694 877 624T762 512Q915 431 915 285Q915 145 798 69T469 -8Q251 -8 123 57V205Q201 168 298 146T477 123Q611 123 681 161T752 270Q752 316 728 345T650 403T481 475Q339 527 272 572T172 674T139 809ZM285
+829Q285 752 351 700T584 586L633 567Q770 647 770 758Q770 841 697 897T438 1010Q370 991 328 941T285 829Z" />
+<glyph unicode="&#xa8;" glyph-name="dieresis" horiz-adv-x="1182" d="M309 1393Q309 1445 335 1468T399 1491Q437 1491 464 1468T492 1393Q492 1343 465 1319T399 1294Q362 1294 336 1318T309 1393ZM690 1393Q690 1445 716 1468T780 1491Q817 1491 844 1468T872
+1393Q872 1343 845 1319T780 1294Q743 1294 717 1318T690 1393Z" />
+<glyph unicode="&#xa9;" glyph-name="copyright" horiz-adv-x="1704" d="M893 1059Q768 1059 701 972T633 731Q633 563 696 482T891 401Q977 401 1102 446V322Q1054 302 1004 288T883 274Q689 274 585 394T481 731Q481 940 591 1063T893 1186Q1021 1186 1139 1126L1081
+1008Q973 1059 893 1059ZM100 731Q100 931 200 1106T475 1382T852 1483Q1052 1483 1227 1383T1503 1108T1604 731Q1604 534 1507 361T1235 84T852 -20Q645 -20 470 83T198 360T100 731ZM205 731Q205 558 292 408T529 171T852 84Q1026 84 1175 171T1411 406T1499
+731Q1499 905 1412 1054T1177 1290T852 1378Q678 1378 529 1291T293 1056T205 731Z" />
+<glyph unicode="&#xaa;" glyph-name="ordfeminine" horiz-adv-x="725" d="M532 801L508 885Q416 788 276 788Q181 788 126 837T70 989Q70 1091 147 1143T389 1202L506 1206V1245Q506 1378 358 1378Q258 1378 154 1327L111 1423Q225 1479 358 1479Q488 1479 556
+1427T625 1253V801H532ZM193 989Q193 889 305 889Q506 889 506 1069V1118L408 1114Q296 1110 245 1082T193 989Z" />
+<glyph unicode="&#xab;" glyph-name="guillemotleft" horiz-adv-x="1018" d="M82 551L424 958L543 889L254 539L543 188L424 117L82 524V551ZM477 551L821 958L938 889L651 539L938 188L821 117L477 524V551Z" />
+<glyph unicode="&#xac;" glyph-name="logicalnot" horiz-adv-x="1171" d="M1065 791V264H928V653H104V791H1065Z" />
+<glyph unicode="&#xad;" glyph-name="uni00AD" horiz-adv-x="659" d="M84 473V625H575V473H84Z" />
+<glyph unicode="&#xae;" glyph-name="registered" horiz-adv-x="1704" d="M723 762H831Q911 762 959 803T1008 909Q1008 984 965 1016T829 1049H723V762ZM1157 913Q1157 833 1115 772T995 680L1233 285H1065L858 639H723V285H575V1176H836Q1002 1176 1079 1111T1157
+913ZM100 731Q100 931 200 1106T475 1382T852 1483Q1052 1483 1227 1383T1503 1108T1604 731Q1604 534 1507 361T1235 84T852 -20Q645 -20 470 83T198 360T100 731ZM205 731Q205 558 292 408T529 171T852 84Q1026 84 1175 171T1411 406T1499 731Q1499 905 1412
+1054T1177 1290T852 1378Q678 1378 529 1291T293 1056T205 731Z" />
+<glyph unicode="&#xaf;" glyph-name="overscore" horiz-adv-x="1024" d="M1030 1556H-6V1683H1030V1556Z" />
+<glyph unicode="&#xb0;" glyph-name="degree" horiz-adv-x="877" d="M127 1171Q127 1301 217 1392T438 1483Q568 1483 659 1393T750 1171Q750 1087 709 1016T595 902T438 860Q308 860 218 950T127 1171ZM242 1171Q242 1089 300 1032T440 975Q520 975 577 1031T635
+1171Q635 1255 579 1311T440 1368Q357 1368 300 1311T242 1171Z" />
+<glyph unicode="&#xb1;" glyph-name="plusminus" horiz-adv-x="1171" d="M653 791H1065V653H653V227H514V653H104V791H514V1219H653V791ZM104 1V139H1065V1H104Z" />
+<glyph unicode="&#xb2;" glyph-name="twosuperior" horiz-adv-x="711" d="M653 586H49V690L285 920Q374 1006 415 1054T472 1141T489 1233Q489 1301 449 1335T346 1370Q294 1370 245 1351T127 1282L61 1370Q192 1481 344 1481Q476 1481 549 1416T623 1239Q623
+1159 579 1084T387 870L213 705H653V586Z" />
+<glyph unicode="&#xb3;" glyph-name="threesuperior" horiz-adv-x="711" d="M627 1255Q627 1175 586 1124T477 1049Q653 1002 653 840Q653 712 561 641T301 569Q149 569 33 625V748Q180 680 303 680Q514 680 514 842Q514 987 283 987H166V1094H285Q388 1094 437
+1133T487 1241Q487 1302 447 1336T340 1370Q274 1370 218 1349T106 1292L37 1382Q100 1427 170 1454T334 1481Q470 1481 548 1422T627 1255Z" />
+<glyph unicode="&#xb4;" glyph-name="acute" horiz-adv-x="1182" d="M393 1266Q441 1328 496 1416T584 1569H786V1548Q742 1483 655 1388T504 1241H393V1266Z" />
+<glyph unicode="&#xb5;" glyph-name="mu" horiz-adv-x="1268" d="M342 381Q342 119 596 119Q767 119 846 213T926 520V1096H1092V0H956L930 147H920Q809 -20 580 -20Q430 -20 342 72H332Q342 -12 342 -172V-492H176V1096H342V381Z" />
+<glyph unicode="&#xb6;" glyph-name="paragraph" horiz-adv-x="1341" d="M1120 -260H1006V1452H793V-260H678V559Q616 541 532 541Q316 541 215 666T113 1042Q113 1302 222 1429T563 1556H1120V-260Z" />
+<glyph unicode="&#xb7;" glyph-name="middot" horiz-adv-x="545" d="M152 723Q152 789 183 823T270 858Q328 858 360 824T393 723Q393 658 360 623T270 588Q219 588 186 619T152 723Z" />
+<glyph unicode="&#xb8;" glyph-name="cedilla" horiz-adv-x="465" d="M436 -289Q436 -386 360 -439T133 -492Q82 -492 37 -483V-377Q82 -385 141 -385Q220 -385 260 -365T301 -291Q301 -248 262 -222T113 -178L201 0H311L256 -115Q436 -154 436 -289Z" />
+<glyph unicode="&#xb9;" glyph-name="onesuperior" horiz-adv-x="711" d="M338 1462H481V586H348V1165Q348 1256 354 1346Q332 1324 305 1302T143 1184L76 1280L338 1462Z" />
+<glyph unicode="&#xba;" glyph-name="ordmasculine" horiz-adv-x="768" d="M702 1135Q702 971 617 880T381 788Q235 788 151 881T66 1135Q66 1298 150 1388T385 1479Q537 1479 619 1388T702 1135ZM188 1135Q188 1013 233 952T383 891Q488 891 534 952T580 1135Q580
+1258 534 1317T383 1376Q280 1376 234 1317T188 1135Z" />
+<glyph unicode="&#xbb;" glyph-name="guillemotright" horiz-adv-x="1018" d="M936 524L592 117L475 188L762 539L475 889L592 958L936 551V524ZM541 524L197 117L80 188L367 539L80 889L197 958L541 551V524Z" />
+<glyph unicode="&#xbc;" glyph-name="onequarter" horiz-adv-x="1597" d="M1298 1462L395 0H252L1155 1462H1298ZM593 1462H736V586H603V1165Q603 1256 609 1346Q587 1324 560 1302T398 1184L331 1280L593 1462ZM1489 203H1364V1H1219V203H817V304L1225 883H1364V320H1489V203ZM1219
+320V515Q1219 649 1225 724Q1220 712 1208 693T1181 651T1151 606T1125 566L957 320H1219Z" />
+<glyph unicode="&#xbd;" glyph-name="onehalf" horiz-adv-x="1597" d="M1230 1462L327 0H184L1087 1462H1230ZM564 1462H707V586H574V1165Q574 1256 580 1346Q558 1324 531 1302T369 1184L302 1280L564 1462ZM1499 1H895V105L1131 335Q1220 421 1261 469T1318
+556T1335 648Q1335 716 1295 750T1192 785Q1140 785 1091 766T973 697L907 785Q1038 896 1190 896Q1322 896 1395 831T1469 654Q1469 574 1425 499T1233 285L1059 120H1499V1Z" />
+<glyph unicode="&#xbe;" glyph-name="threequarters" horiz-adv-x="1597" d="M876 1255Q876 1175 835 1124T726 1049Q902 1002 902 840Q902 712 810 641T550 569Q398 569 282 625V748Q429 680 552 680Q763 680 763 842Q763 987 532 987H415V1094H534Q637 1094
+686 1133T736 1241Q736 1302 696 1336T589 1370Q523 1370 467 1349T355 1292L286 1382Q349 1427 419 1454T583 1481Q719 1481 797 1422T876 1255ZM1390 1462L487 0H344L1247 1462H1390ZM1569 203H1444V1H1299V203H897V304L1305 883H1444V320H1569V203ZM1299 320V515Q1299
+649 1305 724Q1300 712 1288 693T1261 651T1231 606T1205 566L1037 320H1299Z" />
+<glyph unicode="&#xbf;" glyph-name="questiondown" horiz-adv-x="879" d="M590 684V633Q590 511 553 437T418 279Q297 173 267 136T224 60T211 -35Q211 -135 277 -191T465 -248Q545 -248 620 -229T793 -162L852 -297Q655 -393 457 -393Q267 -393 159 -300T51
+-37Q51 33 68 85T118 182T194 268T293 356Q394 444 426 502T459 653V684H590ZM639 983Q639 848 518 848Q459 848 428 882T397 983Q397 1047 430 1082T518 1118Q569 1118 604 1086T639 983Z" />
+<glyph unicode="&#xc0;" glyph-name="Agrave" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885ZM724 1579H614Q549 1631 460 1727T331 1886V1907H534Q566 1838
+623 1748T724 1604V1579Z" />
+<glyph unicode="&#xc1;" glyph-name="Aacute" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885ZM526 1604Q574 1666 629 1754T717 1907H919V1886Q875 1821 788
+1726T637 1579H526V1604Z" />
+<glyph unicode="&#xc2;" glyph-name="Acircumflex" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885ZM303 1602Q430 1738 481 1802T555 1907H721Q743 1865 797
+1799T977 1602V1579H858Q770 1634 637 1765Q501 1631 418 1579H303V1602Z" />
+<glyph unicode="&#xc3;" glyph-name="Atilde" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885ZM792 1581Q749 1581 708 1599T628 1640T552 1681T481 1700Q431
+1700 406 1670T366 1579H268Q281 1700 338 1768T487 1837Q533 1837 576 1819T658 1778T733 1737T801 1718Q850 1718 874 1747T913 1839H1012Q999 1718 943 1650T792 1581Z" />
+<glyph unicode="&#xc4;" glyph-name="Adieresis" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885ZM364 1731Q364 1783 390 1806T454 1829Q492 1829 519 1806T547
+1731Q547 1681 520 1657T454 1632Q417 1632 391 1656T364 1731ZM745 1731Q745 1783 771 1806T835 1829Q872 1829 899 1806T927 1731Q927 1681 900 1657T835 1632Q798 1632 772 1656T745 1731Z" />
+<glyph unicode="&#xc5;" glyph-name="Aring" horiz-adv-x="1296" d="M1120 0L938 465H352L172 0H0L578 1468H721L1296 0H1120ZM885 618L715 1071Q682 1157 647 1282Q625 1186 584 1071L412 618H885ZM870 1587Q870 1489 809 1430T645 1370Q544 1370 484 1428T424
+1585Q424 1683 484 1740T645 1798Q746 1798 808 1739T870 1587ZM762 1585Q762 1641 729 1671T645 1702Q594 1702 561 1672T528 1585Q528 1529 558 1499T645 1468Q697 1468 729 1498T762 1585Z" />
+<glyph unicode="&#xc6;" glyph-name="AE" horiz-adv-x="1788" d="M1665 0H915V465H401L174 0H-2L696 1462H1665V1311H1085V840H1626V690H1085V152H1665V0ZM469 618H915V1311H797L469 618Z" />
+<glyph unicode="&#xc7;" glyph-name="Ccedilla" horiz-adv-x="1292" d="M827 1331Q586 1331 447 1171T307 731Q307 444 441 288T825 131Q978 131 1174 186V37Q1022 -20 799 -20Q476 -20 301 176T125 733Q125 959 209 1129T453 1391T829 1483Q1059 1483 1231 1399L1159
+1253Q993 1331 827 1331ZM950 -289Q950 -386 874 -439T647 -492Q596 -492 551 -483V-377Q596 -385 655 -385Q734 -385 774 -365T815 -291Q815 -248 776 -222T627 -178L715 0H825L770 -115Q950 -154 950 -289Z" />
+<glyph unicode="&#xc8;" glyph-name="Egrave" horiz-adv-x="1139" d="M1016 0H201V1462H1016V1311H371V840H977V690H371V152H1016V0ZM713 1579H603Q538 1631 449 1727T320 1886V1907H523Q555 1838 612 1748T713 1604V1579Z" />
+<glyph unicode="&#xc9;" glyph-name="Eacute" horiz-adv-x="1139" d="M1016 0H201V1462H1016V1311H371V840H977V690H371V152H1016V0ZM456 1604Q504 1666 559 1754T647 1907H849V1886Q805 1821 718 1726T567 1579H456V1604Z" />
+<glyph unicode="&#xca;" glyph-name="Ecircumflex" horiz-adv-x="1139" d="M1016 0H201V1462H1016V1311H371V840H977V690H371V152H1016V0ZM263 1602Q390 1738 441 1802T515 1907H681Q703 1865 757 1799T937 1602V1579H818Q730 1634 597 1765Q461 1631 378 1579H263V1602Z" />
+<glyph unicode="&#xcb;" glyph-name="Edieresis" horiz-adv-x="1139" d="M1016 0H201V1462H1016V1311H371V840H977V690H371V152H1016V0ZM327 1731Q327 1783 353 1806T417 1829Q455 1829 482 1806T510 1731Q510 1681 483 1657T417 1632Q380 1632 354 1656T327 1731ZM708
+1731Q708 1783 734 1806T798 1829Q835 1829 862 1806T890 1731Q890 1681 863 1657T798 1632Q761 1632 735 1656T708 1731Z" />
+<glyph unicode="&#xcc;" glyph-name="Igrave" horiz-adv-x="571" d="M201 0V1462H371V0H201ZM398 1579H288Q223 1631 134 1727T5 1886V1907H208Q240 1838 297 1748T398 1604V1579Z" />
+<glyph unicode="&#xcd;" glyph-name="Iacute" horiz-adv-x="571" d="M201 0V1462H371V0H201ZM179 1604Q227 1666 282 1754T370 1907H572V1886Q528 1821 441 1726T290 1579H179V1604Z" />
+<glyph unicode="&#xce;" glyph-name="Icircumflex" horiz-adv-x="571" d="M201 0V1462H371V0H201ZM-57 1602Q70 1738 121 1802T195 1907H361Q383 1865 437 1799T617 1602V1579H498Q410 1634 277 1765Q141 1631 58 1579H-57V1602Z" />
+<glyph unicode="&#xcf;" glyph-name="Idieresis" horiz-adv-x="571" d="M201 0V1462H371V0H201ZM5 1731Q5 1783 31 1806T95 1829Q133 1829 160 1806T188 1731Q188 1681 161 1657T95 1632Q58 1632 32 1656T5 1731ZM386 1731Q386 1783 412 1806T476 1829Q513 1829
+540 1806T568 1731Q568 1681 541 1657T476 1632Q439 1632 413 1656T386 1731Z" />
+<glyph unicode="&#xd0;" glyph-name="Eth" horiz-adv-x="1479" d="M1352 745Q1352 383 1156 192T590 0H201V649H47V799H201V1462H635Q972 1462 1162 1275T1352 745ZM1171 739Q1171 1315 602 1315H371V799H750V649H371V147H561Q1171 147 1171 739Z" />
+<glyph unicode="&#xd1;" glyph-name="Ntilde" horiz-adv-x="1544" d="M1343 0H1149L350 1227H342Q358 1011 358 831V0H201V1462H393L1190 240H1198Q1196 267 1189 413T1184 623V1462H1343V0ZM935 1581Q892 1581 851 1599T771 1640T695 1681T624 1700Q574 1700
+549 1670T509 1579H411Q424 1700 481 1768T630 1837Q676 1837 719 1819T801 1778T876 1737T944 1718Q993 1718 1017 1747T1056 1839H1155Q1142 1718 1086 1650T935 1581Z" />
+<glyph unicode="&#xd2;" glyph-name="Ograve" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042 129 1166 282T1290 733Q1290
+1028 1167 1180T801 1333Q558 1333 432 1180T305 733ZM907 1579H797Q732 1631 643 1727T514 1886V1907H717Q749 1838 806 1748T907 1604V1579Z" />
+<glyph unicode="&#xd3;" glyph-name="Oacute" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042 129 1166 282T1290 733Q1290
+1028 1167 1180T801 1333Q558 1333 432 1180T305 733ZM659 1604Q707 1666 762 1754T850 1907H1052V1886Q1008 1821 921 1726T770 1579H659V1604Z" />
+<glyph unicode="&#xd4;" glyph-name="Ocircumflex" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042 129 1166 282T1290
+733Q1290 1028 1167 1180T801 1333Q558 1333 432 1180T305 733ZM448 1602Q575 1738 626 1802T700 1907H866Q888 1865 942 1799T1122 1602V1579H1003Q915 1634 782 1765Q646 1631 563 1579H448V1602Z" />
+<glyph unicode="&#xd5;" glyph-name="Otilde" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042 129 1166 282T1290 733Q1290
+1028 1167 1180T801 1333Q558 1333 432 1180T305 733ZM942 1581Q899 1581 858 1599T778 1640T702 1681T631 1700Q581 1700 556 1670T516 1579H418Q431 1700 488 1768T637 1837Q683 1837 726 1819T808 1778T883 1737T951 1718Q1000 1718 1024 1747T1063 1839H1162Q1149
+1718 1093 1650T942 1581Z" />
+<glyph unicode="&#xd6;" glyph-name="Odieresis" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q476 -20 301 177T125 735Q125 1092 301 1288T801 1485Q1116 1485 1293 1285T1470 733ZM305 733Q305 436 431 283T799 129Q1042 129 1166 282T1290
+733Q1290 1028 1167 1180T801 1333Q558 1333 432 1180T305 733ZM522 1731Q522 1783 548 1806T612 1829Q650 1829 677 1806T705 1731Q705 1681 678 1657T612 1632Q575 1632 549 1656T522 1731ZM903 1731Q903 1783 929 1806T993 1829Q1030 1829 1057 1806T1085 1731Q1085
+1681 1058 1657T993 1632Q956 1632 930 1656T903 1731Z" />
+<glyph unicode="&#xd7;" glyph-name="multiply" horiz-adv-x="1171" d="M940 1176L1036 1077L684 723L1034 371L938 272L584 623L236 272L135 371L485 723L133 1075L233 1176L586 821L940 1176Z" />
+<glyph unicode="&#xd8;" glyph-name="Oslash" horiz-adv-x="1595" d="M1470 733Q1470 382 1293 181T799 -20Q564 -20 416 80L315 -61L195 18L303 172Q125 370 125 735Q125 1092 301 1288T801 1485Q1010 1485 1167 1391L1264 1526L1384 1446L1278 1298Q1470 1096
+1470 733ZM1290 733Q1290 1005 1180 1159L508 211Q623 129 799 129Q1042 129 1166 282T1290 733ZM305 733Q305 471 406 317L1075 1260Q969 1333 801 1333Q558 1333 432 1180T305 733Z" />
+<glyph unicode="&#xd9;" glyph-name="Ugrave" horiz-adv-x="1491" d="M1305 1462V516Q1305 266 1154 123T739 -20Q475 -20 331 124T186 520V1462H356V508Q356 325 456 227T750 129Q935 129 1035 227T1135 510V1462H1305ZM856 1579H746Q681 1631 592 1727T463 1886V1907H666Q698
+1838 755 1748T856 1604V1579Z" />
+<glyph unicode="&#xda;" glyph-name="Uacute" horiz-adv-x="1491" d="M1305 1462V516Q1305 266 1154 123T739 -20Q475 -20 331 124T186 520V1462H356V508Q356 325 456 227T750 129Q935 129 1035 227T1135 510V1462H1305ZM600 1604Q648 1666 703 1754T791 1907H993V1886Q949
+1821 862 1726T711 1579H600V1604Z" />
+<glyph unicode="&#xdb;" glyph-name="Ucircumflex" horiz-adv-x="1491" d="M1305 1462V516Q1305 266 1154 123T739 -20Q475 -20 331 124T186 520V1462H356V508Q356 325 456 227T750 129Q935 129 1035 227T1135 510V1462H1305ZM393 1602Q520 1738 571 1802T645
+1907H811Q833 1865 887 1799T1067 1602V1579H948Q860 1634 727 1765Q591 1631 508 1579H393V1602Z" />
+<glyph unicode="&#xdc;" glyph-name="Udieresis" horiz-adv-x="1491" d="M1305 1462V516Q1305 266 1154 123T739 -20Q475 -20 331 124T186 520V1462H356V508Q356 325 456 227T750 129Q935 129 1035 227T1135 510V1462H1305ZM461 1731Q461 1783 487 1806T551 1829Q589
+1829 616 1806T644 1731Q644 1681 617 1657T551 1632Q514 1632 488 1656T461 1731ZM842 1731Q842 1783 868 1806T932 1829Q969 1829 996 1806T1024 1731Q1024 1681 997 1657T932 1632Q895 1632 869 1656T842 1731Z" />
+<glyph unicode="&#xdd;" glyph-name="Yacute" horiz-adv-x="1147" d="M573 731L963 1462H1147L659 567V0H487V559L0 1462H186L573 731ZM442 1604Q490 1666 545 1754T633 1907H835V1886Q791 1821 704 1726T553 1579H442V1604Z" />
+<glyph unicode="&#xde;" glyph-name="Thorn" horiz-adv-x="1251" d="M1145 784Q1145 557 994 438T555 319H371V0H201V1462H371V1206H586Q867 1206 1006 1103T1145 784ZM371 465H539Q765 465 866 536T967 772Q967 921 872 990T575 1059H371V465Z" />
+<glyph unicode="&#xdf;" glyph-name="germandbls" horiz-adv-x="1274" d="M1049 1266Q1049 1131 906 1016Q818 946 790 913T762 846Q762 814 775 793T824 744T938 664Q1078 569 1129 491T1180 311Q1180 151 1083 66T807 -20Q619 -20 512 49V203Q575 164 653 141T803
+117Q1018 117 1018 299Q1018 374 977 427T825 551Q698 633 650 694T602 840Q602 903 636 956T742 1062Q817 1119 849 1164T881 1262Q881 1342 813 1384T618 1427Q342 1427 342 1204V0H176V1202Q176 1380 286 1473T618 1567Q824 1567 936 1489T1049 1266Z" />
+<glyph unicode="&#xe0;" glyph-name="agrave" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784 1114
+878 1027T973 748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117ZM928 1241H818Q753 1293 664 1389T535 1548V1569H738Q770 1500 827 1410T928 1266V1241Z" />
+<glyph unicode="&#xe1;" glyph-name="aacute" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784 1114
+878 1027T973 748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117ZM436 1266Q484 1328 539 1416T627 1569H829V1548Q785 1483 698 1388T547 1241H436V1266Z" />
+<glyph unicode="&#xe2;" glyph-name="acircumflex" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784
+1114 878 1027T973 748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117ZM484 1264Q611 1400 662 1464T736 1569H902Q924 1527 978 1461T1158 1264V1241H1039Q951 1296 818 1427Q682 1293 599 1241H484V1264Z"
+/>
+<glyph unicode="&#xe3;" glyph-name="atilde" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784 1114
+878 1027T973 748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117ZM977 1243Q934 1243 893 1261T813 1302T737 1343T666 1362Q616 1362 591 1332T551 1241H453Q466 1362 523 1430T672 1499Q718 1499 761
+1481T843 1440T918 1399T986 1380Q1035 1380 1059 1409T1098 1501H1197Q1184 1380 1128 1312T977 1243Z" />
+<glyph unicode="&#xe4;" glyph-name="adieresis" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784 1114
+878 1027T973 748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117ZM535 1393Q535 1445 561 1468T625 1491Q663 1491 690 1468T718 1393Q718 1343 691 1319T625 1294Q588 1294 562 1318T535 1393ZM916 1393Q916
+1445 942 1468T1006 1491Q1043 1491 1070 1468T1098 1393Q1098 1343 1071 1319T1006 1294Q969 1294 943 1318T916 1393Z" />
+<glyph unicode="&#xe5;" glyph-name="aring" horiz-adv-x="1139" d="M850 0L817 156H809Q727 53 646 17T442 -20Q279 -20 187 64T94 303Q94 635 625 651L811 657V725Q811 854 756 915T578 977Q441 977 268 893L217 1020Q298 1064 394 1089T588 1114Q784 1114 878
+1027T973 748V0H850ZM475 117Q630 117 718 202T807 440V539L641 532Q443 525 356 471T268 301Q268 211 322 164T475 117ZM1060 1458Q1060 1360 999 1301T835 1241Q734 1241 674 1299T614 1456Q614 1554 674 1611T835 1669Q936 1669 998 1610T1060 1458ZM952 1456Q952
+1512 919 1542T835 1573Q784 1573 751 1543T718 1456Q718 1400 748 1370T835 1339Q887 1339 919 1369T952 1456Z" />
+<glyph unicode="&#xe6;" glyph-name="ae" horiz-adv-x="1757" d="M94 303Q94 464 218 553T596 651L780 657V725Q780 854 722 915T545 977Q401 977 238 893L186 1020Q260 1061 359 1087T557 1114Q687 1114 769 1071T893 932Q946 1020 1031 1068T1227 1116Q1419
+1116 1535 983T1651 627V520H950Q958 125 1272 125Q1363 125 1441 142T1604 199V51Q1518 13 1444 -3T1268 -20Q979 -20 854 213Q773 86 675 33T442 -20Q279 -20 187 65T94 303ZM268 301Q268 206 321 162T463 117Q608 117 692 201T776 440V539L618 532Q432 524 350
+470T268 301ZM1225 977Q1104 977 1035 894T954 653H1473Q1473 809 1409 893T1225 977Z" />
+<glyph unicode="&#xe7;" glyph-name="ccedilla" horiz-adv-x="975" d="M614 -20Q376 -20 246 126T115 541Q115 816 247 966T625 1116Q704 1116 783 1099T907 1059L856 918Q801 940 736 954T621 969Q287 969 287 543Q287 341 368 233T610 125Q747 125 891 184V37Q781
+-20 614 -20ZM762 -289Q762 -386 686 -439T459 -492Q408 -492 363 -483V-377Q408 -385 467 -385Q546 -385 586 -365T627 -291Q627 -248 588 -222T439 -178L527 0H637L582 -115Q762 -154 762 -289Z" />
+<glyph unicode="&#xe8;" glyph-name="egrave" horiz-adv-x="1149" d="M639 -20Q396 -20 256 128T115 539Q115 804 245 960T596 1116Q802 1116 922 981T1042 623V518H287Q292 325 384 225T645 125Q822 125 995 199V51Q907 13 829 -3T639 -20ZM594 977Q462 977 384
+891T291 653H864Q864 810 794 893T594 977ZM967 1241H857Q792 1293 703 1389T574 1548V1569H777Q809 1500 866 1410T967 1266V1241Z" />
+<glyph unicode="&#xe9;" glyph-name="eacute" horiz-adv-x="1149" d="M639 -20Q396 -20 256 128T115 539Q115 804 245 960T596 1116Q802 1116 922 981T1042 623V518H287Q292 325 384 225T645 125Q822 125 995 199V51Q907 13 829 -3T639 -20ZM594 977Q462 977 384
+891T291 653H864Q864 810 794 893T594 977ZM471 1266Q519 1328 574 1416T662 1569H864V1548Q820 1483 733 1388T582 1241H471V1266Z" />
+<glyph unicode="&#xea;" glyph-name="ecircumflex" horiz-adv-x="1149" d="M639 -20Q396 -20 256 128T115 539Q115 804 245 960T596 1116Q802 1116 922 981T1042 623V518H287Q292 325 384 225T645 125Q822 125 995 199V51Q907 13 829 -3T639 -20ZM594 977Q462
+977 384 891T291 653H864Q864 810 794 893T594 977ZM515 1264Q642 1400 693 1464T767 1569H933Q955 1527 1009 1461T1189 1264V1241H1070Q982 1296 849 1427Q713 1293 630 1241H515V1264Z" />
+<glyph unicode="&#xeb;" glyph-name="edieresis" horiz-adv-x="1149" d="M639 -20Q396 -20 256 128T115 539Q115 804 245 960T596 1116Q802 1116 922 981T1042 623V518H287Q292 325 384 225T645 125Q822 125 995 199V51Q907 13 829 -3T639 -20ZM594 977Q462 977
+384 891T291 653H864Q864 810 794 893T594 977ZM319 1393Q319 1445 345 1468T409 1491Q447 1491 474 1468T502 1393Q502 1343 475 1319T409 1294Q372 1294 346 1318T319 1393ZM700 1393Q700 1445 726 1468T790 1491Q827 1491 854 1468T882 1393Q882 1343 855 1319T790
+1294Q753 1294 727 1318T700 1393Z" />
+<glyph unicode="&#xec;" glyph-name="igrave" horiz-adv-x="518" d="M342 0H176V1096H342V0ZM355 1241H245Q180 1293 91 1389T-38 1548V1569H165Q197 1500 254 1410T355 1266V1241Z" />
+<glyph unicode="&#xed;" glyph-name="iacute" horiz-adv-x="518" d="M342 0H176V1096H342V0ZM169 1266Q217 1328 272 1416T360 1569H562V1548Q518 1483 431 1388T280 1241H169V1266Z" />
+<glyph unicode="&#xee;" glyph-name="icircumflex" horiz-adv-x="518" d="M342 0H176V1096H342V0ZM-77 1264Q50 1400 101 1464T175 1569H341Q363 1527 417 1461T597 1264V1241H478Q390 1296 257 1427Q121 1293 38 1241H-77V1264Z" />
+<glyph unicode="&#xef;" glyph-name="idieresis" horiz-adv-x="518" d="M342 0H176V1096H342V0ZM-20 1393Q-20 1445 6 1468T70 1491Q108 1491 135 1468T163 1393Q163 1343 136 1319T70 1294Q33 1294 7 1318T-20 1393ZM361 1393Q361 1445 387 1468T451 1491Q488
+1491 515 1468T543 1393Q543 1343 516 1319T451 1294Q414 1294 388 1318T361 1393Z" />
+<glyph unicode="&#xf0;" glyph-name="eth" horiz-adv-x="1221" d="M1122 563Q1122 282 992 131T614 -20Q392 -20 253 114T113 475Q113 705 244 836T596 967Q822 967 922 846L930 850Q873 1064 668 1255L397 1100L324 1208L557 1341Q465 1403 371 1452L440 1569Q596
+1496 698 1421L936 1559L1012 1452L805 1333Q957 1190 1039 991T1122 563ZM954 512Q954 659 864 744T618 829Q281 829 281 469Q281 302 368 211T618 119Q793 119 873 219T954 512Z" />
+<glyph unicode="&#xf1;" glyph-name="ntilde" horiz-adv-x="1257" d="M926 0V709Q926 843 865 909T674 975Q502 975 422 882T342 575V0H176V1096H311L338 946H346Q397 1027 489 1071T694 1116Q892 1116 992 1021T1092 715V0H926ZM802 1243Q759 1243 718 1261T638
+1302T562 1343T491 1362Q441 1362 416 1332T376 1241H278Q291 1362 348 1430T497 1499Q543 1499 586 1481T668 1440T743 1399T811 1380Q860 1380 884 1409T923 1501H1022Q1009 1380 953 1312T802 1243Z" />
+<glyph unicode="&#xf2;" glyph-name="ograve" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q467 -20 353 49T177 247T115 549Q115 817 249 966T621 1116Q851 1116 986 963T1122 549ZM287 549Q287 339 371 229T618 119Q781 119 865 228T950 549Q950
+758 866 866T616 975Q453 975 370 868T287 549ZM998 1241H888Q823 1293 734 1389T605 1548V1569H808Q840 1500 897 1410T998 1266V1241Z" />
+<glyph unicode="&#xf3;" glyph-name="oacute" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q467 -20 353 49T177 247T115 549Q115 817 249 966T621 1116Q851 1116 986 963T1122 549ZM287 549Q287 339 371 229T618 119Q781 119 865 228T950 549Q950
+758 866 866T616 975Q453 975 370 868T287 549ZM479 1266Q527 1328 582 1416T670 1569H872V1548Q828 1483 741 1388T590 1241H479V1266Z" />
+<glyph unicode="&#xf4;" glyph-name="ocircumflex" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q467 -20 353 49T177 247T115 549Q115 817 249 966T621 1116Q851 1116 986 963T1122 549ZM287 549Q287 339 371 229T618 119Q781 119 865 228T950
+549Q950 758 866 866T616 975Q453 975 370 868T287 549ZM282 1264Q409 1400 460 1464T534 1569H700Q722 1527 776 1461T956 1264V1241H837Q749 1296 616 1427Q480 1293 397 1241H282V1264Z" />
+<glyph unicode="&#xf5;" glyph-name="otilde" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q467 -20 353 49T177 247T115 549Q115 817 249 966T621 1116Q851 1116 986 963T1122 549ZM287 549Q287 339 371 229T618 119Q781 119 865 228T950 549Q950
+758 866 866T616 975Q453 975 370 868T287 549ZM1029 1243Q986 1243 945 1261T865 1302T789 1343T718 1362Q668 1362 643 1332T603 1241H505Q518 1362 575 1430T724 1499Q770 1499 813 1481T895 1440T970 1399T1038 1380Q1087 1380 1111 1409T1150 1501H1249Q1236
+1380 1180 1312T1029 1243Z" />
+<glyph unicode="&#xf6;" glyph-name="odieresis" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q467 -20 353 49T177 247T115 549Q115 817 249 966T621 1116Q851 1116 986 963T1122 549ZM287 549Q287 339 371 229T618 119Q781 119 865 228T950 549Q950
+758 866 866T616 975Q453 975 370 868T287 549ZM336 1393Q336 1445 362 1468T426 1491Q464 1491 491 1468T519 1393Q519 1343 492 1319T426 1294Q389 1294 363 1318T336 1393ZM717 1393Q717 1445 743 1468T807 1491Q844 1491 871 1468T899 1393Q899 1343 872 1319T807
+1294Q770 1294 744 1318T717 1393Z" />
+<glyph unicode="&#xf7;" glyph-name="divide" horiz-adv-x="1171" d="M104 653V791H1065V653H104ZM471 373Q471 433 500 463T584 494Q636 494 665 463T694 373Q694 316 665 284T584 252Q532 252 502 283T471 373ZM471 1071Q471 1131 500 1161T584 1192Q636 1192
+665 1161T694 1071Q694 1014 665 982T584 950Q532 950 502 981T471 1071Z" />
+<glyph unicode="&#xf8;" glyph-name="oslash" horiz-adv-x="1237" d="M1122 549Q1122 281 987 131T614 -20Q460 -20 348 49L264 -68L150 10L244 141Q115 293 115 549Q115 817 249 966T621 1116Q775 1116 891 1040L975 1159L1092 1083L995 950Q1122 798 1122 549ZM287
+549Q287 378 340 276L805 922Q730 975 616 975Q453 975 370 868T287 549ZM950 549Q950 713 899 813L434 170Q505 119 618 119Q781 119 865 228T950 549Z" />
+<glyph unicode="&#xf9;" glyph-name="ugrave" horiz-adv-x="1257" d="M332 1096V385Q332 251 393 185T584 119Q756 119 835 213T915 520V1096H1081V0H944L920 147H911Q860 66 770 23T563 -20Q363 -20 264 75T164 379V1096H332ZM982 1241H872Q807 1293 718 1389T589
+1548V1569H792Q824 1500 881 1410T982 1266V1241Z" />
+<glyph unicode="&#xfa;" glyph-name="uacute" horiz-adv-x="1257" d="M332 1096V385Q332 251 393 185T584 119Q756 119 835 213T915 520V1096H1081V0H944L920 147H911Q860 66 770 23T563 -20Q363 -20 264 75T164 379V1096H332ZM506 1266Q554 1328 609 1416T697
+1569H899V1548Q855 1483 768 1388T617 1241H506V1266Z" />
+<glyph unicode="&#xfb;" glyph-name="ucircumflex" horiz-adv-x="1257" d="M332 1096V385Q332 251 393 185T584 119Q756 119 835 213T915 520V1096H1081V0H944L920 147H911Q860 66 770 23T563 -20Q363 -20 264 75T164 379V1096H332ZM286 1264Q413 1400 464 1464T538
+1569H704Q726 1527 780 1461T960 1264V1241H841Q753 1296 620 1427Q484 1293 401 1241H286V1264Z" />
+<glyph unicode="&#xfc;" glyph-name="udieresis" horiz-adv-x="1257" d="M332 1096V385Q332 251 393 185T584 119Q756 119 835 213T915 520V1096H1081V0H944L920 147H911Q860 66 770 23T563 -20Q363 -20 264 75T164 379V1096H332ZM342 1393Q342 1445 368 1468T432
+1491Q470 1491 497 1468T525 1393Q525 1343 498 1319T432 1294Q395 1294 369 1318T342 1393ZM723 1393Q723 1445 749 1468T813 1491Q850 1491 877 1468T905 1393Q905 1343 878 1319T813 1294Q776 1294 750 1318T723 1393Z" />
+<glyph unicode="&#xfd;" glyph-name="yacute" horiz-adv-x="1032" d="M2 1096H180L420 471Q499 257 518 162H526Q539 213 580 336T852 1096H1030L559 -152Q489 -337 396 -414T166 -492Q90 -492 16 -475V-342Q71 -354 139 -354Q310 -354 383 -162L444 -6L2 1096ZM411
+1266Q459 1328 514 1416T602 1569H804V1548Q760 1483 673 1388T522 1241H411V1266Z" />
+<glyph unicode="&#xfe;" glyph-name="thorn" horiz-adv-x="1255" d="M344 948Q410 1037 495 1076T686 1116Q901 1116 1021 966T1141 549Q1141 281 1021 131T686 -20Q464 -20 342 141H330L334 107Q342 30 342 -33V-492H176V1556H342V1090Q342 1038 336 948H344ZM664
+975Q496 975 420 883T342 590V549Q342 318 419 219T666 119Q969 119 969 551Q969 766 895 870T664 975Z" />
+<glyph unicode="&#xff;" glyph-name="ydieresis" horiz-adv-x="1032" d="M2 1096H180L420 471Q499 257 518 162H526Q539 213 580 336T852 1096H1030L559 -152Q489 -337 396 -414T166 -492Q90 -492 16 -475V-342Q71 -354 139 -354Q310 -354 383 -162L444 -6L2 1096ZM490
+1393Q490 1445 516 1468T580 1491Q618 1491 645 1468T673 1393Q673 1343 646 1319T580 1294Q543 1294 517 1318T490 1393ZM871 1393Q871 1445 897 1468T961 1491Q998 1491 1025 1468T1053 1393Q1053 1343 1026 1319T961 1294Q924 1294 898 1318T871 1393Z" />
+<glyph unicode="&#x2013;" glyph-name="endash" horiz-adv-x="1024" d="M82 473V625H942V473H82Z" />
+<glyph unicode="&#x2014;" glyph-name="emdash" horiz-adv-x="2048" d="M82 473V625H1966V473H82Z" />
+<glyph unicode="&#x2018;" glyph-name="quoteleft" horiz-adv-x="348" d="M37 961L25 983Q47 1073 96 1207T201 1462H324Q258 1208 221 961H37Z" />
+<glyph unicode="&#x2019;" glyph-name="quoteright" horiz-adv-x="348" d="M309 1462L324 1440Q298 1340 249 1208T147 961H25Q95 1246 127 1462H309Z" />
+<glyph unicode="&#x201a;" glyph-name="quotesinglbase" horiz-adv-x="502" d="M350 238L365 215Q339 115 290 -17T188 -264H63Q90 -160 122 -7T168 238H350Z" />
+<glyph unicode="&#x201c;" glyph-name="quotedblleft" horiz-adv-x="717" d="M406 961L391 983Q447 1198 569 1462H692Q662 1347 633 1203T590 961H406ZM37 961L25 983Q47 1073 96 1207T201 1462H324Q258 1208 221 961H37Z" />
+<glyph unicode="&#x201d;" glyph-name="quotedblright" horiz-adv-x="717" d="M309 1462L324 1440Q298 1340 249 1208T147 961H25Q95 1246 127 1462H309ZM678 1462L692 1440Q668 1349 620 1216T516 961H391Q417 1061 450 1215T496 1462H678Z" />
+<glyph unicode="&#x201e;" glyph-name="quotedblbase" horiz-adv-x="829" d="M309 238L324 216Q298 116 249 -16T147 -263H25Q95 22 127 238H309ZM678 238L692 216Q668 125 620 -8T516 -263H391Q417 -163 450 -9T496 238H678Z" />
+<glyph unicode="&#x2022;" glyph-name="bullet" horiz-adv-x="770" d="M164 748Q164 869 220 932T385 995Q490 995 548 933T606 748Q606 629 549 565T385 500Q278 500 221 565T164 748Z" />
+<glyph unicode="&#x2039;" glyph-name="guilsinglleft" horiz-adv-x="623" d="M82 551L424 958L543 889L254 539L543 188L424 117L82 524V551Z" />
+<glyph unicode="&#x203a;" glyph-name="guilsinglright" horiz-adv-x="623" d="M541 524L197 117L80 188L367 539L80 889L197 958L541 551V524Z" />
+<hkern g1="quotedbl" g2="A" k="143" />
+<hkern g1="quotedbl" g2="T" k="-41" />
+<hkern g1="quotedbl" g2="V" k="-41" />
+<hkern g1="quotedbl" g2="W" k="-41" />
+<hkern g1="quotedbl" g2="Y" k="-20" />
+<hkern g1="quotedbl" g2="a" k="82" />
+<hkern g1="quotedbl" g2="c" k="123" />
+<hkern g1="quotedbl" g2="d" k="123" />
+<hkern g1="quotedbl" g2="e" k="123" />
+<hkern g1="quotedbl" g2="g" k="61" />
+<hkern g1="quotedbl" g2="m" k="61" />
+<hkern g1="quotedbl" g2="n" k="61" />
+<hkern g1="quotedbl" g2="o" k="123" />
+<hkern g1="quotedbl" g2="p" k="61" />
+<hkern g1="quotedbl" g2="q" k="123" />
+<hkern g1="quotedbl" g2="r" k="61" />
+<hkern g1="quotedbl" g2="s" k="61" />
+<hkern g1="quotedbl" g2="u" k="61" />
+<hkern g1="quotedbl" g2="Agrave" k="143" />
+<hkern g1="quotedbl" g2="Aacute" k="143" />
+<hkern g1="quotedbl" g2="Acircumflex" k="143" />
+<hkern g1="quotedbl" g2="Atilde" k="143" />
+<hkern g1="quotedbl" g2="Adieresis" k="143" />
+<hkern g1="quotedbl" g2="Aring" k="143" />
+<hkern g1="quotedbl" g2="Yacute" k="-20" />
+<hkern g1="quotedbl" g2="agrave" k="123" />
+<hkern g1="quotedbl" g2="aacute" k="82" />
+<hkern g1="quotedbl" g2="acircumflex" k="82" />
+<hkern g1="quotedbl" g2="atilde" k="82" />
+<hkern g1="quotedbl" g2="adieresis" k="82" />
+<hkern g1="quotedbl" g2="aring" k="82" />
+<hkern g1="quotedbl" g2="ae" k="82" />
+<hkern g1="quotedbl" g2="ccedilla" k="123" />
+<hkern g1="quotedbl" g2="egrave" k="123" />
+<hkern g1="quotedbl" g2="eacute" k="123" />
+<hkern g1="quotedbl" g2="ecircumflex" k="123" />
+<hkern g1="quotedbl" g2="edieresis" k="123" />
+<hkern g1="quotedbl" g2="ograve" k="123" />
+<hkern g1="quotedbl" g2="oacute" k="123" />
+<hkern g1="quotedbl" g2="ocircumflex" k="123" />
+<hkern g1="quotedbl" g2="otilde" k="123" />
+<hkern g1="quotedbl" g2="odieresis" k="123" />
+<hkern g1="quotedbl" g2="oslash" k="123" />
+<hkern g1="quotedbl" g2="ugrave" k="61" />
+<hkern g1="quotedbl" g2="uacute" k="61" />
+<hkern g1="quotedbl" g2="ucircumflex" k="61" />
+<hkern g1="quotedbl" g2="udieresis" k="61" />
+<hkern g1="quotedbl" g2="oe" k="123" />
+<hkern g1="quotesingle" g2="A" k="143" />
+<hkern g1="quotesingle" g2="T" k="-41" />
+<hkern g1="quotesingle" g2="V" k="-41" />
+<hkern g1="quotesingle" g2="W" k="-41" />
+<hkern g1="quotesingle" g2="Y" k="-20" />
+<hkern g1="quotesingle" g2="a" k="82" />
+<hkern g1="quotesingle" g2="c" k="123" />
+<hkern g1="quotesingle" g2="d" k="123" />
+<hkern g1="quotesingle" g2="e" k="123" />
+<hkern g1="quotesingle" g2="g" k="61" />
+<hkern g1="quotesingle" g2="m" k="61" />
+<hkern g1="quotesingle" g2="n" k="61" />
+<hkern g1="quotesingle" g2="o" k="123" />
+<hkern g1="quotesingle" g2="p" k="61" />
+<hkern g1="quotesingle" g2="q" k="123" />
+<hkern g1="quotesingle" g2="r" k="61" />
+<hkern g1="quotesingle" g2="s" k="61" />
+<hkern g1="quotesingle" g2="u" k="61" />
+<hkern g1="quotesingle" g2="Agrave" k="143" />
+<hkern g1="quotesingle" g2="Aacute" k="143" />
+<hkern g1="quotesingle" g2="Acircumflex" k="143" />
+<hkern g1="quotesingle" g2="Atilde" k="143" />
+<hkern g1="quotesingle" g2="Adieresis" k="143" />
+<hkern g1="quotesingle" g2="Aring" k="143" />
+<hkern g1="quotesingle" g2="Yacute" k="-20" />
+<hkern g1="quotesingle" g2="agrave" k="123" />
+<hkern g1="quotesingle" g2="aacute" k="82" />
+<hkern g1="quotesingle" g2="acircumflex" k="82" />
+<hkern g1="quotesingle" g2="atilde" k="82" />
+<hkern g1="quotesingle" g2="adieresis" k="82" />
+<hkern g1="quotesingle" g2="aring" k="82" />
+<hkern g1="quotesingle" g2="ae" k="82" />
+<hkern g1="quotesingle" g2="ccedilla" k="123" />
+<hkern g1="quotesingle" g2="egrave" k="123" />
+<hkern g1="quotesingle" g2="eacute" k="123" />
+<hkern g1="quotesingle" g2="ecircumflex" k="123" />
+<hkern g1="quotesingle" g2="edieresis" k="123" />
+<hkern g1="quotesingle" g2="ograve" k="123" />
+<hkern g1="quotesingle" g2="oacute" k="123" />
+<hkern g1="quotesingle" g2="ocircumflex" k="123" />
+<hkern g1="quotesingle" g2="otilde" k="123" />
+<hkern g1="quotesingle" g2="odieresis" k="123" />
+<hkern g1="quotesingle" g2="oslash" k="123" />
+<hkern g1="quotesingle" g2="ugrave" k="61" />
+<hkern g1="quotesingle" g2="uacute" k="61" />
+<hkern g1="quotesingle" g2="ucircumflex" k="61" />
+<hkern g1="quotesingle" g2="udieresis" k="61" />
+<hkern g1="quotesingle" g2="oe" k="123" />
+<hkern g1="parenleft" g2="J" k="-184" />
+<hkern g1="comma" g2="C" k="102" />
+<hkern g1="comma" g2="G" k="102" />
+<hkern g1="comma" g2="O" k="102" />
+<hkern g1="comma" g2="Q" k="102" />
+<hkern g1="comma" g2="T" k="143" />
+<hkern g1="comma" g2="U" k="41" />
+<hkern g1="comma" g2="V" k="123" />
+<hkern g1="comma" g2="W" k="123" />
+<hkern g1="comma" g2="Y" k="123" />
+<hkern g1="comma" g2="Ccedilla" k="102" />
+<hkern g1="comma" g2="Ograve" k="102" />
+<hkern g1="comma" g2="Oacute" k="102" />
+<hkern g1="comma" g2="Ocircumflex" k="102" />
+<hkern g1="comma" g2="Otilde" k="102" />
+<hkern g1="comma" g2="Odieresis" k="102" />
+<hkern g1="comma" g2="Oslash" k="102" />
+<hkern g1="comma" g2="Ugrave" k="41" />
+<hkern g1="comma" g2="Uacute" k="41" />
+<hkern g1="comma" g2="Ucircumflex" k="41" />
+<hkern g1="comma" g2="Udieresis" k="41" />
+<hkern g1="comma" g2="Yacute" k="123" />
+<hkern g1="comma" g2="OE" k="102" />
+<hkern g1="hyphen" g2="T" k="82" />
+<hkern g1="period" g2="C" k="102" />
+<hkern g1="period" g2="G" k="102" />
+<hkern g1="period" g2="O" k="102" />
+<hkern g1="period" g2="Q" k="102" />
+<hkern g1="period" g2="T" k="143" />
+<hkern g1="period" g2="U" k="41" />
+<hkern g1="period" g2="V" k="123" />
+<hkern g1="period" g2="W" k="123" />
+<hkern g1="period" g2="Y" k="123" />
+<hkern g1="period" g2="Ccedilla" k="102" />
+<hkern g1="period" g2="Ograve" k="102" />
+<hkern g1="period" g2="Oacute" k="102" />
+<hkern g1="period" g2="Ocircumflex" k="102" />
+<hkern g1="period" g2="Otilde" k="102" />
+<hkern g1="period" g2="Odieresis" k="102" />
+<hkern g1="period" g2="Oslash" k="102" />
+<hkern g1="period" g2="Ugrave" k="41" />
+<hkern g1="period" g2="Uacute" k="41" />
+<hkern g1="period" g2="Ucircumflex" k="41" />
+<hkern g1="period" g2="Udieresis" k="41" />
+<hkern g1="period" g2="Yacute" k="123" />
+<hkern g1="period" g2="OE" k="102" />
+<hkern g1="A" g2="quotedbl" k="143" />
+<hkern g1="A" g2="quotesingle" k="143" />
+<hkern g1="A" g2="C" k="41" />
+<hkern g1="A" g2="G" k="41" />
+<hkern g1="A" g2="J" k="-266" />
+<hkern g1="A" g2="O" k="41" />
+<hkern g1="A" g2="Q" k="41" />
+<hkern g1="A" g2="T" k="143" />
+<hkern g1="A" g2="V" k="82" />
+<hkern g1="A" g2="W" k="82" />
+<hkern g1="A" g2="Y" k="123" />
+<hkern g1="A" g2="Ccedilla" k="41" />
+<hkern g1="A" g2="Ograve" k="41" />
+<hkern g1="A" g2="Oacute" k="41" />
+<hkern g1="A" g2="Ocircumflex" k="41" />
+<hkern g1="A" g2="Otilde" k="41" />
+<hkern g1="A" g2="Odieresis" k="41" />
+<hkern g1="A" g2="Oslash" k="41" />
+<hkern g1="A" g2="Yacute" k="123" />
+<hkern g1="A" g2="OE" k="41" />
+<hkern g1="A" g2="quoteright" k="143" />
+<hkern g1="A" g2="quotedblright" k="143" />
+<hkern g1="B" g2="comma" k="82" />
+<hkern g1="B" g2="period" k="82" />
+<hkern g1="B" g2="A" k="41" />
+<hkern g1="B" g2="T" k="61" />
+<hkern g1="B" g2="V" k="20" />
+<hkern g1="B" g2="W" k="20" />
+<hkern g1="B" g2="X" k="41" />
+<hkern g1="B" g2="Y" k="20" />
+<hkern g1="B" g2="Z" k="20" />
+<hkern g1="B" g2="Agrave" k="41" />
+<hkern g1="B" g2="Aacute" k="41" />
+<hkern g1="B" g2="Acircumflex" k="41" />
+<hkern g1="B" g2="Atilde" k="41" />
+<hkern g1="B" g2="Adieresis" k="41" />
+<hkern g1="B" g2="Aring" k="41" />
+<hkern g1="B" g2="Yacute" k="20" />
+<hkern g1="B" g2="quotesinglbase" k="82" />
+<hkern g1="B" g2="quotedblbase" k="82" />
+<hkern g1="C" g2="C" k="41" />
+<hkern g1="C" g2="G" k="41" />
+<hkern g1="C" g2="O" k="41" />
+<hkern g1="C" g2="Q" k="41" />
+<hkern g1="C" g2="Ccedilla" k="41" />
+<hkern g1="C" g2="Ograve" k="41" />
+<hkern g1="C" g2="Oacute" k="41" />
+<hkern g1="C" g2="Ocircumflex" k="41" />
+<hkern g1="C" g2="Otilde" k="41" />
+<hkern g1="C" g2="Odieresis" k="41" />
+<hkern g1="C" g2="Oslash" k="41" />
+<hkern g1="C" g2="OE" k="41" />
+<hkern g1="D" g2="comma" k="82" />
+<hkern g1="D" g2="period" k="82" />
+<hkern g1="D" g2="A" k="41" />
+<hkern g1="D" g2="T" k="61" />
+<hkern g1="D" g2="V" k="20" />
+<hkern g1="D" g2="W" k="20" />
+<hkern g1="D" g2="X" k="41" />
+<hkern g1="D" g2="Y" k="20" />
+<hkern g1="D" g2="Z" k="20" />
+<hkern g1="D" g2="Agrave" k="41" />
+<hkern g1="D" g2="Aacute" k="41" />
+<hkern g1="D" g2="Acircumflex" k="41" />
+<hkern g1="D" g2="Atilde" k="41" />
+<hkern g1="D" g2="Adieresis" k="41" />
+<hkern g1="D" g2="Aring" k="41" />
+<hkern g1="D" g2="Yacute" k="20" />
+<hkern g1="D" g2="quotesinglbase" k="82" />
+<hkern g1="D" g2="quotedblbase" k="82" />
+<hkern g1="E" g2="J" k="-123" />
+<hkern g1="F" g2="comma" k="123" />
+<hkern g1="F" g2="period" k="123" />
+<hkern g1="F" g2="question" k="-41" />
+<hkern g1="F" g2="A" k="41" />
+<hkern g1="F" g2="Agrave" k="41" />
+<hkern g1="F" g2="Aacute" k="41" />
+<hkern g1="F" g2="Acircumflex" k="41" />
+<hkern g1="F" g2="Atilde" k="41" />
+<hkern g1="F" g2="Adieresis" k="41" />
+<hkern g1="F" g2="Aring" k="41" />
+<hkern g1="F" g2="quotesinglbase" k="123" />
+<hkern g1="F" g2="quotedblbase" k="123" />
+<hkern g1="K" g2="C" k="41" />
+<hkern g1="K" g2="G" k="41" />
+<hkern g1="K" g2="O" k="41" />
+<hkern g1="K" g2="Q" k="41" />
+<hkern g1="K" g2="Ccedilla" k="41" />
+<hkern g1="K" g2="Ograve" k="41" />
+<hkern g1="K" g2="Oacute" k="41" />
+<hkern g1="K" g2="Ocircumflex" k="41" />
+<hkern g1="K" g2="Otilde" k="41" />
+<hkern g1="K" g2="Odieresis" k="41" />
+<hkern g1="K" g2="Oslash" k="41" />
+<hkern g1="K" g2="OE" k="41" />
+<hkern g1="L" g2="quotedbl" k="164" />
+<hkern g1="L" g2="quotesingle" k="164" />
+<hkern g1="L" g2="C" k="41" />
+<hkern g1="L" g2="G" k="41" />
+<hkern g1="L" g2="O" k="41" />
+<hkern g1="L" g2="Q" k="41" />
+<hkern g1="L" g2="T" k="41" />
+<hkern g1="L" g2="U" k="20" />
+<hkern g1="L" g2="V" k="41" />
+<hkern g1="L" g2="W" k="41" />
+<hkern g1="L" g2="Y" k="61" />
+<hkern g1="L" g2="Ccedilla" k="41" />
+<hkern g1="L" g2="Ograve" k="41" />
+<hkern g1="L" g2="Oacute" k="41" />
+<hkern g1="L" g2="Ocircumflex" k="41" />
+<hkern g1="L" g2="Otilde" k="41" />
+<hkern g1="L" g2="Odieresis" k="41" />
+<hkern g1="L" g2="Oslash" k="41" />
+<hkern g1="L" g2="Ugrave" k="20" />
+<hkern g1="L" g2="Uacute" k="20" />
+<hkern g1="L" g2="Ucircumflex" k="20" />
+<hkern g1="L" g2="Udieresis" k="20" />
+<hkern g1="L" g2="Yacute" k="61" />
+<hkern g1="L" g2="OE" k="41" />
+<hkern g1="L" g2="quoteright" k="164" />
+<hkern g1="L" g2="quotedblright" k="164" />
+<hkern g1="O" g2="comma" k="82" />
+<hkern g1="O" g2="period" k="82" />
+<hkern g1="O" g2="A" k="41" />
+<hkern g1="O" g2="T" k="61" />
+<hkern g1="O" g2="V" k="20" />
+<hkern g1="O" g2="W" k="20" />
+<hkern g1="O" g2="X" k="41" />
+<hkern g1="O" g2="Y" k="20" />
+<hkern g1="O" g2="Z" k="20" />
+<hkern g1="O" g2="Agrave" k="41" />
+<hkern g1="O" g2="Aacute" k="41" />
+<hkern g1="O" g2="Acircumflex" k="41" />
+<hkern g1="O" g2="Atilde" k="41" />
+<hkern g1="O" g2="Adieresis" k="41" />
+<hkern g1="O" g2="Aring" k="41" />
+<hkern g1="O" g2="Yacute" k="20" />
+<hkern g1="O" g2="quotesinglbase" k="82" />
+<hkern g1="O" g2="quotedblbase" k="82" />
+<hkern g1="P" g2="comma" k="266" />
+<hkern g1="P" g2="period" k="266" />
+<hkern g1="P" g2="A" k="102" />
+<hkern g1="P" g2="X" k="41" />
+<hkern g1="P" g2="Z" k="20" />
+<hkern g1="P" g2="Agrave" k="102" />
+<hkern g1="P" g2="Aacute" k="102" />
+<hkern g1="P" g2="Acircumflex" k="102" />
+<hkern g1="P" g2="Atilde" k="102" />
+<hkern g1="P" g2="Adieresis" k="102" />
+<hkern g1="P" g2="Aring" k="102" />
+<hkern g1="P" g2="quotesinglbase" k="266" />
+<hkern g1="P" g2="quotedblbase" k="266" />
+<hkern g1="Q" g2="comma" k="82" />
+<hkern g1="Q" g2="period" k="82" />
+<hkern g1="Q" g2="A" k="41" />
+<hkern g1="Q" g2="T" k="61" />
+<hkern g1="Q" g2="V" k="20" />
+<hkern g1="Q" g2="W" k="20" />
+<hkern g1="Q" g2="X" k="41" />
+<hkern g1="Q" g2="Y" k="20" />
+<hkern g1="Q" g2="Z" k="20" />
+<hkern g1="Q" g2="Agrave" k="41" />
+<hkern g1="Q" g2="Aacute" k="41" />
+<hkern g1="Q" g2="Acircumflex" k="41" />
+<hkern g1="Q" g2="Atilde" k="41" />
+<hkern g1="Q" g2="Adieresis" k="41" />
+<hkern g1="Q" g2="Aring" k="41" />
+<hkern g1="Q" g2="Yacute" k="20" />
+<hkern g1="Q" g2="quotesinglbase" k="82" />
+<hkern g1="Q" g2="quotedblbase" k="82" />
+<hkern g1="T" g2="comma" k="123" />
+<hkern g1="T" g2="hyphen" k="82" />
+<hkern g1="T" g2="period" k="123" />
+<hkern g1="T" g2="question" k="-41" />
+<hkern g1="T" g2="A" k="143" />
+<hkern g1="T" g2="C" k="41" />
+<hkern g1="T" g2="G" k="41" />
+<hkern g1="T" g2="O" k="41" />
+<hkern g1="T" g2="Q" k="41" />
+<hkern g1="T" g2="T" k="-41" />
+<hkern g1="T" g2="a" k="164" />
+<hkern g1="T" g2="c" k="143" />
+<hkern g1="T" g2="d" k="143" />
+<hkern g1="T" g2="e" k="143" />
+<hkern g1="T" g2="g" k="143" />
+<hkern g1="T" g2="m" k="102" />
+<hkern g1="T" g2="n" k="102" />
+<hkern g1="T" g2="o" k="143" />
+<hkern g1="T" g2="p" k="102" />
+<hkern g1="T" g2="q" k="143" />
+<hkern g1="T" g2="r" k="102" />
+<hkern g1="T" g2="s" k="123" />
+<hkern g1="T" g2="u" k="102" />
+<hkern g1="T" g2="v" k="41" />
+<hkern g1="T" g2="w" k="41" />
+<hkern g1="T" g2="x" k="41" />
+<hkern g1="T" g2="y" k="41" />
+<hkern g1="T" g2="z" k="82" />
+<hkern g1="T" g2="Agrave" k="143" />
+<hkern g1="T" g2="Aacute" k="143" />
+<hkern g1="T" g2="Acircumflex" k="143" />
+<hkern g1="T" g2="Atilde" k="143" />
+<hkern g1="T" g2="Adieresis" k="143" />
+<hkern g1="T" g2="Aring" k="143" />
+<hkern g1="T" g2="Ccedilla" k="41" />
+<hkern g1="T" g2="Ograve" k="41" />
+<hkern g1="T" g2="Oacute" k="41" />
+<hkern g1="T" g2="Ocircumflex" k="41" />
+<hkern g1="T" g2="Otilde" k="41" />
+<hkern g1="T" g2="Odieresis" k="41" />
+<hkern g1="T" g2="Oslash" k="41" />
+<hkern g1="T" g2="agrave" k="143" />
+<hkern g1="T" g2="aacute" k="164" />
+<hkern g1="T" g2="acircumflex" k="164" />
+<hkern g1="T" g2="atilde" k="164" />
+<hkern g1="T" g2="adieresis" k="164" />
+<hkern g1="T" g2="aring" k="164" />
+<hkern g1="T" g2="ae" k="164" />
+<hkern g1="T" g2="ccedilla" k="143" />
+<hkern g1="T" g2="egrave" k="143" />
+<hkern g1="T" g2="eacute" k="143" />
+<hkern g1="T" g2="ecircumflex" k="143" />
+<hkern g1="T" g2="edieresis" k="143" />
+<hkern g1="T" g2="ograve" k="143" />
+<hkern g1="T" g2="oacute" k="143" />
+<hkern g1="T" g2="ocircumflex" k="143" />
+<hkern g1="T" g2="otilde" k="143" />
+<hkern g1="T" g2="odieresis" k="143" />
+<hkern g1="T" g2="oslash" k="143" />
+<hkern g1="T" g2="ugrave" k="102" />
+<hkern g1="T" g2="uacute" k="102" />
+<hkern g1="T" g2="ucircumflex" k="102" />
+<hkern g1="T" g2="udieresis" k="102" />
+<hkern g1="T" g2="yacute" k="41" />
+<hkern g1="T" g2="OE" k="41" />
+<hkern g1="T" g2="oe" k="143" />
+<hkern g1="T" g2="endash" k="82" />
+<hkern g1="T" g2="emdash" k="82" />
+<hkern g1="T" g2="quotesinglbase" k="123" />
+<hkern g1="T" g2="quotedblbase" k="123" />
+<hkern g1="U" g2="comma" k="41" />
+<hkern g1="U" g2="period" k="41" />
+<hkern g1="U" g2="A" k="20" />
+<hkern g1="U" g2="Agrave" k="20" />
+<hkern g1="U" g2="Aacute" k="20" />
+<hkern g1="U" g2="Acircumflex" k="20" />
+<hkern g1="U" g2="Atilde" k="20" />
+<hkern g1="U" g2="Adieresis" k="20" />
+<hkern g1="U" g2="Aring" k="20" />
+<hkern g1="U" g2="quotesinglbase" k="41" />
+<hkern g1="U" g2="quotedblbase" k="41" />
+<hkern g1="V" g2="comma" k="102" />
+<hkern g1="V" g2="period" k="102" />
+<hkern g1="V" g2="question" k="-41" />
+<hkern g1="V" g2="A" k="82" />
+<hkern g1="V" g2="C" k="20" />
+<hkern g1="V" g2="G" k="20" />
+<hkern g1="V" g2="O" k="20" />
+<hkern g1="V" g2="Q" k="20" />
+<hkern g1="V" g2="a" k="41" />
+<hkern g1="V" g2="c" k="41" />
+<hkern g1="V" g2="d" k="41" />
+<hkern g1="V" g2="e" k="41" />
+<hkern g1="V" g2="g" k="20" />
+<hkern g1="V" g2="m" k="20" />
+<hkern g1="V" g2="n" k="20" />
+<hkern g1="V" g2="o" k="41" />
+<hkern g1="V" g2="p" k="20" />
+<hkern g1="V" g2="q" k="41" />
+<hkern g1="V" g2="r" k="20" />
+<hkern g1="V" g2="s" k="20" />
+<hkern g1="V" g2="u" k="20" />
+<hkern g1="V" g2="Agrave" k="82" />
+<hkern g1="V" g2="Aacute" k="82" />
+<hkern g1="V" g2="Acircumflex" k="82" />
+<hkern g1="V" g2="Atilde" k="82" />
+<hkern g1="V" g2="Adieresis" k="82" />
+<hkern g1="V" g2="Aring" k="82" />
+<hkern g1="V" g2="Ccedilla" k="20" />
+<hkern g1="V" g2="Ograve" k="20" />
+<hkern g1="V" g2="Oacute" k="20" />
+<hkern g1="V" g2="Ocircumflex" k="20" />
+<hkern g1="V" g2="Otilde" k="20" />
+<hkern g1="V" g2="Odieresis" k="20" />
+<hkern g1="V" g2="Oslash" k="20" />
+<hkern g1="V" g2="agrave" k="41" />
+<hkern g1="V" g2="aacute" k="41" />
+<hkern g1="V" g2="acircumflex" k="41" />
+<hkern g1="V" g2="atilde" k="41" />
+<hkern g1="V" g2="adieresis" k="41" />
+<hkern g1="V" g2="aring" k="41" />
+<hkern g1="V" g2="ae" k="41" />
+<hkern g1="V" g2="ccedilla" k="41" />
+<hkern g1="V" g2="egrave" k="41" />
+<hkern g1="V" g2="eacute" k="41" />
+<hkern g1="V" g2="ecircumflex" k="41" />
+<hkern g1="V" g2="edieresis" k="41" />
+<hkern g1="V" g2="ograve" k="41" />
+<hkern g1="V" g2="oacute" k="41" />
+<hkern g1="V" g2="ocircumflex" k="41" />
+<hkern g1="V" g2="otilde" k="41" />
+<hkern g1="V" g2="odieresis" k="41" />
+<hkern g1="V" g2="oslash" k="41" />
+<hkern g1="V" g2="ugrave" k="20" />
+<hkern g1="V" g2="uacute" k="20" />
+<hkern g1="V" g2="ucircumflex" k="20" />
+<hkern g1="V" g2="udieresis" k="20" />
+<hkern g1="V" g2="OE" k="20" />
+<hkern g1="V" g2="oe" k="41" />
+<hkern g1="V" g2="quotesinglbase" k="102" />
+<hkern g1="V" g2="quotedblbase" k="102" />
+<hkern g1="W" g2="comma" k="102" />
+<hkern g1="W" g2="period" k="102" />
+<hkern g1="W" g2="question" k="-41" />
+<hkern g1="W" g2="A" k="82" />
+<hkern g1="W" g2="C" k="20" />
+<hkern g1="W" g2="G" k="20" />
+<hkern g1="W" g2="O" k="20" />
+<hkern g1="W" g2="Q" k="20" />
+<hkern g1="W" g2="a" k="41" />
+<hkern g1="W" g2="c" k="41" />
+<hkern g1="W" g2="d" k="41" />
+<hkern g1="W" g2="e" k="41" />
+<hkern g1="W" g2="g" k="20" />
+<hkern g1="W" g2="m" k="20" />
+<hkern g1="W" g2="n" k="20" />
+<hkern g1="W" g2="o" k="41" />
+<hkern g1="W" g2="p" k="20" />
+<hkern g1="W" g2="q" k="41" />
+<hkern g1="W" g2="r" k="20" />
+<hkern g1="W" g2="s" k="20" />
+<hkern g1="W" g2="u" k="20" />
+<hkern g1="W" g2="Agrave" k="82" />
+<hkern g1="W" g2="Aacute" k="82" />
+<hkern g1="W" g2="Acircumflex" k="82" />
+<hkern g1="W" g2="Atilde" k="82" />
+<hkern g1="W" g2="Adieresis" k="82" />
+<hkern g1="W" g2="Aring" k="82" />
+<hkern g1="W" g2="Ccedilla" k="20" />
+<hkern g1="W" g2="Ograve" k="20" />
+<hkern g1="W" g2="Oacute" k="20" />
+<hkern g1="W" g2="Ocircumflex" k="20" />
+<hkern g1="W" g2="Otilde" k="20" />
+<hkern g1="W" g2="Odieresis" k="20" />
+<hkern g1="W" g2="Oslash" k="20" />
+<hkern g1="W" g2="agrave" k="41" />
+<hkern g1="W" g2="aacute" k="41" />
+<hkern g1="W" g2="acircumflex" k="41" />
+<hkern g1="W" g2="atilde" k="41" />
+<hkern g1="W" g2="adieresis" k="41" />
+<hkern g1="W" g2="aring" k="41" />
+<hkern g1="W" g2="ae" k="41" />
+<hkern g1="W" g2="ccedilla" k="41" />
+<hkern g1="W" g2="egrave" k="41" />
+<hkern g1="W" g2="eacute" k="41" />
+<hkern g1="W" g2="ecircumflex" k="41" />
+<hkern g1="W" g2="edieresis" k="41" />
+<hkern g1="W" g2="ograve" k="41" />
+<hkern g1="W" g2="oacute" k="41" />
+<hkern g1="W" g2="ocircumflex" k="41" />
+<hkern g1="W" g2="otilde" k="41" />
+<hkern g1="W" g2="odieresis" k="41" />
+<hkern g1="W" g2="oslash" k="41" />
+<hkern g1="W" g2="ugrave" k="20" />
+<hkern g1="W" g2="uacute" k="20" />
+<hkern g1="W" g2="ucircumflex" k="20" />
+<hkern g1="W" g2="udieresis" k="20" />
+<hkern g1="W" g2="OE" k="20" />
+<hkern g1="W" g2="oe" k="41" />
+<hkern g1="W" g2="quotesinglbase" k="102" />
+<hkern g1="W" g2="quotedblbase" k="102" />
+<hkern g1="X" g2="C" k="41" />
+<hkern g1="X" g2="G" k="41" />
+<hkern g1="X" g2="O" k="41" />
+<hkern g1="X" g2="Q" k="41" />
+<hkern g1="X" g2="Ccedilla" k="41" />
+<hkern g1="X" g2="Ograve" k="41" />
+<hkern g1="X" g2="Oacute" k="41" />
+<hkern g1="X" g2="Ocircumflex" k="41" />
+<hkern g1="X" g2="Otilde" k="41" />
+<hkern g1="X" g2="Odieresis" k="41" />
+<hkern g1="X" g2="Oslash" k="41" />
+<hkern g1="X" g2="OE" k="41" />
+<hkern g1="Y" g2="comma" k="123" />
+<hkern g1="Y" g2="period" k="123" />
+<hkern g1="Y" g2="question" k="-41" />
+<hkern g1="Y" g2="A" k="123" />
+<hkern g1="Y" g2="C" k="41" />
+<hkern g1="Y" g2="G" k="41" />
+<hkern g1="Y" g2="O" k="41" />
+<hkern g1="Y" g2="Q" k="41" />
+<hkern g1="Y" g2="a" k="102" />
+<hkern g1="Y" g2="c" k="102" />
+<hkern g1="Y" g2="d" k="102" />
+<hkern g1="Y" g2="e" k="102" />
+<hkern g1="Y" g2="g" k="41" />
+<hkern g1="Y" g2="m" k="61" />
+<hkern g1="Y" g2="n" k="61" />
+<hkern g1="Y" g2="o" k="102" />
+<hkern g1="Y" g2="p" k="61" />
+<hkern g1="Y" g2="q" k="102" />
+<hkern g1="Y" g2="r" k="61" />
+<hkern g1="Y" g2="s" k="82" />
+<hkern g1="Y" g2="u" k="61" />
+<hkern g1="Y" g2="z" k="41" />
+<hkern g1="Y" g2="Agrave" k="123" />
+<hkern g1="Y" g2="Aacute" k="123" />
+<hkern g1="Y" g2="Acircumflex" k="123" />
+<hkern g1="Y" g2="Atilde" k="123" />
+<hkern g1="Y" g2="Adieresis" k="123" />
+<hkern g1="Y" g2="Aring" k="123" />
+<hkern g1="Y" g2="Ccedilla" k="41" />
+<hkern g1="Y" g2="Ograve" k="41" />
+<hkern g1="Y" g2="Oacute" k="41" />
+<hkern g1="Y" g2="Ocircumflex" k="41" />
+<hkern g1="Y" g2="Otilde" k="41" />
+<hkern g1="Y" g2="Odieresis" k="41" />
+<hkern g1="Y" g2="Oslash" k="41" />
+<hkern g1="Y" g2="agrave" k="102" />
+<hkern g1="Y" g2="aacute" k="102" />
+<hkern g1="Y" g2="acircumflex" k="102" />
+<hkern g1="Y" g2="atilde" k="102" />
+<hkern g1="Y" g2="adieresis" k="102" />
+<hkern g1="Y" g2="aring" k="102" />
+<hkern g1="Y" g2="ae" k="102" />
+<hkern g1="Y" g2="ccedilla" k="102" />
+<hkern g1="Y" g2="egrave" k="102" />
+<hkern g1="Y" g2="eacute" k="102" />
+<hkern g1="Y" g2="ecircumflex" k="102" />
+<hkern g1="Y" g2="edieresis" k="102" />
+<hkern g1="Y" g2="ograve" k="102" />
+<hkern g1="Y" g2="oacute" k="102" />
+<hkern g1="Y" g2="ocircumflex" k="102" />
+<hkern g1="Y" g2="otilde" k="102" />
+<hkern g1="Y" g2="odieresis" k="102" />
+<hkern g1="Y" g2="oslash" k="102" />
+<hkern g1="Y" g2="ugrave" k="61" />
+<hkern g1="Y" g2="uacute" k="61" />
+<hkern g1="Y" g2="ucircumflex" k="61" />
+<hkern g1="Y" g2="udieresis" k="61" />
+<hkern g1="Y" g2="OE" k="41" />
+<hkern g1="Y" g2="oe" k="102" />
+<hkern g1="Y" g2="quotesinglbase" k="123" />
+<hkern g1="Y" g2="quotedblbase" k="123" />
+<hkern g1="Z" g2="C" k="20" />
+<hkern g1="Z" g2="G" k="20" />
+<hkern g1="Z" g2="O" k="20" />
+<hkern g1="Z" g2="Q" k="20" />
+<hkern g1="Z" g2="Ccedilla" k="20" />
+<hkern g1="Z" g2="Ograve" k="20" />
+<hkern g1="Z" g2="Oacute" k="20" />
+<hkern g1="Z" g2="Ocircumflex" k="20" />
+<hkern g1="Z" g2="Otilde" k="20" />
+<hkern g1="Z" g2="Odieresis" k="20" />
+<hkern g1="Z" g2="Oslash" k="20" />
+<hkern g1="Z" g2="OE" k="20" />
+<hkern g1="bracketleft" g2="J" k="-184" />
+<hkern g1="a" g2="quotedbl" k="20" />
+<hkern g1="a" g2="quotesingle" k="20" />
+<hkern g1="a" g2="quoteright" k="20" />
+<hkern g1="a" g2="quotedblright" k="20" />
+<hkern g1="b" g2="quotedbl" k="20" />
+<hkern g1="b" g2="quotesingle" k="20" />
+<hkern g1="b" g2="v" k="41" />
+<hkern g1="b" g2="w" k="41" />
+<hkern g1="b" g2="x" k="41" />
+<hkern g1="b" g2="y" k="41" />
+<hkern g1="b" g2="z" k="20" />
+<hkern g1="b" g2="yacute" k="41" />
+<hkern g1="b" g2="quoteright" k="20" />
+<hkern g1="b" g2="quotedblright" k="20" />
+<hkern g1="c" g2="quotedbl" k="-41" />
+<hkern g1="c" g2="quotesingle" k="-41" />
+<hkern g1="c" g2="quoteright" k="-41" />
+<hkern g1="c" g2="quotedblright" k="-41" />
+<hkern g1="e" g2="quotedbl" k="20" />
+<hkern g1="e" g2="quotesingle" k="20" />
+<hkern g1="e" g2="v" k="41" />
+<hkern g1="e" g2="w" k="41" />
+<hkern g1="e" g2="x" k="41" />
+<hkern g1="e" g2="y" k="41" />
+<hkern g1="e" g2="z" k="20" />
+<hkern g1="e" g2="yacute" k="41" />
+<hkern g1="e" g2="quoteright" k="20" />
+<hkern g1="e" g2="quotedblright" k="20" />
+<hkern g1="f" g2="quotedbl" k="-123" />
+<hkern g1="f" g2="quotesingle" k="-123" />
+<hkern g1="f" g2="quoteright" k="-123" />
+<hkern g1="f" g2="quotedblright" k="-123" />
+<hkern g1="h" g2="quotedbl" k="20" />
+<hkern g1="h" g2="quotesingle" k="20" />
+<hkern g1="h" g2="quoteright" k="20" />
+<hkern g1="h" g2="quotedblright" k="20" />
+<hkern g1="k" g2="c" k="41" />
+<hkern g1="k" g2="d" k="41" />
+<hkern g1="k" g2="e" k="41" />
+<hkern g1="k" g2="o" k="41" />
+<hkern g1="k" g2="q" k="41" />
+<hkern g1="k" g2="agrave" k="41" />
+<hkern g1="k" g2="ccedilla" k="41" />
+<hkern g1="k" g2="egrave" k="41" />
+<hkern g1="k" g2="eacute" k="41" />
+<hkern g1="k" g2="ecircumflex" k="41" />
+<hkern g1="k" g2="edieresis" k="41" />
+<hkern g1="k" g2="ograve" k="41" />
+<hkern g1="k" g2="oacute" k="41" />
+<hkern g1="k" g2="ocircumflex" k="41" />
+<hkern g1="k" g2="otilde" k="41" />
+<hkern g1="k" g2="odieresis" k="41" />
+<hkern g1="k" g2="oslash" k="41" />
+<hkern g1="k" g2="oe" k="41" />
+<hkern g1="m" g2="quotedbl" k="20" />
+<hkern g1="m" g2="quotesingle" k="20" />
+<hkern g1="m" g2="quoteright" k="20" />
+<hkern g1="m" g2="quotedblright" k="20" />
+<hkern g1="n" g2="quotedbl" k="20" />
+<hkern g1="n" g2="quotesingle" k="20" />
+<hkern g1="n" g2="quoteright" k="20" />
+<hkern g1="n" g2="quotedblright" k="20" />
+<hkern g1="o" g2="quotedbl" k="20" />
+<hkern g1="o" g2="quotesingle" k="20" />
+<hkern g1="o" g2="v" k="41" />
+<hkern g1="o" g2="w" k="41" />
+<hkern g1="o" g2="x" k="41" />
+<hkern g1="o" g2="y" k="41" />
+<hkern g1="o" g2="z" k="20" />
+<hkern g1="o" g2="yacute" k="41" />
+<hkern g1="o" g2="quoteright" k="20" />
+<hkern g1="o" g2="quotedblright" k="20" />
+<hkern g1="p" g2="quotedbl" k="20" />
+<hkern g1="p" g2="quotesingle" k="20" />
+<hkern g1="p" g2="v" k="41" />
+<hkern g1="p" g2="w" k="41" />
+<hkern g1="p" g2="x" k="41" />
+<hkern g1="p" g2="y" k="41" />
+<hkern g1="p" g2="z" k="20" />
+<hkern g1="p" g2="yacute" k="41" />
+<hkern g1="p" g2="quoteright" k="20" />
+<hkern g1="p" g2="quotedblright" k="20" />
+<hkern g1="r" g2="quotedbl" k="-82" />
+<hkern g1="r" g2="quotesingle" k="-82" />
+<hkern g1="r" g2="a" k="41" />
+<hkern g1="r" g2="c" k="41" />
+<hkern g1="r" g2="d" k="41" />
+<hkern g1="r" g2="e" k="41" />
+<hkern g1="r" g2="g" k="20" />
+<hkern g1="r" g2="o" k="41" />
+<hkern g1="r" g2="q" k="41" />
+<hkern g1="r" g2="agrave" k="41" />
+<hkern g1="r" g2="aacute" k="41" />
+<hkern g1="r" g2="acircumflex" k="41" />
+<hkern g1="r" g2="atilde" k="41" />
+<hkern g1="r" g2="adieresis" k="41" />
+<hkern g1="r" g2="aring" k="41" />
+<hkern g1="r" g2="ae" k="41" />
+<hkern g1="r" g2="ccedilla" k="41" />
+<hkern g1="r" g2="egrave" k="41" />
+<hkern g1="r" g2="eacute" k="41" />
+<hkern g1="r" g2="ecircumflex" k="41" />
+<hkern g1="r" g2="edieresis" k="41" />
+<hkern g1="r" g2="ograve" k="41" />
+<hkern g1="r" g2="oacute" k="41" />
+<hkern g1="r" g2="ocircumflex" k="41" />
+<hkern g1="r" g2="otilde" k="41" />
+<hkern g1="r" g2="odieresis" k="41" />
+<hkern g1="r" g2="oslash" k="41" />
+<hkern g1="r" g2="oe" k="41" />
+<hkern g1="r" g2="quoteright" k="-82" />
+<hkern g1="r" g2="quotedblright" k="-82" />
+<hkern g1="t" g2="quotedbl" k="-41" />
+<hkern g1="t" g2="quotesingle" k="-41" />
+<hkern g1="t" g2="quoteright" k="-41" />
+<hkern g1="t" g2="quotedblright" k="-41" />
+<hkern g1="v" g2="quotedbl" k="-82" />
+<hkern g1="v" g2="quotesingle" k="-82" />
+<hkern g1="v" g2="comma" k="82" />
+<hkern g1="v" g2="period" k="82" />
+<hkern g1="v" g2="question" k="-41" />
+<hkern g1="v" g2="quoteright" k="-82" />
+<hkern g1="v" g2="quotesinglbase" k="82" />
+<hkern g1="v" g2="quotedblright" k="-82" />
+<hkern g1="v" g2="quotedblbase" k="82" />
+<hkern g1="w" g2="quotedbl" k="-82" />
+<hkern g1="w" g2="quotesingle" k="-82" />
+<hkern g1="w" g2="comma" k="82" />
+<hkern g1="w" g2="period" k="82" />
+<hkern g1="w" g2="question" k="-41" />
+<hkern g1="w" g2="quoteright" k="-82" />
+<hkern g1="w" g2="quotesinglbase" k="82" />
+<hkern g1="w" g2="quotedblright" k="-82" />
+<hkern g1="w" g2="quotedblbase" k="82" />
+<hkern g1="x" g2="c" k="41" />
+<hkern g1="x" g2="d" k="41" />
+<hkern g1="x" g2="e" k="41" />
+<hkern g1="x" g2="o" k="41" />
+<hkern g1="x" g2="q" k="41" />
+<hkern g1="x" g2="agrave" k="41" />
+<hkern g1="x" g2="ccedilla" k="41" />
+<hkern g1="x" g2="egrave" k="41" />
+<hkern g1="x" g2="eacute" k="41" />
+<hkern g1="x" g2="ecircumflex" k="41" />
+<hkern g1="x" g2="edieresis" k="41" />
+<hkern g1="x" g2="ograve" k="41" />
+<hkern g1="x" g2="oacute" k="41" />
+<hkern g1="x" g2="ocircumflex" k="41" />
+<hkern g1="x" g2="otilde" k="41" />
+<hkern g1="x" g2="odieresis" k="41" />
+<hkern g1="x" g2="oslash" k="41" />
+<hkern g1="x" g2="oe" k="41" />
+<hkern g1="y" g2="quotedbl" k="-82" />
+<hkern g1="y" g2="quotesingle" k="-82" />
+<hkern g1="y" g2="comma" k="82" />
+<hkern g1="y" g2="period" k="82" />
+<hkern g1="y" g2="question" k="-41" />
+<hkern g1="y" g2="quoteright" k="-82" />
+<hkern g1="y" g2="quotesinglbase" k="82" />
+<hkern g1="y" g2="quotedblright" k="-82" />
+<hkern g1="y" g2="quotedblbase" k="82" />
+<hkern g1="braceleft" g2="J" k="-184" />
+<hkern g1="Agrave" g2="quotedbl" k="143" />
+<hkern g1="Agrave" g2="quotesingle" k="143" />
+<hkern g1="Agrave" g2="C" k="41" />
+<hkern g1="Agrave" g2="G" k="41" />
+<hkern g1="Agrave" g2="J" k="-266" />
+<hkern g1="Agrave" g2="O" k="41" />
+<hkern g1="Agrave" g2="Q" k="41" />
+<hkern g1="Agrave" g2="T" k="143" />
+<hkern g1="Agrave" g2="V" k="82" />
+<hkern g1="Agrave" g2="W" k="82" />
+<hkern g1="Agrave" g2="Y" k="123" />
+<hkern g1="Agrave" g2="Ccedilla" k="41" />
+<hkern g1="Agrave" g2="Ograve" k="41" />
+<hkern g1="Agrave" g2="Oacute" k="41" />
+<hkern g1="Agrave" g2="Ocircumflex" k="41" />
+<hkern g1="Agrave" g2="Otilde" k="41" />
+<hkern g1="Agrave" g2="Odieresis" k="41" />
+<hkern g1="Agrave" g2="Oslash" k="41" />
+<hkern g1="Agrave" g2="Yacute" k="123" />
+<hkern g1="Agrave" g2="OE" k="41" />
+<hkern g1="Agrave" g2="quoteright" k="143" />
+<hkern g1="Agrave" g2="quotedblright" k="143" />
+<hkern g1="Aacute" g2="quotedbl" k="143" />
+<hkern g1="Aacute" g2="quotesingle" k="143" />
+<hkern g1="Aacute" g2="C" k="41" />
+<hkern g1="Aacute" g2="G" k="41" />
+<hkern g1="Aacute" g2="J" k="-266" />
+<hkern g1="Aacute" g2="O" k="41" />
+<hkern g1="Aacute" g2="Q" k="41" />
+<hkern g1="Aacute" g2="T" k="143" />
+<hkern g1="Aacute" g2="V" k="82" />
+<hkern g1="Aacute" g2="W" k="82" />
+<hkern g1="Aacute" g2="Y" k="123" />
+<hkern g1="Aacute" g2="Ccedilla" k="41" />
+<hkern g1="Aacute" g2="Ograve" k="41" />
+<hkern g1="Aacute" g2="Oacute" k="41" />
+<hkern g1="Aacute" g2="Ocircumflex" k="41" />
+<hkern g1="Aacute" g2="Otilde" k="41" />
+<hkern g1="Aacute" g2="Odieresis" k="41" />
+<hkern g1="Aacute" g2="Oslash" k="41" />
+<hkern g1="Aacute" g2="Yacute" k="123" />
+<hkern g1="Aacute" g2="OE" k="41" />
+<hkern g1="Aacute" g2="quoteright" k="143" />
+<hkern g1="Aacute" g2="quotedblright" k="143" />
+<hkern g1="Acircumflex" g2="quotedbl" k="143" />
+<hkern g1="Acircumflex" g2="quotesingle" k="143" />
+<hkern g1="Acircumflex" g2="C" k="41" />
+<hkern g1="Acircumflex" g2="G" k="41" />
+<hkern g1="Acircumflex" g2="J" k="-266" />
+<hkern g1="Acircumflex" g2="O" k="41" />
+<hkern g1="Acircumflex" g2="Q" k="41" />
+<hkern g1="Acircumflex" g2="T" k="143" />
+<hkern g1="Acircumflex" g2="V" k="82" />
+<hkern g1="Acircumflex" g2="W" k="82" />
+<hkern g1="Acircumflex" g2="Y" k="123" />
+<hkern g1="Acircumflex" g2="Ccedilla" k="41" />
+<hkern g1="Acircumflex" g2="Ograve" k="41" />
+<hkern g1="Acircumflex" g2="Oacute" k="41" />
+<hkern g1="Acircumflex" g2="Ocircumflex" k="41" />
+<hkern g1="Acircumflex" g2="Otilde" k="41" />
+<hkern g1="Acircumflex" g2="Odieresis" k="41" />
+<hkern g1="Acircumflex" g2="Oslash" k="41" />
+<hkern g1="Acircumflex" g2="Yacute" k="123" />
+<hkern g1="Acircumflex" g2="OE" k="41" />
+<hkern g1="Acircumflex" g2="quoteright" k="143" />
+<hkern g1="Acircumflex" g2="quotedblright" k="143" />
+<hkern g1="Atilde" g2="quotedbl" k="143" />
+<hkern g1="Atilde" g2="quotesingle" k="143" />
+<hkern g1="Atilde" g2="C" k="41" />
+<hkern g1="Atilde" g2="G" k="41" />
+<hkern g1="Atilde" g2="J" k="-266" />
+<hkern g1="Atilde" g2="O" k="41" />
+<hkern g1="Atilde" g2="Q" k="41" />
+<hkern g1="Atilde" g2="T" k="143" />
+<hkern g1="Atilde" g2="V" k="82" />
+<hkern g1="Atilde" g2="W" k="82" />
+<hkern g1="Atilde" g2="Y" k="123" />
+<hkern g1="Atilde" g2="Ccedilla" k="41" />
+<hkern g1="Atilde" g2="Ograve" k="41" />
+<hkern g1="Atilde" g2="Oacute" k="41" />
+<hkern g1="Atilde" g2="Ocircumflex" k="41" />
+<hkern g1="Atilde" g2="Otilde" k="41" />
+<hkern g1="Atilde" g2="Odieresis" k="41" />
+<hkern g1="Atilde" g2="Oslash" k="41" />
+<hkern g1="Atilde" g2="Yacute" k="123" />
+<hkern g1="Atilde" g2="OE" k="41" />
+<hkern g1="Atilde" g2="quoteright" k="143" />
+<hkern g1="Atilde" g2="quotedblright" k="143" />
+<hkern g1="Adieresis" g2="quotedbl" k="143" />
+<hkern g1="Adieresis" g2="quotesingle" k="143" />
+<hkern g1="Adieresis" g2="C" k="41" />
+<hkern g1="Adieresis" g2="G" k="41" />
+<hkern g1="Adieresis" g2="J" k="-266" />
+<hkern g1="Adieresis" g2="O" k="41" />
+<hkern g1="Adieresis" g2="Q" k="41" />
+<hkern g1="Adieresis" g2="T" k="143" />
+<hkern g1="Adieresis" g2="V" k="82" />
+<hkern g1="Adieresis" g2="W" k="82" />
+<hkern g1="Adieresis" g2="Y" k="123" />
+<hkern g1="Adieresis" g2="Ccedilla" k="41" />
+<hkern g1="Adieresis" g2="Ograve" k="41" />
+<hkern g1="Adieresis" g2="Oacute" k="41" />
+<hkern g1="Adieresis" g2="Ocircumflex" k="41" />
+<hkern g1="Adieresis" g2="Otilde" k="41" />
+<hkern g1="Adieresis" g2="Odieresis" k="41" />
+<hkern g1="Adieresis" g2="Oslash" k="41" />
+<hkern g1="Adieresis" g2="Yacute" k="123" />
+<hkern g1="Adieresis" g2="OE" k="41" />
+<hkern g1="Adieresis" g2="quoteright" k="143" />
+<hkern g1="Adieresis" g2="quotedblright" k="143" />
+<hkern g1="Aring" g2="quotedbl" k="143" />
+<hkern g1="Aring" g2="quotesingle" k="143" />
+<hkern g1="Aring" g2="C" k="41" />
+<hkern g1="Aring" g2="G" k="41" />
+<hkern g1="Aring" g2="J" k="-266" />
+<hkern g1="Aring" g2="O" k="41" />
+<hkern g1="Aring" g2="Q" k="41" />
+<hkern g1="Aring" g2="T" k="143" />
+<hkern g1="Aring" g2="V" k="82" />
+<hkern g1="Aring" g2="W" k="82" />
+<hkern g1="Aring" g2="Y" k="123" />
+<hkern g1="Aring" g2="Ccedilla" k="41" />
+<hkern g1="Aring" g2="Ograve" k="41" />
+<hkern g1="Aring" g2="Oacute" k="41" />
+<hkern g1="Aring" g2="Ocircumflex" k="41" />
+<hkern g1="Aring" g2="Otilde" k="41" />
+<hkern g1="Aring" g2="Odieresis" k="41" />
+<hkern g1="Aring" g2="Oslash" k="41" />
+<hkern g1="Aring" g2="Yacute" k="123" />
+<hkern g1="Aring" g2="OE" k="41" />
+<hkern g1="Aring" g2="quoteright" k="143" />
+<hkern g1="Aring" g2="quotedblright" k="143" />
+<hkern g1="AE" g2="J" k="-123" />
+<hkern g1="Ccedilla" g2="C" k="41" />
+<hkern g1="Ccedilla" g2="G" k="41" />
+<hkern g1="Ccedilla" g2="O" k="41" />
+<hkern g1="Ccedilla" g2="Q" k="41" />
+<hkern g1="Ccedilla" g2="Ccedilla" k="41" />
+<hkern g1="Ccedilla" g2="Ograve" k="41" />
+<hkern g1="Ccedilla" g2="Oacute" k="41" />
+<hkern g1="Ccedilla" g2="Ocircumflex" k="41" />
+<hkern g1="Ccedilla" g2="Otilde" k="41" />
+<hkern g1="Ccedilla" g2="Odieresis" k="41" />
+<hkern g1="Ccedilla" g2="Oslash" k="41" />
+<hkern g1="Ccedilla" g2="OE" k="41" />
+<hkern g1="Egrave" g2="J" k="-123" />
+<hkern g1="Eacute" g2="J" k="-123" />
+<hkern g1="Ecircumflex" g2="J" k="-123" />
+<hkern g1="Edieresis" g2="J" k="-123" />
+<hkern g1="Eth" g2="comma" k="82" />
+<hkern g1="Eth" g2="period" k="82" />
+<hkern g1="Eth" g2="A" k="41" />
+<hkern g1="Eth" g2="T" k="61" />
+<hkern g1="Eth" g2="V" k="20" />
+<hkern g1="Eth" g2="W" k="20" />
+<hkern g1="Eth" g2="X" k="41" />
+<hkern g1="Eth" g2="Y" k="20" />
+<hkern g1="Eth" g2="Z" k="20" />
+<hkern g1="Eth" g2="Agrave" k="41" />
+<hkern g1="Eth" g2="Aacute" k="41" />
+<hkern g1="Eth" g2="Acircumflex" k="41" />
+<hkern g1="Eth" g2="Atilde" k="41" />
+<hkern g1="Eth" g2="Adieresis" k="41" />
+<hkern g1="Eth" g2="Aring" k="41" />
+<hkern g1="Eth" g2="Yacute" k="20" />
+<hkern g1="Eth" g2="quotesinglbase" k="82" />
+<hkern g1="Eth" g2="quotedblbase" k="82" />
+<hkern g1="Ograve" g2="comma" k="82" />
+<hkern g1="Ograve" g2="period" k="82" />
+<hkern g1="Ograve" g2="A" k="41" />
+<hkern g1="Ograve" g2="T" k="61" />
+<hkern g1="Ograve" g2="V" k="20" />
+<hkern g1="Ograve" g2="W" k="20" />
+<hkern g1="Ograve" g2="X" k="41" />
+<hkern g1="Ograve" g2="Y" k="20" />
+<hkern g1="Ograve" g2="Z" k="20" />
+<hkern g1="Ograve" g2="Agrave" k="41" />
+<hkern g1="Ograve" g2="Aacute" k="41" />
+<hkern g1="Ograve" g2="Acircumflex" k="41" />
+<hkern g1="Ograve" g2="Atilde" k="41" />
+<hkern g1="Ograve" g2="Adieresis" k="41" />
+<hkern g1="Ograve" g2="Aring" k="41" />
+<hkern g1="Ograve" g2="Yacute" k="20" />
+<hkern g1="Ograve" g2="quotesinglbase" k="82" />
+<hkern g1="Ograve" g2="quotedblbase" k="82" />
+<hkern g1="Oacute" g2="comma" k="82" />
+<hkern g1="Oacute" g2="period" k="82" />
+<hkern g1="Oacute" g2="A" k="41" />
+<hkern g1="Oacute" g2="T" k="61" />
+<hkern g1="Oacute" g2="V" k="20" />
+<hkern g1="Oacute" g2="W" k="20" />
+<hkern g1="Oacute" g2="X" k="41" />
+<hkern g1="Oacute" g2="Y" k="20" />
+<hkern g1="Oacute" g2="Z" k="20" />
+<hkern g1="Oacute" g2="Agrave" k="41" />
+<hkern g1="Oacute" g2="Aacute" k="41" />
+<hkern g1="Oacute" g2="Acircumflex" k="41" />
+<hkern g1="Oacute" g2="Atilde" k="41" />
+<hkern g1="Oacute" g2="Adieresis" k="41" />
+<hkern g1="Oacute" g2="Aring" k="41" />
+<hkern g1="Oacute" g2="Yacute" k="20" />
+<hkern g1="Oacute" g2="quotesinglbase" k="82" />
+<hkern g1="Oacute" g2="quotedblbase" k="82" />
+<hkern g1="Ocircumflex" g2="comma" k="82" />
+<hkern g1="Ocircumflex" g2="period" k="82" />
+<hkern g1="Ocircumflex" g2="A" k="41" />
+<hkern g1="Ocircumflex" g2="T" k="61" />
+<hkern g1="Ocircumflex" g2="V" k="20" />
+<hkern g1="Ocircumflex" g2="W" k="20" />
+<hkern g1="Ocircumflex" g2="X" k="41" />
+<hkern g1="Ocircumflex" g2="Y" k="20" />
+<hkern g1="Ocircumflex" g2="Z" k="20" />
+<hkern g1="Ocircumflex" g2="Agrave" k="41" />
+<hkern g1="Ocircumflex" g2="Aacute" k="41" />
+<hkern g1="Ocircumflex" g2="Acircumflex" k="41" />
+<hkern g1="Ocircumflex" g2="Atilde" k="41" />
+<hkern g1="Ocircumflex" g2="Adieresis" k="41" />
+<hkern g1="Ocircumflex" g2="Aring" k="41" />
+<hkern g1="Ocircumflex" g2="Yacute" k="20" />
+<hkern g1="Ocircumflex" g2="quotesinglbase" k="82" />
+<hkern g1="Ocircumflex" g2="quotedblbase" k="82" />
+<hkern g1="Otilde" g2="comma" k="82" />
+<hkern g1="Otilde" g2="period" k="82" />
+<hkern g1="Otilde" g2="A" k="41" />
+<hkern g1="Otilde" g2="T" k="61" />
+<hkern g1="Otilde" g2="V" k="20" />
+<hkern g1="Otilde" g2="W" k="20" />
+<hkern g1="Otilde" g2="X" k="41" />
+<hkern g1="Otilde" g2="Y" k="20" />
+<hkern g1="Otilde" g2="Z" k="20" />
+<hkern g1="Otilde" g2="Agrave" k="41" />
+<hkern g1="Otilde" g2="Aacute" k="41" />
+<hkern g1="Otilde" g2="Acircumflex" k="41" />
+<hkern g1="Otilde" g2="Atilde" k="41" />
+<hkern g1="Otilde" g2="Adieresis" k="41" />
+<hkern g1="Otilde" g2="Aring" k="41" />
+<hkern g1="Otilde" g2="Yacute" k="20" />
+<hkern g1="Otilde" g2="quotesinglbase" k="82" />
+<hkern g1="Otilde" g2="quotedblbase" k="82" />
+<hkern g1="Odieresis" g2="comma" k="82" />
+<hkern g1="Odieresis" g2="period" k="82" />
+<hkern g1="Odieresis" g2="A" k="41" />
+<hkern g1="Odieresis" g2="T" k="61" />
+<hkern g1="Odieresis" g2="V" k="20" />
+<hkern g1="Odieresis" g2="W" k="20" />
+<hkern g1="Odieresis" g2="X" k="41" />
+<hkern g1="Odieresis" g2="Y" k="20" />
+<hkern g1="Odieresis" g2="Z" k="20" />
+<hkern g1="Odieresis" g2="Agrave" k="41" />
+<hkern g1="Odieresis" g2="Aacute" k="41" />
+<hkern g1="Odieresis" g2="Acircumflex" k="41" />
+<hkern g1="Odieresis" g2="Atilde" k="41" />
+<hkern g1="Odieresis" g2="Adieresis" k="41" />
+<hkern g1="Odieresis" g2="Aring" k="41" />
+<hkern g1="Odieresis" g2="Yacute" k="20" />
+<hkern g1="Odieresis" g2="quotesinglbase" k="82" />
+<hkern g1="Odieresis" g2="quotedblbase" k="82" />
+<hkern g1="Oslash" g2="comma" k="82" />
+<hkern g1="Oslash" g2="period" k="82" />
+<hkern g1="Oslash" g2="A" k="41" />
+<hkern g1="Oslash" g2="T" k="61" />
+<hkern g1="Oslash" g2="V" k="20" />
+<hkern g1="Oslash" g2="W" k="20" />
+<hkern g1="Oslash" g2="X" k="41" />
+<hkern g1="Oslash" g2="Y" k="20" />
+<hkern g1="Oslash" g2="Z" k="20" />
+<hkern g1="Oslash" g2="Agrave" k="41" />
+<hkern g1="Oslash" g2="Aacute" k="41" />
+<hkern g1="Oslash" g2="Acircumflex" k="41" />
+<hkern g1="Oslash" g2="Atilde" k="41" />
+<hkern g1="Oslash" g2="Adieresis" k="41" />
+<hkern g1="Oslash" g2="Aring" k="41" />
+<hkern g1="Oslash" g2="Yacute" k="20" />
+<hkern g1="Oslash" g2="quotesinglbase" k="82" />
+<hkern g1="Oslash" g2="quotedblbase" k="82" />
+<hkern g1="Ugrave" g2="comma" k="41" />
+<hkern g1="Ugrave" g2="period" k="41" />
+<hkern g1="Ugrave" g2="A" k="20" />
+<hkern g1="Ugrave" g2="Agrave" k="20" />
+<hkern g1="Ugrave" g2="Aacute" k="20" />
+<hkern g1="Ugrave" g2="Acircumflex" k="20" />
+<hkern g1="Ugrave" g2="Atilde" k="20" />
+<hkern g1="Ugrave" g2="Adieresis" k="20" />
+<hkern g1="Ugrave" g2="Aring" k="20" />
+<hkern g1="Ugrave" g2="quotesinglbase" k="41" />
+<hkern g1="Ugrave" g2="quotedblbase" k="41" />
+<hkern g1="Uacute" g2="comma" k="41" />
+<hkern g1="Uacute" g2="period" k="41" />
+<hkern g1="Uacute" g2="A" k="20" />
+<hkern g1="Uacute" g2="Agrave" k="20" />
+<hkern g1="Uacute" g2="Aacute" k="20" />
+<hkern g1="Uacute" g2="Acircumflex" k="20" />
+<hkern g1="Uacute" g2="Atilde" k="20" />
+<hkern g1="Uacute" g2="Adieresis" k="20" />
+<hkern g1="Uacute" g2="Aring" k="20" />
+<hkern g1="Uacute" g2="quotesinglbase" k="41" />
+<hkern g1="Uacute" g2="quotedblbase" k="41" />
+<hkern g1="Ucircumflex" g2="comma" k="41" />
+<hkern g1="Ucircumflex" g2="period" k="41" />
+<hkern g1="Ucircumflex" g2="A" k="20" />
+<hkern g1="Ucircumflex" g2="Agrave" k="20" />
+<hkern g1="Ucircumflex" g2="Aacute" k="20" />
+<hkern g1="Ucircumflex" g2="Acircumflex" k="20" />
+<hkern g1="Ucircumflex" g2="Atilde" k="20" />
+<hkern g1="Ucircumflex" g2="Adieresis" k="20" />
+<hkern g1="Ucircumflex" g2="Aring" k="20" />
+<hkern g1="Ucircumflex" g2="quotesinglbase" k="41" />
+<hkern g1="Ucircumflex" g2="quotedblbase" k="41" />
+<hkern g1="Udieresis" g2="comma" k="41" />
+<hkern g1="Udieresis" g2="period" k="41" />
+<hkern g1="Udieresis" g2="A" k="20" />
+<hkern g1="Udieresis" g2="Agrave" k="20" />
+<hkern g1="Udieresis" g2="Aacute" k="20" />
+<hkern g1="Udieresis" g2="Acircumflex" k="20" />
+<hkern g1="Udieresis" g2="Atilde" k="20" />
+<hkern g1="Udieresis" g2="Adieresis" k="20" />
+<hkern g1="Udieresis" g2="Aring" k="20" />
+<hkern g1="Udieresis" g2="quotesinglbase" k="41" />
+<hkern g1="Udieresis" g2="quotedblbase" k="41" />
+<hkern g1="Yacute" g2="comma" k="123" />
+<hkern g1="Yacute" g2="period" k="123" />
+<hkern g1="Yacute" g2="question" k="-41" />
+<hkern g1="Yacute" g2="A" k="123" />
+<hkern g1="Yacute" g2="C" k="41" />
+<hkern g1="Yacute" g2="G" k="41" />
+<hkern g1="Yacute" g2="O" k="41" />
+<hkern g1="Yacute" g2="Q" k="41" />
+<hkern g1="Yacute" g2="a" k="102" />
+<hkern g1="Yacute" g2="c" k="102" />
+<hkern g1="Yacute" g2="d" k="102" />
+<hkern g1="Yacute" g2="e" k="102" />
+<hkern g1="Yacute" g2="g" k="41" />
+<hkern g1="Yacute" g2="m" k="61" />
+<hkern g1="Yacute" g2="n" k="61" />
+<hkern g1="Yacute" g2="o" k="102" />
+<hkern g1="Yacute" g2="p" k="61" />
+<hkern g1="Yacute" g2="q" k="102" />
+<hkern g1="Yacute" g2="r" k="61" />
+<hkern g1="Yacute" g2="s" k="82" />
+<hkern g1="Yacute" g2="u" k="61" />
+<hkern g1="Yacute" g2="z" k="41" />
+<hkern g1="Yacute" g2="Agrave" k="123" />
+<hkern g1="Yacute" g2="Aacute" k="123" />
+<hkern g1="Yacute" g2="Acircumflex" k="123" />
+<hkern g1="Yacute" g2="Atilde" k="123" />
+<hkern g1="Yacute" g2="Adieresis" k="123" />
+<hkern g1="Yacute" g2="Aring" k="123" />
+<hkern g1="Yacute" g2="Ccedilla" k="41" />
+<hkern g1="Yacute" g2="Ograve" k="41" />
+<hkern g1="Yacute" g2="Oacute" k="41" />
+<hkern g1="Yacute" g2="Ocircumflex" k="41" />
+<hkern g1="Yacute" g2="Otilde" k="41" />
+<hkern g1="Yacute" g2="Odieresis" k="41" />
+<hkern g1="Yacute" g2="Oslash" k="41" />
+<hkern g1="Yacute" g2="agrave" k="102" />
+<hkern g1="Yacute" g2="aacute" k="102" />
+<hkern g1="Yacute" g2="acircumflex" k="102" />
+<hkern g1="Yacute" g2="atilde" k="102" />
+<hkern g1="Yacute" g2="adieresis" k="102" />
+<hkern g1="Yacute" g2="aring" k="102" />
+<hkern g1="Yacute" g2="ae" k="102" />
+<hkern g1="Yacute" g2="ccedilla" k="102" />
+<hkern g1="Yacute" g2="egrave" k="102" />
+<hkern g1="Yacute" g2="eacute" k="102" />
+<hkern g1="Yacute" g2="ecircumflex" k="102" />
+<hkern g1="Yacute" g2="edieresis" k="102" />
+<hkern g1="Yacute" g2="ograve" k="102" />
+<hkern g1="Yacute" g2="oacute" k="102" />
+<hkern g1="Yacute" g2="ocircumflex" k="102" />
+<hkern g1="Yacute" g2="otilde" k="102" />
+<hkern g1="Yacute" g2="odieresis" k="102" />
+<hkern g1="Yacute" g2="oslash" k="102" />
+<hkern g1="Yacute" g2="ugrave" k="61" />
+<hkern g1="Yacute" g2="uacute" k="61" />
+<hkern g1="Yacute" g2="ucircumflex" k="61" />
+<hkern g1="Yacute" g2="udieresis" k="61" />
+<hkern g1="Yacute" g2="OE" k="41" />
+<hkern g1="Yacute" g2="oe" k="102" />
+<hkern g1="Yacute" g2="quotesinglbase" k="123" />
+<hkern g1="Yacute" g2="quotedblbase" k="123" />
+<hkern g1="Thorn" g2="comma" k="266" />
+<hkern g1="Thorn" g2="period" k="266" />
+<hkern g1="Thorn" g2="A" k="102" />
+<hkern g1="Thorn" g2="X" k="41" />
+<hkern g1="Thorn" g2="Z" k="20" />
+<hkern g1="Thorn" g2="Agrave" k="102" />
+<hkern g1="Thorn" g2="Aacute" k="102" />
+<hkern g1="Thorn" g2="Acircumflex" k="102" />
+<hkern g1="Thorn" g2="Atilde" k="102" />
+<hkern g1="Thorn" g2="Adieresis" k="102" />
+<hkern g1="Thorn" g2="Aring" k="102" />
+<hkern g1="Thorn" g2="quotesinglbase" k="266" />
+<hkern g1="Thorn" g2="quotedblbase" k="266" />
+<hkern g1="agrave" g2="quotedbl" k="20" />
+<hkern g1="agrave" g2="quotesingle" k="20" />
+<hkern g1="agrave" g2="quoteright" k="20" />
+<hkern g1="agrave" g2="quotedblright" k="20" />
+<hkern g1="aacute" g2="quotedbl" k="20" />
+<hkern g1="aacute" g2="quotesingle" k="20" />
+<hkern g1="aacute" g2="quoteright" k="20" />
+<hkern g1="aacute" g2="quotedblright" k="20" />
+<hkern g1="acircumflex" g2="quotedbl" k="20" />
+<hkern g1="acircumflex" g2="quotesingle" k="20" />
+<hkern g1="acircumflex" g2="quoteright" k="20" />
+<hkern g1="acircumflex" g2="quotedblright" k="20" />
+<hkern g1="atilde" g2="quotedbl" k="20" />
+<hkern g1="atilde" g2="quotesingle" k="20" />
+<hkern g1="atilde" g2="quoteright" k="20" />
+<hkern g1="atilde" g2="quotedblright" k="20" />
+<hkern g1="adieresis" g2="quotedbl" k="20" />
+<hkern g1="adieresis" g2="quotesingle" k="20" />
+<hkern g1="adieresis" g2="quoteright" k="20" />
+<hkern g1="adieresis" g2="quotedblright" k="20" />
+<hkern g1="aring" g2="quotedbl" k="20" />
+<hkern g1="aring" g2="quotesingle" k="20" />
+<hkern g1="aring" g2="quoteright" k="20" />
+<hkern g1="aring" g2="quotedblright" k="20" />
+<hkern g1="egrave" g2="quotedbl" k="20" />
+<hkern g1="egrave" g2="quotesingle" k="20" />
+<hkern g1="egrave" g2="v" k="41" />
+<hkern g1="egrave" g2="w" k="41" />
+<hkern g1="egrave" g2="x" k="41" />
+<hkern g1="egrave" g2="y" k="41" />
+<hkern g1="egrave" g2="z" k="20" />
+<hkern g1="egrave" g2="yacute" k="41" />
+<hkern g1="egrave" g2="quoteright" k="20" />
+<hkern g1="egrave" g2="quotedblright" k="20" />
+<hkern g1="eacute" g2="quotedbl" k="20" />
+<hkern g1="eacute" g2="quotesingle" k="20" />
+<hkern g1="eacute" g2="v" k="41" />
+<hkern g1="eacute" g2="w" k="41" />
+<hkern g1="eacute" g2="x" k="41" />
+<hkern g1="eacute" g2="y" k="41" />
+<hkern g1="eacute" g2="z" k="20" />
+<hkern g1="eacute" g2="yacute" k="41" />
+<hkern g1="eacute" g2="quoteright" k="20" />
+<hkern g1="eacute" g2="quotedblright" k="20" />
+<hkern g1="ecircumflex" g2="quotedbl" k="20" />
+<hkern g1="ecircumflex" g2="quotesingle" k="20" />
+<hkern g1="ecircumflex" g2="v" k="41" />
+<hkern g1="ecircumflex" g2="w" k="41" />
+<hkern g1="ecircumflex" g2="x" k="41" />
+<hkern g1="ecircumflex" g2="y" k="41" />
+<hkern g1="ecircumflex" g2="z" k="20" />
+<hkern g1="ecircumflex" g2="yacute" k="41" />
+<hkern g1="ecircumflex" g2="quoteright" k="20" />
+<hkern g1="ecircumflex" g2="quotedblright" k="20" />
+<hkern g1="edieresis" g2="quotedbl" k="20" />
+<hkern g1="edieresis" g2="quotesingle" k="20" />
+<hkern g1="edieresis" g2="v" k="41" />
+<hkern g1="edieresis" g2="w" k="41" />
+<hkern g1="edieresis" g2="x" k="41" />
+<hkern g1="edieresis" g2="y" k="41" />
+<hkern g1="edieresis" g2="z" k="20" />
+<hkern g1="edieresis" g2="yacute" k="41" />
+<hkern g1="edieresis" g2="quoteright" k="20" />
+<hkern g1="edieresis" g2="quotedblright" k="20" />
+<hkern g1="eth" g2="quotedbl" k="20" />
+<hkern g1="eth" g2="quotesingle" k="20" />
+<hkern g1="eth" g2="v" k="41" />
+<hkern g1="eth" g2="w" k="41" />
+<hkern g1="eth" g2="x" k="41" />
+<hkern g1="eth" g2="y" k="41" />
+<hkern g1="eth" g2="z" k="20" />
+<hkern g1="eth" g2="yacute" k="41" />
+<hkern g1="eth" g2="quoteright" k="20" />
+<hkern g1="eth" g2="quotedblright" k="20" />
+<hkern g1="ograve" g2="quotedbl" k="20" />
+<hkern g1="ograve" g2="quotesingle" k="20" />
+<hkern g1="ograve" g2="v" k="41" />
+<hkern g1="ograve" g2="w" k="41" />
+<hkern g1="ograve" g2="x" k="41" />
+<hkern g1="ograve" g2="y" k="41" />
+<hkern g1="ograve" g2="z" k="20" />
+<hkern g1="ograve" g2="yacute" k="41" />
+<hkern g1="ograve" g2="quoteright" k="20" />
+<hkern g1="ograve" g2="quotedblright" k="20" />
+<hkern g1="oacute" g2="quotedbl" k="20" />
+<hkern g1="oacute" g2="quotesingle" k="20" />
+<hkern g1="oacute" g2="v" k="41" />
+<hkern g1="oacute" g2="w" k="41" />
+<hkern g1="oacute" g2="x" k="41" />
+<hkern g1="oacute" g2="y" k="41" />
+<hkern g1="oacute" g2="z" k="20" />
+<hkern g1="oacute" g2="yacute" k="41" />
+<hkern g1="oacute" g2="quoteright" k="20" />
+<hkern g1="oacute" g2="quotedblright" k="20" />
+<hkern g1="ocircumflex" g2="quotedbl" k="20" />
+<hkern g1="ocircumflex" g2="quotesingle" k="20" />
+<hkern g1="ocircumflex" g2="v" k="41" />
+<hkern g1="ocircumflex" g2="w" k="41" />
+<hkern g1="ocircumflex" g2="x" k="41" />
+<hkern g1="ocircumflex" g2="y" k="41" />
+<hkern g1="ocircumflex" g2="z" k="20" />
+<hkern g1="ocircumflex" g2="yacute" k="41" />
+<hkern g1="ocircumflex" g2="quoteright" k="20" />
+<hkern g1="ocircumflex" g2="quotedblright" k="20" />
+<hkern g1="odieresis" g2="quotedbl" k="41" />
+<hkern g1="odieresis" g2="quotesingle" k="41" />
+<hkern g1="odieresis" g2="quoteright" k="41" />
+<hkern g1="odieresis" g2="quotedblright" k="41" />
+<hkern g1="oslash" g2="quotedbl" k="20" />
+<hkern g1="oslash" g2="quotesingle" k="20" />
+<hkern g1="oslash" g2="v" k="41" />
+<hkern g1="oslash" g2="w" k="41" />
+<hkern g1="oslash" g2="x" k="41" />
+<hkern g1="oslash" g2="y" k="41" />
+<hkern g1="oslash" g2="z" k="20" />
+<hkern g1="oslash" g2="yacute" k="41" />
+<hkern g1="oslash" g2="quoteright" k="20" />
+<hkern g1="oslash" g2="quotedblright" k="20" />
+<hkern g1="yacute" g2="quotedbl" k="-82" />
+<hkern g1="yacute" g2="quotesingle" k="-82" />
+<hkern g1="yacute" g2="comma" k="82" />
+<hkern g1="yacute" g2="period" k="82" />
+<hkern g1="yacute" g2="question" k="-41" />
+<hkern g1="yacute" g2="quoteright" k="-82" />
+<hkern g1="yacute" g2="quotesinglbase" k="82" />
+<hkern g1="yacute" g2="quotedblright" k="-82" />
+<hkern g1="yacute" g2="quotedblbase" k="82" />
+<hkern g1="thorn" g2="quotedbl" k="20" />
+<hkern g1="thorn" g2="quotesingle" k="20" />
+<hkern g1="thorn" g2="v" k="41" />
+<hkern g1="thorn" g2="w" k="41" />
+<hkern g1="thorn" g2="x" k="41" />
+<hkern g1="thorn" g2="y" k="41" />
+<hkern g1="thorn" g2="z" k="20" />
+<hkern g1="thorn" g2="yacute" k="41" />
+<hkern g1="thorn" g2="quoteright" k="20" />
+<hkern g1="thorn" g2="quotedblright" k="20" />
+<hkern g1="ydieresis" g2="quotedbl" k="-82" />
+<hkern g1="ydieresis" g2="quotesingle" k="-82" />
+<hkern g1="ydieresis" g2="comma" k="82" />
+<hkern g1="ydieresis" g2="period" k="82" />
+<hkern g1="ydieresis" g2="question" k="-41" />
+<hkern g1="ydieresis" g2="quoteright" k="-82" />
+<hkern g1="ydieresis" g2="quotesinglbase" k="82" />
+<hkern g1="ydieresis" g2="quotedblright" k="-82" />
+<hkern g1="ydieresis" g2="quotedblbase" k="82" />
+<hkern g1="OE" g2="J" k="-123" />
+</font>
+</defs>
+</svg>
diff --git a/_site/font/Open-Sans-regular/Open-Sans-regular.ttf b/_site/font/Open-Sans-regular/Open-Sans-regular.ttf
new file mode 100644 (file)
index 0000000..0dae9c3
Binary files /dev/null and b/_site/font/Open-Sans-regular/Open-Sans-regular.ttf differ
diff --git a/_site/font/Open-Sans-regular/Open-Sans-regular.woff b/_site/font/Open-Sans-regular/Open-Sans-regular.woff
new file mode 100644 (file)
index 0000000..ac2b2c6
Binary files /dev/null and b/_site/font/Open-Sans-regular/Open-Sans-regular.woff differ
diff --git a/_site/font/Open-Sans-regular/Open-Sans-regular.woff2 b/_site/font/Open-Sans-regular/Open-Sans-regular.woff2
new file mode 100644 (file)
index 0000000..402dfd7
Binary files /dev/null and b/_site/font/Open-Sans-regular/Open-Sans-regular.woff2 differ
diff --git a/_site/font/fontello.eot b/_site/font/fontello.eot
new file mode 100644 (file)
index 0000000..0281033
Binary files /dev/null and b/_site/font/fontello.eot differ
diff --git a/_site/font/fontello.svg b/_site/font/fontello.svg
new file mode 100644 (file)
index 0000000..31aac6a
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Copyright (C) 2016 by original authors @ fontello.com</metadata>
+<defs>
+<font id="fontello" horiz-adv-x="1000" >
+<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
+<missing-glyph horiz-adv-x="1000" />
+<glyph glyph-name="rss" unicode="&#xf09e;" d="M214 100q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m286-69q1-15-9-26-11-12-27-12h-75q-14 0-24 9t-11 23q-12 128-103 219t-219 103q-14 1-23 11t-9 24v75q0 16 12 26 9 10 24 10h3q89-7 170-45t145-101q63-63 101-145t45-171z m286-1q1-15-10-26-10-11-26-11h-80q-14 0-25 10t-11 23q-6 120-56 228t-129 188-188 129-227 57q-14 0-24 11t-10 24v80q0 15 11 26 10 10 25 10h1q147-8 280-67t238-164q104-104 164-238t67-280z" horiz-adv-x="785.7" />
+</font>
+</defs>
+</svg>
\ No newline at end of file
diff --git a/_site/font/fontello.ttf b/_site/font/fontello.ttf
new file mode 100644 (file)
index 0000000..c956126
Binary files /dev/null and b/_site/font/fontello.ttf differ
diff --git a/_site/font/fontello.woff b/_site/font/fontello.woff
new file mode 100644 (file)
index 0000000..595a730
Binary files /dev/null and b/_site/font/fontello.woff differ
diff --git a/_site/font/fontello.woff2 b/_site/font/fontello.woff2
new file mode 100644 (file)
index 0000000..c734698
Binary files /dev/null and b/_site/font/fontello.woff2 differ
diff --git a/_site/git b/_site/git
new file mode 120000 (symlink)
index 0000000..4dcd84e
--- /dev/null
+++ b/_site/git
@@ -0,0 +1 @@
+/a/bin/githtml/
\ No newline at end of file
diff --git a/_site/gitweb-footer.html b/_site/gitweb-footer.html
new file mode 100644 (file)
index 0000000..a78e415
--- /dev/null
@@ -0,0 +1,372 @@
+<script>
+/*
+<![CDATA[
+
+@licstart  The following is the entire license notice for the
+JavaScript code in this page, GPLv2 or later.
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software-to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  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
+this service 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 make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  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.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+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
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the 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 a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE 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.
+
+                     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
+convey 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 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision 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, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items-whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This 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.
+@licend  The above is the entire license notice
+for the JavaScript code in this page.
+    ]]>
+*/
+</script>
+<script>
+// modify the dom to wrap everything between the header and footer
+// in 2 divs so we can style it like the rest of the site.
+// We could have modified /usr/share/gitweb/gitweb.cgi,
+// but I'd rather not deal with maintaining that patch.
+var outer = document.createElement('div');
+outer.className = 'main-content-stripe';
+var inner = document.createElement('div');
+inner.className = 'content';
+outer.appendChild(inner);
+
+var header = document.getElementsByClassName('page_header')[0];
+var next = header.nextElementSibling;
+var new_next;
+while(next.className != 'page_footer') {
+    new_next = next.nextElementSibling;
+    inner.appendChild(next);
+    next = new_next;
+}
+header.parentNode.insertBefore(outer, header.nextElementSibling);
+</script>
diff --git a/_site/gitweb-site.css b/_site/gitweb-site.css
new file mode 100644 (file)
index 0000000..54bb033
--- /dev/null
@@ -0,0 +1,59 @@
+
+.main-content-stripe {
+    /* i don't like bright white. copy a gitweb color */
+    background-color: #f6f6f0;
+    padding: 30px 0;
+}
+
+/* copied from main.css, applied here */
+body {
+    border-width: 0px;
+}
+.page_header,.page_footer {
+    margin: 0 auto;
+    max-width: 700px;
+}
+
+table.project_list {
+    /* The main project list just has this one uncentered element,*/
+    /* so center it */
+    margin: 0 auto;
+}
+.content {
+    /* summary pages etc. don't fit nicely in 700px, so just*/
+    /* have a 20px margin. */
+    margin: 0 20px;
+}
+
+div.page_header {
+    /* 21.0667 seems to be default for h3 in the non-gitweb site, copy it here */
+    margin-top: 21.0667px;
+    margin-bottom: 21.0667px;
+    /* remove padding added by gitweb's css */
+    padding: 0;
+}
+
+/* I tried to find all the css to override,*/
+/* but found certain things not overriding as I would expect,*/
+/* So hammer it with !important */
+a {
+    color: #0645ad !important;
+    text-decoration: none;
+}
+a:hover {
+    text-decoration: underline !important;
+}
+
+a:visited {
+    color: #0b0080 !important;
+}
+
+
+.page_header, .page_header a:visited, .page_header a {
+    /* copy from h settings in main.css */
+    line-height: 1.2;
+    /* copy of the h3 size in main site. */
+    font-size: 21.0667px;
+    /* same as for main.css */
+    color: #333333 !important;
+}
diff --git a/_site/ian-kelling-pubkey.asc b/_site/ian-kelling-pubkey.asc
new file mode 100644 (file)
index 0000000..9de9367
--- /dev/null
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQINBFMIBFIBEADDMlt1Dn+SzondO+sJSCCOoo0H5svvkQE1PuOjpNx8YDEU3aVB
+0VpZMGAU/2Q3B6MUM6p+2+Jw/WlPDYsFNOw8MkRbvNJOVzLaSuDIjpWCezHl/8MH
+Wq6CULlQGQR1+Z2MB4EU3PCOFR/IJi/TB1iLf7y0x/laAFYzxSjx8NrSTCVWGms0
+E/9lOyIxi+RQxakCduyJwIKvJokL0zjdpOF6QYagGpGi6ngmCkbgHdioTiRmJcB0
+ObEpDrGYX2dXNexAqeE3UxCEQF9gNHSmZzI7Ko6aNpbz7NXQug4OOPfrCIJ3v6sy
+yQmGckp0kCEifj64Hy5V/y6/q01/rZwraD8vzxT8zHfcFj61O6ZZIXiPjxVBsff/
+pnR6xKXRhOoXOjiqA+4iyrsUBjp5nF3qzPRrrMkRHUnm3d6dm2ug2LNBCSd7dQ9X
+7fi6/qD8sjtQZDVoyJFizLBgKF0y8Bst5wqmX9XWhlXja+64ZcM29/DtyUpvwxHG
+0o7di/aM4jExmicwEa0ucSmoryGbfQqan8NmQIUdIcw7Mre5CoAzgJpkPDxwI5lf
+JznPYUfyS5PS/07oNcDPrTIEMgsyySq/oNlRxlqppBsPHnmlIrDX5gm8gmt4vSWl
+4jM4PczyVdUf3/JDxHbTBPGU8kvXJrP9/DSEPmP+xAcmlVHR2LRJgPLA5wARAQAB
+tCdJYW4gQW5kcmV3IEtlbGxpbmcgPGlhbkBpYW5rZWxsaW5nLm9yZz6JAj0EEwEK
+ACcFAlMIBFICGwMFCQHhM4AFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQqszC
+QOlpxnsoNxAAs0A4z7h5KeF4ieVqlWtC5iwgtRv+UbT7uSkI0eg2LOrNSvkYnzmr
+MtBMcYurcxCbVp2Jak6tkOYrAGGkyJ6/4UpLTeaWSMy11bVqi3ipAWsNHMmqmzDI
+r8TIhpj7JhdDkaQGboplsJkDIeKn6uP8k98n1rha5PVu3QzDGou2cTikeaQG26rE
+Fgn6zM8FlMQF6D4cQBh9TZJN7mz0QhINwCULEaDYpbWcoicY77aWx8yelnFlF9Hc
+57G+uRE55pGoioLQ72UCIQbhSQ3KxYSxvDTpB4BbPqf49rvkVnsCZhZhOfAoK6wk
+pGs7iwQi+91GLBYztrJNLCs4bP5XA0fRaw5Ds7fYUSHWfRwCHuF19m+KsgMnXwdO
+cENsh6ykaWizxs8sRYdkg4lVi0dDctgPlFI97HSlyKKuDYrNIO2SHsrmiahWyV4D
+LF5ApCp0xJBcdjG1Xe8DiRE18Bb8GlenVSE784dRSBJlJAbSWC1tXbcRFQgkVup1
+vIrEHJRGvlp3fnbsVl1/Nx9mLih2fpuLcC8XJ27CaY4NKyspxdH+KEfDgUotQkrE
+p3YX4eh/OFiFc1+UkhF9cjmC0G154y8I1odZ31FG3FCoT8p2CL2Jvjq4f5NZ1Mwg
+4wl2zTdmoZIeDHUoQJ/TL3+DDIeshMT/G4FFC3/LJrMfv81dw/+tllO5Ag0EUwgE
+UgEQAPE276bWBpTEs7iOFDD3/pl+dYAKGIS8B8oOcdugPp8r1LWibcw5+yaAvcMB
+sM0AmPAeVqrNDaj+pH0q0SrGr8B+wqeQ+ror3vWXA5xwuoXm3s8KjKp4+gOgXQp3
+ALY7/Rp9Iq2o1HkpF6lalXjV4aK1I71crmHpLvC4On+gIeDZUfXNBlaN7yX79eof
+z+6y4/YZd4GIfbBoLHkmVcxK+BeL1z+sfxj2w1HxrZ1UVHtRdZrmlEiD+JkVbLtj
+38ecRNsNTIv2jCoRUoYLUKtF5izvmtcBrB58ADDlp84UqM0W+D1xTPETXWG78hlt
+8byV5ljKa2vSbBmNf/C1JVlrOBEeVg0oaf2X41CGc4u3haAhMDq+UnXc1nTso5sy
+Z9F7j0ZS25mw68LFGFDRZ1fxhU3PSS4DhY9jYgwJBEpoqIdsQ719bGlIrlc/bwLa
+ZiWv4WbwOn/9pJtJfYqkJ+fI0LHcjTRXGCwEQTFNLuYwYE7zjXoRiBF/See/PYQj
+Ck/UkmCows3JecwXnPzTD+mdSD9lhCqvc7QmBWl3epQ6SrP2qwBNKOzDJdWIaiz1
+UBgKUr10NQW85PqOAjUAeyvaG4Khaa5X8J7x5xwlGMJMHBqAelOOXniTjKtyjoz5
+/p1hDDwezrH0YdRt19LldQOGhYXtoKKZ3zSMaXZL5riThp+TABEBAAGJAiUEGAEK
+AA8FAlMIBFICGwwFCQHhM4AACgkQqszCQOlpxnvGfhAAqorlVRJtauDvNuOKzrNq
+yexZfRxYbHkwtnRR7DllrrNtC/gyCqwT/mDDgNtdFq6bJPh8l8Fhd0J3EhIkNMrX
+uxHhM8pjJJk1D33OVDuGNeHSsROmmEbnuAiItiIyMn2q6HjjSnT5pzxW3CL7LfSC
+Bl2l/vLSFGG7338P849UDeYLPZpvRXwC3hu2fp8/rNFKHOm2wsCCTg5iyh/S+piU
+rULt2WxkIjGoM9Su3k9sOtPwjMDBPUl8NEn9q38OXjxHPrlSW9o0ByLKXZQMaG63
+nH1wp5IO4NhBxKgXbHLCVCx3h2U4RNc/021wpZygHWhBqpgFjGqEO6wjETkaFRpR
+z3/BDb5/ZFGeFzQOivO99AXaQvgvAvUY2dy4CF61HxWFxFsa54MgzAkzs6W5G3Yu
+B93jwxseun6kLHmvXwkm8HVq6QU7Sf9fhABlfcchbZu6/NUdOE46z1Y7U0bAedC8
+XJhAaPGaprVMGLrudbHGMbNPup0LeJk0RAuhoaG8FCS+bp9SpQvejXdCDIv5ElGB
+SxXXvw+C7U1rSGlwAlxX4SNR5aS3W2oBEyKm8muUA+jv8C9E29Zld4nCnLaw+bp2
+AXr/jB5sZLqUeQAKClLBYMj3a/WLXJPq6+hqUb6pCC3gTqRgUNGWM7gyN4Sq/7ea
+Keuep+WYlseAAiCHwMInu18=
+=TIon
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/_site/main.css b/_site/main.css
new file mode 100644 (file)
index 0000000..42eb841
--- /dev/null
@@ -0,0 +1,446 @@
+#cc-by-sa {
+    /* It sits too high by default. */
+    vertical-align: middle;
+}
+
+#comments {
+    /* add some space at top and bottom of comment section */
+    margin: 50px 0;
+}
+
+
+div.comment {
+    /* whitespace doesn't cut it to differentiate multiple comments,*/
+    /* so use a line */
+    border-top-style: solid;
+    /* some darkish color, black is too striking */
+    border-top-color: #C4C3BC;
+    /* copied from stackoverflow. */
+    border-top-width: 0.716667px;
+
+}
+
+#comment-stripe, #comment-stripe code {
+    /* differentiate comments, don't colorize code */
+    background-color: #EBEAE4;
+}
+
+#comment-section {
+    /* make the top/bottom of comments have more space */
+    padding: 30px 0;
+}
+
+
+#comment-section textarea:focus, #comment-section textarea:active, #comment-section input:hover {
+    /* color textarea when selected, and for submit button,*/
+    /* without 3d effect, we need a different color. */
+    background: #FFFFFF;
+}
+
+#comment-section textarea {
+    /* go with theme, avoid bright white. */
+    background-color: #f6f6f0;
+}
+
+textarea, input {
+    /* default is some 3d border. use a flat border instead. */
+    border: 0;
+    /* by default text input hugs the edges too much */
+    padding: 5px;
+    /* add some space between input and submit button */
+    margin-bottom: 10px;
+}
+
+/* if this is filled out, we can assume it's spam. common tactic. */
+input.misc {
+    display: none;
+}
+
+
+textarea {
+    /* make the comment box be full width */
+    width: 100%;
+}
+
+
+ul {
+    /* i dun like the default bullet points */
+    list-style-type: none;
+}
+
+ul.index {
+    /* for site index lists, bigger font, no indent, more space */
+    font-size: 22px;
+    padding-left: 0;
+    line-height: 2;
+}
+
+body{
+    /* default is too scrunched */
+    line-height: 1.5;
+    /* default too small */
+    font-size: 18px;
+}
+
+
+/* alternative to a <br>. whatever. */
+/* https://stackoverflow.com/questions/7363766/how-to-insert-a-line-break-before-an-element-using-css */
+.comment-date:before { content: '\A'; }
+.comment-date {
+    white-space:pre;
+    /* make it a bit smaller and lighter */
+    color: #555;
+    font-size: 15px;
+}
+
+.post-date {
+    font-size: 15px;
+    margin: 5px 0;
+}
+.post-title {
+    /* default too wide, got from some random blog */
+    letter-spacing: -1px;
+    /* default is too much below where the date is. */
+    margin: 0;
+}
+
+/* make the header links less prominent. */
+header a:visited, header a {
+    /* link color in top navigation is better as some less eye */
+    /* catching color. */
+    color: #333333;
+}
+
+.post-header {
+    margin-bottom: 30px;
+}
+
+
+h1,h2,h3{
+    line-height: 1.2;
+}
+.main-content-stripe {
+    /* i don't like bright white. copy a gitweb color */
+    background-color: #f6f6f0;
+    padding: 30px 0;
+}
+footer {
+    padding: 30px 0;
+}
+footer p {
+    margin: 0;
+}
+header,footer,.content,#comment-section {
+    /* top margin 0, left/right = auto, which centers it */
+    margin: 0 auto;
+    /* default too wide */
+    max-width: 700px;
+}
+footer {
+    font-size: 15px;
+}
+
+code {
+    background-color: #fff;
+    /* defaults are squished next to the borders of the color change */
+    padding: 1px 5px;
+}
+
+code, pre {
+    /* mono text is wider, so use smaller font to compensate */
+    font-size: 15px;
+}
+
+pre {
+    /* defaults are squished next to the borders of the color change */
+    padding: 6px 8px;
+}
+
+
+/* taken from wikipedia. purple links get a bit old. */
+a {
+    color: #0645ad;
+    text-decoration: none;
+}
+a:hover {
+    text-decoration: underline;
+}
+a:visited {
+    color: #0b0080;
+}
+
+/* grabbed just the rss icon from font-awesome using fontello.com*/
+/* then extracted just the relevant bits out. I tried using svg,*/
+/* since it is more modern and compatible,*/
+/* but it seems that it would take a bunch of work to change it's*/
+/* color, do underline on hover, and line it up with the rest*/
+/* of the text. */
+@font-face {
+    font-family: 'fontello';
+    src: url('/font/fontello.eot?97936362');
+    src: url('/font/fontello.eot?97936362#iefix') format('embedded-opentype'),
+    url('/font/fontello.woff2?97936362') format('woff2'),
+    url('/font/fontello.woff?97936362') format('woff'),
+    url('/font/fontello.ttf?97936362') format('truetype'),
+    url('/font/fontello.svg?97936362#fontello') format('svg');
+    font-weight: normal;
+    font-style: normal;
+}
+[class^="icon-"]:before, [class*=" icon-"]:before {
+    font-family: "fontello";
+    font-style: normal;
+    font-weight: normal;
+    speak: none;
+
+    display: inline-block;
+    text-decoration: inherit;
+    width: 1em;
+    margin-right: .2em;
+    text-align: center;
+    /* opacity: .8; */
+
+    /* For safety - reset parent styles, that can break glyph codes*/
+    font-variant: normal;
+    text-transform: none;
+
+    /* fix buttons height, for twitter bootstrap */
+    line-height: 1em;
+
+    /* Animation center compensation - margins should be symmetric */
+    /* remove if not needed */
+    margin-left: .2em;
+
+    /* you can be more comfortable with increased icons size */
+    /* font-size: 120%; */
+
+    /* Font smoothing. That was taken from TWBS */
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
+
+    /* Uncomment for 3D effect */
+    /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
+}
+.icon-rss:before { content: '\f09e'; } /* 'ï‚ž' */
+
+
+
+/* from https://jekyllrb.com/docs/templates/#code-snippet-highlighting*/
+/* links to a 6 year old css file supposedly used by github:*/
+/* https://github.com/mojombo/tpw/blob/master/css/syntax.css*/
+/*  googling jekyll source code css, leads*/
+/* https://github.com/jwarby/jekyll-pygments-themes, which seems ok,*/
+/* but I'm curious what the upstream default is. I find rogue has no*/
+/* default. pygments does, so I do that:*/
+/* http://pygments.org/docs/quickstart/*/
+/* fire up python2,*/
+
+/* from pygments.formatters import HtmlFormatter */
+/*  print HtmlFormatter().get_style_defs('.highlight')*/
+
+.highlight .cm {
+    color: #999988;
+    font-style: italic;
+}
+.highlight .cp {
+    color: #999999;
+    font-weight: bold;
+}
+.highlight .c1 {
+    color: #999988;
+    font-style: italic;
+}
+.highlight .cs {
+    color: #999999;
+    font-weight: bold;
+    font-style: italic;
+}
+.highlight .c, .highlight .cd {
+    color: #999988;
+    font-style: italic;
+}
+.highlight .err {
+    color: #a61717;
+    background-color: #e3d2d2;
+}
+.highlight .gd {
+    color: #000000;
+    background-color: #ffdddd;
+}
+.highlight .ge {
+    color: #000000;
+    font-style: italic;
+}
+.highlight .gr {
+    color: #aa0000;
+}
+.highlight .gh {
+    color: #999999;
+}
+.highlight .gi {
+    color: #000000;
+    background-color: #ddffdd;
+}
+.highlight .go {
+    color: #888888;
+}
+.highlight .gp {
+    color: #555555;
+}
+.highlight .gs {
+    font-weight: bold;
+}
+.highlight .gu {
+    color: #aaaaaa;
+}
+.highlight .gt {
+    color: #aa0000;
+}
+.highlight .kc {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .kd {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .kn {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .kp {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .kr {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .kt {
+    color: #445588;
+    font-weight: bold;
+}
+.highlight .k, .highlight .kv {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .mf {
+    color: #009999;
+}
+.highlight .mh {
+    color: #009999;
+}
+.highlight .il {
+    color: #009999;
+}
+.highlight .mi {
+    color: #009999;
+}
+.highlight .mo {
+    color: #009999;
+}
+.highlight .m, .highlight .mb, .highlight .mx {
+    color: #009999;
+}
+.highlight .sb {
+    color: #d14;
+}
+.highlight .sc {
+    color: #d14;
+}
+.highlight .sd {
+    color: #d14;
+}
+.highlight .s2 {
+    color: #d14;
+}
+.highlight .se {
+    color: #d14;
+}
+.highlight .sh {
+    color: #d14;
+}
+.highlight .si {
+    color: #d14;
+}
+.highlight .sx {
+    color: #d14;
+}
+.highlight .sr {
+    color: #009926;
+}
+.highlight .s1 {
+    color: #d14;
+}
+.highlight .ss {
+    color: #990073;
+}
+.highlight .s {
+    color: #d14;
+}
+.highlight .na {
+    color: #008080;
+}
+.highlight .bp {
+    color: #999999;
+}
+.highlight .nb {
+    color: #0086B3;
+}
+.highlight .nc {
+    color: #445588;
+    font-weight: bold;
+}
+.highlight .no {
+    color: #008080;
+}
+.highlight .nd {
+    color: #3c5d5d;
+    font-weight: bold;
+}
+.highlight .ni {
+    color: #800080;
+}
+.highlight .ne {
+    color: #990000;
+    font-weight: bold;
+}
+.highlight .nf {
+    color: #990000;
+    font-weight: bold;
+}
+.highlight .nl {
+    color: #990000;
+    font-weight: bold;
+}
+.highlight .nn {
+    color: #555555;
+}
+.highlight .nt {
+    color: #000080;
+}
+.highlight .vc {
+    color: #008080;
+}
+.highlight .vg {
+    color: #008080;
+}
+.highlight .vi {
+    color: #008080;
+}
+.highlight .nv {
+    color: #008080;
+}
+.highlight .ow {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .o {
+    color: #000000;
+    font-weight: bold;
+}
+.highlight .w {
+    color: #bbbbbb;
+}
+.highlight {
+    background-color: #f8f8f8;
+}
diff --git a/_site/on2vote/on2-vote-detailed-analysis.txt b/_site/on2vote/on2-vote-detailed-analysis.txt
new file mode 100644 (file)
index 0000000..22e8b0e
--- /dev/null
@@ -0,0 +1,177 @@
+Filtered to one vote per word per ip, and removed voters who did not vary their vote.
+median "sounds ok" = 0.310910118711, standard deviation = 0.0494053962862
+
+1st field = "sounds good" to total votes
+2nd field = "sounds good" to "sounds wrong or confusing"
+3rd field = "sounds ok" to total votes.
+4th field = "sound wrong or confusing" to total votes.
+big oh of n squared
+0.65 0.83 0.22 0.13
+oh n squared
+0.55 0.71 0.23 0.22
+big oh n squared
+0.54 0.79 0.31 0.15
+oh of n squared
+0.54 0.71 0.24 0.22
+order n squared
+0.49 0.68 0.27 0.24
+order of n squared
+0.49 0.72 0.32 0.19
+complexity of n squared
+0.47 0.69 0.32 0.21
+quadratic time
+0.45 0.61 0.26 0.29
+big oh complexity of n squared
+0.43 0.62 0.31 0.26
+quadratic run time
+0.41 0.58 0.29 0.30
+computational complexity of n squared
+0.38 0.60 0.36 0.25
+run time of n squared
+0.38 0.53 0.29 0.33
+big oh complexity n squared
+0.36 0.59 0.39 0.25
+quadratic complexity
+0.35 0.54 0.35 0.30
+order of complexity of n squared
+0.35 0.55 0.37 0.28
+quadratic time complexity
+0.34 0.54 0.37 0.29
+time complexity of n squared
+0.31 0.47 0.34 0.35
+quadratic computational complexity
+0.31 0.41 0.26 0.44
+algorithmic complexity of n squared
+0.30 0.48 0.37 0.32
+order of complexity n squared
+0.30 0.48 0.38 0.32
+time complexity n squared
+0.29 0.43 0.33 0.38
+complexity n squared
+0.29 0.45 0.36 0.35
+quadratic growth
+0.29 0.43 0.32 0.39
+quadratic order of complexity
+0.28 0.42 0.33 0.38
+run time n squared
+0.28 0.45 0.37 0.35
+quadratic algorithmic complexity
+0.27 0.42 0.35 0.38
+big oh efficiency of n squared
+0.26 0.41 0.36 0.38
+quadratic growth rate
+0.26 0.40 0.35 0.39
+efficiency of n squared
+0.26 0.35 0.26 0.48
+growth rate of n squared
+0.25 0.38 0.33 0.42
+algorithmic complexity n squared
+0.25 0.41 0.39 0.36
+quadratic big oh
+0.24 0.33 0.26 0.49
+time efficiency of n squared
+0.24 0.35 0.31 0.44
+quadratic big oh complexity
+0.24 0.40 0.39 0.37
+quadratic order
+0.24 0.36 0.34 0.42
+algorithmic efficiency of n squared
+0.24 0.35 0.31 0.45
+asymtotic run time of n squared
+0.24 0.36 0.33 0.43
+growth of n squared
+0.23 0.36 0.35 0.41
+quadratic time growth rate
+0.23 0.31 0.25 0.52
+quadratic asymtotic complexity
+0.23 0.32 0.28 0.49
+big oh efficiency n squared
+0.23 0.33 0.32 0.45
+computational complexity n squared
+0.22 0.36 0.38 0.40
+quadratic efficiency
+0.22 0.31 0.28 0.50
+quadratic algorithmic efficiency
+0.22 0.31 0.28 0.50
+quadratic bound
+0.21 0.30 0.29 0.50
+asymtotic growth of n squared
+0.21 0.28 0.24 0.55
+big oh growth rate n squared
+0.21 0.33 0.35 0.44
+time n squared
+0.21 0.27 0.22 0.57
+quadratic time efficiency
+0.21 0.29 0.28 0.51
+quadratic asymtotic run time
+0.20 0.27 0.25 0.54
+asymtotic run time n squared
+0.20 0.29 0.30 0.50
+growth rate n squared
+0.20 0.31 0.36 0.44
+asymtotic complexity n squared
+0.20 0.28 0.29 0.51
+big oh growth rate of n squared
+0.20 0.29 0.32 0.48
+quadratic asymtotic growth
+0.19 0.25 0.25 0.56
+time of n squared
+0.18 0.26 0.28 0.53
+asymtotic growth rate of n squared
+0.18 0.29 0.36 0.45
+quadratic asymtotic efficiency
+0.18 0.23 0.21 0.61
+algorithmic growth rate of n squared
+0.18 0.24 0.27 0.55
+computational growth rate of n squared
+0.18 0.28 0.38 0.45
+computational efficiency of n squared
+0.18 0.27 0.34 0.48
+quadratic computational efficiency
+0.17 0.22 0.22 0.61
+asymtotic growth n squared
+0.17 0.25 0.32 0.51
+quadratic big oh efficiency
+0.17 0.23 0.27 0.56
+bound of n squared
+0.17 0.28 0.40 0.43
+quadratic big oh growth rate
+0.16 0.23 0.31 0.54
+quadratic algorithmic growth rate
+0.15 0.22 0.30 0.54
+asymtotic bound n squared
+0.15 0.27 0.45 0.40
+computational growth rate n squared
+0.15 0.21 0.31 0.54
+quadratic asymtotic bound
+0.15 0.20 0.28 0.57
+asymtotic complexity of n squared
+0.14 0.20 0.31 0.55
+asymtotic efficiency of n squared
+0.14 0.21 0.33 0.53
+time growth rate of n squared
+0.14 0.19 0.28 0.58
+algorithmic efficiency n squared
+0.14 0.20 0.31 0.56
+efficiency n squared
+0.13 0.18 0.27 0.60
+asymtotic efficiency n squared
+0.13 0.18 0.29 0.58
+time efficiency n squared
+0.12 0.19 0.33 0.54
+algorithmic growth rate n squared
+0.12 0.17 0.28 0.60
+quadratic computational growth rate
+0.12 0.18 0.32 0.56
+growth n squared
+0.11 0.17 0.32 0.57
+quadratic asymtotic growth rate
+0.10 0.15 0.29 0.61
+bound n squared
+0.10 0.15 0.31 0.59
+time growth rate n squared
+0.10 0.13 0.20 0.70
+asymtotic growth rate n squared
+0.09 0.11 0.25 0.66
+computational efficiency n squared
+0.08 0.12 0.33 0.59
diff --git a/_site/on2vote/vote.py b/_site/on2vote/vote.py
new file mode 100644 (file)
index 0000000..bff1b0f
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env python2
+# -*- coding: UTF-8 -*-
+
+import os
+import cgi
+# enable error logging
+import cgitb
+import json
+import socket
+cgitb.enable(display=0, logdir="../../logs")
+
+# https://docs.python.org/2/library/cgi.html
+form = cgi.FieldStorage()
+# parse the form data into a dictionary
+vote = json.loads(form.value)
+
+dir = '/a/www-data/on2votes/' + socket.gethostname()
+if not os.path.exists(dir):
+    os.makedirs(dir)
+
+# ips are semi-pii, so we keep this data saved away, and
+# from time to time, throw away data with too much
+# duplicate ips, then throw away all the ip data.
+vote['ip'] = os.environ['REMOTE_ADDR']
+with open(dir + '/on2votes.log', 'a') as f:
+    json.dump(vote,f)
+    f.write("\n")
+
+# not that it matters, but tell the client we are happy.
+print "Status: 200 OK\n";
+# to read back:
+#!/usr/bin/env python
+# import json
+# with open('../logs/vote.txt', 'r') as f:
+#     for line in f:
+#         print json.loads(line)
diff --git a/_site/on2vote/votes.txt b/_site/on2vote/votes.txt
new file mode 100644 (file)
index 0000000..39a86da
--- /dev/null
@@ -0,0 +1,3 @@
+{"vote": "yes", "ip": "192.168.1.1", "word": "The end."}
+{"vote": "meh", "ip": "192.168.1.1", "word": "growth rate of n squared"}
+{"vote": "meh", "ip": "192.168.1.1", "word": "computational efficiency of n squared"}
diff --git a/_site/robots.txt b/_site/robots.txt
new file mode 100644 (file)
index 0000000..b64f8b8
--- /dev/null
@@ -0,0 +1,2 @@
+User-agent: ia_archiver
+Disallow: /resume.html
diff --git a/b.rb b/b.rb
new file mode 100644 (file)
index 0000000..511ac8d
--- /dev/null
+++ b/b.rb
@@ -0,0 +1,300 @@
+# encoding: utf-8
+# Copyright (C) 2016 Ian Kelling
+
+# 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/>.
+module B # blog module
+  require 'fileutils'
+  require 'time'
+  require 'safe_yaml'
+  require 'pygments'
+  require 'sqlite3'
+  require 'redcarpet'
+  JS_INFO = "<p>All JavaScript has <a href=\"https://www.gnu.org/software/librejs/index.html\">LibreJS</a> support.</p>"
+
+  DAY = 60*60*24
+  DN = 'iankelling'
+  FQDN = DN + '.org'
+  DURL = 'https://' + FQDN
+  DESCRIPTION = "Ian Kelling's personal site and blog on software"
+  DATE_LEN = 'YYYY-MM-DD'.length
+  NOW = Time.now.to_f
+  WAIT_DATE = NOW - 60*60*24*1
+
+  def db_init
+    SQLite3::Database.new('../proposed-comments/comments.sqlite')
+  end
+
+  # from the redcarpet readme, then a bunch of googling to figure
+  # out what to do on exception.
+  class HTMLwithPygments < Redcarpet::Render::HTML
+    def block_code(code, language)
+      begin
+        Pygments.highlight(code, lexer: language)
+      rescue MentosError
+        # when language detection fails
+        Pygments.highlight(code, lexer: 'text')
+      end
+    end
+  end
+
+  def fwrite(output_path, string)
+    FileUtils.mkdir_p(File.dirname(output_path))
+    File.write(output_path, string)
+  end
+
+  def fskel(rel_path, title, content, o={})
+    head = <<EOF
+<link rel="canonical" href="#{DURL}/#{rel_path}">
+EOF
+    if rel_path =~ %r{^blog/.}
+      head += <<EOF
+<link rel="alternate" type="application/atom+xml" title="#{DN}" href="#{DURL}/feed.xml">
+EOF
+    end
+    o[:head] = head
+    fwrite(rel_path, skel(title, content, o))
+  end
+  def skel(title, content, o={})
+    # got meta viewport from jekyll's default later. It's for better
+    # mobile viewing.
+    output = <<EOF
+<!DOCTYPE html>
+<html lang="en-US">
+  <head>
+    <meta charset="utf-8">
+    <title>#{title}</title>
+    <link rel="stylesheet" href="/main.css">
+    <link rel="stylesheet" href="/common.css">
+    <link rel="shortcut icon" href="/assets/favicon.png" />
+    <meta name="description" content="#{o[:description] || DESCRIPTION}">
+#{o[:head]}
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+  </head>
+  <body>
+    <header>
+      <h3><a href="/">iankelling.org</a>#{o[:header]}</h3>
+    </header>
+    <div class="main-content-stripe">
+      <div class="content">
+        #{content}
+      </div>
+    </div>
+    <div id="comment-stripe">
+#{o[:comments]}
+    </div>
+    <footer>
+#{o[:footer]}
+      <p>This site has a <a href="/git/?p=iankelling.org;a=summary">git repo</a>. Code is gpl, content is <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img id="cc-by-sa" alt="Creative Commons License" src="/assets/cc-by-sa-4.0-80x15.png" /></a> unless otherwise noted</p>
+      <p><address><a href="ian@iankelling.org">ian@iankelling.org</a> let me know what you think</address></p>
+    </footer>
+  </body>
+</html>
+EOF
+    output
+  end
+
+  def stdpage(page_name, content)
+    fskel("#{page_name}.html",
+          "#{DN}/#{page_name}",
+          content,
+          header: " / <a href=\"/#{page_name}.html\">#{page_name}</a>")
+  end
+
+  def md_to_html(md)
+    # Using redcarpet over kramdown because syntax highlighting is
+    # simpler. kramdown uses some crap highlighter by default,
+    # supports using rouge, but then the classes are all screwy
+    # for what pygments css expects, rouge has a pygments compatibility mode,
+    # but that is a pita to get working, then it doesn't even work right.
+    # kramdown is jekyll's default markdown parser, but it doesn't use
+    # it for code blocks, it strips them out using custom templating
+    # extension class, then uses rouge, then wraps it in some
+    # custom html for pygments compatibility. It's a complicated mess.
+    Redcarpet::Markdown.new(HTMLwithPygments, fenced_code_blocks: true).render(md)
+  end
+
+  def comment_html(comment, date)
+    inner = Redcarpet::Markdown.new(Redcarpet::Render::HTML, fenced_code_blocks: true).render(<<EOF)
+#{comment}
+<span class="comment-date">#{Time.at(date).strftime("%b %-d '%y")}</span>
+EOF
+    # I tried putting the time,  %I:%M %p UTC, but it looks kinda
+    # clunky, going against my simple theme.
+    <<EOF
+<div class="comment">
+  #{inner}
+</div>
+EOF
+  end
+
+  def post(file, build_time=false)
+    content = File.read(file)
+    content =~ %r{\A(---\s*\n.*?\n?)^((---)\s*$\n?)}m # yaml front matter
+    # stuff after last match. jekyll uses $POSTMATCH,
+    # but it's nil for me, I don't know what magic they are using.,
+    # but only $' is listed here http://ruby-doc.org/core-2.3.1/doc/globals_rdoc.html,
+    content = $'
+
+    front = SafeYAML.load(Regexp.last_match(1))
+    title = front['title']
+    $page_title = "#{title} | #{DN}"
+    header_rel = ' / <a href="/blog.html">blog</a> /'
+
+    footer_extra = <<-EOF
+<p><a class="icon-rss" href="/feed.xml">Subscribe</a></p>
+EOF
+    footer_extra += JS_INFO if content =~ /<script/
+
+
+
+    b = File.basename(file,'.md')
+    # date is in the format: YYYY-MM-DD-
+    date = Time.parse(b[0..DATE_LEN])
+    rel_path = "blog/#{b[(DATE_LEN + 1)..-1]}.html"
+    comments = $db.execute <<-SQL, [WAIT_DATE]
+      select comment, date from c
+      where page = '#{rel_path}' and (
+       state = 'picked' or state = 'known'
+       or (state = 'waiting' and date < ?))
+SQL
+    # get earliest comment. earlier ones stored in git will also be
+    # published. This get's us easily sharable comments, and allows us
+    # to expire unpublished comments and ip addresses which are PII and
+    # should never be kept around indefinitely.
+    sql_start_date = $db.execute('select min(date) from c')[0][0] || NOW
+    comment_file_dir = "../comments/#{rel_path}"
+    old_comments = Dir["#{comment_file_dir}/*"].reduce([]) do |memo, f|
+      dt = File.basename(f).to_f
+      if dt < sql_start_date
+        memo << [File.read(f), dt]
+      else
+        FileUtils.rm(f) if build_time
+        memo
+      end
+    end
+    if build_time
+      FileUtils.mkdir_p comment_file_dir
+      comments.each do |c, c_date|
+        # fyi: there is an extremely small chance of 2 comments having
+        # the same floating point time and thus overwriting each other.
+        # Small enough that it won't happen at my site's scale.
+        File.write(File.join(comment_file_dir, c_date.to_s), c)
+      end
+      # https://piwik.org/docs/privacy/ says keep logs for 3-6 months
+      $db.execute("delete from c where date < #{NOW - DAY*180}")
+    end
+    comments = old_comments + comments
+    pending_comments = $db.execute(<<-SQL, [WAIT_DATE])[0][0]
+      select count(*) from c
+      where page = '#{rel_path}' and
+       (state = 'waiting' and date > ? or state = 'suspect')
+SQL
+
+    feed_html = md_to_html(content)
+    page_html = <<-EOF
+      <header class="post-header">
+        <h1 class="post-title">#{title}</h1>
+        <p class="post-date">#{date.strftime("%b %-d, %Y")}</p>
+      </header>
+      #{feed_html}
+EOF
+    com_list = ''
+    comments.each { |c, date| com_list += comment_html(c, date) }
+    if pending_comments > 0
+      if pending_comments >= 2
+        text = "are #{pending_comments} new comments"
+      else
+        text = 'is 1 new comment'
+      end
+      com_list +=
+        comment_html("Note: there #{text} pending approval.", NOW)
+    end
+    com_section = <<-EOF
+      <form class="comment" action="/comment.rb" method="post">
+        <input class="misc" type="text" name="url">
+        <input name="goto" type="hidden" value="#{rel_path}">
+        <textarea rows="10" name="comment" placeholder="markdown" maxlength="1000"></textarea>
+        <input type="submit" value="Leave a comment">
+      </form>
+      <div id="comments">
+         #{com_list}
+      </div>
+EOF
+    links = front['comment_links']
+    if links
+      link_html = links.map { |name,url| "<a href=\"#{url}\">#{name}</a>" }
+                    .join(', ')
+      com_section += (<<EOF)
+<p>More comments at #{link_html}</p>
+EOF
+    end
+
+    blog_toc_entry = "<li><a href=\"#{rel_path}\">#{title}</a></li>"
+
+    com_section = <<EOF
+<div id="comment-section">
+  #{com_section}
+</div>
+EOF
+
+
+    if front['description']
+      description = front['description']
+    else
+      # the first 300 saves ~ 1 ms
+      # regex for striping html from liquid template src
+      description = feed_html[0..300].gsub(/<script.*?<\/script>/m, '').
+                      gsub(/<!--.*?-->/m, '').gsub(/<style.*?<\/style>/m, '').
+                      gsub(/<.*?>/m, '')
+      if description.length > 160
+        description = description[0..156] + '...'
+      end
+    end
+
+    head = <<EOF
+EOF
+
+    fskel(rel_path, title, page_html,
+          header: header_rel,
+          footer: footer_extra,
+          comments: com_section,
+          description: description)
+    url="#{DURL}/#{rel_path}"
+
+
+    # following from https://creativecommons.org/choose,
+    # with the addition of "unless otherwise noted", for js licenses.
+    feed_copyright = <<-EOF
+<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">#{title}</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="#{url}" property="cc:attributionName" rel="cc:attributionURL">Ian Kelling</a> unless otherwise noted is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
+EOF
+
+    feed_entry = <<EOF
+<entry>
+  <title>#{title}</title>
+  <link rel="alternate" href="#{url}"/>
+  <id>#{url}</id>
+  <updated>#{date.to_datetime.rfc3339}</updated>
+  <content type="html" xml:lang="en-us" xml:base="#{DURL}/blog">
+    <![CDATA[
+    #{feed_html}
+    ]]>
+  </content>
+  <rights>
+    #{feed_copyright}
+  </rights>
+</entry>
+EOF
+    return [feed_entry, blog_toc_entry]
+  end
+end
diff --git a/blog/2014-08-01-publishing-my-technical-notes.md b/blog/2014-08-01-publishing-my-technical-notes.md
new file mode 100644 (file)
index 0000000..bcb1a8b
--- /dev/null
@@ -0,0 +1,21 @@
+---
+title:  "Publishing My Technical Notes"
+---
+
+I've contributed to many sources of online documentation, but I've also built up
+about 300 pages of useful notes. I want to share more. I don't want to create
+yet another site and needlessly fracture documentation sources,
+so there are a lot of existing sites and sources I am going to be offloading to
+(emacs wiki comes to mind).
+
+But I also have a vision of a site for material which doesn't fit well
+in existing sources, about any free software, and has some
+opionionatedness / style that official documentation does not generally
+afford. One very common and annoying practice of people who do good
+writing on technical topics is to use a blog or site which doesn't
+invite collaboration and improvement by others. So... I've started
+[ofswiki.org](https://ofswiki.org).
+
+It's really easy to setup a basic Mediawiki instance. Of course, I had to geek
+out on it. That process became the [first
+page](https://ofswiki.org/wiki/Mediawiki_Setup_Guide).
diff --git a/blog/2014-08-07-python-uninstall.md b/blog/2014-08-07-python-uninstall.md
new file mode 100644 (file)
index 0000000..53db8e6
--- /dev/null
@@ -0,0 +1,15 @@
+---
+title:  "Python and the oft-neglected uninstall feature"
+comment_links:
+  reddit: https://www.reddit.com/r/programming/comments/2d2jwl/pythons_setuppy_and_the_oft_neglected_uninstall/
+---
+
+[Wikipedia:Uninstall](https://en.wikipedia.org/wiki/Uninstall) is prefaced with "This article __needs attention from an expert in Software__."
+
+`setup.py install` is the base standard install method for Python projects. I found myself wanting to uninstall one of these projects the other day. Turns out it doesn't support uninstall, but Google's top result is a Stackoverflow answer with ~250 votes that says [it can be done no problem](https://stackoverflow.com/questions/1550226/python-setup-py-uninstall).
+
+What it doesn't say is that it will silently fail / delete the wrong files when filenames have spaces, along with other important limitations. I looked around at all the other answers and links from google and there was no better answer. How does this happen for a widely used package inluded in Python for at least [15 years](http://hg.python.org/cpython/file/61c91c7f101b/Lib/distutils)?
+
+It’s pretty standard fair: uninstall has spotty support across a great many installation technologies. I won't try to draw some broad conclusion.
+
+Instead, I wrote a [comprehensive wiki page on Uninstalling setup.py install](https://ofswiki.org/wiki/Uninstalling_setup.py_install).
diff --git a/blog/2014-09-29-say-on2.md b/blog/2014-09-29-say-on2.md
new file mode 100644 (file)
index 0000000..34b769c
--- /dev/null
@@ -0,0 +1,183 @@
+---
+title:  "Say O(n²) Eighty Eight Times Fast"
+comment_links:
+  reddit: https://www.reddit.com/r/programming/comments/2hth4h/say_on%C2%B2_eighty_eight_times_fast/
+  hacker news: https://news.ycombinator.com/item?id=8384945
+---
+
+The symbol `<` is spoken "less than", but how did you know that? Unfortunately, it's common practice for documentation and educational material to teach words and symbols without an adequate explanation of how to say them. And often, googling it doesn't work.
+
+Why does it matter? Of course for communicating, but also for your own skill and understanding. When you read, you still think the word verbally, so you would end up choosing a word like "left angle bracket" which is less intuitive, and probably leaves a lingering sense of uncertainty about it. Yuck.
+
+Separately, some technical terms have multiple equivalent spoken variations and which one is best to use when and why is an unsolvable mystery. One such case is the verbal equivalent of [Big O notation](https://en.wikipedia.org/wiki/Big_O_notation) (update: what I mean here is not strictly big o notation, but the language around it for computer science context). I've done a few interviews recently, and I noticed that my interviewers used a variety of terms, and my own phrasing has awkwardly shifted around too. Maybe we can figure something out together:
+
+
+<div>
+<button onclick="nextWord()">How to talk about O(n²) in conversation?</button><br><br>
+
+<p id="demo">"__________________"</p><br>
+Vote: <button onclick="yesVote()">It sounds good</button> <button onclick="mehVote()">It sounds ok</button>
+<button onclick="noVote()">It sounds wrong or confusing</button>
+
+
+<script>
+// @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPLv2.0 or later
+var words = [
+"asymtotic bound of n squared",
+"asymtotic bound n squared",
+"asymtotic run time of n squared",
+"asymtotic run time n squared",
+"asymtotic growth of n squared",
+"asymtotic growth n squared",
+"asymtotic growth rate of n squared",
+"asymtotic growth rate n squared",
+"bound of n squared",
+"bound n squared",
+"run time of n squared",
+"run time n squared",
+"growth of n squared",
+"growth n squared",
+"growth rate of n squared",
+"growth rate n squared",
+"computational complexity of n squared",
+"computational complexity n squared",
+"computational efficiency of n squared",
+"computational efficiency n squared",
+"computational growth rate of n squared",
+"computational growth rate n squared",
+"big oh complexity of n squared",
+"big oh complexity n squared",
+"big oh efficiency of n squared",
+"big oh efficiency n squared",
+"big oh growth rate of n squared",
+"big oh growth rate n squared",
+"algorithmic complexity of n squared",
+"algorithmic complexity n squared",
+"algorithmic efficiency of n squared",
+"algorithmic efficiency n squared",
+"algorithmic growth rate of n squared",
+"algorithmic growth rate n squared",
+"time complexity of n squared",
+"time complexity n squared",
+"time efficiency of n squared",
+"time efficiency n squared",
+"time growth rate of n squared",
+"time growth rate n squared",
+"asymtotic complexity of n squared",
+"asymtotic complexity n squared",
+"asymtotic efficiency of n squared",
+"asymtotic efficiency n squared",
+"asymtotic growth rate of n squared",
+"asymtotic growth rate n squared",
+"complexity of n squared",
+"complexity n squared",
+"efficiency of n squared",
+"efficiency n squared",
+"growth rate of n squared",
+"growth rate n squared",
+"big oh of n squared",
+"big oh n squared",
+"order of n squared",
+"order n squared",
+"order of complexity of n squared",
+"order of complexity n squared",
+"time of n squared",
+"time n squared",
+"quadratic asymtotic bound",
+"quadratic asymtotic run time",
+"quadratic asymtotic growth",
+"quadratic asymtotic growth rate",
+"quadratic bound",
+"quadratic run time",
+"quadratic growth",
+"quadratic growth rate",
+"quadratic computational complexity",
+"quadratic computational efficiency",
+"quadratic computational growth rate",
+"quadratic big oh complexity",
+"quadratic big oh efficiency",
+"quadratic big oh growth rate",
+"quadratic algorithmic complexity",
+"quadratic algorithmic efficiency",
+"quadratic algorithmic growth rate",
+"quadratic time complexity",
+"quadratic time efficiency",
+"quadratic time growth rate",
+"quadratic asymtotic complexity",
+"quadratic asymtotic efficiency",
+"quadratic asymtotic growth rate",
+"quadratic complexity",
+"quadratic efficiency",
+"quadratic growth rate",
+"quadratic big oh",
+"quadratic order",
+"quadratic order of complexity",
+"quadratic time",
+"oh n squared",
+"oh of n squared"];
+
+function yesVote() {
+    nextWord("yes")
+}
+function mehVote() {
+    nextWord("meh")
+}
+function noVote() {
+    nextWord("bad")
+}
+
+word = "The end."
+function nextWord(vote) {
+    if ('undefined' !== typeof vote) {
+        var xmlhttp = new XMLHttpRequest();
+        xmlhttp.open("POST","/On2voting.py",true);
+        xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
+        xmlhttp.send(JSON.stringify({vote:vote, word:word}));
+    }
+    word = "The end."
+    if (words.length >= 1) {
+        wordIndex = Math.floor(Math.random() * words.length)
+        word = words[wordIndex];
+    }
+    document.getElementById("demo").innerHTML = '"' + word + '"';
+    words.splice(wordIndex, 1)
+
+};
+// @license-end
+</script>
+</div>
+My next blog post [has the results](/blog/on2-vote-results.html).
+
+Where did I get these terms? Just a few clicks around the internet and my own experience. I started idly writing a few, which started to become a [Backus–Naur Form (BNF)](https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form). Then I got quite annoyed that I couldn't figure out how to properly pronounce Naur. Turns out it's [like now-ah](http://forvo.com/search/naur/). Then I wrote a python program which expands the BNF to all possible combinations:
+
+~~~ py
+from itertools import product
+
+def bnf_expand(*args):
+    result = []
+    for arg in args:
+        result.extend([" ".join(filter(None, x)) for x in product(*arg)])
+    return result
+
+# the BNF in reverse of normal order
+asymtotic = ['asymtotic', '']
+asymtotic_modified = ['bound', 'run time', 'growth', 'growth rate']
+commonly_modified = ['complexity', 'efficiency', 'growth rate']
+common_modifiers = ['computational', 'big oh', 'algorithmic', 'time',
+                     'asymtotic', '']
+unmodified = ['big oh', 'order', 'order of complexity', 'time']
+O = bnf_expand([asymtotic, asymtotic_modified],
+                [common_modifiers, commonly_modified], [unmodified])
+of = ['of', '']
+On2 = bnf_expand([O, of, ["n squared"]], [['quadratic'], O],
+                 [['oh n squared']], [['oh of n squared']])
+
+# Print the top level expanded BNF
+print On2
+~~~
+
+The result is 92 terms which can work the same in a conversation (unless your votes/comments say otherwise). And that doesn't even consider whether to say someting _is_ O(n²), _has_ O(n²), or _is of_ O(n²).
+
+The list is a bit long, so I put them in javascript and made some buttons.
+
+You might call all these words "terms of art", or "jargon", or "lingo"... orrr, let's call the whole thing off.
diff --git a/blog/2014-10-14-on2-vote-results.md b/blog/2014-10-14-on2-vote-results.md
new file mode 100644 (file)
index 0000000..f396e7b
--- /dev/null
@@ -0,0 +1,27 @@
+---
+title:  "Voting results for language around O(n²)"
+comment_links:
+  reddit: https://www.reddit.com/r/programming/comments/2j9kne/rprogramming_you_voted_on_language_around_on%C2%B2/
+---
+I [previously](/09-29-2014/say-On2.html) lamented that we are stuck with many roughly equivalent ways to say technical terms/phrases. Then I proposed over 88 ways to talk about O(n²) in computer science with voting buttons for "sounds good", "sounds ok", and "sounds wrong/confusing."
+
+After 13k votes, mostly from [/r/programming](https://www.reddit.com/r/programming) readers, here are the results.
+
+There were four almost equally most popular terms, with plenty of people prefering one over the others.
+
++ "big oh of n squared"
++ "order [of] n squared"
++ "complexity of n squared"
++ "quadratic time"
+
+Removal of "of" was slightly less popular (except for "order" which was basically equal). Other variations of the four were a bit less popular still.
+
+As I noted, opinions were split, with ~55% "sounds good", ~25% "sounds ok", and ~20% "sounds wrong or confusing" for each. For people who liked one of these four, they also had a preference for its minor variations, but felt average for the other three.
+
+"big oh of n squared" did have an edge, which I think is at least partially due to the fact that I used O(n²) when writting about the topic. In a proper experiment, I would have interviewed people verbally and used a random term to introduce the topic.
+
+There weren't any words that stood out as universally disliked, although a few awkward combinations rounded the bottom with 60% "sounds wrong or confusing." I would recommend using one of the above, or a variation, which is still about 20 options.
+
+That is the high level overview. If you want to see all the words and their vote percentages, they are [here](/on2/on2-vote-detailed-analysis.txt).
+
+Natural language sure can complicate things. Looking at data can give us some insights though. I wonder how preferences will change in 5 or 10 years.
diff --git a/blog/2016-08-23-site-redesign.md b/blog/2016-08-23-site-redesign.md
new file mode 100644 (file)
index 0000000..5538ead
--- /dev/null
@@ -0,0 +1,11 @@
+---
+title: "Site redesigned. Random thoughts"
+---
+
+Please let me know what you think of the current site design. It's my own creation.
+
+Disqus and it's ilk suck: it pushes tracking, advertising, and proprietary javascript on your users. The comments aren't saved by archive.org. People have lots more reasons they dislike it. NPR just deleted 2.8 billion Disqus comments. Unfortunately, there is no really simple way to add self hosted comments to your static blog, so I bit the bullet and wrote code for it.
+
+I originally used Jekyll (the most popular static site generator), but I ditched it and made my own site generator. It was fun. One nice thing is I can still serve a static site with static comments (comment submission is obviously a little dynamic): I regen a page in 120ms, compared to jekyll at 430 ms, and I'm not sure if that time would grow for a bigger site etc. The alternative of course is to make the site non-static or use some javascript hackery.
+
+Although I don't use much javascript (none on this page), I added javascript license data so the [librejs](https://www.gnu.org/software/librejs/) extension can detect that it is free software. It was pretty easy, and I recommend it.
diff --git a/build.rb b/build.rb
new file mode 100755 (executable)
index 0000000..4a6c268
--- /dev/null
+++ b/build.rb
@@ -0,0 +1,89 @@
+#!/usr/bin/env ruby
+# Copyright (C) 2016 Ian Kelling
+
+# 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/>.
+
+require 'fileutils'
+require 'time'
+require 'sqlite3'
+
+Dir.chdir(File.join(File.dirname(__FILE__), '_site'))
+require_relative 'b'
+include B
+
+
+feed_entries = []
+blog_list = [] # table data
+
+
+FileUtils.mkdir_p('../proposed-comments')
+FileUtils.chmod(0777, '../proposed-comments')
+FileUtils.rm Dir.glob('blog/*')
+
+$db = db_init
+# date has no type affinity, since floating point (REAL) doesn't
+# have an appropriate one.
+$db.execute <<-SQL
+  create table if not exists c (
+  id integer primary key,
+  state text,
+  ip text,
+  date,
+  page text,
+  comment text
+  )
+SQL
+
+FileUtils.chmod(0777, '../proposed-comments/comments.sqlite')
+
+# We assume blog entry files are prefixed by date
+# so we can just sort the filenames.
+Dir.glob('../blog/*.md').sort.reverse.each do |file|
+  [feed_entries, blog_list].zip(post(file, true)) { |arr, new| arr << new }
+end
+FileUtils.chmod_R(0777, 'blog')
+FileUtils.mkdir_p('../comments/blog')
+FileUtils.chmod_R(0777, '../comments')
+
+
+# main reference doc https://validator.w3.org/feed/docs/atom.html
+# Reference doc says updated  should be last time it changed
+# but jekyll's rss feed just uses current time, which is easier to get,
+# so meh, i'll just use that.
+fwrite('feed.xml', <<EOF)
+<?xml version="1.0" encoding="UTF-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom" >
+  <author>
+    <name>Ian Kelling</name>
+    <uri>#{DURL}</uri>
+  </author>
+  <id>#{DURL}</id>
+  <link rel="self" href="#{DURL}"/>
+  <title>Ian Kelling's Blog</title>
+  <updated>#{Time.now.to_datetime.rfc3339}</updated>
+  #{feed_entries.join("\n")}
+</feed>
+EOF
+
+fskel('index.html', DN, File.read('../index.html'))
+
+stdpage('blog', <<EOF)
+<ul class="index">
+  #{blog_list.join("\n")}
+</ul>
+EOF
+
+stdpage('resume', md_to_html(File.read('../resume.md')))
+
+stdpage('favorite-stuff', File.read('../favorite-stuff.html'))
diff --git a/drafts/.gitignore b/drafts/.gitignore
new file mode 100644 (file)
index 0000000..120f485
--- /dev/null
@@ -0,0 +1,2 @@
+*
+!/.gitignore
diff --git a/favorite-stuff.html b/favorite-stuff.html
new file mode 100644 (file)
index 0000000..6a85ffb
--- /dev/null
@@ -0,0 +1,74 @@
+<h3>Podcast</h3>
+
+<ul>
+  <li><a href="https://gimletmedia.com/show/reply-all/">Reply All</a></li>
+  <li><a href="http://www.onthemedia.org/blogs/on-the-media/">Reply All's previous incarnation, TLDR</a></li>
+  <li><a href="http://www.thisamericanlife.org/">This American Life</a></li>
+  <li><a href="http://www.onthemedia.org/">On the Media</a></li>
+  <li><a href="http://www.npr.org/podcasts/510307/invisibilia">Invisibilia</a></li>
+  <li><a href="http://snapjudgment.org/">Snap Judgement</a></li>
+  <li><a href="http://www.npr.org/programs/wait-wait-dont-tell-me/">Wait Wait... Don't Tell Me!</a></li>
+  <li><a href="http://themoth.org/radio">The Moth</a></li>
+  <li><a href="http://www.radiolab.org/">Radiolab</a></li>
+  <li><a href="http://freakonomics.com/radio/">Freakonomics</a></li>
+  <li><a href="http://www.waywordradio.org/">A Way with Words</a></li>
+  <li><a href="http://99percentinvisible.org/">99% Invisible</a></li>
+  <li><a href="https://www.wnyc.org/shows/radiolabmoreperfect">More Perfect</a></li>
+  <li><a href="http://www.marketplace.org/">Marketplace</a></li>
+  <li><a href="http://www.pri.org/programs/the-world">PRI's The World</a></li>
+  <li><a href="http://faif.us/">Free as in Freedom</a></li>
+  <li><a href="https://www.wnyc.org/shows/radiolabmoreperfect">More Perfect</a></li>
+  <li><a href="https://twit.tv/shows/floss-weekly">FLOSS Weekly</a></li>
+  <li><a href="http://www.se-radio.net/">Software Engineering Radio</a></li>
+
+  <!-- <li><a href=""></a></li> -->
+
+</ul>
+
+<h3>News/Blogs</h3>
+<ul>
+  <li><a href="https://LWN.net">LWN.net: Linux News</a></li>
+  <li><a href="https://sfconservancy.org/news/">Software Conservancy News</a></li>
+  <li><a href="https://mjg59.dreamwidth.org/">Mathew Garret's Blog</a></li>
+  <li><a href="https://reddit.com">reddit</a></li>
+  <li><a href="https://www.fsf.org/blogs/recent-blog-posts">FSF's blog</a></li>
+  <li><a href="https://news.ycombinator.com/">Hacker News</a></li>
+
+</ul>
+
+
+<h3>Video</h3>
+
+<ul>
+  <li>Mr. Robot</li>
+  <li>Robot and Frank</li>
+  <li>2001: A Space Odyssey</li>
+  <li>Cloud Atlas</li>
+  <li>Adaptation</li>
+</ul>
+
+
+<h3>Music</h3>
+
+<ul>
+  <li><a href="http://publicservicebroadcasting.net/">Public Service Broadcasting (band)</a></li>
+  <li><a href="https://www.youtube.com/watch?v=0rAfUUg1_gQ">Emancipator - First Snow (song)</a></li>
+  <li>Favorite band growing up: Sonic Youth</li>
+  <li><a href="http://www.pandora.com/profile/ianowl">My Pandora Profile</a></li>
+  <li>On request I will share my favorite music drm free</li>
+  <li><a href="https://github.com/SicVolo/Pithosfly">Pithosfly: a Pandora client which saves music to disk</a></li>
+</ul>
+
+<h3>Misc</h3>
+<ul>
+  <li><a href="http://learnyouahaskell.com/">Learn You a Haskell</a></li>
+  <li><a href="https://www.gnu.org/philosophy/lessig-fsfs-intro.html">Lessig Introduces Free Software</a></li>
+  <li><a href="http://www.gnu.org/philosophy/software-patents.html">GNU: Why software patents are bad</a></li>
+  <li>I'm a <a href="https://sfconservancy.org/supporter/">Software Freedom Conserveny supporter</a></li>
+  <li>I'm an <a href="https://supporters.eff.org/">Electronic Freedom Foundation supporter</a></li>
+  <li>I'm an <a href="https://opensource.org/members">Open Source Initiative member</a></li>
+  <li>I <a href="https://creativecommons.org/donate/">donate to Creative Commons</a></li>
+  <li><a href="https://hyperboleandahalf.blogspot.com/">Hyperbole and a Half</a></li>
+  <li><a href="https://my.fsf.org/join"><img src="https://static.fsf.org/nosvn/associate/crm/48550.png"></a></li>
+
+</ul>
diff --git a/feed.xml b/feed.xml
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/get-comments b/get-comments
new file mode 100755 (executable)
index 0000000..36bbe0d
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Copyright (C) 2016 Ian Kelling
+
+# 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/>.
+
+set -eE -o pipefail
+trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+
+cd "${BASH_SOURCE%/*}/proposed-comments"
+
+all=false
+shell="ssh iankelling.org"
+while [[ $1 ]]; do
+    case $1 in
+        -a) all=true; shift ;;
+        -l) shell= ; shift ;; # -l  for local
+    esac
+done
+
+s="$shell sqlite3 $PWD/comments.sqlite"
+
+if ! $all; then
+    date=$($s <<'EOF'
+select max(date) from c where
+state = 'moderated' or
+state = 'banned' or
+state = 'picked';
+EOF
+        )
+fi
+
+# we may want to avoid rate limited posts here too.
+sql="select * from c"
+if [[ $date ]]; then
+    date_clause=" where date > cast('$date' as real)"
+fi
+echo "$sql"
+$s "$sql" > /tmp/hcomments
diff --git a/gimp-src/favicon.xcf b/gimp-src/favicon.xcf
new file mode 100644 (file)
index 0000000..079bdf7
Binary files /dev/null and b/gimp-src/favicon.xcf differ
diff --git a/iank-mod.el b/iank-mod.el
new file mode 100644 (file)
index 0000000..26da79d
--- /dev/null
@@ -0,0 +1,52 @@
+;; Copyright (C) 2016 Ian Kelling
+
+;; 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/>.
+
+(defun iankmod-start ()
+  (interactive)
+  (shell-command "/a/h/get-comments" "*messages*")
+  (find-file "/tmp/hcomments")
+  (iankmod 1))
+(defun iankmod-save ()
+  (interactive)
+  (shell-command "/a/h/set-comments" "*messages*"))
+
+
+(defun iankmod-set-state (state)
+  (beginning-of-line)
+  (re-search-forward "|" nil t)
+  (re-search-forward "[^|]*" nil t)
+  (replace-match state)
+  (forward-line))
+
+(defun iankmod-pick ()
+  (interactive)
+  (iankmod-set-state "picked"))
+
+(defun iankmod-ban ()
+  (interactive)
+  (iankmod-set-state "banned"))
+
+(defun iankmod-moderate ()
+  (interactive)
+  (iankmod-set-state "moderated"))
+
+(define-minor-mode iankmod
+  "Moderation of comments for iankelling.org"
+  :keymap (let ((map (make-sparse-keymap)))
+            (define-key map (kbd "p") 'iankmod-pick)
+            (define-key map (kbd "b") 'iankmod-ban)
+            (define-key map (kbd "m") 'iankmod-moderate)
+            (define-key map (kbd "x") 'iankmod-save)
+            map))
diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..049259f
--- /dev/null
@@ -0,0 +1,8 @@
+<ul class="index">
+  <li><a href="/blog.html">blog</a></li>
+  <li><a href="git">git</a></li>
+  <li><a href="https://ofswiki.org">ofswiki.org</a></li>
+  <li><a href="resume.html">resume</a></li>
+  <li><a href="/favorite-stuff.html">favorite stuff</a></li>
+  <li><a href="ian-kelling-pubkey.asc">gpg key</a></li>
+</ul>
diff --git a/set-comments b/set-comments
new file mode 100755 (executable)
index 0000000..5694629
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+# Copyright (C) 2016 Ian Kelling
+
+# 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/>.
+
+set -eE -o pipefail
+trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+
+cd "${BASH_SOURCE%/*}/proposed-comments"
+
+
+shell="ssh iankelling.org"
+while [[ $1 ]]; do
+    case $1 in
+        -a) all=true; shift ;;
+        -l) shell= ; shift ;; # -l  for local
+    esac
+done
+s="$shell sqlite3 $PWD/comments.sqlite"
+
+
+grep -Eo '^[^|]+\|[^|]+' /tmp/hcomments | while IFS='|' read -r id state; do
+    #echo "$id -- $state" # debug print
+    sqlite3 comments.sqlite "update c set state='$state' where id = '$id'"
+done
+$shell $PWD/../build.rb
diff --git a/setup.sh b/setup.sh
new file mode 100755 (executable)
index 0000000..3230bba
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,181 @@
+#!/bin/bash -l
+# Copyright (C) 2016 Ian Kelling
+
+# 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/>.
+
+# This script depends on a few other git repos of mine, such as
+# distro-functions, basic-https-conf, acme-tiny-wrapper
+
+set -eE -o pipefail
+trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+
+cd "${BASH_SOURCE%/*}"
+
+domain=${1:-iankelling.org} # use argument for testing site
+gitroot=/a/bin/githtml
+
+shopt -s extglob
+
+type -P a2enmod &>/dev/null || pi apache2
+
+acme-tiny-wrapper $domain
+
+pkgs=(
+    # build.rb dependencies
+    ruby-pygments.rb ruby-safe-yaml ruby-redcarpet
+    # python pkgs used for o(n^2) voting blog entry
+    python-bcrypt python-passlib
+    # gitweb pkgs
+    gitweb highlight
+)
+pi ${pkgs[@]}
+chmod og+x _site/on2vote/vote.py
+
+
+# debian has the package gitweb, which seems to mainly
+# have some example apache config, and a minimal gitweb config.
+# I'll just use the config as example and not use the package.
+# It's example apache config seems to say we can use cgi or cgid,
+# and googling cgid it seems a newer faster alternative. I also
+# depend on this in my o(n^2) python script.
+sudo a2enmod cgid
+
+
+# additional settings from browsing https://git-scm.com/docs/gitweb.conf
+s dd of=/etc/gitweb.conf <<EOF
+\$feature{'highlight'}{'default'} = [1];
+# highlighting doesn't work on files without extension.
+# I noticed in terminal "highlight file" won't do it (unknown file type)
+# hightlight < file will do it, and it's online documentation
+# suggests it reads shebang. Todo: file a bug for gitweb
+# to make highlight read shebangs.
+our \$projectroot = "$gitroot";
+# not documented at https://git-scm.com/docs/gitweb.conf,
+# but it's in the debian conf, so use it.
+# directory to use for temp files.
+our \$git_temp = "/tmp";
+push @git_base_url_list, "https://$domain/git";
+our @extra_breadcrumbs = (
+[ '$domain' => '/' ],
+);
+our \$home_link_str = 'git';
+our \$site_footer = '$PWD/_site/gitweb-footer.html';
+push @stylesheets, "/gitweb-site.css";
+push @stylesheets, "/common.css";
+our \$favicon = '/assets/favicon.png';
+# default is 25, cuts off descriptions.
+our $projects_list_description_width = 40;
+# a bit superflous since they are all me
+our $omit_owner = true;
+# highlight scripts with no extension, uses a patch
+# that is on it's way upstream.
+our $highlight_force = 1;
+EOF
+
+apache-site - $domain <<EOF
+# to run python script on my site:
+<Directory /var/www/$domain/html/on2vote>
+  # to run python scripts with cgi
+  Options +ExecCGI
+  AddHandler cgi-script .py
+</Directory>
+
+# redirect some old paths when I was using jekyll.
+Redirect permanent /10-14-2014/On2-vote-results.html /blog/on2-vote-results.html
+Redirect permanent /09-29-2014/say-On2.html /blog/say-on2.html
+Redirect permanent /08-07-2014/uninstalling-setup.html /blog/python-uninstall.html
+Redirect permanent /08-01-2014/publising-my-technical-notes.html /blog/publishing-my-technical-notes.html
+
+# All below is for gitweb + git-http-web.
+# A simple builtin way to have a read only git website.
+# I didn't find any significantly better alternatives out there.
+SetEnv GIT_PROJECT_ROOT $gitroot
+SetEnv GIT_HTTP_EXPORT_ALL
+
+# note: cgi scripts can go anywhere into the filesystem,
+# so there is no need to do a directory block for $gitroot
+
+# fot git-http-web
+<Directory /usr/lib/git-core>
+        AllowOverride None
+        Require all granted
+</Directory>
+
+<Directory /usr/share/gitweb>
+  Options +FollowSymLinks +ExecCGI
+  AddHandler cgi-script .cgi
+</Directory>
+
+# from  man-git-http-backend, so git-http-web ang gitweb can both be used.
+# it is instead of this:
+# #ScriptAlias / /usr/lib/git-core/git-http-backend/
+ScriptAliasMatch \\
+       "(?x)^/git/(.*/(HEAD | \\
+                       info/refs | \\
+                       objects/(info/[^/]+ | \\
+                                [0-9a-f]{2}/[0-9a-f]{38} | \\
+                                pack/pack-[0-9a-f]{40}\\.(pack|idx)) | \\
+                       git-(upload|receive)-pack))\$" \\
+       /usr/lib/git-core/git-http-backend/\$1
+
+
+
+# man-git-http-backend claims we should do this, but
+# it causes no css/images to be displayed. Instead,
+# just stick with the standard gitweb example directive
+# from debian.
+#ScriptAlias /git /usr/share/gitweb/gitweb.cgi/
+Alias /git /usr/share/gitweb
+EOF
+
+
+# my projects all have README or --help with a short single line
+# description which I parse and put into the gitweb description.
+_git_desc_readme() {
+    while read -r line; do
+        [[ $line ]] || continue
+        if echo "$line" | grep "^ *[#*]" &>/dev/null; then
+            continue
+        fi
+        echo "$line" > .git/description
+        break
+    done < README*
+}
+gitweb_descriptions() {
+    for d in $gitroot/*; do
+        d=$(readlink -f $d)
+        cd $d/..
+        e ${PWD##*/}
+        shopt -s nullglob
+        f=(!(LICENSE|COPYING|README|.git))
+        shopt -u nullglob
+        if [[ ${#f[@]} == 1 && ! -d $f ]]; then
+            if [[ ! -x $f ]]; then
+                if [[ $f == *-function ]]; then
+                    ${f%-function} --help | sed -n '2p' > .git/description
+                else
+                    _git_desc_readme
+                fi
+            else
+                $f --help | sed -n '2p' > .git/description
+            fi
+        else
+            _git_desc_readme
+        fi
+    done
+}
+
+gitweb_descriptions
+
+./build.rb