[med-svn] [ctsim] 01/02: Imported Upstream version 5.2.0

Andreas Tille tille at debian.org
Mon Aug 11 08:01:25 UTC 2014


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository ctsim.

commit 90ae000df103ccd6ac87fe04bfdf547afa80a545
Author: Andreas Tille <tille at debian.org>
Date:   Mon Aug 11 09:59:05 2014 +0200

    Imported Upstream version 5.2.0
---
 AUTHORS                           |     7 +
 COPYING                           |   347 ++
 COPYRIGHT                         |    17 +
 ChangeLog                         |   708 +++
 INSTALL                           |   383 ++
 Makefile                          |   653 +++
 Makefile.am                       |    34 +
 Makefile.in                       |   732 +++
 NEWS                              |   103 +
 README                            |   122 +
 README.msvc                       |    25 +
 TODO                              |     1 +
 aclocal.m4                        |  1003 ++++
 benchmarks/composite-test         |    11 +
 benchmarks/results                |    17 +
 cgi-bin/Makefile                  |   370 ++
 cgi-bin/Makefile.am               |     3 +
 cgi-bin/Makefile.in               |   421 ++
 cgi-bin/ctsim.cgi                 |   314 +
 cgi-bin/ctsim.cgi.in              |   314 +
 cgi-bin/ctsim.conf                |    11 +
 cgi-bin/ctsim.conf.in             |    11 +
 config.guess                      |  1533 +++++
 config.h.in                       |   244 +
 config.sub                        |  1693 ++++++
 configure                         |  9072 +++++++++++++++++++++++++++++
 configure.ac                      |   483 ++
 depcomp                           |   630 ++
 doc/Makefile                      |    72 +
 doc/alphacalc.ai                  |   561 ++
 doc/alphacalc.bmp                 |   Bin 0 -> 68596 bytes
 doc/alphacalc.eps                 |  9433 ++++++++++++++++++++++++++++++
 doc/alphacalc.gif                 |   Bin 0 -> 4559 bytes
 doc/bullet.bmp                    |   Bin 0 -> 138 bytes
 doc/ctsim-algorithms.tex          |   187 +
 doc/ctsim-concepts.tex            |   408 ++
 doc/ctsim-gui.tex                 |   660 +++
 doc/ctsim-install.tex             |    73 +
 doc/ctsim-latex.bib               |    43 +
 doc/ctsim-sgp.tex                 |   129 +
 doc/ctsim-tex2rtf.bib             |    40 +
 doc/ctsim-textui.tex              |   319 +
 doc/ctsim-web.tex                 |    31 +
 doc/ctsim.hlp                     |   Bin 0 -> 89346 bytes
 doc/ctsim.hpj                     |    29 +
 doc/ctsim.prj                     |    89 +
 doc/ctsim.tex                     |   141 +
 doc/ctsimfig1.eps                 |   390 ++
 doc/ctsimfig1.fig                 |   115 +
 doc/ctsimfig2.fig                 |   120 +
 doc/ctsimfig3.eps                 |   239 +
 doc/ctsimfig3.fig                 |    83 +
 doc/ctsimfig4.eps                 |   253 +
 doc/ctsimfig4.fig                 |    94 +
 doc/ctsimfig5.eps                 |   213 +
 doc/ctsimfig5.fig                 |    71 +
 doc/divergent.ai                  |   550 ++
 doc/divergent.eps                 |  5172 +++++++++++++++++
 doc/divergent.gif                 |   Bin 0 -> 12776 bytes
 doc/equiangular.ai                |   395 ++
 doc/equiangular.eps               |  9081 +++++++++++++++++++++++++++++
 doc/equiangular.gif               |   Bin 0 -> 16147 bytes
 doc/equilinear.ai                 |   762 +++
 doc/equilinear.eps                | 11288 ++++++++++++++++++++++++++++++++++++
 doc/equilinear.gif                |   Bin 0 -> 4812 bytes
 doc/fancyhea.sty                  |   145 +
 doc/logo.eps                      |  4406 ++++++++++++++
 doc/logo.gif                      |   Bin 0 -> 3754 bytes
 doc/make-help                     |    12 +
 doc/makeidx.sty                   |    11 +
 doc/maphhc.pl                     |    39 +
 doc/mysober.sty                   |   154 +
 doc/mytitle.sty                   |    31 +
 doc/psbox.tex                     |   520 ++
 doc/scangeometry.ai               |   740 +++
 doc/scangeometry.eps              |  9376 ++++++++++++++++++++++++++++++
 doc/scangeometry.gif              |   Bin 0 -> 6042 bytes
 doc/tex2rtf.ini                   |    31 +
 doc/texhelp.sty                   |   284 +
 doc/verbatim.sty                  |   212 +
 docs/ctsim.htb                    |   Bin 0 -> 137137 bytes
 docs/ctsim.pdf                    |   Bin 0 -> 299655 bytes
 docs/html.tar.gz                  |   Bin 0 -> 82538 bytes
 getopt/Makefile                   |   439 ++
 getopt/Makefile.am                |     5 +
 getopt/Makefile.in                |   461 ++
 getopt/depcomp                    |   464 ++
 getopt/getopt.c                   |  1069 ++++
 getopt/getopt.h                   |   178 +
 getopt/getopt1.c                  |   188 +
 helical/Makefile                  |   341 ++
 helical/Makefile.am               |     1 +
 helical/Makefile.in               |   357 ++
 helical/dynphm.c                  |    49 +
 helical/sample-helical.sh.in      |    50 +
 html/Makefile                     |   370 ++
 html/Makefile.am                  |     3 +
 html/Makefile.in                  |   404 ++
 html/simulate.html                |   114 +
 html/simulate.html.in             |   114 +
 images/SplashScreen.psd           |   Bin 0 -> 241258 bytes
 images/logo-full-size.psd         |   Bin 0 -> 67675 bytes
 images/logo16.bmp                 |   Bin 0 -> 824 bytes
 images/logo32.bmp                 |   Bin 0 -> 3128 bytes
 images/logo48.bmp                 |   Bin 0 -> 6968 bytes
 include/Makefile                  |   384 ++
 include/Makefile.am               |    19 +
 include/Makefile.in               |   405 ++
 include/array2d.h                 |   109 +
 include/array2dfile.h             |   273 +
 include/backprojectors.h          |   228 +
 include/ct.h                      |   189 +
 include/ctglobals.h               |    32 +
 include/ctndicom.h                |   130 +
 include/ctsupport.h               |   341 ++
 include/ezplot.h                  |   355 ++
 include/filter.h                  |   167 +
 include/fnetorderstream.h         |   153 +
 include/fourier.h                 |   112 +
 include/hashtable.h               |    84 +
 include/imagefile.h               |   244 +
 include/interpolator.h            |   268 +
 include/mpiworld.h                |    74 +
 include/msvc_compat.h             |    41 +
 include/nographics.h              |    50 +
 include/phantom.h                 |   233 +
 include/plotfile.h                |   140 +
 include/pol.h                     |   217 +
 include/procsignal.h              |   176 +
 include/projections.h             |   228 +
 include/reconstruct.h             |    78 +
 include/scanner.h                 |   194 +
 include/sgp.h                     |   306 +
 include/sstream_subst             |   115 +
 include/timer.h                   |   193 +
 include/trace.h                   |    77 +
 include/transformmatrix.h         |    59 +
 install-sh                        |   520 ++
 libctgraphics/Makefile            |   440 ++
 libctgraphics/Makefile.am         |     7 +
 libctgraphics/Makefile.in         |   462 ++
 libctgraphics/bresenham.cpp       |    91 +
 libctgraphics/ezplot.cpp          |  1320 +++++
 libctgraphics/ezset.cpp           |   482 ++
 libctgraphics/ezsupport.cpp       |    29 +
 libctgraphics/pol.cpp             |   948 +++
 libctgraphics/sgp.cpp             |   992 ++++
 libctgraphics/transformmatrix.cpp |   157 +
 libctsim/Makefile                 |   450 ++
 libctsim/Makefile.am              |     6 +
 libctsim/Makefile.in              |   472 ++
 libctsim/array2dfile.cpp          |   725 +++
 libctsim/backprojectors.cpp       |   744 +++
 libctsim/ctndicom.cpp             |   474 ++
 libctsim/filter.cpp               |   604 ++
 libctsim/fourier.cpp              |   179 +
 libctsim/imagefile.cpp            |  1933 ++++++
 libctsim/phantom.cpp              |   978 ++++
 libctsim/procsignal.cpp           |   881 +++
 libctsim/projections.cpp          |  1469 +++++
 libctsim/reconstruct.cpp          |   240 +
 libctsim/scanner.cpp              |   657 +++
 libctsim/trace.cpp                |    99 +
 libctsupport/Makefile             |   449 ++
 libctsupport/Makefile.am          |     7 +
 libctsupport/Makefile.in          |   471 ++
 libctsupport/Makefile.nt          |    32 +
 libctsupport/clip.cpp             |   395 ++
 libctsupport/consoleio.cpp        |   177 +
 libctsupport/fnetorderstream.cpp  |   198 +
 libctsupport/globalvars.cpp       |    36 +
 libctsupport/hashtable.cpp        |   139 +
 libctsupport/interpolator.cpp     |   137 +
 libctsupport/mathfuncs.cpp        |   137 +
 libctsupport/msvc.cpp             |    26 +
 libctsupport/plotfile.cpp         |   393 ++
 libctsupport/strfuncs.cpp         |   166 +
 libctsupport/syserror.cpp         |   190 +
 libctsupport/xform.cpp            |   148 +
 man/Makefile                      |   392 ++
 man/Makefile.am                   |     2 +
 man/Makefile.in                   |   436 ++
 man/ctsim.1                       |    31 +
 man/ctsim.texi                    |    74 +
 man/ctsimtext.1                   |    25 +
 man/if1.1                         |    57 +
 man/if2.1                         |    60 +
 man/ifexport.1                    |    55 +
 man/ifinfo.1                      |    44 +
 man/linogram.1                    |    35 +
 man/phm2helix.1                   |   115 +
 man/phm2if.1                      |    61 +
 man/phm2pj.1                      |   116 +
 man/pj2if.1                       |    42 +
 man/pjHinterp.1                   |    57 +
 man/pjinfo.1                      |    37 +
 man/pjrec.1                       |   159 +
 missing                           |   376 ++
 mkinstalldirs                     |   162 +
 msvc/copy-binaries.bat            |     6 +
 msvc/ctsim.dsw                    |   194 +
 msvc/ctsim/ctsim.dsp              |   314 +
 msvc/ctsim/ctsim.plg              |    42 +
 msvc/ctsim/ctsim.rc               |     3 +
 msvc/ctsim/ctsim.vcproj           |   319 +
 msvc/ctsim/logo.ico               |   Bin 0 -> 2238 bytes
 msvc/ctsimtext/ctsimtext.dsp      |   167 +
 msvc/ctsimtext/ctsimtext.rc       |     1 +
 msvc/ctsimtext/ctsimtext.vcproj   |   199 +
 msvc/ctsimtext/logo.ico           |   Bin 0 -> 2238 bytes
 msvc/libctsim/libctsim.dsp        |   324 ++
 msvc/libctsim/libctsim.vcproj     |   298 +
 rpm/ctsim.spec                    |    50 +
 src/Makefile                      |   484 ++
 src/Makefile.am                   |    13 +
 src/Makefile.in                   |   519 ++
 src/backgroundmgr.cpp             |   264 +
 src/backgroundmgr.h               |   134 +
 src/backgroundsupr.cpp            |   214 +
 src/backgroundsupr.h              |   140 +
 src/ctsim-map.h                   |    19 +
 src/ctsim.cpp                     |  1152 ++++
 src/ctsim.h                       |   384 ++
 src/ctsim.rc                      |     1 +
 src/ctsim.xpm                     |   153 +
 src/dialogs.cpp                   |  1658 ++++++
 src/dialogs.h                     |   423 ++
 src/dlgezplot.cpp                 |   157 +
 src/dlgezplot.h                   |    98 +
 src/dlgprojections.cpp            |   298 +
 src/dlgprojections.h              |   114 +
 src/dlgreconstruct.cpp            |   336 ++
 src/dlgreconstruct.h              |   122 +
 src/docs.cpp                      |   540 ++
 src/docs.h                        |   284 +
 src/graph3dview.cpp               |   979 ++++
 src/graph3dview.h                 |   151 +
 src/splash.xpm                    |   545 ++
 src/threadproj.cpp                |   266 +
 src/threadproj.h                  |   145 +
 src/threadraster.cpp              |   225 +
 src/threadraster.h                |   118 +
 src/threadrecon.cpp               |   276 +
 src/threadrecon.h                 |   148 +
 src/tips.cpp                      |    95 +
 src/tips.h                        |    43 +
 src/views.cpp                     |  3738 ++++++++++++
 src/views.h                       |   503 ++
 tools/Makefile                    |   518 ++
 tools/Makefile.am                 |    46 +
 tools/Makefile.in                 |   551 ++
 tools/ctsimtext.cpp               |   329 ++
 tools/if1.cpp                     |   185 +
 tools/if2.cpp                     |   322 +
 tools/ifexport.cpp                |   385 ++
 tools/ifinfo.cpp                  |   168 +
 tools/linogram.cpp                |   197 +
 tools/mpiworld.cpp                |    82 +
 tools/nographics.cpp              |    45 +
 tools/phm2helix.cpp               |   357 ++
 tools/phm2if.cpp                  |   406 ++
 tools/phm2pj.cpp                  |   457 ++
 tools/pj2if.cpp                   |   154 +
 tools/pjHinterp.cpp               |   168 +
 tools/pjinfo.cpp                  |   181 +
 tools/pjrec.cpp                   |   440 ++
 tools/sample-ctsim.sh.in          |    42 +
 267 files changed, 129030 insertions(+)

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..6f22846
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,7 @@
+PRIMARY AUTHOR
+Kevin M. Rosenberg, M.D. <kevin at rosenberg.net>
+
+CONTRIBUTORS
+Ian Kay <iankay at cancerboard.ab.ca>
+  - Additions and updates to man pages
+  - Bug identification and patches for ASCII phantom parsing
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..5f278b6
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,347 @@
+CTSim is covered by the GNU GPL stated below. Additionally, the Herman
+Phantom defined in libctsim/phantom.cpp is copyright by Gabor
+T. Herman, Ph.D.  Dr. Herman has granted permission for use of the his
+phantom in CTSim and derivative software products. However, any print
+or web publication of his phantom requries his explicit approval.
+
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  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 Library 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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 Library General
+Public License instead of this License.
diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644
index 0000000..c557655
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,17 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2002 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..3b3c6f7
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,708 @@
+Nov  7, 2010  Version 5.2.0
+	* tools/ifexport.cpp: Add Text output option (thanks to
+	Christian Thibaudeau)
+
+Aug 22, 2009  Version 5.1.3
+	* src/ctsim.cpp
+	- Improve numbering of unnamed documents. Reduce cut-and-paste code.
+	* configure.ac
+	- Use new AC_INIT form to include package information, email, url
+
+Aug 21, 2009  Version 5.1.2
+	* Conditionalize debugging output
+
+Aug 20, 2009  Version 5.1.1
+	* Use new wxFont constructor. Adjust font sizes.
+
+Aug 12, 2009  Version 5.1.0
+	* All known wxwidgets 2.8 compatibility issues have been fixed
+
+Aug 6, 2009  Version 5.0.6
+	* Use wxWidgets command-line processing rather than existing
+	native processing.
+	* ezset.cpp: Initialize scale settings in constructor
+	* Improve titles of frames
+	* configure.ac: Use wx-config to determine name of wxGL library
+	* src/graph3dview.cpp: wx2.8 compatibility changes to eliminate
+	segv crash when creating 3D objects
+
+Aug 3, 2009  Version 5.0.5
+	* Fix plots when maximum plot value is the same as minimum
+
+Aug 3, 2009  Version 5.0.5
+	* More wx2.8 compatibility fixes.
+	* Fix initial size of Log TextCtrl at start-up.
+	* Fix display of values in Log window by cleaning up string
+	transformtions.
+
+Aug 2, 2009  Version 5.0.4
+	* More wx2.8 compatibility fixes. Ensure that a resize of a window
+	causes a full repaint for phantom, plot, and graph3d canvases.
+
+Aug 1, 2009  Version 5.0.1
+	* missing: Update to latest automake version
+	* configure: make compatible with wxMac
+	* update few source files for non-unicode wxWidgets 2.8 compatibility
+
+Aug 1, 2009  Version 5.0.0
+	* Major revision of wxWidgets code to port from wx2.4 to wx2.8
+	Currently, code compiles without warnings, but there are
+	GUI visual problems at the momemt running with wx2.8
+
+Sep 17, 2007  Version 4.5.5
+	* better cleaning in makefiles
+	* use "const char" variables for string literals
+
+Sep 10, 2007  Version 4.5.4
+	* configure.ac: Fix builds with multiple versions of wx-config
+	-- thanks to Steve White
+
+Apr 1, 2007  Version 4.5.3
+	* include/timer.h: Fix building on GCC 4.3
+	-- thanks to Martin Michlmayr
+
+Oct 19, 2006  Version 4.5.2
+	* src/lipctsim/imagefile.cpp: Change delete to fftw_free
+	-- thanks to Sven Huth
+
+Oct 18, 2006  Version 4.5.1
+	* configure: rebuild from configure.ac
+
+Oct 15, 2006  Version 4.5.0
+	* libctsim/backprojectors.cpp: Fix for iteration bug in backprojection
+	and simply computing rotScale -- thanks to Dan Martin.
+
+Mar 16, 2006  Version 4.4.4
+	* Changes for g++ 4.1 support
+
+Aug 22, 2005  Version 4.4.2
+ 	* New URL for downloading CTSim
+
+Aug 22, 2005  Version 4.4.1
+        * work-around for compilation problems on Fedora 4 and wxWin 2.4.2
+
+Aug 22, 2005  Version 4.4.0
+        * Changes in configure.ac for X.org compatibility with Debian Etch
+	and FC4. May not be backward compatibility with XFree86.
+
+Aug 10, 2004  Version 4.3.2, Version 4.3.3
+	* Minor changes in man pages to fix groff warnings
+
+Nov 1, 2003  Version 4.3.1
+	* Add support for SuSE AMD64
+
+Oct 5, 2003  Version 4.3.0
+	* Ported to incompatible FFTW3 library. CTSim will no longer compile or
+	run with FFTW2.
+	* Save FFTW3 in $HOME/.fftw3-wisdom on platforms where getenv function
+	is available
+
+Oct 3, 2003  Version 4.2.7
+	* Add support for building on RedHat AMD64
+
+Sep 30, 2003  Version 4.2.7
+	* Fix minor issue with floating point difference backprojection, add
+	optimization
+
+	* Fix building with newest versions of automake 1.7
+
+	* Add support for 8-byte longs [for example, Athlon64] in
+	integer difference backprojection allowing for 64-bit integer
+	math.
+
+Mar 22, 2003  Version 4.2.3
+
+	* Added Fourier reconstruction method
+
+	* Support gcc 3.2, wxWindows 2.4, and MacOS X
+
+	* Fix polar interpolation
+
+Jun 26, 2002  Version 3.5.6
+
+	* Fix minor color PNG image importing bug
+
+	* Bug fix for building on Debian alpha platform
+
+	* Fix g++ compilation warnings
+
+Jun 13, 2002  Version 3.5.5
+
+	* Fix printing of version number
+
+	* Minor bug fixes
+
+	* Updated Win32 compatibility
+
+Jun 8, 2002  Version 3.5.4
+
+	* Print version number in log window with About command
+
+	* Fix problem with captions not showing on some windows. Reworked
+	creation of new windows.
+
+	* Disabled status bar on 3d views
+
+	* Fix bug in configure.ac that prevented using compiler
+	optimizations.
+
+	* Updated About splash screen
+
+May 29, 2002  Version 3.5.3
+	* Added support for g++ 3.04 compiler
+
+May 8, 2002  Version 3.5.2
+	* configure: improved CTN (DICOM) installation search
+	* src/ctsim.cpp: Fixed initial image size with import command
+
+May 5, 2002  Version 3.5.1
+
+	New Features:
+
+	* ctsim: Added tips to be displayed at startup and via the help menu.
+	* ctsim: Added center-detector concept. Allow for detector array
+	to be any arbitrary distance from center of scanner. As a result,
+	projection files are not incompatible with previous version of
+	CTSim.
+	* ctsim: Added threaded tasks and background manager for
+	background processing as well as taking advantage of multiple-CPU's
+	on SMP systems.  (Microsoft Windows only)
+	* ctsim: Added plot t-theta sampling to projection file menu.
+	* ctsim: Added Reconstruction with Rebinning for faster
+	divergent beam reconstructions.
+	* ctsim: Added import and export of DICOM image files.
+	* ctsim: Added PPM, PGM, and PNG file import to imagefile.
+	* ctsim: Added FFT/IFFT of columns of image files.
+	* ctsim: Added clipboard cut/copy/paste for image files.
+	* ctsim: Added region of interest to reconstructions.
+	* ctsim: Added Convert Rectangular Image to Projection files
+	* ctsim: Added "Verbose Logging", "Startup Tips", and
+	"Background processes" options 	to Preferences dialog.
+	* ctsim: Added plotting of projection file histograms.
+	* plotfile: Added scattergram plot functions
+	* ctsim: Added accelerator key for File-Properties
+	* ctsim: Improved wireframe 3-d display to remove hidden
+	surfaces.
+	* backprojectors.cpp: Added setting of axis extent and increment
+	to reconstructions.
+	* projections.cpp: Can read and reconstruct SIEMENS AR.STAR DICOM
+	projection data files.
+
+	Bug Fixes:
+
+	* views.cpp: reduced calls to progress bar update, significant speedup
+	* views.cpp,ctsim.cpp: Fixed bug with window frames sometimes
+	not being displayed on Unix platforms.
+	* views.cpp: Added out-of-memory checks to display for huge
+	image and projection files.
+	* filter.cpp: Fixed Hanning parameter to be 0.5 rather than 0.54
+	* imagefile.cpp: Fixed scaling factor in fftRows
+	* imagefile.cpp: Fixed bug when performing magnitude() on real-valued
+	image.
+	* sgp.cpp: Fixed bug in drawCircle.
+	* distribution: fixed problem with documentation files not
+	being included with the distribution (Reported by Ian Kay).
+	* sgp.cpp/ezplot.cpp: Improved plotting with markers.
+	* fixed ctsimtext shell when giving no parameters to function-name
+	* phm2if, phm2pj: Updated help messages for renamed phantoms
+
+3.0.3 - Released 2/20/01
+
+	* ctsim: Fixed core dump on Linux with OpenGL
+
+	* ctsim: Fixed context-sensitive help on Linux
+
+	* ctsim: Fixed About box on Linux
+
+3.0.2 - Released 2/20/01
+
+	* scanner.cpp: Fixed bug when number of detectors was even.
+
+	* ctsim: Improved error handling when trying to convert
+	divergent projections into polar form.
+
+3.0.1 - Released 2/19/01
+
+	* ctsim: Fixed dialog box for reconstruction so that
+	rotation angle setting will stay fixed in-between use
+	of the dialog box.
+
+	* syserror: Fixed display bug for trace messages
+
+	* ctsim: MSVC optimization bug work-around, compiler
+	options changed.
+
+3.0.0 - Released 2/19/01
+
+	* ctsim: Massive update/fix to online help and print manual.
+
+	* ctsim: Added context-sensitive help to dialog boxes
+
+	* ctsim: Reformated all dialog boxes, much nicer now.
+
+	* ctsim: Improved accelerator key handling
+
+	* global: Added Hanning filter.
+
+	* global: Improved default parameters to that all defaults give
+	sensible output.
+
+3.0.0beta1 - Released 2/11/01
+
+	* ctsim: Added most-recently-used files to File menu with
+	registry storage between executions.
+
+	* ctsim: Hides arcane features unless enabled by Preferences dialog
+
+	* ctsim: Added MDI interface for Windows version and made it default for Windows.
+
+	* ctsim: Added 3-D wireframe view of images (uses OpenGL)
+
+	* ctsim: Added graphical About box
+
+	* ctsim: Escape key now removes cursor lines from image file view
+
+	* ctsim: Added Revert to ImageFile menu
+
+	* ctsim: Added accelerator (hotkeys) to frames
+
+	* ctsim: Online help added!
+
+	* backprojector: Added cubic interpolation
+
+	* ctsim: Added icons to Frames on X-Window and MS Windows versions
+
+	* ctsim: Fixed tick-label placement for plots on projection and
+	reconstruction dialogs.
+
+	* timer.h: Add use of _ftime when compiling on MSVC
+
+	* global: Projection files are not compatible with previous version
+	due to new scanner definitions.
+
+	* global: deleted concept of field-of-view and added
+	  view ratio and scan ratio concepts.
+
+	* ctsim: Fixed crash on shutdown bug
+
+	* pjinfo: Fixed bug when doing --dump and not specifing --endview
+
+	* phm2pj: Fixed MPI bug with broadcasting of variables
+
+	* ctsimtext-lam: Changes for first version to compile under lam
+
+
+3.0.0alpha5 - Released 1/12/00
+
+	* ctsim: Added EZPlotDialog, used by debugging plots in
+	procsignal.cpp
+
+	* ctsimtext: Fixed bugs for MSVC and with empty input lines. Fixed
+	bug in parsing command-line parameters.
+
+	* views.cpp: Fixed bug in copying of labels from images to
+	plotfiles
+
+	* syserror.cpp: fixed reporting for fatal errors
+
+	* projections.cpp: fixed MSVC failure with std:: namespace
+
+	* procsignal.cpp: fixed bug in equiangular reconstructions
+	for frequency/inverse-fourier filtering
+
+3.0.0alpha4 - Released 1/09/01
+
+	* ctsim: Added reset to full-intensity scale menu item
+
+	* ctsim: Add conversion of projections to polar plot [Thanks to
+	Ian Kay for reference and math hints in polar bilinear scaling]
+
+	* ctsim: improve bilinear scaling of image size [Thanks to Ian Kay
+	for math tips]
+
+	* ctsim: imagefile labels are now copied to plotfiles
+
+	* ctsim: Added more analyze menuitems
+
+	* ctsimtext: First version. All command-line tools are now accessed
+	through this master shell. Has both command-line and interactive
+	interface
+
+	* ctsim: Fixed initialization of min/max bug for PlotFiles
+
+	* ezplot: Cleaned up y-tick label placement
+
+	* sgp: Added better support for projection/reconstruction animation
+
+3.0.0alpha3 - Released 1/02/01
+
+	* ctsim: Added plotting of histograms
+
+	* imagefile.cpp: fixed bug in generation of 16-bit PNG images
+
+	* ezplot.cpp: adjusted xtick label displays for better placement
+
+3.0alpha2 - Released 1/02/01
+
+ 	* ctsim: All functions of command-line tools are now in graphical ctsim
+
+	* ctsim: added generation of filter images
+
+	* ctsim: Added 2-image math functions (mul, add, div, sub)
+
+	* ctsim: Added export of imagefiles to graphic file formats
+
+	* ctsim: Added support for scaling imagefiles in new sizes
+
+	* ctsim: Added ability to save standard phantom definitions as
+	text files suitable for reading.
+
+	* ctsim: Add labels for image transformations and display of labels
+	when performing properties of images.
+
+	* processsignal.cpp: Fixed "off by one" bug in
+	shuffleNaturalToFourierOrder when n is even. Moved functions to
+	fourier.cpp
+
+	* imagefile.cpp: Added FFTW library to imagefile processing. Converted
+	image math functions to complex-valued math.
+
+	* phantom.cpp: Added ability to save phantom files as ASCII text.
+
+3.0alpha1 - Released 12/29/00
+
+	* Added PlotFile class to system, used by if2 and ctsim for row
+	and column plots and comparison plots
+
+	* ctsim: Added image comparison statistics and image subtraction
+
+	* ctsim: Added plotting of rows & columns with y-axis scaling
+
+	* ctsim: Added row and column plot comparisons between two image
+	files.
+
+	* ctsim: Added "Process" menu to image file display with math
+	functions. Added 2-dimensional inverse Fourier to math
+	functions. Added support for complex (real/imaginary) images.
+
+	* mathfuncs.cpp: Reworked statistics algorithm to share between
+	imagefile and plotfile classes.
+
+	* imagefile.cpp: Fixed scaling bug when rasterizing Phantom with
+	nsamples > 2.  Added generic mage math functions, moved from
+	if1.cpp and if2.cpp to imagefile.cpp. Added support complex
+	images.
+
+	* array2dfile.cpp: Added code to support complex (real/imaginary)
+	images.
+
+	* if1: Updated to handle error conditions, such as sqrt of a
+	negative number. Converted to use new ImageFile math functions.
+
+	* if2: Updated to output plot files and use new ImageFile class
+	math functions
+
+	* if1: Updated to use new ImageFile class math functions
+
+	* ezplot: Reworked to better store colors/linestyles/symbols with
+	individual curves. Improved display of labels and ticks. Updated
+	to use POL class member variable. Updated to more C++ conventions.
+
+	* pol: converted to C++ class. Extracted HashTable to separate
+	class.
+
+	* sgp: Added linestyle settings
+
+2.5.0 - 12/18/00
+   First Microsoft Windows GUI version
+   Modifications for Microsoft Visual C++ compilation.
+   Improved pjinfo to output binary headers and view data, useful
+	when manually compiling phantoms that vary during projection
+	process. Thanks to Ian Kay for idea and code submission.
+   Improved sorting to find median in ImageFile::statistics
+   Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay)
+   Changed reconstruction dialog to fix onto smaller screens
+   Fixed display of plotting in Projection views
+   Improved animation displays for Projections and Reconstructions
+   Changed code to explicitly use std:: namespace rather than
+	"namespace using std" statements
+   Fixed reconstruction scaling bug introduced in 2.0.6
+   Renamed if2img to ifexport, if-1 to if1, if-2 to if2
+
+2.0.6 - 12/03/00
+   Fixed minor compilation problem with procsignal.h
+   Updated README file
+   Fixed bug when simulating projections and Trace == CONSOLE
+   Fixed scaling bug when performing redundant rotations around object
+
+2.0.5 - 12/01/00
+   Improved compilation on RedHat 7
+   Changed some of ANSI C header files to C++ header files
+   Removed README.RedHat7
+
+2.0.4 - 11/25/00
+   Added documentation for --geometry setting
+   Added README.RedHat7 document
+
+2.0.3 - 11/20/00
+   Fixed bug in generation of binary PGM files
+   Fixed MPI compilation bug in phm2pj.cpp
+   Inverted y-axis output for pj2if (bug alert from Ian Kay)
+
+2.0.2 - 11/8/00
+   Additions to man pages (Ian Kay)
+   Fix problem with reading of ASCII phantom files (Ian Kay)
+
+2.0.1 - 10/1/00
+   Fixed syntax error in fftw configuration
+   Slight modifications to support gcc v2.9.6
+
+2.0.0 - 9/7/00
+   Version 2.0.0 released!
+   ctsim: Added Window menu to Main frame
+   ctsim: Disabled not support reconstruction method
+   Fixed obscure bug in sys_error
+   Fixed compilation in mingw environment not present
+   Fixed compilation in non-graphical environments
+
+2.0.0-b12 - 9/4/00
+   ctsim: Added animation of reconstruction
+   ctsim: Added saving of dialog parameters for Projection & Reconstruction
+   ctsim: Added progress dialog for rasterization of phantom
+   ctsim: used setpriority to set lower priority
+   ctsim: fixed pReconstruct not being deleted causing scaling problem
+   ctsim: fixed projection animation dialog buttons
+
+2.0.0-b11 - 9/1/00
+   ctsim: Added projection graph to animation of projection collection
+   ctsim: Added single stepping to projection collection animation
+   ctsim: improved File/Properties display for projection files
+   ctsim: Added progress dialog for reconstructions
+   ctsim: Added file labels for projection and reconstruction images
+   ctsim: Made File/Properties bring up modal dialogs
+   Added reconstruction for Equilinear and Equiangular geometries
+   Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas
+   Separated reconstruction into Reconstructor class
+   Fixed center of detector adjustment for even number of detectors
+   Added --enable-static to generate statically linked programs
+
+2.0.0-b10 - 8/25/00
+   ctsim: Added animation of projection collection processs
+   ctsim: Added Auto Scaling for image windows
+   ctsim: Change menus from "windowing" to "display scaling"
+   Added FieldOfView and FocalLength ratio parameters to projection collection
+   Added FocalLength & FieldOfView fields to projection data files
+   Added Projection collection for Equilinear and Equiangular geometries
+   Changed name of Rowland Phantom to correct name of Shepp-Logan
+   Fixed bug in backprojection selection
+
+2.0.0-b9 - 8/22/00
+   Added RCS Id strings to executable files
+   Added RPM Spec file for RPM package creation
+   Added loading of ASCII phanthom definitions from files
+   Fixed compilation for non-SGP architectures
+   Decomposed SignalFilter class into ProcessSignal and SignalFilter classes
+   Added Filter-Generation option to reconstruction to allow direct or
+	inverse_fourier construction of filters
+   Added median to statistics and to auto-windowing
+
+2.0.0-b8 - 8/1/00
+   Added line color support to SGP
+   Fixed lineAbs bug
+
+2.0.0-b7 - 7/25/00
+   Finished support for dmallocxx library
+   Fixed bug in SignalFilter::convertFilterMethodNameToID()
+   Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to
+	G2 windows and well as WXWindows.
+   ctsim program: "Create Phantom" now shows phantom object
+   Fixed row-plot bug in if-2
+   Reworked EZPlot's multiple plot operation
+
+2.0.0-b6 - 7/22/00
+   ctsim program: improved initial size and scroll area for image
+	and projection files
+   ctsim program: added rasterization parameters, projections parameters,
+	and reconstruction parameters dialogs
+   Moved char[] static definition from header files to c++ files
+   Completely reorganized option processing in classes to improve
+	expandability and to assist ctsim graphical user interface.
+
+2.0.0-b5 - 7/17/00
+   ctsim program: Added dialog to set minimum/maximum display levels
+   Started ctsim.tex document file
+
+2.0.0-b4 - 7/13/00
+   Fixed compiler warnings at -Wall level
+   Began work on CTSim program to be graphical front-end of all functions
+   Moved current src/*.cpp to tools/*.cpp
+   Made CTSim graphical front-end's home to be src/
+
+2.0.0-b3 - 7/10/00
+   Added highly optimized backprojection method idiff3
+   Moved comparative stats to if-2 program from ifinfo
+   Fixed image display in if2img using G2 library
+   Added column-plot and row-plot options to if-2
+   Added autoselection of analytic/calculated spatial responses to SignalFilter
+   Added frequency-based preinterpolation to SignalFilter and idiff3
+	backprojection method. Currently, this technique is still under
+	development and debugging
+   Moved graphic file writing to ImageFile class from if2img program
+
+2.0.0-b2 - 7/07/00
+   Cleaned up SignalFilter class
+   Added zeropad option to pjrec
+   Added zeropad options to html and cgi files
+   Added fourier_table and rfttw filter methods
+   Added FFTW routines to use real/half-complex transformations
+
+2.0.0-b1 - 7/05/00
+   Updated trace level processing
+   Added trace level to SignalFilter
+   Fixed magnitude vs. real output bug in FFT/Fourier filter
+
+1.9.9 - 7/04/00
+   Fixed const issue with ImageFileArray
+   Fixed Array2dFile::labelsCopy()
+   Added copy constructor and assignment for Array2dFileLabel class
+   Added Timer to if-2.cpp and ifinfo.cpp
+   Added beginning of frequency-based (DFT & FFT) filter to SignalFilter
+   Added option processing for filter-method for pjrec to choose
+	between convolution, dft, & fft filtering
+   Fixed format string for EZPlot so axis labels now print
+   Added support for FFTW library
+
+1.9.8 - 6/27/2000
+   Rewrote Array2dFile class to be non-templated
+   Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open.
+   Rewrote Array2dFileLabel class to make members private, added access routines
+   Removed timedate.cpp in favor of standard C library time/date functions
+   Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim
+   Added signature tag and creation date/time to projection files
+
+1.9.7 - 6/25/2000
+   Standardized string option processing by classes. All classes use character strings
+	to select options rather than numeric constants. Added fail() and failMessage()
+	methods to verify that objects are created correctly by character strings.
+   Hid C++ assignment and copy constructors in classes that should not have assignment/copy
+   Rewrote ImageFile class
+   Started support for dmallocxx library, not finished
+   Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp)
+   Updated ifinfo to show comparative statistics
+   Added printLabels() to Array2dFile class
+   Added printStatistics() to ImageFile class
+
+1.9.6 - 6/22/2000
+   Moved conversion filter name/id to Filter class
+   Moved conversion backprojection name/id to Backproj class
+   Added MPI broadcasting of strings
+
+1.9.5 - 6/21/2000
+   Merged proj_reconstr into class Projections
+   Used auto_ptr in Projections::reconstruct to make sure destructor is always called
+   Code cleanup in projections.cpp
+   Moved conversion of phantom names/id to Phantom class
+
+1.9.4 - 6/20/2000
+   Converted projection files to C++ library with frnetorderstream
+   Converted image files to C++ library with frnetorderstream
+   Converted filter and convolution to object-oriented code
+   Changed default image file to float from double -- Changable in imagefile.h
+   Optimized image file writing on little-endian architectures
+   Updated README and INSTALL
+
+1.9.3 - 6/19/2000
+   Reorganized source files
+   MPI bug fixed to phm2pj.cpp
+
+1.9.2 - 6/18/2000
+   Reorganized include files
+   Fixed const pointers in strfuncs
+
+1.9.1 - 6/16/2000
+   Renamed directories, moved source files, combined source files
+   to change from 6 libraries to 3 libraries (libctsim, libctsupport,
+   and libctgraphics)
+
+1.9.0 - 6/15/2000
+   Skip versions to make version 2.0 the first fully C++ version
+   Renamed Raysums to Projections throughout files
+   Renamed Detector to Scanner
+   Converted Scanner and Projecions to full object-oriented
+
+0.6.1 - 6/12/2000
+   Converted Phantom and PhantomElements to Object-Oriented
+   Converted Detector to Object-Oriented
+
+0.6.0-b3 - 6/10/2000
+   Improved Integer backprojection method
+	Fixed nearest neighbor to be truly nearest neighbor
+	Made linear interpolation more integer arithmetic -> speed improvement
+   Finished converting all C files to C++
+   Converted all use of malloc/free to C++ new/delete
+   Began object-oriented conversion of Phantom and Projection structures
+
+0.6.0-b2 - 6/8/2000
+   Converted MPI data structures to C++ object
+   Made ImageFile directly inherit from Array2dFile
+
+0.6.0-b1 - 6/6/2000
+   First C++ conversions
+   Portable IF (image file) format implemented with objects (SDF removed)
+	- Now all data files are cross-platform compatible
+   Converted from MPI to MPI++
+   Converted backprojection to object-oriented
+   Removed MTX from libkmath as no longer need -- replaced with C++ matrices
+
+0.5.4 - 6/4/2000
+   Simpilifed endian handling
+
+0.5.4-b3 - 6/1/2000
+   Added support for 64-bit (IA64) CPU
+   Removed broken B-spline interpolation
+   Added support for cygwin platform under Windows 2000
+   Added support for 16-bit PNG graphics
+
+0.5.4-b2 - 5/16/2000
+   Added compile-time configuration of endian order
+
+0.5.4-b1 - 5/14/2000
+   Modified the raysum file format to be platform independent
+
+0.5.3 - 5/11/2000
+   Added Microsoft VC compatibility
+   Cleaned up compilation warnings in libgraph
+
+0.5.2-b5 - 5/7/2000
+   Continued conversion to ANSI C
+   Removed old CRT routines
+
+0.5.2-b4 - 5/4/2000
+   Renamed pictures to phantoms, objects to phantom elements
+   Continued code cleanup
+
+0.5.2-b3 - 4/30/200
+    More code cleanup with reorganizing libraries
+    Added --log and --exp to sdf-1
+    Allowed negative numbers for window levels in CGI interface
+
+0.5.2-b2 - 4/30/200
+    Continued code cleanup
+
+0.5.2-b1 - 4/29/2000
+    Fixed a few MPI bugs
+    Better documented, coded raysum in-memory on on-disk options
+
+0.5.1 - 4/28/2000
+    Cleaned out library that wasn't being used by CTSim
+    Modified ctsim.cgi to read in configuration file ctsim.conf
+
+0.5.0 - 4/27/2000
+    First open source distribution for GNU/Linux
+
+6/1999
+  Converted to GNU/Linux
+  added MPI support via LAM library
+
+1983-84
+  Developed under MS-DOS and IBM EGA graphics
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..4b74653
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,383 @@
+CTSim Installation
+==================
+
+Additional Libraries Recommended
+--------------------------------
+
+zlib (ftp://ftp.uu.net/pub/archiving/zip/zlib)
+  Tested with version 1.13
+  This library is required for libpng (see below)
+
+libpng (ftp://ftp.uu.net/graphics/png/src)
+  Version 1.0.3 or greater is required. Version 0.89 definitely will
+  not work.
+
+fftw (http://www.fftw.org)
+  Fastest Fourier Transform in the West. Currently, this library is the 
+  only FFT routines used by CTSim.
+
+wxWindows (http://www.wxwindows.org)
+  Used by CTSim (src/*) graphic front-end. Platform independent for
+  GTK, Motif, and Windows32 API's. Requires version 2.4.0 or later.
+
+ctn (http://www.erl.wustl.edu/DICOM/ctn.html)
+  Used by CTSim for DICOM file import and export
+
+lam (http://www.mpi.nd.edu/lam/)
+  There is support is MPI clustering. I use this code at home for my
+  beowulf cluster.
+
+dmalloc (http://www.dmalloc.com)
+  This adds debugging to memory allocation routines
+
+perl (http://www.perl.org)
+apache (http://www.apache.org)
+  There is support for web-driven CT Simulation. To use this, the
+  --with-cgibin-dir=..., --with-cgibin-url=..., --with-webdata-dir=...,
+  --with-webdata-url=..., and --with-html-dir=...  must be set.
+
+readline (http://www.gnu.org)
+  Used for provide command-line editing in ctsimtext shell
+
+
+CTSim Specific Configuration Help
+---------------------------------
+
+  --enable-verbose-warnings
+                          Enable verbose compiler warnings.
+  --enable-debug          Turn on debugging
+  --with-lam[=PATH]       Set path of LAM MPI 
+  --with-cgibin-dir=PATH  Set path of CGI binaries directory 
+  --with-cgibin-url=PATH  Set URL path of CGI binaries 
+  --with-webdata-dir=PATH Set path of webdata
+  --with-webdata-url=PATH Set URL path of webdata
+  --with-html-dir=PATH    Set directory of html files
+  --with-x                use the X Window System for interactive graphics
+
+
+PLATFORM SPECIFIC NOTES
+=======================
+
+Platforms Tested
+----------------
+
+Recent development is with GNU/Linux. I have tested compilation on
+FreeBSD v4.0, BSD/OS v3.0, and Solaris v8 (gcc 32-bit), and IA64 (gcc)
+, and Microsoft Windows 2000 (Visual C++ 6.0, cygwin, and mingw32).
+
+Visual C++ Installation
+-----------------------
+Run make.bat from the root directory (Note, make.bat is out of date
+and is currently broken)
+
+CYGWIN v1.1.0
+-------------
+The file /usr/i686-pc-wygwin/include/cygwin/in.h has a bug. The line
+      struct in_addr6 sin6_addr;
+should be deleted.
+
+getopt_long appears broken, configure.in checks for cygwin to use
+bundled version of getopt_long.
+
+
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+
+   This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+   Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.
+
+     Running `configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+  6. Often, you can also type `make uninstall' to remove the installed
+     files again.
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you can use GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple `-arch' options to the
+compiler but only a single `-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the `lipo' tool if you have problems.
+
+Installation Names
+==================
+
+   By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'.  So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+   On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS
+     KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+   Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug.  Until the bug is fixed you can use this workaround:
+
+     CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+     Print a summary of all of the options to `configure', and exit.
+
+`--help=short'
+`--help=recursive'
+     Print a summary of the options unique to this package's
+     `configure', and exit.  The `short' variant lists options used
+     only in the top level, while the `recursive' variant lists options
+     also present in any nested packages.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--prefix=DIR'
+     Use DIR as the installation prefix.  *Note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
+
+`--no-create'
+`-n'
+     Run the configure checks, but stop before creating any output
+     files.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..08d112a
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,653 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+srcdir = .
+top_srcdir = .
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+	TODO config.guess config.sub depcomp install-sh missing \
+	mkinstalldirs
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = man libctsupport libctsim html cgi-bin include getopt \
+	libctgraphics src tools helical
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+#EXTRA_DIRS1 = 
+EXTRA_DIRS1 = getopt
+#EXTRA_DIRS2 = 
+EXTRA_DIRS2 = libctgraphics
+#EXTRA_DIRS3 = 
+EXTRA_DIRS3 = src
+SUBDIRS = man libctsupport libctsim  html cgi-bin include $(EXTRA_DIRS1) $(EXTRA_DIRS2) $(EXTRA_DIRS3) tools helical
+EXTRA_DIST = acsite.m4 make.bat msvc/ctsim.dsw msvc/ctsimtext/ctsimtext.dsp msvc/libctsim/libctsim.dsp msvc/ctsim/ctsim.dsp
+CLEANFILES = docs/html/\* config.log config.status configure.in config.h stamp-h1
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+	@:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: # $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkdir_p) $(distdir)/cgi-bin $(distdir)/helical $(distdir)/html $(distdir)/msvc $(distdir)/msvc/ctsim $(distdir)/msvc/ctsimtext $(distdir)/msvc/libctsim $(distdir)/tools
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+	check-am clean clean-generic clean-local clean-recursive ctags \
+	ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \
+	dist-tarZ dist-zip distcheck distclean distclean-generic \
+	distclean-hdr distclean-recursive distclean-tags \
+	distcleancheck distdir distuninstallcheck dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic maintainer-clean-recursive \
+	mostlyclean mostlyclean-generic mostlyclean-recursive pdf \
+	pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-info-am
+
+clean-local:
+	rm -rf docs/html
+
+#install-data-hook:
+#	test -d $(datadir) || mkdir -p $(datadir) && chmod 0755 $(datadir)
+#	install -g root -o root -m 0644 docs/ctsim.htb $(datadir)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..93a7c98
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,34 @@
+if INCLUDED_GETOPT_LONG
+EXTRA_DIRS1=getopt
+else
+EXTRA_DIRS1=
+endif
+
+if HAVE_SGP
+EXTRA_DIRS2=libctgraphics
+else
+EXTRA_DIRS2=
+endif
+
+if HAVE_WXWINDOWS
+EXTRA_DIRS3=src
+else
+EXTRA_DIRS3=
+endif
+
+SUBDIRS=man libctsupport libctsim  html cgi-bin include $(EXTRA_DIRS1) $(EXTRA_DIRS2) $(EXTRA_DIRS3) tools helical
+
+EXTRA_DIST=acsite.m4 make.bat msvc/ctsim.dsw msvc/ctsimtext/ctsimtext.dsp msvc/libctsim/libctsim.dsp msvc/ctsim/ctsim.dsp
+
+CLEANFILES=docs/html/\* config.log config.status configure.in config.h stamp-h1
+clean-local:
+	rm -rf docs/html
+
+#install-data-hook:
+#	test -d $(datadir) || mkdir -p $(datadir) && chmod 0755 $(datadir)
+#	install -g root -o root -m 0644 docs/ctsim.htb $(datadir)
+
+
+
+
+
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..7ff8645
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,732 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = .
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
+	TODO config.guess config.sub depcomp install-sh missing \
+	mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir dist dist-all distcheck
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = man libctsupport libctsim html cgi-bin include getopt \
+	libctgraphics src tools helical
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d "$(distdir)" \
+    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr "$(distdir)"; }; }
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+ at INCLUDED_GETOPT_LONG_FALSE@EXTRA_DIRS1 = 
+ at INCLUDED_GETOPT_LONG_TRUE@EXTRA_DIRS1 = getopt
+ at HAVE_SGP_FALSE@EXTRA_DIRS2 = 
+ at HAVE_SGP_TRUE@EXTRA_DIRS2 = libctgraphics
+ at HAVE_WXWINDOWS_FALSE@EXTRA_DIRS3 = 
+ at HAVE_WXWINDOWS_TRUE@EXTRA_DIRS3 = src
+SUBDIRS = man libctsupport libctsim  html cgi-bin include $(EXTRA_DIRS1) $(EXTRA_DIRS2) $(EXTRA_DIRS3) tools helical
+EXTRA_DIST = acsite.m4 make.bat msvc/ctsim.dsw msvc/ctsimtext/ctsimtext.dsp msvc/libctsim/libctsim.dsp msvc/ctsim/ctsim.dsp
+CLEANFILES = docs/html/\* config.log config.status configure.in config.h stamp-h1
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@fail= failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+	@fail= failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	test -d "$(distdir)" || mkdir "$(distdir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	-test -n "$(am__skip_mode_fix)" \
+	|| find "$(distdir)" -type d ! -perm -755 \
+		-exec chmod u+rwx,go+rx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r "$(distdir)"
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-lzma: distdir
+	tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+	$(am__remove_distdir)
+
+dist-xz: distdir
+	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.lzma*) \
+	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.xz*) \
+	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	test -d $(distdir)/_build || exit 0; \
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && am__cwd=`pwd` \
+	  && $(am__cd) $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+	  && cd "$$am__cwd" \
+	  || exit 1
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+distuninstallcheck:
+	@$(am__cd) '$(distuninstallcheck_dir)' \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-local mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
+	ctags-recursive install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am am--refresh check check-am clean clean-generic \
+	clean-local ctags ctags-recursive dist dist-all dist-bzip2 \
+	dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
+	distcheck distclean distclean-generic distclean-hdr \
+	distclean-tags distcleancheck distdir distuninstallcheck dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am
+
+clean-local:
+	rm -rf docs/html
+
+#install-data-hook:
+#	test -d $(datadir) || mkdir -p $(datadir) && chmod 0755 $(datadir)
+#	install -g root -o root -m 0644 docs/ctsim.htb $(datadir)
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..d65c241
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,103 @@
+Version 4.2 Released Mar 2003
+
+* Direct Fourier Reconstructions now supported
+
+Version 4.0 Released Jan 2003
+
+* Port to wxWindows 2.4
+
+* Port to Mac OS X
+
+
+Version 3.5 Released May 2002
+
+* New reconstruction technique: Interpolate divergent beams to
+  parallel beams for faster reconstructions.
+
+* Multithreading for running length processes in background. Also
+  takes advantage of multiple-CPU's in SMP systems for speed improvements
+  with parallel processing.
+
+* Region of interest can be specified for reconstruction zooming.
+
+* Import PNG, PPM, and PGM images
+
+* DICOM file import/export
+
+* Clipboard for cutting and pasting images
+
+* Can read and reconstruct SIEMENS AR.STAR DICOM raw data files
+
+* Scattergram of T-Theta sampling. Useful for understanding divergent beam
+  scanning.
+
+* Startup-tips to help new users learn features.
+
+* Ability to place detector at any arbitray position
+
+* Histogram plotting of projection files
+
+
+Version 3.0 New Features
+
+* Greatly improved dialog boxes
+
+* Online and print manuals with context-sensitive help!
+
+* 3-d rotating views of image files
+
+* Creation of arbitrary filter images
+
+* Cubic interpolation for reconstructions
+
+* All features of command line tools are now in graphical ctsim program!
+
+* Complex-valued image files now supported, lots of image math
+ functions added including Fourier transformations
+
+* Visual and statistical image comparision functions
+
+* Plotting of row and column data of single and comparison images
+
+* Histogram Plotting of Image files.
+
+* Conversion of projections to polar images
+
+* Improved animation graphics
+
+* New Microsoft Windows compatible self-installer with explorer extensions 
+to CTSim files
+
+
+
+Version 2.5 of CTSim has been released!
+
+New Features of CTSim version 2.5:
+
+- Now compiles with Microsoft Visual C++.
+
+- First Microsoft Windows graphical user interface
+
+- Bug fixes and modest documentation and program improvements over version 2.0
+
+
+
+New Features of CTSim version 2.0:
+
+- Entire code-base cleaned up, re-written, and converted from C to C++.
+
+- Graphical user interface now included! Animation of projection and
+  reconstruction processes. Displays projection and image files. Uses
+  platform-independent wxWindows library so can run on UNIX and 
+  Microsoft Windows platforms.
+
+- Integrated G2 library for graphical display from command line tools
+  (UNIX only)
+
+- Added frequency-based filtering. Can provide significant speed-up
+  in reconstructions compared to convolution-based filtering.
+
+- Added highly-optimized backprojection method (idiff3)
+
+- New command-line tools added for image statistics and comparisons with
+  both text and graphical outputs.
diff --git a/README b/README
new file mode 100644
index 0000000..9146dbc
--- /dev/null
+++ b/README
@@ -0,0 +1,122 @@
+OVERVIEW
+========
+
+CTSim simulates the process of collecting tomographic X-ray data of
+phantom objects. These X-ray data through the objects are called
+projections. CTSim reconstructs the original phantom image from the
+projections using a variety of algorithms.
+
+CTSim is open-source and is covered by the GNU Public License (GPL). 
+
+Please enjoy CTSim. I'd like to hear any feedback
+
+Kevin M. Rosenberg, M.D.
+kevin at rosenberg.net
+
+
+HISTORY
+=======
+
+CTSim development began in 1983 while I was in medical school.  It was
+written using Lattice C and MS-DOS. I used 8086 assembly language to
+code convolution and backprojection routes and also to write graphics
+directly to an IBM EGA video adapter.
+
+In 1999, I ported CTsim to GNU/Linux. In April 2000, the source code 
+for CTSim was published on the Internet.
+
+In June 2000, entire code for revised and converted to C++.
+
+
+WHERE
+=====
+
+The official home for CTsim is http://www.ctsim.org.
+
+
+FEATURES
+========
+
+Several standard phantom objects are built-in. Other phantoms can be
+loaded from ASCII files.
+
+CTsim uses cross-platform compatible file formats for projection data and 
+image data.
+
+
+THE PROGRAMS
+============
+
+ctsim - a graphical user interface for most functions. This programs
+has all of the functionality of the command line tools except for
+image comparison functions.
+
+phm2if - generates an image file of a phantom object
+
+phm2pj - Simulates the collection of CT data, or projections, of a
+phantom object
+
+pjrec - Performs an CT reconstruction, also known as image
+reconstruction from projections. Reads a projection file and writes a
+SDF file.
+
+pj2if - Converts projection data to a raw sinugram image
+
+pjinfo - Show information on a projection file
+
+ifexport - Converts an image file to a variety of 8-bit and 16-bit image
+formats
+
+if1 - Performs operations on a single image file
+
+if2 - Performs operations on two image files, such as comparisons
+
+ifinfo - Show statistics and history labels of image files
+
+
+TYPICAL USAGE
+=============
+
+Graphical User Interface
+------------------------
+
+Use ctsim.
+
+
+Command Line Interface
+----------------------
+
+When evaluating CT simulation, in general, these steps are followed:
+
+Create a phantom image and viewable image file
+  phm2if ...
+  ifexport ...
+
+Simulate CT data collection and create a viewable image of raw projections
+  phm2pj ...
+  pj2if ...
+  ifexport ...
+
+Perform CT reconstruction and create viewable image file
+  pjrec ...
+  ifexport ...
+
+Display image information and comparative statistics
+  ifinfo ...
+
+There is a sample shell script installed called 'sample-ctsim.sh' 
+in the tools direction that performs the above commands.
+
+These functions can be invoked via a web interface with a CGI program 
+as described in the INSTALL file.
+
+
+COPYRIGHT
+=========
+This program is written by Kevin M. Rosenberg, M.D.
+
+It is covered by the GNU General Public License (GPL) which
+allows copying and modifying this code with restrictions. See the
+file COPYING for complete details.
+
+
diff --git a/README.msvc b/README.msvc
new file mode 100644
index 0000000..5a588cf
--- /dev/null
+++ b/README.msvc
@@ -0,0 +1,25 @@
+Guidelines for using Microsoft Visual C++ to compile CTSim
+----------------------------------------------------------
+
+A MSVC v6 workspace is located at msvc/ctsim.dsw. It references
+several projects included in this CTSim distribution (table 1).  It
+also references projects located outside of the distribution (table
+2).
+
+Table 1
+-------
+Projects inside distribution
+
+msvc\libctsim\libctsim.dsp
+msvc\pjrec\pjrec.dsp
+
+
+Table 2
+-------
+Projects outside distribution
+
+..\wx2
+..\fftw-2.1.3\
+..\fftw-2.1.3\
+..\zlib
+..\lpng108\
\ No newline at end of file
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/TODO
@@ -0,0 +1 @@
+
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000..0970c41
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,1003 @@
+# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
+[m4_warning([this file was generated for autoconf 2.67.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
+
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.11'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version.  Point them to the right macro.
+m4_if([$1], [1.11.1], [],
+      [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too.  Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.11.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 9
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 5
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`AS_DIRNAME("$mf")`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`AS_DIRNAME(["$file"])`
+      AS_MKDIR_P([$dirpart/$fdir])
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# AM_CONFIG_HEADER is obsolete.  It has been replaced by AC_CONFIG_HEADERS.
+AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 16
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.62])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+	      [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+			     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+		  [_AM_DEPENDENCIES(CC)],
+		  [define([AC_PROG_CC],
+			  defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+		  [_AM_DEPENDENCIES(CXX)],
+		  [define([AC_PROG_CXX],
+			  defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+		  [_AM_DEPENDENCIES(OBJC)],
+		  [define([AC_PROG_OBJC],
+			  defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+])
+
+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_arg=$1
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
+# From Jim Meyering
+
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless `enable' is passed literally.
+# For symmetry, `disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
+AC_DEFUN([AM_MAINTAINER_MODE],
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+[  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer],
+      [USE_MAINTAINER_MODE=$enableval],
+      [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
+  AC_MSG_RESULT([$USE_MAINTAINER_MODE])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
+  MAINT=$MAINTAINER_MODE_TRUE
+  AC_SUBST([MAINT])dnl
+]
+)
+
+AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 6
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+  [[\\/$]]* | ?:[[\\/]]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \	]]*)
+    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/benchmarks/composite-test b/benchmarks/composite-test
new file mode 100755
index 0000000..78a0dcc
--- /dev/null
+++ b/benchmarks/composite-test
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+DIR=
+
+TIME=/usr/bin/time
+
+${DIR}ctsimtext phm2if /dev/null 768 768 --phantom herman --nsample 3
+${DIR}ctsimtext phm2pj ~/t.pj 900 900 --phantom herman --geometry parallel --nray 2
+${DIR}ctsimtext pjrec ~/t.pj ~/t.if 768 768
+rm ~/t.pj
+rm ~/t.if
diff --git a/benchmarks/results b/benchmarks/results
new file mode 100644
index 0000000..cc91d31
--- /dev/null
+++ b/benchmarks/results
@@ -0,0 +1,17 @@
+Composite Test
+==============
+
+Pentium 4 2.8GHz:
+   19.6s (i386)        
+   19.6s (Pentium)      0%
+   18.7s (Pentium 3)    5%
+   14.3s (Pentium 4)   28%
+
+Athlon MP 1800+
+   23.7s (i386)
+   21.0s (Athlon)      11%
+   21.0s (Athlon-MP)   11%
+
+Opteron 250:
+   10.4s (x86_64)
+
diff --git a/cgi-bin/Makefile b/cgi-bin/Makefile
new file mode 100644
index 0000000..1d49298
--- /dev/null
+++ b/cgi-bin/Makefile
@@ -0,0 +1,370 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# cgi-bin/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = cgi-bin
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/ctsim.cgi.in $(srcdir)/ctsim.conf.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = ctsim.cgi ctsim.conf
+am__installdirs = "$(DESTDIR)$(cgibindir)"
+cgibinSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(cgibin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+cgibin_SCRIPTS = 
+EXTRA_SCRIPTS = ctsim.cgi ctsim.conf
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  cgi-bin/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  cgi-bin/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ctsim.cgi: $(top_builddir)/config.status $(srcdir)/ctsim.cgi.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ctsim.conf: $(top_builddir)/config.status $(srcdir)/ctsim.conf.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-cgibinSCRIPTS: $(cgibin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cgibindir)" || $(mkdir_p) "$(DESTDIR)$(cgibindir)"
+	@list='$(cgibin_SCRIPTS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f $$d$$p; then \
+	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	    echo " $(cgibinSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(cgibindir)/$$f'"; \
+	    $(cgibinSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(cgibindir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-cgibinSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cgibin_SCRIPTS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	  echo " rm -f '$(DESTDIR)$(cgibindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(cgibindir)/$$f"; \
+	done
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+	for dir in "$(DESTDIR)$(cgibindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cgibinSCRIPTS
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cgibinSCRIPTS uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-cgibinSCRIPTS install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am uninstall uninstall-am uninstall-cgibinSCRIPTS \
+	uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/cgi-bin/Makefile.am b/cgi-bin/Makefile.am
new file mode 100644
index 0000000..874c068
--- /dev/null
+++ b/cgi-bin/Makefile.am
@@ -0,0 +1,3 @@
+cgibin_SCRIPTS=@cgiprograms@
+EXTRA_SCRIPTS=ctsim.cgi ctsim.conf
+
diff --git a/cgi-bin/Makefile.in b/cgi-bin/Makefile.in
new file mode 100644
index 0000000..07088f1
--- /dev/null
+++ b/cgi-bin/Makefile.in
@@ -0,0 +1,421 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = cgi-bin
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/ctsim.cgi.in $(srcdir)/ctsim.conf.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = ctsim.cgi ctsim.conf
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(cgibindir)"
+SCRIPTS = $(cgibin_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+cgibin_SCRIPTS = @cgiprograms@
+EXTRA_SCRIPTS = ctsim.cgi ctsim.conf
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu cgi-bin/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu cgi-bin/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+ctsim.cgi: $(top_builddir)/config.status $(srcdir)/ctsim.cgi.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ctsim.conf: $(top_builddir)/config.status $(srcdir)/ctsim.conf.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-cgibinSCRIPTS: $(cgibin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cgibindir)" || $(MKDIR_P) "$(DESTDIR)$(cgibindir)"
+	@list='$(cgibin_SCRIPTS)'; test -n "$(cgibindir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n' \
+	    -e 'h;s|.*|.|' \
+	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+	      if (++n[d] == $(am__install_max)) { \
+		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+	    else { print "f", d "/" $$4, $$1 } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	     test -z "$$files" || { \
+	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(cgibindir)$$dir'"; \
+	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(cgibindir)$$dir" || exit $$?; \
+	     } \
+	; done
+
+uninstall-cgibinSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cgibin_SCRIPTS)'; test -n "$(cgibindir)" || exit 0; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	       sed -e 's,.*/,,;$(transform)'`; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(cgibindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(cgibindir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+	for dir in "$(DESTDIR)$(cgibindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cgibinSCRIPTS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cgibinSCRIPTS
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-cgibinSCRIPTS install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am uninstall uninstall-am uninstall-cgibinSCRIPTS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/cgi-bin/ctsim.cgi b/cgi-bin/ctsim.cgi
new file mode 100644
index 0000000..2a0a9e0
--- /dev/null
+++ b/cgi-bin/ctsim.cgi
@@ -0,0 +1,314 @@
+#!/usr/bin/perl
+# cgi-bin/ctsim.cgi.  Generated from ctsim.cgi.in by configure.
+
+use strict;
+use CGI;
+use File::Basename;
+use Fcntl ':flock';
+
+require './ctsim.conf';
+
+my $opt_d = 0;
+$ENV{'PATH'} = "$::bindir:$::lamrundir:/bin";
+
+my $fromhost = $ENV{'REMOTE_HOST'};
+
+my $gmt_start = time();
+my $gmt_end;
+my $execution_time;
+
+my %in;
+CGI::ReadParse(\%in);
+
+# Incoming variables 
+#   Phantom_Name, Phantom_Nx, Phantom_Ny, Phantom_NSample
+#   PJ_NDet, PJ_NRot, PJ_NRay, PJ_RotAngle,
+#   IR_Nx, IR_Ny, IR_Filter, IR_Filter_Param
+
+my $error = "";
+
+if ($::single_process_only > 0) {
+  my @processes = `/bin/ps -A`;
+  my $running = 0;
+  foreach my $p (@processes) {
+    if ($p =~ m/ctsimtext/) {
+      $error .= "Another online simulation is currently running.<br>You may wait a moment and then click your browser's <b>Refresh</b> button to resubmit your simulation<br>";
+      last;
+    }
+  }
+}
+
+my $Phantom_Name = FilterMetaChars($in{'Phantom_Name'});
+my $Phantom_Nx = FilterToNumber($in{'Phantom_Nx'});
+my $Phantom_Ny = FilterToNumber($in{'Phantom_Ny'});
+my $Phantom_ViewRatio = FilterToNumber($in{'Phantom_ViewRatio'});
+my $Phantom_NSample = FilterToNumber($in{'Phantom_NSample'});
+$error .= "Phantom name must not be blank<br>" if ($Phantom_Name eq "");
+$error .= "Phantom Size must be between 5 and 512<br>" if ($Phantom_Nx < 5 || $Phantom_Nx > 512 || $Phantom_Ny < 5 || $Phantom_Ny > 512);
+$error .= "Phantom NSample must be between 1 and 5<br>" if ($Phantom_NSample < 1 || $Phantom_NSample > 5);
+$error .= "View Ratio must be between 0 and 100<br>" if ($Phantom_ViewRatio <= 0 || $Phantom_ViewRatio > 100);
+
+my $PJ_Geometry = FilterMetaChars($in{'PJ_Geometry'});
+my $PJ_NDet = FilterToNumber($in{'PJ_NDet'});
+my $PJ_NRot = FilterToNumber($in{'PJ_NRot'});
+my $PJ_FocalLength = FilterToNumber($in{'PJ_FocalLength'});
+my $PJ_NRay = FilterToNumber($in{'PJ_NRay'});
+my $PJ_RotAngle = FilterToNumber($in{'PJ_RotAngle'});
+my $PJ_ScanRatio = FilterToNumber($in{'PJ_ScanRatio'});
+$error .= "Projection NDet must be between 5 and 1000<br>" if ($PJ_NDet < 5 || $PJ_NDet > 1000);
+$error .= "Projection NRot must be between 5 and 1000<br>" if ($PJ_NRot < 5 || $PJ_NRot > 1000);
+$error .= "Projection NRay must be between 1 and 5<br>" if ($PJ_NRay < 1 || $PJ_NRay > 5);
+$error .= "Projection RotAngle must be between 0.1 and 2<br>" if ($PJ_RotAngle < 0.1 || $PJ_RotAngle > 2);
+$error .= "Focal length must be between 1.01 and 10<b>" if ($PJ_FocalLength <= 1 || $PJ_FocalLength > 10);
+$error .= "Scan Ratio must be between 0 and 10<br>" if ($PJ_ScanRatio <= 0 || $PJ_ScanRatio > 10);
+
+#my $IR_Nx = FilterToNumber($in{'IR_Nx'});
+#my $IR_Ny = FilterToNumber($in{'IR_Ny'});
+my $IR_Nx = $Phantom_Nx;
+my $IR_Ny = $Phantom_Ny;
+my $IR_FilterMethod = FilterMetaChars($in{'IR_FilterMethod'});
+my $IR_Zeropad = FilterToNumber($in{'IR_Zeropad'});
+my $IR_Filter = FilterMetaChars($in{'IR_Filter'});
+my $IR_Filter_Param = FilterToNumber($in{'IR_Filter_Param'});
+my $IR_Interp = FilterMetaChars($in{'IR_Interp'});
+my $IR_Backproj = FilterMetaChars($in{'IR_Backproj'});
+
+my $Disp_Min = "auto";
+my $Disp_Max = "auto";
+$Disp_Min = FilterToNumber($in{'Disp_Min'}) if ($in{'Disp_Min'} ne "auto" && $in{'Disp_Min'} ne "");
+$Disp_Max = FilterToNumber($in{'Disp_Max'}) if ($in{'Disp_Max'} ne "auto" && $in{'Disp_Max'} ne "");
+if ($Disp_Min ne 'auto' && ! ($Disp_Min =~ /^[\d\.\-]+$/)) {
+    $error .= "Display Minimum must be 'auto' or numeric (received $Disp_Min) <br>";
+}
+if ($Disp_Max ne 'auto' && ! ($Disp_Max =~ /^[\d\.\-]+$/)) {
+    $error .= "Display Maximum must be 'auto' or numeric (received $Disp_Max) <br>";
+}
+
+my $MPI_Str = FilterMetaChars($in{'MPI'});
+my $MPI = 0;
+$MPI = 1 if ($MPI_Str eq "yes" && $::mpi_enable ne "");
+
+$error .= "IR Nx and Ny must be between 5 and 1024<br>" if ($IR_Nx < 5 || $IR_Nx > 1024 || $IR_Ny < 5 || $IR_Ny > 1024);
+$error .= "IR Filter Parameter must be between 0 and 1<br>" if ($IR_Filter_Param < 0 || $IR_Filter_Param > 1);
+
+
+my $tmpid = $$;
+my $auto_window_img = "std0.1";
+my $auto_window_diff = "std1";
+my $auto_window_pj = "full";
+my $logfile = "$::jobdir/ctsim.log";
+
+my $result_fname = "$::datadir/result-$tmpid.html";
+my $phantom_fname = "$::datadir/phantom-$tmpid.if";
+my $pj_fname = "$::datadir/pj-$tmpid.pj";
+my $ir_fname = "$::datadir/ir-$tmpid.if";
+my $pj_if_fname = "$::datadir/pj-$tmpid.if";
+my $sub_fname = "$::datadir/sub-$tmpid.if";
+my $phantom_png = "$::datadir/phantom-$tmpid.png";
+my $ir_png = "$::datadir/ir-$tmpid.png";
+my $pj_png = "$::datadir/pj-$tmpid.png";
+my $sub_png = "$::datadir/sub-$tmpid.png";
+
+my $result_url = "$::url_datadir/result-$tmpid.html";
+my $phantom_png_url = "$::url_datadir/phantom-$tmpid.png";
+my $ir_png_url = "$::url_datadir/ir-$tmpid.png";
+my $pj_png_url = "$::url_datadir/pj-$tmpid.png";
+my $sub_png_url = "$::url_datadir/sub-$tmpid.png";
+
+my $pjrec_ver = "$::bindir/ctsimtext pjrec";
+my $phm2pj_ver = "$::bindir/ctsimtext phm2pj";
+my $phm2if_ver = "$::bindir/ctsimtext phm2if";
+my $diff_ver = "$::bindir/ctsimtext if2";
+
+$pjrec_ver = "/opt/lam/bin/mpirun N N $::lamrundir/pjrec-lam" if $MPI;
+$phm2pj_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2pj-lam" if $MPI;
+$phm2if_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2if-lam" if $MPI;
+
+my $gp_cmd = "$phm2if_ver $phantom_fname $Phantom_Nx $Phantom_Ny --phantom $Phantom_Name --nsample $Phantom_NSample --view-ratio $Phantom_ViewRatio";
+my $pj_cmd = "$phm2pj_ver $pj_fname $PJ_NDet $PJ_NRot --phantom $Phantom_Name --nray $PJ_NRay --rotangle $PJ_RotAngle --geometry $PJ_Geometry --focal-length $PJ_FocalLength --view-ratio $Phantom_ViewRatio --scan-ratio $PJ_ScanRatio";
+my $pj_if_cmd = "$::bindir/pj2if $pj_fname $pj_if_fname";
+my $pjrec_cmd = "$pjrec_ver $pj_fname $ir_fname $IR_Nx $IR_Ny --filter $IR_Filter --filter-param $IR_Filter_Param --interp $IR_Interp --backproj $IR_Backproj --filter-method $IR_FilterMethod --zeropad $IR_Zeropad";
+my $sub_cmd = "$diff_ver $phantom_fname $ir_fname $sub_fname --sub";
+my $diff_cmd = "$diff_ver $phantom_fname $ir_fname --comp";
+
+my $window_options = "--auto $auto_window_img";
+if ($Disp_Min ne 'auto') {
+    $window_options .= " --min $Disp_Min";
+}
+if ($Disp_Max ne 'auto') {
+    $window_options .= " --max $Disp_Max";
+}
+
+my $png1_cmd = "$::bindir/ifexport $phantom_fname $phantom_png $window_options --stats --format png --center mode";
+my $png2_cmd = "$::bindir/ifexport $ir_fname $ir_png $window_options --stats --format png --center mode";
+my $png3_cmd = "$::bindir/ifexport $pj_if_fname $pj_png --auto $auto_window_pj --stats --format png --center mode";
+my $png4_cmd = "$::bindir/ifexport $sub_fname $sub_png --auto $auto_window_diff --stats --format png --center mode";
+
+my $title = "CTSim Results";
+
+my $out = head();
+$out .= "<HTML> <HEAD><TITLE> $title </TITLE><LINK rel=\"stylesheet\" href=\"http://www.ctsim.org/main.css\" type=\"text/css\">
+</HEAD>\n";
+$out .= "<BODY  BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\"  VLINK=\"#800020\" LINK=\"#0000FF\">\n";
+$out .= "<H1>$title</H1><HR>\n";
+
+if ($opt_d) {
+    $out .= "<H2>Commands</H2>\n";
+    $out .= "$gp_cmd<br>\n$pj_cmd<br>\n$pj_if_cmd<br>\n$pjrec_cmd<br>\n$diff_cmd<br>\n$png1_cmd<br>\n$png2_cmd<br>\n" .
+            "$png3_cmd<br>\n$png4_cmd<br>\n";
+}
+
+my $cmdout = "";
+if ($error ne "") {
+    $out .= "<FONT COLOR=\"#FF0000\">The following errors were present in your request.<br>\n";
+    $out .= "Please correct them and try submitting your request again.</FONT><br>\n";
+    $out .= "<i>$error</i>";
+} else {
+  my $gp_out;
+  my $pj_out;
+  my $pj_if_out;
+  my $pjrec_out;
+  my $sub_out;
+  my $diff_out;
+  my $png_gp_out;
+  my $png_pjrec_out;
+  my $png_pj_out;
+  my $png_sub_out;
+  $gp_out = `$gp_cmd`;
+  if (-s $phantom_fname) {
+    $pj_out .= `$pj_cmd`;
+    $png_gp_out .= `$png1_cmd`;
+    if (-s $pj_fname) {
+      $pj_if_out .= `$pj_if_cmd`;
+      $png_pj_out .= `$png3_cmd`;
+      $pjrec_out .= `$pjrec_cmd`;
+      if (-s $ir_fname) {
+	$png_pjrec_out .= `$png2_cmd`;
+	$sub_out .= `$sub_cmd`;
+	$diff_out .= `$diff_cmd`;
+	$png_sub_out .= `$png4_cmd`;
+      }
+    }
+  }
+  # Delete image files and projection files
+  unlink($phantom_fname);
+  unlink($ir_fname);
+  unlink($pj_fname);
+  unlink($pj_if_fname);
+  unlink($sub_fname);
+
+  $cmdout = "$gp_cmd\n $gp_out $pj_cmd\n $pj_out $pj_if_cmd\n $pj_if_out $pjrec_cmd\n $pjrec_out $diff_cmd\n $diff_out $png1_cmd\n $png_gp_out $png2_cmd\n $png_pjrec_out $png3_cmd\n $png_pj_out $png4_cmd\n $png_sub_out";
+  if (open(LOGFILE,">> $logfile")) {
+    flock(LOGFILE,LOCK_EX);
+    seek(LOGFILE, 0, 2);
+    print LOGFILE "Client Address: $ENV{'REMOTE_ADDR'}\n";
+    print LOGFILE "Job $tmpid\n";
+    print LOGFILE $cmdout;
+    print LOGFILE "----------------------------------------------------\n";
+    flock(LOGFILE,LOCK_UN);
+    close(LOGFILE);
+  }
+  $gmt_end = time();
+  $execution_time = $gmt_end - $gmt_start;
+  if ($opt_d) {
+    $out .= "<H3>Command Output</H3>$cmdout<HR>\n";
+  }
+  my $png_gp_out_html = $png_gp_out;
+  my $png_pjrec_out_html = $png_pjrec_out;
+  my $png_pj_out_html = $png_pj_out;
+  my $png_sub_out_html = $png_sub_out;
+  $png_gp_out_html =~ s/\n/<br>/gms;
+  $png_pjrec_out_html =~ s/\n/<br>/gms;
+  $png_pj_out_html =~ s/\n/<br>/gms;
+  $png_sub_out_html =~ s/\n/<br>/gms;
+  $out .= "<TABLE><TR><TD><b>Phantom Image</b></TD><TD><b>Reconstructed Image</b></TD></TR>\n";
+  $out .= "<TR><TD><IMG SRC=\"$phantom_png_url\"><br><FONT SIZE=1>$png_gp_out</FONT></TD>\n";
+  $out .= "<TD><IMG SRC=\"$ir_png_url\"><br><FONT SIZE=1>$png_pjrec_out</FONT></TD></TR>\n";
+  $out .= "<TR><TD><b>Projection Sinogram</b></TD><TD><b>Reconstruction Error</b></TD></TR>\n";
+  $out .= "<TR><TD><IMG SRC=\"$pj_png_url\"><br><FONT SIZE=1>$png_pj_out</FONT></TD>\n";
+  $out .= "<TD><IMG SRC=\"$sub_png_url\"><br><FONT SIZE=2>$sub_out</FONT><br><FONT SIZE=1>$png_sub_out</FONT></TD></TR>\n";
+  $out .= "</TABLE>";
+  $out .= "<p><b>Error Measurements</b><br>";
+  $out .= "$diff_out";
+  $out .= "<p>Execution time: $execution_time seconds\n";
+}
+
+$out .= "<HR>\n";
+$out .= "Specify another <a href=\"http://www.ctsim.org/simulate.shtml\">simulation</a>.<br>";
+$out .= "Return to CTSim's <A HREF=\"http://www.ctsim.org\">home</a>.<br>\n";
+$out .= "</BODY> </HTML>";
+$out .= "\n";
+
+if (open(OUTFILE,"> $result_fname"))
+{
+    flock(OUTFILE,LOCK_EX);
+    print OUTFILE $out;
+    flock(OUTFILE,LOCK_UN);
+    close OUTFILE;
+    print "Location: $result_url\n\n";
+}
+else
+{
+    print "Content-type: text/plain\n\n";
+    print "The simulator was unable to create an result file.\n";
+}
+if (open(JOBFILES,"> $::jobdir/$tmpid"))
+{
+    flock(JOBFILES,LOCK_EX);
+    print JOBFILES "execution_time=$execution_time\n";
+    print JOBFILES "Phantom_Name=$Phantom_Name\n";
+    print JOBFILES "Phantom_Nx=$Phantom_Nx\n";
+    print JOBFILES "Phantom_Ny=$Phantom_Nx\n";
+    print JOBFILES "Phantom_NSample=$Phantom_NSample\n";
+    print JOBFILES "PJ_NDet=$PJ_NDet\n";
+    print JOBFILES "PJ_NRot=$PJ_NRot\n";
+    print JOBFILES "PJ_NRay=$PJ_NRay\n";
+    print JOBFILES "PJ_RotAngle=$PJ_RotAngle\n";
+    print JOBFILES "IR_Nx=$IR_Nx\n";
+    print JOBFILES "IR_Ny=$IR_Ny\n";
+    print JOBFILES "IR_Interp=$IR_Interp\n";
+    print JOBFILES "IR_Filter=$IR_Filter\n";
+    print JOBFILES "IR_Filter_Param=$IR_Filter_Param\n";
+    print JOBFILES "IR_Backproj=$IR_Backproj\n";
+    print JOBFILES "Disp_Min=$Disp_Min\n";
+    print JOBFILES "Disp_Max=$Disp_Max\n";
+    print JOBFILES "MPI=$MPI\n";
+    print JOBFILES "Files=$result_fname,$phantom_fname,$pj_fname,$ir_fname,$phantom_png,$ir_png,$pj_if_fname,$pj_png\n" if ($error eq "");
+    printf JOBFILES "cmdout=$cmdout\n";
+    flock(JOBFILES,LOCK_UN);
+    close JOBFILES;
+}
+
+
+exit;
+
+
+sub internal_error
+{
+  my $out = head();
+  $out .= "<H1>Internal error</H1>
+  Please notify <A HREF=mailto:webmaster\@med-info.com>webmaster\@med-info.com</A>
+  </BODY>";
+  print $out;
+  exit;
+}
+
+sub head
+{
+#  "Content: text/html\n\n";
+}
+
+
+sub FilterMetaChars
+{
+   my $var = pop(@_);
+   $var =~ /^([-\w]+)$/;  
+   $1;
+}
+
+sub FilterToNumber
+{
+   my $var = pop(@_);
+   $var =~ /^(\-*\d*\.*\d*)$/;  
+   $1;
+}
diff --git a/cgi-bin/ctsim.cgi.in b/cgi-bin/ctsim.cgi.in
new file mode 100644
index 0000000..49d9435
--- /dev/null
+++ b/cgi-bin/ctsim.cgi.in
@@ -0,0 +1,314 @@
+#!/usr/bin/perl
+# @configure_input@
+
+use strict;
+use CGI;
+use File::Basename;
+use Fcntl ':flock';
+
+require './ctsim.conf';
+
+my $opt_d = 0;
+$ENV{'PATH'} = "$::bindir:$::lamrundir:/bin";
+
+my $fromhost = $ENV{'REMOTE_HOST'};
+
+my $gmt_start = time();
+my $gmt_end;
+my $execution_time;
+
+my %in;
+CGI::ReadParse(\%in);
+
+# Incoming variables 
+#   Phantom_Name, Phantom_Nx, Phantom_Ny, Phantom_NSample
+#   PJ_NDet, PJ_NRot, PJ_NRay, PJ_RotAngle,
+#   IR_Nx, IR_Ny, IR_Filter, IR_Filter_Param
+
+my $error = "";
+
+if ($::single_process_only > 0) {
+  my @processes = `/bin/ps -A`;
+  my $running = 0;
+  foreach my $p (@processes) {
+    if ($p =~ m/ctsimtext/) {
+      $error .= "Another online simulation is currently running.<br>You may wait a moment and then click your browser's <b>Refresh</b> button to resubmit your simulation<br>";
+      last;
+    }
+  }
+}
+
+my $Phantom_Name = FilterMetaChars($in{'Phantom_Name'});
+my $Phantom_Nx = FilterToNumber($in{'Phantom_Nx'});
+my $Phantom_Ny = FilterToNumber($in{'Phantom_Ny'});
+my $Phantom_ViewRatio = FilterToNumber($in{'Phantom_ViewRatio'});
+my $Phantom_NSample = FilterToNumber($in{'Phantom_NSample'});
+$error .= "Phantom name must not be blank<br>" if ($Phantom_Name eq "");
+$error .= "Phantom Size must be between 5 and 512<br>" if ($Phantom_Nx < 5 || $Phantom_Nx > 512 || $Phantom_Ny < 5 || $Phantom_Ny > 512);
+$error .= "Phantom NSample must be between 1 and 5<br>" if ($Phantom_NSample < 1 || $Phantom_NSample > 5);
+$error .= "View Ratio must be between 0 and 100<br>" if ($Phantom_ViewRatio <= 0 || $Phantom_ViewRatio > 100);
+
+my $PJ_Geometry = FilterMetaChars($in{'PJ_Geometry'});
+my $PJ_NDet = FilterToNumber($in{'PJ_NDet'});
+my $PJ_NRot = FilterToNumber($in{'PJ_NRot'});
+my $PJ_FocalLength = FilterToNumber($in{'PJ_FocalLength'});
+my $PJ_NRay = FilterToNumber($in{'PJ_NRay'});
+my $PJ_RotAngle = FilterToNumber($in{'PJ_RotAngle'});
+my $PJ_ScanRatio = FilterToNumber($in{'PJ_ScanRatio'});
+$error .= "Projection NDet must be between 5 and 1000<br>" if ($PJ_NDet < 5 || $PJ_NDet > 1000);
+$error .= "Projection NRot must be between 5 and 1000<br>" if ($PJ_NRot < 5 || $PJ_NRot > 1000);
+$error .= "Projection NRay must be between 1 and 5<br>" if ($PJ_NRay < 1 || $PJ_NRay > 5);
+$error .= "Projection RotAngle must be between 0.1 and 2<br>" if ($PJ_RotAngle < 0.1 || $PJ_RotAngle > 2);
+$error .= "Focal length must be between 1.01 and 10<b>" if ($PJ_FocalLength <= 1 || $PJ_FocalLength > 10);
+$error .= "Scan Ratio must be between 0 and 10<br>" if ($PJ_ScanRatio <= 0 || $PJ_ScanRatio > 10);
+
+#my $IR_Nx = FilterToNumber($in{'IR_Nx'});
+#my $IR_Ny = FilterToNumber($in{'IR_Ny'});
+my $IR_Nx = $Phantom_Nx;
+my $IR_Ny = $Phantom_Ny;
+my $IR_FilterMethod = FilterMetaChars($in{'IR_FilterMethod'});
+my $IR_Zeropad = FilterToNumber($in{'IR_Zeropad'});
+my $IR_Filter = FilterMetaChars($in{'IR_Filter'});
+my $IR_Filter_Param = FilterToNumber($in{'IR_Filter_Param'});
+my $IR_Interp = FilterMetaChars($in{'IR_Interp'});
+my $IR_Backproj = FilterMetaChars($in{'IR_Backproj'});
+
+my $Disp_Min = "auto";
+my $Disp_Max = "auto";
+$Disp_Min = FilterToNumber($in{'Disp_Min'}) if ($in{'Disp_Min'} ne "auto" && $in{'Disp_Min'} ne "");
+$Disp_Max = FilterToNumber($in{'Disp_Max'}) if ($in{'Disp_Max'} ne "auto" && $in{'Disp_Max'} ne "");
+if ($Disp_Min ne 'auto' && ! ($Disp_Min =~ /^[\d\.\-]+$/)) {
+    $error .= "Display Minimum must be 'auto' or numeric (received $Disp_Min) <br>";
+}
+if ($Disp_Max ne 'auto' && ! ($Disp_Max =~ /^[\d\.\-]+$/)) {
+    $error .= "Display Maximum must be 'auto' or numeric (received $Disp_Max) <br>";
+}
+
+my $MPI_Str = FilterMetaChars($in{'MPI'});
+my $MPI = 0;
+$MPI = 1 if ($MPI_Str eq "yes" && $::mpi_enable ne "");
+
+$error .= "IR Nx and Ny must be between 5 and 1024<br>" if ($IR_Nx < 5 || $IR_Nx > 1024 || $IR_Ny < 5 || $IR_Ny > 1024);
+$error .= "IR Filter Parameter must be between 0 and 1<br>" if ($IR_Filter_Param < 0 || $IR_Filter_Param > 1);
+
+
+my $tmpid = $$;
+my $auto_window_img = "std0.1";
+my $auto_window_diff = "std1";
+my $auto_window_pj = "full";
+my $logfile = "$::jobdir/ctsim.log";
+
+my $result_fname = "$::datadir/result-$tmpid.html";
+my $phantom_fname = "$::datadir/phantom-$tmpid.if";
+my $pj_fname = "$::datadir/pj-$tmpid.pj";
+my $ir_fname = "$::datadir/ir-$tmpid.if";
+my $pj_if_fname = "$::datadir/pj-$tmpid.if";
+my $sub_fname = "$::datadir/sub-$tmpid.if";
+my $phantom_png = "$::datadir/phantom-$tmpid.png";
+my $ir_png = "$::datadir/ir-$tmpid.png";
+my $pj_png = "$::datadir/pj-$tmpid.png";
+my $sub_png = "$::datadir/sub-$tmpid.png";
+
+my $result_url = "$::url_datadir/result-$tmpid.html";
+my $phantom_png_url = "$::url_datadir/phantom-$tmpid.png";
+my $ir_png_url = "$::url_datadir/ir-$tmpid.png";
+my $pj_png_url = "$::url_datadir/pj-$tmpid.png";
+my $sub_png_url = "$::url_datadir/sub-$tmpid.png";
+
+my $pjrec_ver = "$::bindir/ctsimtext pjrec";
+my $phm2pj_ver = "$::bindir/ctsimtext phm2pj";
+my $phm2if_ver = "$::bindir/ctsimtext phm2if";
+my $diff_ver = "$::bindir/ctsimtext if2";
+
+$pjrec_ver = "/opt/lam/bin/mpirun N N $::lamrundir/pjrec-lam" if $MPI;
+$phm2pj_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2pj-lam" if $MPI;
+$phm2if_ver = "/opt/lam/bin/mpirun N N $::lamrundir/phm2if-lam" if $MPI;
+
+my $gp_cmd = "$phm2if_ver $phantom_fname $Phantom_Nx $Phantom_Ny --phantom $Phantom_Name --nsample $Phantom_NSample --view-ratio $Phantom_ViewRatio";
+my $pj_cmd = "$phm2pj_ver $pj_fname $PJ_NDet $PJ_NRot --phantom $Phantom_Name --nray $PJ_NRay --rotangle $PJ_RotAngle --geometry $PJ_Geometry --focal-length $PJ_FocalLength --view-ratio $Phantom_ViewRatio --scan-ratio $PJ_ScanRatio";
+my $pj_if_cmd = "$::bindir/pj2if $pj_fname $pj_if_fname";
+my $pjrec_cmd = "$pjrec_ver $pj_fname $ir_fname $IR_Nx $IR_Ny --filter $IR_Filter --filter-param $IR_Filter_Param --interp $IR_Interp --backproj $IR_Backproj --filter-method $IR_FilterMethod --zeropad $IR_Zeropad";
+my $sub_cmd = "$diff_ver $phantom_fname $ir_fname $sub_fname --sub";
+my $diff_cmd = "$diff_ver $phantom_fname $ir_fname --comp";
+
+my $window_options = "--auto $auto_window_img";
+if ($Disp_Min ne 'auto') {
+    $window_options .= " --min $Disp_Min";
+}
+if ($Disp_Max ne 'auto') {
+    $window_options .= " --max $Disp_Max";
+}
+
+my $png1_cmd = "$::bindir/ifexport $phantom_fname $phantom_png $window_options --stats --format png --center mode";
+my $png2_cmd = "$::bindir/ifexport $ir_fname $ir_png $window_options --stats --format png --center mode";
+my $png3_cmd = "$::bindir/ifexport $pj_if_fname $pj_png --auto $auto_window_pj --stats --format png --center mode";
+my $png4_cmd = "$::bindir/ifexport $sub_fname $sub_png --auto $auto_window_diff --stats --format png --center mode";
+
+my $title = "CTSim Results";
+
+my $out = head();
+$out .= "<HTML> <HEAD><TITLE> $title </TITLE><LINK rel=\"stylesheet\" href=\"http://www.ctsim.org/main.css\" type=\"text/css\">
+</HEAD>\n";
+$out .= "<BODY  BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\"  VLINK=\"#800020\" LINK=\"#0000FF\">\n";
+$out .= "<H1>$title</H1><HR>\n";
+
+if ($opt_d) {
+    $out .= "<H2>Commands</H2>\n";
+    $out .= "$gp_cmd<br>\n$pj_cmd<br>\n$pj_if_cmd<br>\n$pjrec_cmd<br>\n$diff_cmd<br>\n$png1_cmd<br>\n$png2_cmd<br>\n" .
+            "$png3_cmd<br>\n$png4_cmd<br>\n";
+}
+
+my $cmdout = "";
+if ($error ne "") {
+    $out .= "<FONT COLOR=\"#FF0000\">The following errors were present in your request.<br>\n";
+    $out .= "Please correct them and try submitting your request again.</FONT><br>\n";
+    $out .= "<i>$error</i>";
+} else {
+  my $gp_out;
+  my $pj_out;
+  my $pj_if_out;
+  my $pjrec_out;
+  my $sub_out;
+  my $diff_out;
+  my $png_gp_out;
+  my $png_pjrec_out;
+  my $png_pj_out;
+  my $png_sub_out;
+  $gp_out = `$gp_cmd`;
+  if (-s $phantom_fname) {
+    $pj_out .= `$pj_cmd`;
+    $png_gp_out .= `$png1_cmd`;
+    if (-s $pj_fname) {
+      $pj_if_out .= `$pj_if_cmd`;
+      $png_pj_out .= `$png3_cmd`;
+      $pjrec_out .= `$pjrec_cmd`;
+      if (-s $ir_fname) {
+	$png_pjrec_out .= `$png2_cmd`;
+	$sub_out .= `$sub_cmd`;
+	$diff_out .= `$diff_cmd`;
+	$png_sub_out .= `$png4_cmd`;
+      }
+    }
+  }
+  # Delete image files and projection files
+  unlink($phantom_fname);
+  unlink($ir_fname);
+  unlink($pj_fname);
+  unlink($pj_if_fname);
+  unlink($sub_fname);
+
+  $cmdout = "$gp_cmd\n $gp_out $pj_cmd\n $pj_out $pj_if_cmd\n $pj_if_out $pjrec_cmd\n $pjrec_out $diff_cmd\n $diff_out $png1_cmd\n $png_gp_out $png2_cmd\n $png_pjrec_out $png3_cmd\n $png_pj_out $png4_cmd\n $png_sub_out";
+  if (open(LOGFILE,">> $logfile")) {
+    flock(LOGFILE,LOCK_EX);
+    seek(LOGFILE, 0, 2);
+    print LOGFILE "Client Address: $ENV{'REMOTE_ADDR'}\n";
+    print LOGFILE "Job $tmpid\n";
+    print LOGFILE $cmdout;
+    print LOGFILE "----------------------------------------------------\n";
+    flock(LOGFILE,LOCK_UN);
+    close(LOGFILE);
+  }
+  $gmt_end = time();
+  $execution_time = $gmt_end - $gmt_start;
+  if ($opt_d) {
+    $out .= "<H3>Command Output</H3>$cmdout<HR>\n";
+  }
+  my $png_gp_out_html = $png_gp_out;
+  my $png_pjrec_out_html = $png_pjrec_out;
+  my $png_pj_out_html = $png_pj_out;
+  my $png_sub_out_html = $png_sub_out;
+  $png_gp_out_html =~ s/\n/<br>/gms;
+  $png_pjrec_out_html =~ s/\n/<br>/gms;
+  $png_pj_out_html =~ s/\n/<br>/gms;
+  $png_sub_out_html =~ s/\n/<br>/gms;
+  $out .= "<TABLE><TR><TD><b>Phantom Image</b></TD><TD><b>Reconstructed Image</b></TD></TR>\n";
+  $out .= "<TR><TD><IMG SRC=\"$phantom_png_url\"><br><FONT SIZE=1>$png_gp_out</FONT></TD>\n";
+  $out .= "<TD><IMG SRC=\"$ir_png_url\"><br><FONT SIZE=1>$png_pjrec_out</FONT></TD></TR>\n";
+  $out .= "<TR><TD><b>Projection Sinogram</b></TD><TD><b>Reconstruction Error</b></TD></TR>\n";
+  $out .= "<TR><TD><IMG SRC=\"$pj_png_url\"><br><FONT SIZE=1>$png_pj_out</FONT></TD>\n";
+  $out .= "<TD><IMG SRC=\"$sub_png_url\"><br><FONT SIZE=2>$sub_out</FONT><br><FONT SIZE=1>$png_sub_out</FONT></TD></TR>\n";
+  $out .= "</TABLE>";
+  $out .= "<p><b>Error Measurements</b><br>";
+  $out .= "$diff_out";
+  $out .= "<p>Execution time: $execution_time seconds\n";
+}
+
+$out .= "<HR>\n";
+$out .= "Specify another <a href=\"http://www.ctsim.org/simulate.shtml\">simulation</a>.<br>";
+$out .= "Return to CTSim's <A HREF=\"http://www.ctsim.org\">home</a>.<br>\n";
+$out .= "</BODY> </HTML>";
+$out .= "\n";
+
+if (open(OUTFILE,"> $result_fname"))
+{
+    flock(OUTFILE,LOCK_EX);
+    print OUTFILE $out;
+    flock(OUTFILE,LOCK_UN);
+    close OUTFILE;
+    print "Location: $result_url\n\n";
+}
+else
+{
+    print "Content-type: text/plain\n\n";
+    print "The simulator was unable to create an result file.\n";
+}
+if (open(JOBFILES,"> $::jobdir/$tmpid"))
+{
+    flock(JOBFILES,LOCK_EX);
+    print JOBFILES "execution_time=$execution_time\n";
+    print JOBFILES "Phantom_Name=$Phantom_Name\n";
+    print JOBFILES "Phantom_Nx=$Phantom_Nx\n";
+    print JOBFILES "Phantom_Ny=$Phantom_Nx\n";
+    print JOBFILES "Phantom_NSample=$Phantom_NSample\n";
+    print JOBFILES "PJ_NDet=$PJ_NDet\n";
+    print JOBFILES "PJ_NRot=$PJ_NRot\n";
+    print JOBFILES "PJ_NRay=$PJ_NRay\n";
+    print JOBFILES "PJ_RotAngle=$PJ_RotAngle\n";
+    print JOBFILES "IR_Nx=$IR_Nx\n";
+    print JOBFILES "IR_Ny=$IR_Ny\n";
+    print JOBFILES "IR_Interp=$IR_Interp\n";
+    print JOBFILES "IR_Filter=$IR_Filter\n";
+    print JOBFILES "IR_Filter_Param=$IR_Filter_Param\n";
+    print JOBFILES "IR_Backproj=$IR_Backproj\n";
+    print JOBFILES "Disp_Min=$Disp_Min\n";
+    print JOBFILES "Disp_Max=$Disp_Max\n";
+    print JOBFILES "MPI=$MPI\n";
+    print JOBFILES "Files=$result_fname,$phantom_fname,$pj_fname,$ir_fname,$phantom_png,$ir_png,$pj_if_fname,$pj_png\n" if ($error eq "");
+    printf JOBFILES "cmdout=$cmdout\n";
+    flock(JOBFILES,LOCK_UN);
+    close JOBFILES;
+}
+
+
+exit;
+
+
+sub internal_error
+{
+  my $out = head();
+  $out .= "<H1>Internal error</H1>
+  Please notify <A HREF=mailto:webmaster\@med-info.com>webmaster\@med-info.com</A>
+  </BODY>";
+  print $out;
+  exit;
+}
+
+sub head
+{
+#  "Content: text/html\n\n";
+}
+
+
+sub FilterMetaChars
+{
+   my $var = pop(@_);
+   $var =~ /^([-\w]+)$/;  
+   $1;
+}
+
+sub FilterToNumber
+{
+   my $var = pop(@_);
+   $var =~ /^(\-*\d*\.*\d*)$/;  
+   $1;
+}
diff --git a/cgi-bin/ctsim.conf b/cgi-bin/ctsim.conf
new file mode 100644
index 0000000..dd2c3ef
--- /dev/null
+++ b/cgi-bin/ctsim.conf
@@ -0,0 +1,11 @@
+# cgi-bin/ctsim.conf.  Generated from ctsim.conf.in by configure.
+
+$::bindir = "/usr/local/bin";
+$::lamrundir = "/usr/local/bin";
+$::jobdir = "";
+$::datadir = "";
+$::url_datadir = "";
+$::mpi_enable = "";
+$::single_process_only = 1;
+
+1;
diff --git a/cgi-bin/ctsim.conf.in b/cgi-bin/ctsim.conf.in
new file mode 100644
index 0000000..42b88f5
--- /dev/null
+++ b/cgi-bin/ctsim.conf.in
@@ -0,0 +1,11 @@
+# @configure_input@
+
+$::bindir = "@prefix@/bin";
+$::lamrundir = "@prefix@/bin";
+$::jobdir = "@webdatadir@";
+$::datadir = "@webdatadir@";
+$::url_datadir = "@webdataurl@";
+$::mpi_enable = "@mpienable@";
+$::single_process_only = 1;
+
+1;
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000..e3a2116
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1533 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+#   Free Software Foundation, Inc.
+
+timestamp='2009-06-10'
+
+# This file 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    sh5el) machine=sh5le-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep -q __ELF__
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    *:SolidBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    s390x:SunOS:*:*)
+	echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+	eval $set_cc_for_build
+	SUN_ARCH="i386"
+	# If there is a compiler, see if it is configured for 64-bit objects.
+	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	# This test works for both compilers.
+	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		grep IS_64BIT_ARCH >/dev/null
+	    then
+		SUN_ARCH="x86_64"
+	    fi
+	fi
+	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[456])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep -q __LP64__
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	case ${UNAME_MACHINE} in
+	    pc98)
+		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    amd64)
+		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	    *)
+		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	esac
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    *:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    *:Interix*:[3456]*)
+    	case ${UNAME_MACHINE} in
+	    x86)
+		echo i586-pc-interix${UNAME_RELEASE}
+		exit ;;
+	    EM64T | authenticamd | genuineintel)
+		echo x86_64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	    IA64)
+		echo ia64-unknown-interix${UNAME_RELEASE}
+		exit ;;
+	esac ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    8664:Windows_NT:*)
+	echo x86_64-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	eval $set_cc_for_build
+	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+	    | grep -q __ARM_EABI__
+	then
+	    echo ${UNAME_MACHINE}-unknown-linux-gnu
+	else
+	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	fi
+	exit ;;
+    avr32*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:* | mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef ${UNAME_MACHINE}
+	#undef ${UNAME_MACHINE}el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=${UNAME_MACHINE}el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=${UNAME_MACHINE}
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^CPU/{
+		s: ::g
+		p
+	    }'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep -q ld.so.1
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    padre:Linux:*:*)
+	echo sparc-unknown-linux-gnu
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    xtensa*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+	    /^LIBC/{
+		s: ::g
+		p
+	    }'`"
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i586.
+	# Note: whatever this is, it MUST be the same as what config.sub
+	# prints for the "djgpp" host, or else GDB configury will decide that
+	# this is a cross-build.
+	echo i586-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+	OS_REL='.3'
+	test -r /etc/.relid \
+	    && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	    && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+	    && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
+	echo i586-pc-haiku
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-7:SUPER-UX:*:*)
+	echo sx7-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8:SUPER-UX:*:*)
+	echo sx8-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-8R:SUPER-UX:*:*)
+	echo sx8r-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+    i*86:AROS:*:*)
+	echo ${UNAME_MACHINE}-pc-aros
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000..5bf4878
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,244 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* turn on debugging */
+#undef DEBUG
+
+/* Define to 1 if you have the <assert.h> header file. */
+#undef HAVE_ASSERT_H
+
+/* Define to 1 if you have the `basename' function. */
+#undef HAVE_BASENAME
+
+/* ctn dicom library */
+#undef HAVE_CTN_DICOM
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#undef HAVE_CTYPE_H
+
+/* dmalloc library */
+#undef HAVE_DMALLOC
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+#undef HAVE_DOPRNT
+
+/* efence library */
+#undef HAVE_EFENCE
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* FFTW library */
+#undef HAVE_FFTW
+
+/* Define to 1 if you have the `getenv' function. */
+#undef HAVE_GETENV
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
+/* getopt_long library */
+#undef HAVE_GETOPT_LONG
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define to 1 if you have the `htonl' function. */
+#undef HAVE_HTONL
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `m' library (-lm). */
+#undef HAVE_LIBM
+
+/* Define to 1 if you have the <math.h> header file. */
+#undef HAVE_MATH_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* PNG library */
+#undef HAVE_PNG
+
+/* Readline library */
+#undef HAVE_READLINE
+
+/* Define to 1 if you have the <readline.h> header file. */
+#undef HAVE_READLINE_H
+
+/* Define to 1 if you have the <readline/readline.h> header file. */
+#undef HAVE_READLINE_READLINE_H
+
+/* Define to 1 if you have the `setjmp' function. */
+#undef HAVE_SETJMP
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#undef HAVE_SETJMP_H
+
+/* Define to 1 if you have the `setpriority' function. */
+#undef HAVE_SETPRIORITY
+
+/* use sgp library */
+#undef HAVE_SGP
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* sstream header */
+#undef HAVE_SSTREAM
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#undef HAVE_STDARG_H
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#undef HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strtod' function. */
+#undef HAVE_STRTOD
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the <sys/fcntl.h> header file. */
+#undef HAVE_SYS_FCNTL_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the `time' function. */
+#undef HAVE_TIME
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define to 1 if you have the `vsprintf' function. */
+#undef HAVE_VSPRINTF
+
+/* have wxthreads library */
+#undef HAVE_WXTHREADS
+
+/* wxwindows library */
+#undef HAVE_WXWINDOWS
+
+/* X11 system */
+#undef HAVE_X11
+
+/* no debugging */
+#undef NDEBUG
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `double', as computed by sizeof. */
+#undef SIZEOF_DOUBLE
+
+/* The size of `float', as computed by sizeof. */
+#undef SIZEOF_FLOAT
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* The size of `short', as computed by sizeof. */
+#undef SIZEOF_SHORT
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif
+
+/* Define to `long int' if <sys/types.h> does not define. */
+#undef off_t
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000..eb0389a
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1693 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+#   Free Software Foundation, Inc.
+
+timestamp='2009-06-11'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file 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.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  kopensolaris*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+        -bluegene*)
+	        os=-cnk
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fido | fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| lm32 \
+	| m32c | m32r | m32rle | m68000 | m68k | m88k \
+	| maxq | mb | microblaze | mcore | mep | metag \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64octeon | mips64octeonel \
+	| mips64orion | mips64orionel \
+	| mips64r5900 | mips64r5900el \
+	| mips64vr | mips64vrel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| moxie \
+	| mt \
+	| msp430 \
+	| nios | nios2 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| score \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k | z80)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* | avr32-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| lm32-* \
+	| m32c-* | m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64octeon-* | mips64octeonel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64r5900-* | mips64r5900el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| nios-* | nios2-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa*-* \
+	| ymp-* \
+	| z8k-* | z80-*)
+		;;
+	# Recognize the basic CPU types without company name, with glob match.
+	xtensa*)
+		basic_machine=$basic_machine-unknown
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aros)
+		basic_machine=i386-pc
+		os=-aros
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	blackfin)
+		basic_machine=bfin-unknown
+		os=-linux
+		;;
+	blackfin-*)
+		basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	bluegene*)
+		basic_machine=powerpc-ibm
+		os=-cnk
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+        cegcc)
+		basic_machine=arm-unknown
+		os=-cegcc
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16)
+		basic_machine=cr16-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dicos)
+		basic_machine=i686-pc
+		os=-dicos
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m68knommu)
+		basic_machine=m68k-unknown
+		os=-linux
+		;;
+	m68knommu-*)
+		basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	mingw32ce)
+		basic_machine=arm-unknown
+		os=-mingw32ce
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	parisc)
+		basic_machine=hppa-unknown
+		os=-linux
+		;;
+	parisc-*)
+		basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=-linux
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pc98)
+		basic_machine=i386-pc
+		;;
+	pc98-*)
+		basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sde)
+		basic_machine=mipsisa32-sde
+		os=-elf
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh5el)
+		basic_machine=sh5le-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tile*)
+		basic_machine=tile-unknown
+		os=-linux-gnu
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	z80-*-coff)
+		basic_machine=z80-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -kopensolaris* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* | -aros* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+	      | -openbsd* | -solidbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-dicos*)
+		os=-dicos
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+        score-*)
+		os=-elf
+		;;
+        spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+        c4x-* | tic4x-*)
+        	os=-coff
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+        mep-*)
+		os=-elf
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-cnk*|-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000..5d9dcd2
--- /dev/null
+++ b/configure
@@ -0,0 +1,9072 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.67 for CTSim 5.2.0.
+#
+# Report bugs to <ctsim-users at b9.com>.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+	   done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org and ctsim-users at b9.com
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='CTSim'
+PACKAGE_TARNAME='ctsim'
+PACKAGE_VERSION='5.2.0'
+PACKAGE_STRING='CTSim 5.2.0'
+PACKAGE_BUGREPORT='ctsim-users at b9.com'
+PACKAGE_URL='http://www.ctsim.org/'
+
+ac_unique_file="src/ctsim.cpp"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBOBJS
+lamdefs
+lamprograms
+ctlibs
+HAVE_WXWINDOWS_FALSE
+HAVE_WXWINDOWS_TRUE
+wxlibs
+wxcflags
+HAVE_SGP_FALSE
+HAVE_SGP_TRUE
+my_includes
+NO_X_FALSE
+NO_X_TRUE
+X_BASIC_LIBS
+X_TOOLKIT_LIBS
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+USE_LAM_FALSE
+USE_LAM_TRUE
+webenabled
+USE_HTML_FALSE
+USE_HTML_TRUE
+htmldata
+cgiprograms
+webdataurl
+webdatadir
+cgibinurl
+cgibindir
+mpienable
+lamdir
+DEBUG_FALSE
+DEBUG_TRUE
+INCLUDED_GETOPT_LONG_FALSE
+INCLUDED_GETOPT_LONG_TRUE
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+wxconfig
+EGREP
+GREP
+CPP
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+RANLIB
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_dependency_tracking
+enable_debug
+enable_verbose_warnings
+enable_static
+with_lam
+with_ctn
+with_mcpu
+with_cgibin_dir
+with_cgibin_url
+with_webdata_dir
+with_webdata_url
+with_html_dir
+with_x
+enable_dmalloc
+enable_efence
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+XMKMF'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures CTSim 5.2.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/ctsim]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+X features:
+  --x-includes=DIR    X include files are in DIR
+  --x-libraries=DIR   X library files are in DIR
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of CTSim 5.2.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-maintainer-mode  enable make rules and dependencies not useful
+			  (and sometimes confusing) to the casual installer
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-debug          Turn on debugging
+  --enable-verbose-warnings
+                          Enable verbose compiler warnings.
+  --enable-static
+                            Enable static executables.
+  --enable-dmalloc        Use dmalloc memory allocation
+  --enable-efence        Use ElectricFence memory allocation
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-lam=PATH         Set path of LAM MPI
+  --with-ctn=PATH         Set path of CTN DICOM library
+  --with-mcpu=CPU         Set name of CPU for gcc -mcpu
+  --with-cgibin-dir=PATH  Set path of CGI binaries directory
+  --with-cgibin-url=PATH  Set URL path of CGI binaries
+  --with-webdata-dir=PATH Set path of webdata
+  --with-webdata-url=PATH Set URL path of webdata
+  --with-html-dir=PATH    Set directory of html files
+  --with-x                use the X Window System
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+  XMKMF       Path to xmkmf, Makefile generator for X Window System
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <ctsim-users at b9.com>.
+CTSim home page: <http://www.ctsim.org/>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+CTSim configure 5.2.0
+generated by GNU Autoconf 2.67
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+	return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
+
+  fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_compute_int
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval "test \"\${$3+set}\"" = set; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## --------------------------------- ##
+## Report this to ctsim-users at b9.com ##
+## --------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+	 return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+	    return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_type
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by CTSim $as_me 5.2.0, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	$as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+am__api_version='1.11'
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+  ./ | .// | /[cC]/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    rm -rf conftest.one conftest.two conftest.dir
+	    echo one > conftest.one
+	    echo two > conftest.two
+	    mkdir conftest.dir
+	    if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+	      test -s conftest.one && test -s conftest.two &&
+	      test -s conftest.dir/conftest.one &&
+	      test -s conftest.dir/conftest.two
+	    then
+	      ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	      break 3
+	    fi
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+
+  done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5 ;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \	]*)
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
+esac
+
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t "$srcdir/configure" conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" "$LINENO" 5
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.
+# By default was `s,x,x', remove it if useless.
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\	*)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if test "${ac_cv_path_mkdir+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+	 for ac_exec_ext in '' $ac_executable_extensions; do
+	   { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+	   case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+	     'mkdir (GNU coreutils) '* | \
+	     'mkdir (coreutils) '* | \
+	     'mkdir (fileutils) '4.1*)
+	       ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+	       break 3;;
+	   esac
+	 done
+       done
+  done
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+mkdir_p="$MKDIR_P"
+case $mkdir_p in
+  [\\/$]* | ?:[\\/]*) ;;
+  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='ctsim'
+ VERSION='5.2.0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from `make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    msvisualcpp | msvcmsys)
+      # This compiler won't grok `-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5  ;;
+ esac
+
+
+# Extract the first word of "wx-config", so it can be a program name with args.
+set dummy wx-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_wxconfig+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $wxconfig in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_wxconfig="$wxconfig" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_wxconfig="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+wxconfig=$ac_cv_path_wxconfig
+if test -n "$wxconfig"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $wxconfig" >&5
+$as_echo "$wxconfig" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if test "${ac_cv_build+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if test "${ac_cv_host+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if test "${ac_cv_c_inline+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5
+$as_echo_n "checking size of short... " >&6; }
+if test "${ac_cv_sizeof_short+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (short)
+See \`config.log' for more details" "$LINENO" 5 ; }
+   else
+     ac_cv_sizeof_short=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
+$as_echo "$ac_cv_sizeof_short" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SHORT $ac_cv_sizeof_short
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+$as_echo_n "checking size of int... " >&6; }
+if test "${ac_cv_sizeof_int+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (int)
+See \`config.log' for more details" "$LINENO" 5 ; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+$as_echo "$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5 ; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5
+$as_echo_n "checking size of float... " >&6; }
+if test "${ac_cv_sizeof_float+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_float" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (float)
+See \`config.log' for more details" "$LINENO" 5 ; }
+   else
+     ac_cv_sizeof_float=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5
+$as_echo "$ac_cv_sizeof_float" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_FLOAT $ac_cv_sizeof_float
+_ACEOF
+
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5
+$as_echo_n "checking size of double... " >&6; }
+if test "${ac_cv_sizeof_double+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_double" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (double)
+See \`config.log' for more details" "$LINENO" 5 ; }
+   else
+     ac_cv_sizeof_double=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5
+$as_echo "$ac_cv_sizeof_double" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_DOUBLE $ac_cv_sizeof_double
+_ACEOF
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for deflate in -lz" >&5
+$as_echo_n "checking for deflate in -lz... " >&6; }
+if test "${ac_cv_lib_z_deflate+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char deflate ();
+int
+main ()
+{
+return deflate ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_z_deflate=yes
+else
+  ac_cv_lib_z_deflate=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_deflate" >&5
+$as_echo "$ac_cv_lib_z_deflate" >&6; }
+if test "x$ac_cv_lib_z_deflate" = x""yes; then :
+   zlib="true"
+else
+   zlib="false" ;  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zlib missing. Will need zlib for PNG support" >&5
+$as_echo "$as_me: WARNING: zlib missing. Will need zlib for PNG support" >&2;}
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if test "${ac_cv_lib_m_sin+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sin ();
+int
+main ()
+{
+return sin ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
+else
+  ac_cv_lib_m_sin=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lcurses" >&5
+$as_echo_n "checking for main in -lcurses... " >&6; }
+if test "${ac_cv_lib_curses_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcurses  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_curses_main=yes
+else
+  ac_cv_lib_curses_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_curses_main" >&5
+$as_echo "$ac_cv_lib_curses_main" >&6; }
+if test "x$ac_cv_lib_curses_main" = x""yes; then :
+  curses=true
+else
+  curses=false
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lncurses" >&5
+$as_echo_n "checking for main in -lncurses... " >&6; }
+if test "${ac_cv_lib_ncurses_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lncurses  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ncurses_main=yes
+else
+  ac_cv_lib_ncurses_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_main" >&5
+$as_echo "$ac_cv_lib_ncurses_main" >&6; }
+if test "x$ac_cv_lib_ncurses_main" = x""yes; then :
+  ncurses=true
+else
+  ncurses=false
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lreadline" >&5
+$as_echo_n "checking for main in -lreadline... " >&6; }
+if test "${ac_cv_lib_readline_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline -lcurses $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_readline_main=yes
+else
+  ac_cv_lib_readline_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_main" >&5
+$as_echo "$ac_cv_lib_readline_main" >&6; }
+if test "x$ac_cv_lib_readline_main" = x""yes; then :
+  readline=true;
+
+$as_echo "#define HAVE_READLINE 1" >>confdefs.h
+
+else
+  readline=false
+fi
+
+wxwin=false
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lgtk-x11-2.0" >&5
+$as_echo_n "checking for main in -lgtk-x11-2.0... " >&6; }
+if test "${ac_cv_lib_gtk_x11_2_0_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgtk-x11-2.0  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_gtk_x11_2_0_main=yes
+else
+  ac_cv_lib_gtk_x11_2_0_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gtk_x11_2_0_main" >&5
+$as_echo "$ac_cv_lib_gtk_x11_2_0_main" >&6; }
+if test "x$ac_cv_lib_gtk_x11_2_0_main" = x""yes; then :
+  hasx11gtk2=true
+fi
+
+if test "x$hasx11gtk2" = "x" ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Does not have X11 GTK2" >&5
+$as_echo "$as_me: Does not have X11 GTK2" >&6;}
+
+
+fi
+if test "$hasx11gtk2" = "true" ; then
+
+
+  CFLAGS="${CFLAGS} ${g76GTK_CFLAGS} ${GLIB_CFLAGS}"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lwx_gtk2u_core-2.8" >&5
+$as_echo_n "checking for main in -lwx_gtk2u_core-2.8... " >&6; }
+if test "${ac_cv_lib_wx_gtk2u_core_2_8_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lwx_gtk2u_core-2.8 -L/usr/lib64 -L/usr/lib ${GTK_LIBS} ${GLIB_LIBS}  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_wx_gtk2u_core_2_8_main=yes
+else
+  ac_cv_lib_wx_gtk2u_core_2_8_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wx_gtk2u_core_2_8_main" >&5
+$as_echo "$ac_cv_lib_wx_gtk2u_core_2_8_main" >&6; }
+if test "x$ac_cv_lib_wx_gtk2u_core_2_8_main" = x""yes; then :
+  wxwin=true; wx_gtk=true;
+$as_echo "#define HAVE_WXWINDOWS 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lwx_mac_core-2.8" >&5
+$as_echo_n "checking for main in -lwx_mac_core-2.8... " >&6; }
+if test "${ac_cv_lib_wx_mac_core_2_8_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lwx_mac_core-2.8  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_wx_mac_core_2_8_main=yes
+else
+  ac_cv_lib_wx_mac_core_2_8_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wx_mac_core_2_8_main" >&5
+$as_echo "$ac_cv_lib_wx_mac_core_2_8_main" >&6; }
+if test "x$ac_cv_lib_wx_mac_core_2_8_main" = x""yes; then :
+  wxwin=true; wx_mac=true;
+$as_echo "#define HAVE_WXWINDOWS 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fftw_malloc in -lfftw3" >&5
+$as_echo_n "checking for fftw_malloc in -lfftw3... " >&6; }
+if test "${ac_cv_lib_fftw3_fftw_malloc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfftw3 -L/usr/lib64 -L/usr/lib $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char fftw_malloc ();
+int
+main ()
+{
+return fftw_malloc ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_fftw3_fftw_malloc=yes
+else
+  ac_cv_lib_fftw3_fftw_malloc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fftw3_fftw_malloc" >&5
+$as_echo "$ac_cv_lib_fftw3_fftw_malloc" >&6; }
+if test "x$ac_cv_lib_fftw3_fftw_malloc" = x""yes; then :
+  fftw=true;
+$as_echo "#define HAVE_FFTW 1" >>confdefs.h
+
+else
+  fftw=false
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lGL" >&5
+$as_echo_n "checking for main in -lGL... " >&6; }
+if test "${ac_cv_lib_GL_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lGL -L/usr/X11R6/lib -L/usr/X11R6/lib64 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_GL_main=yes
+else
+  ac_cv_lib_GL_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_GL_main" >&5
+$as_echo "$ac_cv_lib_GL_main" >&6; }
+if test "x$ac_cv_lib_GL_main" = x""yes; then :
+  libgl=true
+else
+  libgl=false
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5
+$as_echo_n "checking for main in -lpthread... " >&6; }
+if test "${ac_cv_lib_pthread_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_pthread_main=yes
+else
+  ac_cv_lib_pthread_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
+$as_echo "$ac_cv_lib_pthread_main" >&6; }
+if test "x$ac_cv_lib_pthread_main" = x""yes; then :
+  pthread=true
+else
+  pthread=false
+fi
+
+
+if test "$zlib" = "true" ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpng" >&5
+$as_echo_n "checking for main in -lpng... " >&6; }
+if test "${ac_cv_lib_png_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpng -L/opt/local/lib -lz -lm $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_png_main=yes
+else
+  ac_cv_lib_png_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_png_main" >&5
+$as_echo "$ac_cv_lib_png_main" >&6; }
+if test "x$ac_cv_lib_png_main" = x""yes; then :
+  png=true ;
+$as_echo "#define HAVE_PNG 1" >>confdefs.h
+
+else
+  png=false
+fi
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+for ac_header in fcntl.h unistd.h getopt.h sys/fcntl.h setjmp.h stdarg.h stddef.h sys/types.h sys/stat.h string.h ctype.h math.h stdio.h netinet/in.h inttypes.h sys/param.h stdint.h stdlib.h assert.h sys/time.h sys/resource.h sys/time.h readline.h readline/readline.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if test "${ac_cv_c_const+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this.  */
+  typedef int charset[2];
+  const charset cs;
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this.  */
+    char *t;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; };
+    struct s *b; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
+else
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
+if test "x$ac_cv_type_off_t" = x""yes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define off_t long int
+_ACEOF
+
+fi
+
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = x""yes; then :
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if test "${ac_cv_struct_tm+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm tm;
+				     int *p = &tm.tm_sec;
+				     return !p;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_struct_tm=time.h
+else
+  ac_cv_struct_tm=sys/time.h
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
+$as_echo "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
+
+$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
+
+fi
+
+
+for ac_func in vprintf
+do :
+  ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
+if test "x$ac_cv_func_vprintf" = x""yes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_VPRINTF 1
+_ACEOF
+
+ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = x""yes; then :
+
+$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+
+fi
+
+fi
+done
+
+
+for ac_func in strtod strtol snprintf htonl usleep vsprintf vsnprintf basename setjmp setpriority time gettimeofday getenv
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ac_fn_c_check_func "$LINENO" "basename" "ac_cv_func_basename"
+if test "x$ac_cv_func_basename" = x""yes; then :
+
+fi
+
+ac_fn_c_check_func "$LINENO" "setjmp" "ac_cv_func_setjmp"
+if test "x$ac_cv_func_setjmp" = x""yes; then :
+
+fi
+
+ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority"
+if test "x$ac_cv_func_setpriority" = x""yes; then :
+
+fi
+
+ac_fn_c_check_func "$LINENO" "time" "ac_cv_func_time"
+if test "x$ac_cv_func_time" = x""yes; then :
+
+fi
+
+ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
+if test "x$ac_cv_func_gettimeofday" = x""yes; then :
+
+fi
+
+ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
+if test "x$ac_cv_func_getopt" = x""yes; then :
+   getopt=true
+else
+   getopt=false
+fi
+
+
+if test "${OSTYPE}" = "cygwin" ; then
+  getopt_long=false
+else
+  ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long"
+if test "x$ac_cv_func_getopt_long" = x""yes; then :
+   getopt_long=true
+else
+   getopt_long=false
+fi
+
+fi
+
+if test "${getopt_long}" = "false" ; then
+  my_includes="$my_includes -I../getopt"
+
+$as_echo "#define HAVE_GETOPT_LONG 1" >>confdefs.h
+
+  ctlibs_base="$ctlibs_base -lgetopt"
+  LDFLAGS="$LDFLAGS -L../getopt"
+  GETOPTLONG=1
+fi
+ if test "$GETOPTLONG"="1"; then
+  INCLUDED_GETOPT_LONG_TRUE=
+  INCLUDED_GETOPT_LONG_FALSE='#'
+else
+  INCLUDED_GETOPT_LONG_TRUE='#'
+  INCLUDED_GETOPT_LONG_FALSE=
+fi
+
+
+if test "${readline}" = "true" ; then
+  ctlibs_base="$ctlibs_base -lreadline"
+  if test "${ncurses}" = "true"; then
+    ctlibs_base="$ctlibs_base -lncurses"
+  elif test "${curses}" = "true"; then
+    ctlibs_base="$ctlibs_base -lcurses"
+  fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking debug" >&5
+$as_echo_n "checking debug... " >&6; }
+# Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
+  enableval=$enable_debug; case "${enableval}" in
+  yes) debug="true"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       ;;
+  no)  debug="false"
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: bad value ${enableval} for --enable-debug" >&5
+$as_echo "bad value ${enableval} for --enable-debug" >&6; }
+       ;;
+esac
+else
+  debug=false; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "$debug" = "true"; then
+  DEBUG_TRUE=
+  DEBUG_FALSE='#'
+else
+  DEBUG_TRUE='#'
+  DEBUG_FALSE=
+fi
+
+
+if test "$datadir" != "" ; then
+  CPPFLAGS="$CPPFLAGS -DDATADIR=\"\\\"$datadir\\\"\""
+fi
+
+if test "$debug" = "true" ; then
+  CFLAGS="$CFLAGS -g -O0 -DDEBUG"
+
+$as_echo "#define DEBUG 1" >>confdefs.h
+
+else
+  CFLAGS="$CFLAGS -O2 -DNDEBUG -fomit-frame-pointer"
+
+$as_echo "#define NDEBUG 1" >>confdefs.h
+
+fi
+
+if test "${pthread}" = "true" ; then
+
+$as_echo "#define HAVE_WXTHREADS 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking sstream" >&5
+$as_echo_n "checking sstream... " >&6; }
+ if  test -f /usr/include/sstream || test -f /usr/include/g++/sstream ||
+     test -f /usr/include/g++-2/sstream || test -f /usr/include/g++-3/sstream ||
+     test -f /usr/include/gcc/darwin/3.1/g++-v3/sstream ; then
+
+$as_echo "#define HAVE_SSTREAM 1" >>confdefs.h
+
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+
+CFLAGS="$CFLAGS -Wall"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable verbose warnings" >&5
+$as_echo_n "checking whether to enable verbose warnings... " >&6; }
+# Check whether --enable-verbose-warnings was given.
+if test "${enable_verbose_warnings+set}" = set; then :
+  enableval=$enable_verbose_warnings;  case "$enableval" in
+  yes)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    CFLAGS="$CFLAGS -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wstrict-prototypes -pedantic -Wredundant-decls"
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking static executables" >&5
+$as_echo_n "checking static executables... " >&6; }
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static;  case "$enableval" in
+  yes)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    CFLAGS="$CFLAGS --static"
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+fi
+
+
+
+# Check whether --with-lam was given.
+if test "${with_lam+set}" = set; then :
+  withval=$with_lam;     if test "$withval" != "no" ; then
+         trylamdir=$withval
+     fi
+
+fi
+
+
+if test "$withval" != "no" ; then
+  if test "$prefix" != "NONE" ; then
+     trylamdir="$trylamdir $prefix"
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LAM MPI installation" >&5
+$as_echo_n "checking for LAM MPI installation... " >&6; }
+  for testlamdir in "." $trylamdir /usr/local /usr/local/lam /usr /usr/lam /opt /opt/lam ; do
+    if test -x "$testlamdir/bin/hcp" ; then
+      if test "$testlamdir" != "/usr"; then
+        LDFLAGS="$LDFLAGS -L$testlamdir/lib"
+        CFLAGS="$CFLAGS -I$testlamdir/include"
+      fi
+      CFLAGS="$CFLAGS -I$testlamdir/include/mpi2c++"
+      lamdir="$testlamdir"
+
+      mpienable="true"
+
+      break
+    fi
+  done
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lamdir" >&5
+$as_echo "$lamdir" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+# Check whether --with-ctn was given.
+if test "${with_ctn+set}" = set; then :
+  withval=$with_ctn;     if test "$withval" != "no" ; then
+         tryctndir=$withval
+     fi
+
+fi
+
+
+if test "$withval" = "no" -o "$withval" = "NONE" ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CTN DICOM installation" >&5
+$as_echo_n "checking for CTN DICOM installation... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5
+$as_echo "disabled" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CTN DICOM installation" >&5
+$as_echo_n "checking for CTN DICOM installation... " >&6; }
+  for testctndir in $tryctndir/lib /usr/local/lib /usr/local/ctn/lib /usr/lib /usr/ctn/lib /usr/lib/ctn /opt/ctn/lib ; do
+    if test -f "$testctndir/libctn.a" ; then
+      LDFLAGS="$LDFLAGS -L$testctndir"
+      ctnlib="true"
+      break
+    fi
+  done
+  for testctndir in $tryctndir/include /usr/local/include /usr/local/ctn/include /usr/include /usr/include/ctn /usr/ctn/include /opt/ctn/include ; do
+    if test -f "$testctndir/ctn_os.h" ; then
+      CFLAGS="$CFLAGS -I$testctndir"
+      ctninclude="true"
+      break
+    fi
+  done
+  if test "$ctnlib" = "true" -a "$ctninclude" = "true" ; then
+      ctn="true"
+
+$as_echo "#define HAVE_CTN_DICOM 1" >>confdefs.h
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CPU specification" >&5
+$as_echo_n "checking for CPU specification... " >&6; }
+
+# Check whether --with-mcpu was given.
+if test "${with_mcpu+set}" = set; then :
+  withval=$with_mcpu;
+fi
+
+
+if test "$withval" = "no" -o "$withval" = "yes" -o "$withval" = ""; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+$as_echo "$withval" >&6; }
+  CFLAGS="$CFLAGS -mcpu=$withval"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for web access" >&5
+$as_echo_n "checking for web access... " >&6; }
+
+# Check whether --with-cgibin-dir was given.
+if test "${with_cgibin_dir+set}" = set; then :
+  withval=$with_cgibin_dir;  cgibindir=$withval ;
+fi
+
+
+
+# Check whether --with-cgibin-url was given.
+if test "${with_cgibin_url+set}" = set; then :
+  withval=$with_cgibin_url;  cgibinurl=$withval ;
+fi
+
+
+
+# Check whether --with-webdata-dir was given.
+if test "${with_webdata_dir+set}" = set; then :
+  withval=$with_webdata_dir;  webdatadir=$withval ;
+fi
+
+
+
+# Check whether --with-webdata-url was given.
+if test "${with_webdata_url+set}" = set; then :
+  withval=$with_webdata_url;  webdataurl=$withval ;
+fi
+
+
+
+# Check whether --with-html-dir was given.
+if test "${with_html_dir+set}" = set; then :
+  withval=$with_html_dir;  html_%dir=$withval ;
+fi
+
+
+if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" ; then
+  cgiprograms="ctsim.cgi ctsim.conf"
+
+fi
+
+if test "x$html_dir" = "x" ; then
+  htmldata=simulate.html
+
+fi
+ if test "x$html_dir" = "x"; then
+  USE_HTML_TRUE=
+  USE_HTML_FALSE='#'
+else
+  USE_HTML_TRUE='#'
+  USE_HTML_FALSE=
+fi
+
+
+if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" -o "x$webdatadir" != "x" -o "x$webdataurl" != "x" -o "x$html_dir" != "x" ; then
+  webenabled=true
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  if test "x$cgibindir" = "x" ; then
+    as_fn_error $? "--with-cgibin-dir not set for web access" "$LINENO" 5
+  elif test "x$cgibinurl" = "x" ; then
+    as_fn_error $? "--with-cgibin-url not set for web access" "$LINENO" 5
+  elif test "x$webdatadir" = "x" ; then
+    as_fn_error $? "--with-webdata-dir not set for web access" "$LINENO" 5
+  elif test "x$webdataurl" = "x" ; then
+    as_fn_error $? "--with-webdata-url not set for web access" "$LINENO" 5
+  elif test "x$html_dir" = "x" ; then
+    as_fn_error $? "--with-html-dir not set for web access" "$LINENO" 5
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$lamdir" != "x"; then
+  USE_LAM_TRUE=
+  USE_LAM_FALSE='#'
+else
+  USE_LAM_TRUE='#'
+  USE_LAM_FALSE=
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5 ;; #(
+    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /usr/lib64 | /lib | /lib64) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R7
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = x""yes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = x""yes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh at cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = x""yes; then :
+
+fi
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = x""yes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder at skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = x""yes; then :
+
+fi
+
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if test "${ac_cv_lib_socket_connect+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
+else
+  ac_cv_lib_socket_connect=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = x""yes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = x""yes; then :
+
+fi
+
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if test "${ac_cv_lib_posix_remove+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = x""yes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = x""yes; then :
+
+fi
+
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = x""yes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = x""yes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+
+
+
+
+
+
+ if test "x$with_x" = "xno"; then
+  NO_X_TRUE=
+  NO_X_FALSE='#'
+else
+  NO_X_TRUE='#'
+  NO_X_FALSE=
+fi
+
+
+my_includes="$my_includes -I../include -I.. -I/usr/local/include"
+
+
+LDFLAGS="$LDFLAGS -L/usr/local/lib"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
+if test "$with_x" != "no" && test "$wxwin" = "true"; then
+
+$as_echo "#define HAVE_X11 1" >>confdefs.h
+
+  LDFLAGS="$LDFLAGS -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64"
+  my_includes="$my_includes -I/usr/X11R6/include"
+  ctlib_graphics="$ctlibs_base -lctgraphics"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  ctlib_graphics="$ctlib_graphics $X_BASIC_LIBS $X_TOOLKIT_LIBS"
+  if test "$libgl" = "true" ; then
+    # Removed "-lglut" for Mac OS X compilation
+    ctlib_graphics="$ctlib_graphics -lGL -lGLU"
+    if test "$wxwin" = "true" ; then
+       wxdebug=""
+       if test "$debug" = "true"; then
+         wxdebug="--debug"
+       fi
+      if test "x$wx_gtk" != "x" ; then
+       ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=2.8  --libs std,gl` ${GTK_LIBS} ${GLIB_LIBS}"
+      elif test "x$wx_mac" != "x" ; then
+        ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=2.8 --libs std,gl`"
+      fi
+    fi
+  fi
+  if test "$wxwin" = "true" ; then
+
+$as_echo "#define HAVE_SGP 1" >>confdefs.h
+
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "$wxwin" = "true"; then
+  HAVE_SGP_TRUE=
+  HAVE_SGP_FALSE='#'
+else
+  HAVE_SGP_TRUE='#'
+  HAVE_SGP_FALSE=
+fi
+
+
+if test "$png" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lpng"
+fi
+if test "$zlib" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lz"
+fi
+if test "$fftw" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lfftw3"
+fi
+if test "$ctn" = "true"; then
+  ctlibs_tools="$ctlibs_tools -lctn"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -ldmallocxx" >&5
+$as_echo_n "checking for main in -ldmallocxx... " >&6; }
+if test "${ac_cv_lib_dmallocxx_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldmallocxx  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dmallocxx_main=yes
+else
+  ac_cv_lib_dmallocxx_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmallocxx_main" >&5
+$as_echo "$ac_cv_lib_dmallocxx_main" >&6; }
+if test "x$ac_cv_lib_dmallocxx_main" = x""yes; then :
+  dmallocxx=true
+else
+  dmallocxx=false
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable-dmalloc" >&5
+$as_echo_n "checking for enable-dmalloc... " >&6; }
+# Check whether --enable-dmalloc was given.
+if test "${enable_dmalloc+set}" = set; then :
+  enableval=$enable_dmalloc; case "${enableval}" in
+  yes) usedmalloc=true
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       ;;
+  no)  usedmalloc=false
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: bad value ${enableval} for --enable-dmalloc" >&5
+$as_echo "bad value ${enableval} for --enable-dmalloc" >&6; }
+       ;;
+esac
+else
+  usedmalloc=false; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "$dmallocxx" = "true" -a "$usedmalloc" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -ldmallocxx"
+
+$as_echo "#define HAVE_DMALLOC 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using dmalloc" >&5
+$as_echo "Using dmalloc" >&6; }
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lefence" >&5
+$as_echo_n "checking for main in -lefence... " >&6; }
+if test "${ac_cv_lib_efence_main+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lefence  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_efence_main=yes
+else
+  ac_cv_lib_efence_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_efence_main" >&5
+$as_echo "$ac_cv_lib_efence_main" >&6; }
+if test "x$ac_cv_lib_efence_main" = x""yes; then :
+  efence=true
+else
+  efence=false
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for enable-efence" >&5
+$as_echo_n "checking for enable-efence... " >&6; }
+# Check whether --enable-efence was given.
+if test "${enable_efence+set}" = set; then :
+  enableval=$enable_efence; case "${enableval}" in
+  yes) useefence=true
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       ;;
+  no)  useefence=false
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: bad value ${enableval} for --enable-efence" >&5
+$as_echo "bad value ${enableval} for --enable-efence" >&6; }
+       ;;
+esac
+else
+  useefence=false; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test "$efence" = "true" -a "$useefence" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lefence"
+
+$as_echo "#define HAVE_EFENCE 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using efence" >&5
+$as_echo "Using efence" >&6; }
+fi
+
+if test "$wxwin" = "true" ; then
+  if test "$wx_gtk" = "true"  -o "$wx_mac" = "true" ; then
+    wxcflags=`$wxconfig $wxdebug --cxxflags --version=2.8`
+    #wxlibs=`$wxconfig --libs`
+  else
+	wxcflags="-D__WXMSW__ -D__WIN32__ -D__GNUWIN32__"
+        wxlibs="-lwx -lglui -ljpeg -lxpm -lzlib -ltiff"
+  fi
+  CFLAGS="$CFLAGS -I../include $wxcflags"
+  ctlib_graphics="$ctlib_graphics $wxlibs"
+fi
+
+
+ if test "$wxwin"="true"; then
+  HAVE_WXWINDOWS_TRUE=
+  HAVE_WXWINDOWS_FALSE='#'
+else
+  HAVE_WXWINDOWS_TRUE='#'
+  HAVE_WXWINDOWS_FALSE=
+fi
+
+
+LDFLAGS="$LDFLAGS -L../libctsupport -L../libctsim"
+ctlibs="$ctlibs_base -lctsim $ctlib_graphics -lctsupport $ctlibs_tools"
+
+
+if test "x$lamdir" != "x" ; then
+  lamprograms="ctsimtext-lam"
+
+  lamdefs="$CFLAGS"
+
+fi
+
+CXXFLAGS="$CFLAGS"
+
+ac_config_files="$ac_config_files Makefile libctgraphics/Makefile libctsupport/Makefile libctsim/Makefile man/Makefile cgi-bin/ctsim.cgi cgi-bin/Makefile html/simulate.html html/Makefile include/Makefile getopt/Makefile tools/sample-ctsim.sh cgi-bin/ctsim.conf tools/Makefile src/Makefile helical/Makefile helical/sample-helical.sh"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+if test -z "${INCLUDED_GETOPT_LONG_TRUE}" && test -z "${INCLUDED_GETOPT_LONG_FALSE}"; then
+  as_fn_error $? "conditional \"INCLUDED_GETOPT_LONG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${DEBUG_TRUE}" && test -z "${DEBUG_FALSE}"; then
+  as_fn_error $? "conditional \"DEBUG\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_HTML_TRUE}" && test -z "${USE_HTML_FALSE}"; then
+  as_fn_error $? "conditional \"USE_HTML\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_LAM_TRUE}" && test -z "${USE_LAM_FALSE}"; then
+  as_fn_error $? "conditional \"USE_LAM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${NO_X_TRUE}" && test -z "${NO_X_FALSE}"; then
+  as_fn_error $? "conditional \"NO_X\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_SGP_TRUE}" && test -z "${HAVE_SGP_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_SGP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_WXWINDOWS_TRUE}" && test -z "${HAVE_WXWINDOWS_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_WXWINDOWS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+	test -d "$1/.";
+      else
+	case $1 in #(
+	-*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by CTSim $as_me 5.2.0, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <ctsim-users at b9.com>.
+CTSim home page: <http://www.ctsim.org/>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+CTSim config.status 5.2.0
+configured by $0, generated by GNU Autoconf 2.67,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
+  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "libctgraphics/Makefile") CONFIG_FILES="$CONFIG_FILES libctgraphics/Makefile" ;;
+    "libctsupport/Makefile") CONFIG_FILES="$CONFIG_FILES libctsupport/Makefile" ;;
+    "libctsim/Makefile") CONFIG_FILES="$CONFIG_FILES libctsim/Makefile" ;;
+    "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
+    "cgi-bin/ctsim.cgi") CONFIG_FILES="$CONFIG_FILES cgi-bin/ctsim.cgi" ;;
+    "cgi-bin/Makefile") CONFIG_FILES="$CONFIG_FILES cgi-bin/Makefile" ;;
+    "html/simulate.html") CONFIG_FILES="$CONFIG_FILES html/simulate.html" ;;
+    "html/Makefile") CONFIG_FILES="$CONFIG_FILES html/Makefile" ;;
+    "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
+    "getopt/Makefile") CONFIG_FILES="$CONFIG_FILES getopt/Makefile" ;;
+    "tools/sample-ctsim.sh") CONFIG_FILES="$CONFIG_FILES tools/sample-ctsim.sh" ;;
+    "cgi-bin/ctsim.conf") CONFIG_FILES="$CONFIG_FILES cgi-bin/ctsim.conf" ;;
+    "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "helical/Makefile") CONFIG_FILES="$CONFIG_FILES helical/Makefile" ;;
+    "helical/sample-helical.sh") CONFIG_FILES="$CONFIG_FILES helical/sample-helical.sh" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_t=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_t"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = ""
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
+
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+  if test x"$ac_file" != x-; then
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
+    } >"$tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f "$ac_file"
+      mv "$tmp/config.h" "$ac_file" \
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    fi
+  else
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
+  fi
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $_am_arg | $_am_arg:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$_am_arg" : 'X\(//\)[^/]' \| \
+	 X"$_am_arg" : 'X\(//\)$' \| \
+	 X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  do
+    # Strip MF so we end up with the name of the file.
+    mf=`echo "$mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile or not.
+    # We used to match only the files named `Makefile.in', but
+    # some people rename them; so instead we look at the file content.
+    # Grep'ing the first line is not enough: some people post-process
+    # each Makefile.in and add a new line on top of each file to say so.
+    # Grep'ing the whole file is not good either: AIX grep has a line
+    # limit of 2048, but all sed's we know have understand at least 4000.
+    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    else
+      continue
+    fi
+    # Extract the definition of DEPDIR, am__include, and am__quote
+    # from the Makefile without running `make'.
+    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+    test -z "$DEPDIR" && continue
+    am__include=`sed -n 's/^am__include = //p' < "$mf"`
+    test -z "am__include" && continue
+    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+    # When using ansi2knr, U may be empty or an underscore; expand it
+    U=`sed -n 's/^U = //p' < "$mf"`
+    # Find all dependency output files, they are included files with
+    # $(DEPDIR) in their names.  We invoke sed twice because it is the
+    # simplest approach to changing $(DEPDIR) to its actual value in the
+    # expansion.
+    for file in `sed -n "
+      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+	 sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
+    done
+  done
+}
+ ;;
+
+  esac
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..d3156cc
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,483 @@
+dnl *****************************************************************************
+dnl FILE IDENTIFICATION
+dnl   Name:          ctsim.cpp
+dnl   Purpose:       Top-level routines of CTSim program
+dnl   Programmer:    Kevin Rosenberg
+dnl   Date Started:  July 2000
+dnl
+dnl  This is part of the CTSim program
+dnl  Copyright (c) 1983-2009 Kevin Rosenberg
+dnl
+dnl  This program is free software; you can redistribute it and/or modify
+dnl  it under the terms of the GNU General Public License (version 2) as
+dnl  published by the Free Software Foundation.
+dnl
+dnl  This program is distributed in the hope that it will be useful,
+dnl  but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+dnl  GNU General Public License for more details.
+dnl
+dnl  You should have received a copy of the GNU General Public License
+dnl  along with this program; if not, write to the Free Software
+dnl  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+dnl****************************************************************************/
+
+dnl Process this file with autoconf to produce a configure script.
+
+dnl Must reset CDPATH so that bash's cd does not print to stdout
+dnl CDPATH=
+
+AC_INIT([CTSim], [5.2.0], [ctsim-users at b9.com], [ctsim], [http://www.ctsim.org/])
+AC_CONFIG_SRCDIR([src/ctsim.cpp])
+AM_MAINTAINER_MODE
+AM_INIT_AUTOMAKE
+AM_CONFIG_HEADER(config.h)
+
+dnl Checks for programs.
+AC_PROG_AWK
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+
+AC_PROG_CC
+AC_PROG_CXX
+AC_C_BIGENDIAN
+
+AC_PATH_PROG(wxconfig,wx-config)
+
+dnl Check for C operation
+AC_CANONICAL_HOST 
+AC_C_INLINE
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+AC_CHECK_SIZEOF(float, 4)
+AC_CHECK_SIZEOF(double, 8)
+
+dnl Add define templates
+
+dnl Checks for libraries.
+AC_CHECK_LIB(z, deflate, [ zlib="true" ], [ zlib="false" ;  AC_MSG_WARN([zlib missing. Will need zlib for PNG support])])
+AC_CHECK_LIB(m, sin)
+AC_CHECK_LIB(curses, main, [curses=true], [curses=false])
+AC_CHECK_LIB(ncurses, main, [ncurses=true], [ncurses=false])
+AC_CHECK_LIB(readline, main, [readline=true; 
+                 AC_DEFINE([HAVE_READLINE],1,[Readline library])],
+		 [readline=false], [-lcurses])	
+wxwin=false
+AC_CHECK_LIB(gtk-x11-2.0, main, [hasx11gtk2=true], [])
+if test "x$hasx11gtk2" = "x" ; then
+  AC_MSG_NOTICE([Does not have X11 GTK2])
+  AC_DEFUN([AM_PATH_GLIB_2_0], [])
+  AC_DEFUN([AM_PATH_GTK_2_0], [])
+fi
+if test "$hasx11gtk2" = "true" ; then
+  AM_PATH_GLIB_2_0(2.0.0,,AC_MSG_ERROR(You should get glib 2.0.0 or better.))
+  AM_PATH_GTK_2_0(2.0.0,havegtk_am=yes,havegtk_am=no)
+  CFLAGS="${CFLAGS} ${g76GTK_CFLAGS} ${GLIB_CFLAGS}"
+fi
+
+AC_CHECK_LIB(wx_gtk2u_core-2.8, main, [wxwin=true; wx_gtk=true; AC_DEFINE(HAVE_WXWINDOWS,1,[wxwindows library])], [], [-L/usr/lib64 -L/usr/lib ${GTK_LIBS} ${GLIB_LIBS} ])
+AC_CHECK_LIB(wx_mac_core-2.8, main, [wxwin=true; wx_mac=true; AC_DEFINE(HAVE_WXWINDOWS,1,[wxwindows library])])
+AC_CHECK_LIB(fftw3, fftw_malloc, [fftw=true; AC_DEFINE(HAVE_FFTW,1,[FFTW library])], [fftw=false], [-L/usr/lib64 -L/usr/lib])
+AC_CHECK_LIB(GL, main, [libgl=true], [libgl=false], [-L/usr/X11R6/lib -L/usr/X11R6/lib64])
+AC_CHECK_LIB(pthread, main, [pthread=true], [pthread=false])
+
+if test "$zlib" = "true" ; then
+  AC_CHECK_LIB(png, main, [png=true ; AC_DEFINE(HAVE_PNG,1,[PNG library])], [png=false], [-L/opt/local/lib -lz -lm])
+fi
+
+dnl Checks for header files.
+AC_HEADER_STDC
+AC_CHECK_HEADERS(fcntl.h unistd.h getopt.h sys/fcntl.h setjmp.h stdarg.h stddef.h sys/types.h sys/stat.h string.h ctype.h math.h stdio.h netinet/in.h inttypes.h sys/param.h stdint.h stdlib.h assert.h sys/time.h sys/resource.h sys/time.h readline.h readline/readline.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_TYPE_OFF_T
+AC_TYPE_SIZE_T
+AC_STRUCT_TM
+
+dnl Checks for library functions.
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS(strtod strtol snprintf htonl usleep vsprintf vsnprintf basename setjmp setpriority time gettimeofday getenv)
+AC_CHECK_FUNC(basename)
+AC_CHECK_FUNC(setjmp)
+AC_CHECK_FUNC(setpriority)
+AC_CHECK_FUNC(time)
+AC_CHECK_FUNC(gettimeofday)
+AC_CHECK_FUNC(getopt, [ getopt=true ], [ getopt=false ])
+
+if test "${OSTYPE}" = "cygwin" ; then
+  getopt_long=false
+else
+  AC_CHECK_FUNC(getopt_long, [ getopt_long=true ], [ getopt_long=false ])
+fi
+
+if test "${getopt_long}" = "false" ; then
+  my_includes="$my_includes -I../getopt"
+  AC_DEFINE(HAVE_GETOPT_LONG,1,[getopt_long library])
+  ctlibs_base="$ctlibs_base -lgetopt"
+  LDFLAGS="$LDFLAGS -L../getopt"
+  GETOPTLONG=1
+fi
+AM_CONDITIONAL(INCLUDED_GETOPT_LONG, test "$GETOPTLONG"="1")
+
+if test "${readline}" = "true" ; then
+  ctlibs_base="$ctlibs_base -lreadline"
+  if test "${ncurses}" = "true"; then
+    ctlibs_base="$ctlibs_base -lncurses"
+  elif test "${curses}" = "true"; then
+    ctlibs_base="$ctlibs_base -lcurses"
+  fi
+fi
+
+dnl Check for debug mode
+AC_MSG_CHECKING([debug])
+AC_ARG_ENABLE(debug,
+[  --enable-debug          Turn on debugging],
+[case "${enableval}" in
+  yes) debug="true" 
+       AC_MSG_RESULT(yes)
+       ;;
+  no)  debug="false" 
+       AC_MSG_RESULT(no)
+       ;;
+  *) AC_MSG_RESULT([bad value ${enableval} for --enable-debug]) 
+       ;;
+esac],
+[debug=false; AC_MSG_RESULT(no)])
+AM_CONDITIONAL(DEBUG, test "$debug" = "true")
+
+if test "$datadir" != "" ; then
+  CPPFLAGS="$CPPFLAGS -DDATADIR=\"\\\"$datadir\\\"\""
+fi
+dnl CFLAGS="$CFLAGS -I/usr/local/include"
+dnl LDFLAGS="$LDFLAGS -L/usr/local/lib"
+
+if test "$debug" = "true" ; then
+  CFLAGS="$CFLAGS -g -O0 -DDEBUG"
+  AC_DEFINE(DEBUG,1,[turn on debugging])
+else
+  CFLAGS="$CFLAGS -O2 -DNDEBUG -fomit-frame-pointer"
+  AC_DEFINE(NDEBUG,1,[no debugging])
+fi
+
+if test "${pthread}" = "true" ; then
+dnl  CFLAGS="$CFLAGS -D_REENTRANT"
+  AC_DEFINE(HAVE_WXTHREADS,1,[have wxthreads library])
+fi
+
+AC_MSG_CHECKING(sstream)
+ if [ test -f /usr/include/sstream || test -f /usr/include/g++/sstream ||
+     test -f /usr/include/g++-2/sstream || test -f /usr/include/g++-3/sstream ||
+     test -f /usr/include/gcc/darwin/3.1/g++-v3/sstream ]; then
+   AC_DEFINE(HAVE_SSTREAM,1,[sstream header])
+   AC_MSG_RESULT(yes)
+  else
+   AC_MSG_RESULT(no)
+ fi
+
+
+CFLAGS="$CFLAGS -Wall"
+AC_MSG_CHECKING(whether to enable verbose warnings)
+AC_ARG_ENABLE(verbose-warnings,
+[  --enable-verbose-warnings
+                          Enable verbose compiler warnings.],
+[ case "$enableval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    CFLAGS="$CFLAGS -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wwrite-strings -Waggregate-return -Wmissing-prototypes -Wstrict-prototypes -pedantic -Wredundant-decls"
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ], AC_MSG_RESULT(no)
+)
+
+AC_MSG_CHECKING(static executables)
+AC_ARG_ENABLE(static,
+[  --enable-static
+                            Enable static executables.],
+[ case "$enableval" in
+  yes)
+    AC_MSG_RESULT(yes)
+    CFLAGS="$CFLAGS --static"
+    ;;
+  *)
+    AC_MSG_RESULT(no)
+    ;;
+  esac ], AC_MSG_RESULT(no)
+)
+
+dnl Set LAM path
+AC_ARG_WITH(lam,
+[  --with-lam[=PATH]         Set path of LAM MPI ],
+[    if test "$withval" != "no" ; then
+         trylamdir=$withval
+     fi ]
+)
+
+if test "$withval" != "no" ; then
+  if test "$prefix" != "NONE" ; then
+     trylamdir="$trylamdir $prefix"
+  fi
+
+  AC_MSG_CHECKING([for LAM MPI installation])
+  for testlamdir in "." $trylamdir /usr/local /usr/local/lam /usr /usr/lam /opt /opt/lam ; do
+    if test -x "$testlamdir/bin/hcp" ; then
+      if test "$testlamdir" != "/usr"; then 	
+        LDFLAGS="$LDFLAGS -L$testlamdir/lib"
+        CFLAGS="$CFLAGS -I$testlamdir/include"
+      fi
+      CFLAGS="$CFLAGS -I$testlamdir/include/mpi2c++"
+      lamdir="$testlamdir"
+      AC_SUBST(lamdir)
+      mpienable="true"
+      AC_SUBST(mpienable)
+      break
+    fi
+  done
+  AC_MSG_RESULT($lamdir)
+else
+  AC_MSG_RESULT([no])
+fi
+
+
+dnl Set CTN path
+AC_ARG_WITH(ctn,
+[  --with-ctn[=PATH]         Set path of CTN DICOM library ],
+[    if test "$withval" != "no" ; then
+         tryctndir=$withval
+     fi ]
+)
+
+if test "$withval" = "no" -o "$withval" = "NONE" ; then
+  AC_MSG_CHECKING([for CTN DICOM installation])
+  AC_MSG_RESULT([disabled])
+else
+  AC_MSG_CHECKING([for CTN DICOM installation])
+  for testctndir in $tryctndir/lib /usr/local/lib /usr/local/ctn/lib /usr/lib /usr/ctn/lib /usr/lib/ctn /opt/ctn/lib ; do
+    if test -f "$testctndir/libctn.a" ; then
+      LDFLAGS="$LDFLAGS -L$testctndir"
+      ctnlib="true"
+      break
+    fi
+  done
+  for testctndir in $tryctndir/include /usr/local/include /usr/local/ctn/include /usr/include /usr/include/ctn /usr/ctn/include /opt/ctn/include ; do
+    if test -f "$testctndir/ctn_os.h" ; then
+      CFLAGS="$CFLAGS -I$testctndir"
+      ctninclude="true"
+      break
+    fi
+  done
+  if test "$ctnlib" = "true" -a "$ctninclude" = "true" ; then
+      ctn="true"
+      AC_DEFINE(HAVE_CTN_DICOM,1,[ctn dicom library])
+      AC_MSG_RESULT([yes])
+  else
+    AC_MSG_RESULT([no])
+  fi
+fi
+
+dnl Set CPU
+AC_MSG_CHECKING([for CPU specification])
+AC_ARG_WITH(mcpu,
+[  --with-mcpu[=CPU]         Set name of CPU for gcc -mcpu])
+
+if test "$withval" = "no" -o "$withval" = "yes" -o "$withval" = ""; then
+  AC_MSG_RESULT([no])
+else
+  AC_MSG_RESULT([$withval])
+  CFLAGS="$CFLAGS -mcpu=$withval"
+fi
+
+AC_MSG_CHECKING([for web access])
+dnl Set cgi-bin directory
+AC_ARG_WITH(cgibin-dir, [  --with-cgibin-dir=PATH  Set path of CGI binaries directory ], 
+[ cgibindir=$withval ; AC_SUBST(cgibindir) ] )
+
+AC_ARG_WITH(cgibin-url, [  --with-cgibin-url=PATH  Set URL path of CGI binaries ], 
+[ cgibinurl=$withval ; AC_SUBST(cgibinurl) ] )
+
+AC_ARG_WITH(webdata-dir, [  --with-webdata-dir=PATH Set path of webdata], 
+[ webdatadir=$withval ; AC_SUBST(webdatadir)  ] )
+
+AC_ARG_WITH(webdata-url, [  --with-webdata-url=PATH Set URL path of webdata], 
+[ webdataurl=$withval ; AC_SUBST(webdataurl) ] )
+
+AC_ARG_WITH(html-dir, [  --with-html-dir=PATH    Set directory of html files], 
+[ html_%dir=$withval ; AC_SUBST(htmldir) ] )
+
+if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" ; then
+  cgiprograms="ctsim.cgi ctsim.conf"
+  AC_SUBST(cgiprograms)
+fi
+
+if test "x$html_dir" = "x" ; then
+  htmldata=simulate.html
+  AC_SUBST(htmldata)
+fi
+AM_CONDITIONAL(USE_HTML, test "x$html_dir" = "x")
+
+if test "x$cgibindir" != "x" -o "x$cgibinurl" != "x" -o "x$webdatadir" != "x" -o "x$webdataurl" != "x" -o "x$html_dir" != "x" ; then
+  webenabled=true
+  AC_SUBST(webenabled)
+  AC_MSG_RESULT([yes])
+  if test "x$cgibindir" = "x" ; then
+    AC_MSG_ERROR([--with-cgibin-dir not set for web access])
+  elif test "x$cgibinurl" = "x" ; then
+    AC_MSG_ERROR([--with-cgibin-url not set for web access])
+  elif test "x$webdatadir" = "x" ; then
+    AC_MSG_ERROR([--with-webdata-dir not set for web access])
+  elif test "x$webdataurl" = "x" ; then
+    AC_MSG_ERROR([--with-webdata-url not set for web access])
+  elif test "x$html_dir" = "x" ; then
+    AC_MSG_ERROR([--with-html-dir not set for web access])
+  fi
+else
+  AC_MSG_RESULT([no])
+fi
+
+AM_CONDITIONAL(USE_LAM, test "x$lamdir" != "x")
+
+AC_PATH_XTRA
+AC_SUBST(X_CFLAGS)
+dnl Following five are concatenated together into a linker specification.
+AC_SUBST(X_LIBS)
+AC_SUBST(X_TOOLKIT_LIBS)
+AC_SUBST(X_PRE_LIBS)
+AC_SUBST(X_BASIC_LIBS)
+AC_SUBST(X_EXTRA_LIBS)
+
+dnl Our Makefile.am files test the automake variable NO_X to determine
+dnl whether X should be supported.
+AM_CONDITIONAL(NO_X, test "x$with_x" = "xno")
+
+my_includes="$my_includes -I../include -I.. -I/usr/local/include"
+AC_SUBST(my_includes)
+
+LDFLAGS="$LDFLAGS -L/usr/local/lib"
+
+AC_MSG_CHECKING([for X])
+if test "$with_x" != "no" && test "$wxwin" = "true"; then
+  AC_DEFINE(HAVE_X11,1,[X11 system])
+  LDFLAGS="$LDFLAGS -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64"
+  my_includes="$my_includes -I/usr/X11R6/include"
+  ctlib_graphics="$ctlibs_base -lctgraphics"
+  AC_MSG_RESULT(yes)
+  ctlib_graphics="$ctlib_graphics $X_BASIC_LIBS $X_TOOLKIT_LIBS"
+  if test "$libgl" = "true" ; then
+    # Removed "-lglut" for Mac OS X compilation
+    ctlib_graphics="$ctlib_graphics -lGL -lGLU"
+    if test "$wxwin" = "true" ; then
+       wxdebug=""
+       if test "$debug" = "true"; then
+         wxdebug="--debug"
+       fi  
+      if test "x$wx_gtk" != "x" ; then
+       ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=2.8  --libs std,gl` ${GTK_LIBS} ${GLIB_LIBS}"
+      elif test "x$wx_mac" != "x" ; then
+        ctlib_graphics="$ctlib_graphics `$wxconfig $wxdebug --version=2.8 --libs std,gl`"
+      fi
+    fi
+  fi
+  if test "$wxwin" = "true" ; then
+    AC_DEFINE(HAVE_SGP,1,[use sgp library])
+  fi
+else
+  AC_MSG_RESULT(no)
+fi
+
+AM_CONDITIONAL(HAVE_SGP, test "$wxwin" = "true")
+
+if test "$png" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lpng"
+fi
+if test "$zlib" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lz"
+fi
+if test "$fftw" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lfftw3"
+fi
+if test "$ctn" = "true"; then
+  ctlibs_tools="$ctlibs_tools -lctn"
+fi
+
+dnl Check for dmalloc
+AC_CHECK_LIB(dmallocxx, main, [dmallocxx=true], [dmallocxx=false])
+AC_MSG_CHECKING([for enable-dmalloc])
+AC_ARG_ENABLE(dmalloc,
+[  --enable-dmalloc        Use dmalloc memory allocation],
+[case "${enableval}" in
+  yes) usedmalloc=true 
+       AC_MSG_RESULT(yes)
+       ;;
+  no)  usedmalloc=false 
+       AC_MSG_RESULT(no)
+       ;;
+  *) AC_MSG_RESULT([bad value ${enableval} for --enable-dmalloc]) 
+       ;;
+esac],
+[usedmalloc=false; AC_MSG_RESULT(no)])
+
+if test "$dmallocxx" = "true" -a "$usedmalloc" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -ldmallocxx"
+  AC_DEFINE(HAVE_DMALLOC,1,[dmalloc library])
+  AC_MSG_RESULT(Using dmalloc)
+fi
+
+dnl Check for efence
+AC_CHECK_LIB(efence, main, [efence=true], [efence=false])
+AC_MSG_CHECKING([for enable-efence])
+AC_ARG_ENABLE(efence,
+[  --enable-efence        Use ElectricFence memory allocation],
+[case "${enableval}" in
+  yes) useefence=true 
+       AC_MSG_RESULT(yes)
+       ;;
+  no)  useefence=false 
+       AC_MSG_RESULT(no)
+       ;;
+  *) AC_MSG_RESULT([bad value ${enableval} for --enable-efence]) 
+       ;;
+esac],
+[useefence=false; AC_MSG_RESULT(no)])
+
+if test "$efence" = "true" -a "$useefence" = "true" ; then
+  ctlibs_tools="$ctlibs_tools -lefence"
+  AC_DEFINE(HAVE_EFENCE,1,[efence library])
+  AC_MSG_RESULT(Using efence)
+fi
+
+if test "$wxwin" = "true" ; then
+  if test "$wx_gtk" = "true"  -o "$wx_mac" = "true" ; then
+    wxcflags=`$wxconfig $wxdebug --cxxflags --version=2.8`
+    #wxlibs=`$wxconfig --libs`
+  else
+	wxcflags="-D__WXMSW__ -D__WIN32__ -D__GNUWIN32__"
+        wxlibs="-lwx -lglui -ljpeg -lxpm -lzlib -ltiff"
+  fi
+  CFLAGS="$CFLAGS -I../include $wxcflags"
+  ctlib_graphics="$ctlib_graphics $wxlibs"
+fi
+AC_SUBST(wxcflags)
+AC_SUBST(wxlibs)
+AM_CONDITIONAL(HAVE_WXWINDOWS, test "$wxwin"="true")
+
+dnl Setting projet libraries and includes
+LDFLAGS="$LDFLAGS -L../libctsupport -L../libctsim" 
+ctlibs="$ctlibs_base -lctsim $ctlib_graphics -lctsupport $ctlibs_tools"
+AC_SUBST(ctlibs)
+
+if test "x$lamdir" != "x" ; then
+  lamprograms="ctsimtext-lam"
+  AC_SUBST(lamprograms)
+  lamdefs="$CFLAGS"
+  AC_SUBST(lamdefs)
+fi
+
+CXXFLAGS="$CFLAGS"
+
+AC_CONFIG_FILES([Makefile libctgraphics/Makefile libctsupport/Makefile libctsim/Makefile man/Makefile cgi-bin/ctsim.cgi cgi-bin/Makefile html/simulate.html html/Makefile include/Makefile getopt/Makefile tools/sample-ctsim.sh cgi-bin/ctsim.conf tools/Makefile src/Makefile helical/Makefile helical/sample-helical.sh])
+
+AC_OUTPUT
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000..df8eea7
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,630 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
+# Software Foundation, Inc.
+
+# 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, 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/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+cygpath_u="cygpath -u -f -"
+if test "$depmode" = msvcmsys; then
+   # This is just like msvisualcpp but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u="sed s,\\\\\\\\,/,g"
+   depmode=msvisualcpp
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> "$depfile"
+    echo >> "$depfile"
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$base.u
+    tmpdepfile3=$dir.libs/$base.u
+    "$@" -Wc,-M
+  else
+    tmpdepfile1=$dir$base.u
+    tmpdepfile2=$dir$base.u
+    tmpdepfile3=$dir$base.u
+    "$@" -M
+  fi
+  stat=$?
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+    # That's a tab and a space in the [].
+    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+  test "x$dir" = "x$object" && dir=
+  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  if test "$libtool" = yes; then
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${
+	       s/^ *//
+	       s/ \\*$//
+	       s/$/:/
+	       p
+	     }' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mechanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no eat=no
+  for arg
+  do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    if test $eat = yes; then
+      eat=no
+      continue
+    fi
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -arch)
+      eat=yes ;;
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix=`echo "$object" | sed 's/^.*\././'`
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test "X$1" != 'X--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E 2>/dev/null |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvcmsys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..2461037
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,72 @@
+docs := ctsim.tex texhelp.sty psbox.tex logo.eps logo.gif ctsim-sgp.tex ctsim-concepts.tex ctsim-gui.tex ctsim-install.tex ctsim-textui.tex ctsim-web.tex alphacalc.eps alphacalc.gif divergent.eps divergent.gif equiangular.eps equiangular.gif equilinear.eps equilinear.gif scangeometry.eps scangeometry.gif tex2rtf.ini ctsim.hpj bullet.bmp verbatim.sty mytitle.sty makeidx.sty mysober.sty fancyhea.sty ctsim-latex.bib ctsim-tex2rtf.bib
+
+pkg=ctsim
+
+all: htmlhelp html pdf 
+
+CLEANFILES=$(pkg).ps $(pkg).hhc $(pkg).hhp $(pkg).hhk $(pkg).bib $(pkg).zip $(pkg).ilg $(pkg).ind $(pkg).dvi $(pkg).bb $(pkg).blg $(pkg).idx $(pkg).toc $(pkg).bbl $(pkg).con $(pkg).ref $(pkg).blg
+
+clean:
+	@rm -f $(CLEANFILES) $(pkg)*.html *.aux *.log *~ '#*~' '#*#' .*~
+	@rm -rf html
+
+.PHONY: pdf
+pdf: ../docs/$(pkg).pdf
+
+../docs/$(pkg).pdf: $(docs)
+	$(MAKE) dvi
+	dvipdfm $(pkg)
+	mv $(pkg).pdf ../docs
+
+#.PHONY: ps
+#ps: $(pkg).ps
+#$(pkg).ps: $(pkg).pdf
+#	pdftops $(pkg).pdf $(pkg).ps
+
+.PHONY: dvi
+dvi: $(pkg).dvi
+$(pkg).dvi: $(docs)
+	cp $(pkg)-latex.bib $(pkg).bib
+	latex $(pkg)
+	bibtex $(pkg) > /dev/null
+	latex $(pkg)
+	makeindex $(pkg) > /dev/null
+	latex $(pkg)
+
+.PHONY: htmlhelp
+htmlhelp: ../docs/$(pkg).htb
+
+../docs/$(pkg).htb: $(docs)
+	rm -f $(pkg)*.html $(pkg).hh[pck] $(pkg).zip
+	cp $(pkg)-tex2rtf.bib $(pkg).bib
+	tex2rtf $(pkg).tex $(pkg).html -html  > /dev/null
+	./maphhc.pl
+	zip -q $(pkg).zip *.html *.gif $(pkg).hh[pck]
+	mv $(pkg).zip $(pkg).htb
+	mv $(pkg).htb ../docs
+
+.PHONY: html
+html: ../docs/html.tar.gz
+
+../docs/html.tar.gz: $(docs)
+	rm -f $(pkg)*.html
+	cp $(pkg)-tex2rtf.bib $(pkg).bib
+	tex2rtf $(pkg).tex $(pkg).html -html  > /dev/null
+	rm -rf html
+	mkdir html
+	cp *.gif html
+	mv $(pkg)*.html html
+	GZIP='-9' tar czf html.tar.gz html
+	mv html.tar.gz ../docs
+	rm -r html
+
+#.PHONY: winhelp
+#winhelp: $(docs)
+#	rm -f $(pkg).rtf $(pkg).cnt
+#	cp $(pkg)-tex2rtf.bib $(pkg).bib
+#	tex2rtf $(pkg).tex $(pkg).rtf -winhelp
+#	./maphhc.pl
+#	hcw /c /m /e $(pkg).hpj
+#	mv $(PKG).HLP $(pkg).hlp
+#	cp $(pkg).hlp $(pkg).cnt ../docs/$(pkg)/
+
diff --git a/doc/alphacalc.ai b/doc/alphacalc.ai
new file mode 100644
index 0000000..ffcefcd
--- /dev/null
+++ b/doc/alphacalc.ai
@@ -0,0 +1,561 @@
+%PDF-1.4
%����
+1 0 obj
<< 
/Type /Catalog 
/Pages 2 0 R 
>> 
endobj
2 0 obj
<< 
/Type /Pages 
/Kids [ 3 0 R ] 
/Count 1 
>> 
endobj
3 0 obj
<< 
/Type /Page 
/MediaBox [ 121 276 491 516 ] 
/Parent 2 0 R 
/Rotate 0 
/PieceInfo << /Illustrator 6 0 R >> 
/LastModified (D:20010221125655-06'00')
/ArtBox [ 131.7207 279.09473 489.9043 503.46875 ] 
/Group 62 0 R 
/Thumb 65 0 R 
/Contents 67 0 R 
/Resources << /ExtGState << /R1 4 0 R /R2 21 0 R /R3 27 0 R /R5 45 0 R >> /Font << /F1 25 0 R /F2 28 0 R >> 
/XObject << /Fm4 42 0 R /Fm8 58 0 R >> /ProcSet [ /PDF /Text ] >> 
>> 
endobj
4 0 obj
<< 
/SA false 
/OP false 
/op false 
/AIS false 
/ca 1 
/CA 1 
/BM /Normal 
/HT /Default 
>> 
endobj
5 0 obj
<< 
/CreationDate (D:20010221125655-06'00')
/Creator (Adobe Illustrator 9.0)
/Producer (Adobe PDF library 4.800)
/Title (alphacalc.ai)
>> 
endobj
6 0 obj
<< 
/Private 7 0 R 
/LastModified (D:20010221125655-06'00')
>> 
endobj
7 0 obj
<< 
/CreatorVersion 9 
/ContainerVersion 9 
/RoundtripVersion 9 
/Options 8 0 R 
/AIMetaData 9 0 R 
/AIPrivateData1 10 0 R 
/AIPrivateData2 11 0 R 
/AIPrivateData3 13 0 R 
/AIPrivateData4 15 0 R 
/AIPrivateData5 17 0 R 
/AIPrivateData6 19 0 R 
/NumBlock 6 
>> 
endobj
8 0 obj
<< 
/OptionSet 1 
>> 
endobj
9 0 obj
<< /Length 1438 >> 
stream
+%!PS-Adobe-3.0 
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (C:\\ctsim\\doc\\alphacalc.ai)
+%%CreationDate: 2/21/2001 12:56 PM
+%%BoundingBox: 131 279 490 504
+%%HiResBoundingBox: 131.7207 279.0947 489.9043 503.4688
+%%DocumentProcessColors: Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 5.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 134 -263 720 503
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 370 240
+%AI5_RulerUnits: 2
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: -49 619 2 1345 943 18 0 1 11 68 1 0 1 1 1 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:134 -263
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 0
+%%EndComments
+endstream
endobj
10 0 obj
<< /Length 5694 >> 
stream
+%%BoundingBox: 131 279 490 504
+%%HiResBoundingBox: 131.7207 279.0947 489.9043 503.4688
+%AI7_Thumbnail: 128 80 8
+%%BeginData: 5272 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD68FFA87DFD7BFFA87D7DFD7BFF7DA8A8FD7AFF7D7DA8FD7AFF7D
+%A87DFD7AFFA87D7DFD7AFFA8A87DA8FD7AFFA87D7DFD7AFFA87DA8A8A87D
+%FD07A8FD71FF7D527D7D7DFD09FFA87D7DA87DFD6AFF7D7D2727FD12FF7D
+%A87DFD64FFA87D5252A87DF827A8FD12FFA87DA8FD5FFFA8A8FD067D52F8
+%277DFD15FF7DA8FD5BFF7D7DA8A87DA8FFFFFF7D527D52FD17FFA852FD57
+%FFA87DA8FFFF7DA8FD06FF7DFF52FD19FF7DA8FD52FFA87D7DA8FFFFFF52
+%A8FD07FF7DFFFF52FD19FFA87DFD4FFF7D7DA8FD05FF7DFD09FFA8A8FF52
+%FD1BFF7DFD4BFF7D7D7DFD07FF52A87DA87DA87DA87DA87DA852A8527D7D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DA8FD46
+%FFA87D7DFD09FF7DA8FD0BFFA8A8FF52FD1AFFA8FF7DFD43FFA87D7DA8FD
+%0AFF52FF7DFD0CFF7DFF7DA8FD19FF7DFFA87DFD40FFA87DA8FD0CFF7DFF
+%FFA8FD0CFF7DFFFF52FD0BFFA87D7DFD0BFFA8FFFFA8A8FD3DFF7D7DA8FD
+%0DFF7DA8FFFF7DFD0DFF7DFF52FD04FFA87DFD05FF52A8A87DFD0AFF7DFF
+%FFFF7DA8FD39FF7D7DA8FD0FFFA87DFFFFFFA8FD0DFF7DFFFF52FFFFFF52
+%A8FD04FF7DA8FFA8A8FD0AFFA8FD04FF7DFD36FF7D7D7DFD12FF7DFD04FF
+%7DFD0DFFA8A8FF52FFFFA87D7DFFFFA8FF7DFFFF7DFD0BFF7DFD05FF7DFD
+%32FFA8A87DFD15FFA8FD04FFA8FD0EFF7DFFA8A8FF7DA8A8FFFFA87DA8FF
+%527DA8FD0AFFA8FD05FFA8FD2FFFA8A87DA8FD16FF7DFD05FF7DFD0EFFA8
+%A8FF52FD04FFA8A8A8FD10FF7DFD06FF7DFD2CFFA87DA8FD18FFA8A8FD05
+%FFA8FD0FFF7DFF7DA8FFFFFFA87DA8FD10FFA8FD06FF7DFD29FFA87D7DA8
+%FD1AFF7DFD06FF7DFD0FFF7DFFFF52FD16FF7DFD07FF7DFD26FF7DA8A8FD
+%1DFF7DFD06FFA8FD10FF7DFF52FD16FFA8FD07FFA8FD23FF7DA87DFD1FFF
+%7DFD07FF7DFD10FF7DFFFF52FD15FF7DFD07FFA8A8FD1FFFA87D7DFD22FF
+%A8FD07FFA8FD10FFA8A8FF52FD15FFA8FD08FF7DFD1CFFA8A87DA8FD1CFF
+%A8FD07FF7DFD07FF7DFD11FF7DFF7D7DFD14FF7DFD08FF7DFD1AFFA87DA8
+%FD06FF7DA87DFD15FFA87DA8FD05FFA8FD08FFA8FD11FFA8A8FF52FD14FF
+%A8FD08FFA8FD17FFA87DA8A8FFFFA87DA852FF7DFD04A8FD13FFA852A8FD
+%06FF7DFD08FF7DFD12FF7DFF7DA8FD13FF7DFD09FF7DFD13FFA87DA8A8FD
+%05FF52FFA852FF7DFFFF7DFD15FF52FFA8FD05FFA8FD08FFA8FD12FF7DFF
+%FF52FD13FFA8FD09FFA8FD11FFFD047DFD07FF52FF7D7D7DA8FFA8A8FD15
+%FF52FFA8FD05FFA8FD08FF7DFD13FF7DFF525227FD11FF7DFD09FF7DFD0E
+%FFA8A87DFFFFFF7DFD07FF7DA87D7D52FFA85252FD15FF7DFF7DFD05FFA8
+%FD08FFA8FD13FF7D2727F87DFD11FFA8FD09FFA8FD0BFFA87D7DFD06FFA8
+%FD23FFA87DFF7DA8FD05FFA8FD08FF7DFD13FFA8A827F87DFD11FF7DFD09
+%FF7DFD09FFA87DA8FD08FF7DFD23FFA8A8FD08FF7DFD08FFA8FD14FF7DFF
+%7DA8FD11FFA8FD09FFA8FD07FF52527DA87DA87DA87DA87DA852A87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87D7D7DA87DA87DA87DA852A87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87D7DFD14FF7DFD09FF7DFD08FF7D7DA8FD37FF
+%A8FD08FFA8FD29FFA8FD09FFA8FD0AFFA87D7DA8FD34FFA8FD08FF7DFD29
+%FF7DFD09FF7DFD0DFFA87DA8A8FD31FFA8FD08FFA8FD29FFA8FD09FFA8FD
+%10FF7D7DA8FD2FFFA8FD08FF7DFD29FF7DFD09FF7DFD13FFA87DFD2DFF7D
+%FD08FFA8FD29FFA8FD09FFA8FD15FFA8A87DA8FD29FFA8FD08FF7DFD29FF
+%7DFD09FF7DFD18FFA87D7DFD27FFA8A8FD07FFA8FD29FFA8FD08FF7DFD1C
+%FF7DA87DFD25FF7DFD07FF7DFD29FF7DFD08FF7DFD1FFF7DA8A8FD22FFA8
+%FD07FFA8FD29FFA8FD08FF7DFD22FF7D7DA8FD1FFFA8FD07FF7DFD29FF7D
+%FD07FFA8A8FD24FFA87DA8FD1EFF7DFD06FFA8FD29FFA8FD07FF7DFD28FF
+%A87D7DFD1BFF7DFD06FF7DFD29FF7DFD07FF7DFD2BFFA87DA8FD19FFA8FD
+%05FFA8FD29FFA8FD06FF7DFD2EFFA87D7DFD17FF7DFD05FF7DFD29FF7DFD
+%05FFA87DFD31FF7DA87DFD15FF7DFD04FFA8FD29FFA8FD05FF7DFD35FF7D
+%7D7DFD12FF7DA8FFFFFF7DFD29FF7DFD04FFA87DFD38FF7D7DA8FD10FF7D
+%FFFFFFA8FD29FFA8FD04FF7DFD3BFFA87DA8A8FD0DFFA8A8FFFF7DFD29FF
+%7DFFFFFF7DFD3FFFA87DA8A8FD0BFF7DA8FFA8FD29FFA8FFFF7DA8FD42FF
+%7D7DA8FD0AFF7DFF7DFD29FF7DFFA87DFD45FFA8A87DFD09FF7DA8FD29FF
+%A8FF7DFD49FFA87D7DFD07FF52A87DA87DA87DA87DA87DA87DA87DA87DA8
+%7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DFD4DFF7D
+%A87DFD05FF7DA8FD26FFA8A8FD51FF7DA87DFFFFFF7DA8FD24FF7DA8FD55
+%FF7DA8A8FFA8A8FD22FF7DFD59FFA87D7DA87D7DFD1EFFA87DFD5DFFA87D
+%A87DA8FD1AFFA87DA8FD60FFA8A87D7D7DFD16FF7D7DFD66FFA8A8527DA8
+%FD10FFA87DA8FD6BFFA87D52A87D7D7DA8FD04FF7DA87DA87D7DA8FD70FF
+%7DA87DFFFD04A87DFD7AFF7D7DA8FD80FF7D7DA8FD7FFFA87DA8A8FD7FFF
+%A87DA8FD7FFFA87D7DA8FD7FFFA87D7DFD80FFA87D7DFD80FF7DA87DFD80
+%FF7D7DA8FD10FFFF
+%%EndData
+endstream
endobj
11 0 obj
<< /Filter [ /FlateDecode ] /Length 12 0 R >> 
stream
+H��]o�8�@���a����|8���M{��i�6ݻ��Pl%ƶ���N��IɎ3ۢ;�r���Ɩ(�")��?�p{6M�J���>;>���\
n��0B�E�Օш:�;eq��D�����"t%U1i�.���'�,
v�*Q��ޜ�v��Ki2�����T2|LU��ȳr��%=.O[5@�7@x������`2�ۏH3Su��b3S_&�}�b�}6�G��7y'�o�z��?B�^?�F,ǽ������x��*�sQ�[�QU�*S���YƓ���KU�����p�/l)sQ�-
�d�%�"�w3��֠Ą��L%�=��L<�,x�.���o�
Ҙ]�6��۝��3����OW��6��W����o�]�:]'V܆o����V�W��j�^X ��ז�-�c�V�{����̹a��E�ւ�
+,�0~�DF�
c@����u�
�'���F�y��:�i0���E���08AW]�5�3c�d{*�Sfͺ)S�6��ςoa�"8��O������s{{�{�`�g� ����a2��D.E^f���Fa��0
�s?nH�\�E�,�
R�˭�
��x��kUwzSm��W8�p�gA�
�]�	�PHL��p�u�G��lBa��/3NGٱ���b��FL��6T���f���;���MnJQ,�/��Y����B�]
E����gñ;8�F r#o#u�'q
!w��F��A6�§[^
+}'39��kP�q
��|����C�WZ��H
lld|o������
�t,\�ϋ�\�x>�X��!S�.�$�Sє�?S��ay�H���j�zg��J�;loV�w�^-p��|S�ޡ~����폊N"�.��>
���{����+,
z��g��,�x%�5�J��,Nd�,+	1�|�ڽ`�K���^g��k���x�z�	ת�6��Hv&�ƻ�3?Xو y4��ؚvK"m&viU�x�Hy��DN/#�Txp@�ȹ��٫���2+�
+:�����ޯ=,��W�</
#/��E����[i�z7�?
{
���r�d�t-rY��G�n����x�]����� ���y�j�[�l��
+8��3/���iRi�l��'�^^C�	=¥	D<IKD*���$��-(��*�3�h<���k���[���
Y1?�)����
��ӜZ�N[�h�7�{�NoN�ޜ�Aʼ�>o��ja�Xth-��l�k���X��p�a��:ݴ|9\���v�M�aL<4=X��C���]\n��h�/j���Ƽ��w��ݚ�B8��
/i�!,���ŞD��OZ*i�dg
��pGa7T�\5:��r$-_*�%"�3j�Z۝�}�gg�
9cנ���s{�
�������\��՗y�(�C�d�ڶ���� R����?�OFT�0n�$���
+�
i���^Q�+���D�u����
`����K�/R�V'[�分.T��Ҙ
+�c���gh���L�+�v k
U,+�����W���E��O�3�^��/IYI��
+�������TA˹l�X��*Z���B����o�Wltm
��g$�g���|+�y!2�����bo	ŭ]sZ](z�-�B����?�|���c
�k|܀��
+B9˭��n����
I]r$}h����� �?�����oV�J���0�d@-�J��JsNp�Y�j=^P)�sbi�5�{�R�;��	ٝ:�V����K+�?`	��켑5��k
+B<���l
�j�7*�
Cި�
:�o����%y���M�@���4>�d.����L�_�kJd���y�s0�4\�9���: �C,u�eY��0�<WTz���c*ht�s���JQ���;ec�jGmU�I�^
+�ݍ-,m
E#������tH�U�4*mK$(�2�k4۶��2ޝ��y:!�ϐN�bH���k������ll��
nS���)�Z·��n\���D���φJ��~�"���*~xgg�c�E��,���*�^bw�pG���J0
��%Z:�*P
:���Wv�P�i��1������M8~R���g1�޷��E�}s�h��;�ub�
Dw����^ln�t*���	.�9љ�C�����]�e�(6�1�Ih��Eu`���m�s�@}w
ͥk��⣝����5@��9Qw�-�8��Y.��tOJB�IO�5^��S�:C��L������a4�[FӮi{�.�k�!�8d�ӎ}{�Y��\[�'X�vL��H�ΕMS��])���]�\Tg
�3����ރU�u���v�'P������k�?f��Kq�2n�Nfx�G���4���g��G��A����}������_��}��X ���
�`Ё����1A� ������
�`p�@Jؿ  ���`0�c�) [...]
+�<�i��)O�T����nr�7��[]v��
���~��'��� �a
.�0�%�!�2��8�9�qNs�
�3FC\�7g\��eY���4��bZSY�խa]^�b�|N,ٴ��ʢ
e*��K*��ׯ��=QJ��}�݅��|��gG��K��m��ni[��Xa�c�q�~�r�[�y�)/9�o|��S
���wkY�5���e����<��֑��k�J�Rf�)-��̽�丧1
����e[2�����ܹ��'Va�!w��-fV&�>1ά�g�&�l`庹�����
+�
YY��N���Zw���u_C�	D�C�i�0�\���o>�_xr�<C�'��@�1GW��3^y�
O|��{�聑^�]7:#�!�>��K�o
�3�G�ԍe�讕.[�6�H�y�o���
+����D�Fz6н�.
��~��B�gz=���=�
��1�G�^R���>b��],
{ϳ�r�E�u�{�{O|��=񢞘�޼O��cT�굆''���Q����~mW����ƾ���g�2��Hֻ�L�К���??�&�OF���U at LG\��{�y�,��3�m
�,G�e�/����x��%���huD�L���0��_R����nև'��ъ|i��~��#~uջ~\/]��l�%���Gň�w,���h�
�p�loU��^O�֦�*�*Ԧ�*ӯ_�L�DZ5�$�g�^n:}'Ӣ��4���U�U�{r"*����R�:��׽
+�H�d��H'Od�E�'�GB۩tb
�I�r!�
q��� ` P0�
V0���pj��� D�kp�e0���jV��O�SM��5���S`8����
� lC����6�	�q���	�=���Z�!�
��(YT�ɢ O��P��
ba���z�;�߉�Y�8pS2Y&!gym����
����CH���,ȟܖZI�/D
��UZ��r��5�5^jzA9)Ft������~�x�P��R�@k��������|Im�� ��7*7�zs'8w�s���9�_U�9��SU� ;ݹ	�My����OS�&?M� �@*@M���5"OT�L��������
U=2A2EIj�d��4�D�D�L�D�L�D�L�D�D�D�L�D�D�D��k��ʔ��(U҄�*V�V"W^KK$k�T���TQݢh̬ڵ�z%�d��6?�w!@�
�9��n�>���K¬_g0�
�W44
Ċ�"AF�@	
�*

�e�'H&Fń��P1��[xx���5�.�
G�T|4�x�#�*+	%�h-�E"�4�)p 

+���@0 (�����D��/�n�n�>,���n�.aN��n�m������,�&��Qcg�Ah}�ⲽ��k��߷��qk��T���K�q��A��wHK
E_���x��e��Y^�Z��jyX�R󥘣���w)ߪ��>�X�y���r�������H�
:��`5)j�"��yւ� �'�����F�Ⱦ��Nt�����@Nt���$L�zQh0��`
7 at 3�����
G|N�<�\O�Q����#��t
Ȥ9k0�P�5C$e�ނ����%�؛$���D�EZ;=Κ(���^����C��0vQ{�-����\CӤ6�bky��!<��v�6�먻7�=g��l3�]��ǵ2\t�Z���3
\�CCCB� X ��ǯ��� p;v^VvϜo����dV��|Yx
��NS
��\T�$:'�9J�*N���0Ǫ7���j�Ħi�IM��S�"ccv���lu/.�������ڡ�z��
Iå�K�a�x��A�K��ʷ�Zc;�\微��__
At�
k�������7�	�w�g|�Uߙ��H"p_�xt
+�&�9�vV�қ�
�:�t��,�9I
G
��Ms��5�&�BW�g=�����%��B/g[G�ә‡D��E�آ
��$��I���
�|Q��t������Q
�2G=i�3.;'�� ��D!:�����(a�m��W9�� �?���<��=�T�4<��[Vs��\���Wo޿������|�w��Ý~�uO��
x���_x���Vʧ�Af4'?�Q��a���$�]O���뮗�N�ۛ�������_>|�����w�O��������.=��������߿~u����O�>
A�tP�k
����Njz���5yk2�w��1R!�����!Re�PtTp6
�����`a�P�b-�d�ʠ�(
EBB�A�AC���0P!�  ��d�ƿ��D���U�*��W��U�b=��)�W�j�%��8B�<���'˸kC;M�I�
�pv4mPY8�����k�U޿�^4�o�ʹ�v�9��T�޽u��t'��O5׊����S=<�}���]���:
���ݭ�}s�_��UӞ��Pç���i�4l4�
���s�A9���a��sj��x48�EC��ph04
+�
�a� 8+ 
�~�aϠg�3�

v�9*�
t��
+9C�'AfrdA4WRe�!:t k&�C�A]H��,�"sdk�h�HJ9�*�Y��J$X&�
+۷'�F�ؑqA�$^B�3�W�4
�#�#�
I�Djf��=*>���d
�k$gҞ�n��I�<v�r �#y��nًE;��
�t�t�Ʊ!K=����+F|��c�s��O��rĻ�#^��TϏ�=��|���<5���^��YO���(������6.!xj^��k�����Q7D8�s�*�^z a
bu�s�_P��'
��ޓ�g
��юe�H�_T|Ё]���]��}�A�i���W��F��ٍ�
)�Q**f&IW���X�m��= ����ݖ�
�[~e��Ĉ�x�
�q��
d�'�q�"&>S-W�ׂ �Nu��F�@[k���L�{20� br��	��WPp�zv����JP%�2L�Q(�ӿ�/��m-����&@�)�ARd�� ������"0�"@1�$���KR�=�4AR��u:ck�e��w�qi�¤����"I"H�%R�B�D�z
+�
�Q�Q�Q١� c4���r#b3ShDf:H�
+�ȋ�K>�ka�Wg3��|;�Ը3?VD��{
�%
3-��)Gyӑ2�湦QV�
��kN/13�	�J�lJ�
S�
�s
�F#'Ҕ�Θb�O��0z�rn?�@C���!�a
�D#�h�Y�G
i��6C$�
���L�FSd8
���ӮԦD�1�Ԑb��A��
VG���Áqե��0��)���>W��yQ�kL���"���$�16� �5�2�6%�n���X
�2a#�FW��*1�N3�5+�,5��VR�H2��R�RfW�Y5�
+
/�GT�ĥ!2-?w��1��&����|
��G"�|�r4V��"��[*&6�[��:}S��Z�m�����;Y��l���z
]-W�.��D��MW:f���:�!9$aVX�����0�X-[��:]�K$#˶$�	�2ɔcB��2�^�2`V��� ��
UaW"��A%"U��($"�,$�@aO�u*��&�5F8C�D�E�"l�W�*`
+ή#S�(���I�#�"~(=�
J�̍-5�2#Q��Y������`��{�,&:5s�aX���5����b�,4��
� 
1�3BE�9m1�S�)���(� ��<L��T01��ٖ��A{=�� =
%#@�+��'�0+tL
=�˜C�2�ej��
����P3=��|Jq�!�U���X0�3�D�b�]
3E 5�)�
�-�.l�!%�Q3�R�$)ÁF�Ic`֘�6*捖��E�#(R��<��=LIa�?�$F*E]�,�3�Ss�:��)�NB��n
fA�A�A'Bg"O�z.v������ɸ>G�񂹐��l�:i*63�-��8���L䩘�Qi�Q�Vee��e�&qm��̙�X�9�vUͪ2|~��
�K�<�n����"���cR��/�a��
˦r�.�OR�Z`߰������l
+
���l�}
:�O�a}[�����;n���e
<#���oVymm��E���6���*�?$�oi����NO`aP{`���5�m��61@
�
`� ��
��@�+���G ��=�z�7@�Y�`"��{��0����aeG����"
��0H�p�3H<2N�'�Ha!W��
+�{d�!h�g���
C�̘4�D
H�e�h6fƍ��Z�#��1v�<�i�
#�G��ѥ Ҧ2�2��vAd�
E�㬶#
Ź��g�.:^y��lm?m۱;���G�\��
o��-v��8�fW��;�c�E��>-����zi��^�)ll��,&��)��oH�Z$�4�(J�-;��@
ң�cM�̍oE��b��~3.Cxj쉡�8&�e^��
PC��g�B����m�L(3��
_�s(b�[�ێ�G�{d=��+Q�S楪:���&�*T}J�է�d�{U���^�z��eW�9����	�W�ռȯ;^�N{yLV~�\��q�^ׯK��X�7����fsK�.��w#���Nz�xY���,����u͕u�__X�
7M��Vzp�o�������ǧ���W�ǿ>>��~?������ߧ�ç�۷��~��
�����������XI4ѱ��V/��P{V�B�@X�D�@�	�F�oJ��"k�PP�0

+�E`XU4f8f<@�n$��" �%��
+F��@Q�(@
N�B�%=( ���� ����uZ���"RkH��3�W �f �"& b�
8V>
���C��eLh�ǘ{��ǘ�L�g�>��xn&�']

Ɉ	
���0
CPa�
:��T�;���hp36��VYlS�
�؜��#�d�vl��&�� Y�
K/
�r�'.�,�,�,��D]����hy�_\�e���E�e
hEBZ�6Ŧ%ϙQ
UI�3͎�
M�CJ��$�|I�9U�dY*�/tԟ��9�˦o�x�Lfp���=�n��}&�3q���L<7�`���8I�'�s������w�_�y���s�KyS�o��7cw{p��כ�W?U?s�v�־��
�������ӗ�����ǧ���_������Ϗ��~U~Dw
��q,�G:�m���!�VqYea.�,��[.��˭ei�Ի�'�Ż�{W�n��/�E�J��r���R���j���_�@s�L��fI
Kի�V��2X�F�&�M��(`ְ`#  
�Դ`[����:�cќ��x�L���\����Á�XZ��<iHaY$s�1w^�g��߾�Jߪ��uEt�ԗ�[W��n^���|u��"
S��#S�T�����hX-˰,˱:�g��
�<�"KOOg�\����hY�eY�ձ<5XT8P�{��@E�T��,���E� [...]
�<<�{��8ح����x���:
�Z�5�xȖp8Z*`���p�i�;��

+!�%P�ed���CLQk
)�2�$�+��Y�����+���s��Ot���RS���u��-�T�6S�Kٳ�l)W�+�q���I�ϡ<��
\y���j�,�8[��g�)�=��M'SΦ!��
�� F�g4┎	��\qJ�l�	��Q�g���ō.NT=��O���I�k@�k��Q�Rշ�R�T����A�U٭& }���>�

�ս���R���-W�M�~3
��񰦃��@�o�x����|�>/t<x���Wvl.]�R�e�

^�������F�=���{��[����H�9n�&ٚMf1g��sy�O��imKƜ�1��15_j��7�܇�㣩�0�!���L��e졐
F�A1
��T+
�	���=�Ci
�@y(0���M���
���m��
4�
&�z���Py�wP}�o�* c�+�p=\�~��7������	
�/z�
���<

H����	�$¡�p*
��9
���5��LM�h�� ����X8�N��X��
i�W
+pL
����j���k�	�8���
�
�ނ�52�L�G(����:�N�ԗ�z4R�D�<��QS�L���ϧ�g��%��s�����N�iNfj��ٯ�
�m#z_`��\
$��(����
䔃a`�ك����zU�(�z�g2�s챻�%�|�>j�dxI�d"�M0�xf'�$�
+��"A��H�g�
K
�TK��+�mm�B�!K���|)�c����ݐ�WC��M'���;A�b�3�8*�� P0�(
*��F��"��P�Ǥ�.�MA��S��*N[&���^��Y���V�����D�bXP�8$+�͊gA�b�	� �	�W��|4�
Ɓ�r��LdJkW�*kzS�X��_�i�\t��BB͝΄~�2��Z��r�u����r�1�2�
�2�2��0��� â�:�$t
f
g
��޲��Z:��X;_Y����-\�pf��2�N����k��KMV4��]
�V������7��;��M�����Y.����Y�=�*�R�jV�A{V]aj��d�\��j�R5�J:�!0C�L�e�
=a�,'�;�.X��B���B�	ь�. ���0�pa?v�QY�,$��d?��~T�#bWJ���l�I�g۱��PL�Z��Hy7
�b(���rT��IJ�)ݘ���*��K��2S��h1��L�\�H2;��D�L�L
+�NF[
�M�l�mC�`f��τ�8J�t�
+,
�4�)�%c�\q73����k���v[Un�%It���w���{���ҽ�(a�&����j��rQs�lY8���KO2�ꭢ�`���R��L-ÿ���Jed�z
�nIg���
+V؎
��[�tM@����AWW��	��ll^�4�K9��:bF+��0[-��J8���Uu88x������2�5*H�|}�c-8��Ɇ�c8�ϋ��J���i��FŤ�V��U-���<9(�t��F	���bU��ʔ"
kZ�%�Ոe6;5zI'r�-���ֶ����P����2U�9�t�s�<���#g�q�[�g�^
���;��W�#�u$,����H���H+-�#�,R�DX9�c��hs�9�e
��v
ݎ㪣�8�3�q��
���!u		d��-�%6ہ7a}�U
Z�H3�r�l�H;�
6
��+xHk at t�
��ٝ�����ct`[E
�h�5�z8:���:���o

=
���⻘;��ڝ�z���5��݁eFS#>̜X�b�ƺK��L]Yc�?�}Ȼ�3qh��ĥ�O[�۷�֞{M>\pÄ��A�,���:���m�WS��U
�
^%-H[�Qo<Zvh�����	\94l?
��aZ�.
g�i��ݩ�)�[�uk��5�
`S\ �{����m��@2;��x����(�
J�=\I����'M�q�u{�<�M�9��:�:u����S�\vr��-���ݽ�B�ݚ�D�kͱe��ݚ;$��(�C&���0��:l92gǜ
+�
�
A�dA�S^b�h�{�i��:T7�����;���fO&{aH3i���m
��TE�bT*�
�� T
+&W`Q���!
+
+��?A_C�	�m�5ř�L&��8<��LDE"	sD	�F�NF��F0#����g��d��V���R'��6W:qW#��CQ�uև[u8h��_�����p"��j�
�i�[�m�>h���?����wM��>	�%�5q�������!>cR�����g@�;���yN�G���&���
�
��uo#��
�l���ɟ��k��o�����Oy��i�÷X��W�k��A��=h��V�#�瓐{���Pnmyk������������������_���/_���>����˷�ٟ���o�~���/O?�GO����ˏ���"��wJ�zǎ�ZՀ�e�
?:~t��L�{�������0����d��YPm��_�e�� � `�
+��4�����
r P+����P��@��K4
h@`D`HX-$hLӖ4(HTP'q��h���� �n
$<h|�B"���
#$HH��0�5‰�H�P!?�+ZF
G׾��!QBF��QC
#,#|���@�(�Q��XHG��8jda
� 2�0�H�
JK����
���2�8
*�*��j�EB��d�ed�A�d$�hq�j4�hy+{��WV�-Fl�ZJͥ�RcU��p(GD�X��^�T�M����c{Q��2�U� ��*���*���I<�U��e2�j���v���X�D�p�7C�y�
C��:�>p����
�J
�s
�����r��5���P��·/����c�xQ��wo����t:�8;
{\�ً]��Gf�|N{��>�^ڧ:k�s�2�
�\dW2��XC�U��2;
d�,�$v<�l�X�,�i=��j-��?I�U�RZ�Te�"jJ�4�T���	R8�,�����2�PIg�PU{J��
6"�ą2���_k��R�D�D�z����5���B�26�|e��j(U
�)Q�H����,���)!�	�S��4,&J���
�"�&
��9ځ9
��C�~9�njnk���
����F<?a
ֳ`]��N��(Zc�	�1Ap���:�����v�$�Ą=Y�7 �W
{�w;���vt���Ͱx����񀝏8����p&
Lʆt8-�S
8��SL8�	�g��n����8����4L@�tl�*�x�& =8J��\-���t������<N��|b��r�z�6 �8N��\/��Uv@��& b&b�d,��
�01
�0AX#&)a�&��A�
��c��/b
+�q��]0�\�ôzLm��F�q�<O��3�5&800@V���r'Xo<
6|�6EȮ��� ��PP(,20jh�������2<��� 4��k�a�8�"� <�@Q�"C���xx�@�'L(���O�X��Tլ�E�U�����߽����[u̘ vnk<��HOZ�ڄ��Gz4ri��Vjg�UϊV�U��@ӡ�S-u��P����߭�硣��zYo����w�2�g޺r'
A¡D
T�ژ�T�Y;ϣ�Af���y���������?��
(�g|���yPH
\���x���
����
�=:��.
'����}F�N�=؝
FE{M7u���`�RQ

�I� )Ww*S�Bǻߙ�z�LV��қ��Hjtb́�r5w�X���k��p"�������pZfN̹�s�h
�1p���w)=O�>�mYI^C~�ȩML�2����Ra�#q�V�������#i+���KO��cG-j��n�N7�
��Ύd�
:�d�T&D气�@^
h�.f�� ��@R
Ne9
 ��� {���(����V��O��4�e�\_#9�(�]����,��~U?�����1fM���b���xd���9��{��G�ެ�����3�S]Su�3��i7�X
mf���������VP�
mELE,E
E"�X	��6"&"������ֱ7�mÌ#�����Y�X����
�aF�'*�j��� ���YG˫�V5�nIu�S�YJ
��ԇRjygN�?$���U��TϪ@�4�6ָ%�;��V5���S���D���l��@M�oI�y^�Y�3
���N��>ˮimms�ck�l��1]e���]�
�[v��k�|m����:�+�_m�\��̜{�{���0c
+M�aJ�����6،vX]��稞��6�_
�7��g�N^
6
+����w�L�=f��Cڙ�
�����O`�w�ui��m�
�:flwcs�^V��Zx��Z�]|��g�c���p��/^%NUҥZ:�$�g��J�I�H�G�F�E�D�C�B�A�@�?��l�#�3AZ�9�F�f�Ӭp�u����	�E�������t�^�N">�.╝:H��D�8����5f�
�����f�����Ȍ���8�7-]�6�w�O�����{�
�������� ����[P
:���P
��F'.ё�R��jB-
��
*�A�Qg%zz����&t�]�C=6���Y�Bs��J�@
�
]��Р�k�t�����f����!G4�Y� ��hx3� ��*���d�`�L3�ed��1SFɜ�2iL���
�T`�(�7V&������F8[��QI�@`��13
L �e��R�j9d�I�9�"��iġ3
k.�=�LF�6���b
�ᑭv�����"���LXQT.)
��0�dbR)��*�ʕ�rd�l-+JG�3Z�

���5d�P(�K���Pqt8�$r0 
+�D��ΉRP!P&��
��l�c�������>�_�ǯ	�T�
+�GC9kܕ
o�[���G4�Ïu?�\�q��jwS�
`�pEl�=��h�����
��ww��q�
�V���� ���vP��@�߹�];����UӨ����]�� �����~`����g<����<��������,�
+��Y�����?=yu�!׎?qNXL&��Mz]�ו�I�Xg������u:׽��

\�o�rü�y^Ӥ�<|��&4����k�ԯ�vKz�:ۯ�円����kv!�!ݰ�Z�
��_
_���p�������Í�2^��:�k_f���px���E��^ʪ��ӓ;_�]�
����'GG˟6>��k���X2� �0�(9b�pQ
#HZ��D���� M*O
+Qn�D�R�R�	����	�€"��!EbJ��AE�SŠĕ�qET"�\*�F���%R.�L���Xp)�u������4WžF�Ŗ�EB�Pj
.�.^�X5�H���1F�U�����$��*�`SԎ��4|tk
#����lGg�%s 5c�>�8
+�I��#�,
�
=�$����gө��m���Œ�VJW�ѕ��R([��V
�J�J�j��$�Z�
+\%d�d�
�IV�V���ӕ���SS�:&,g,R�]�A(K8K)Kk�Μ�
+*�&_�����*�U#����Fh�ɪ�,����@��ZY"U���ƍ����@XRBU�U�j&W)Y�$+a��l���,N!�A���&X:Sh���N�Sm'��ZR�r��
61�-��N�ӛR2�-��c剉oO���z���r��)j)e�5[�'$伱3�_����:C#�GG��9�����ё�{l�����ӵ�5
������gc썰{2���uM�v���Ħ��;a��܅��G�i���sk=
+E
C���Ƅ���;2��Ⱥ��k��tk�
m�+IX4,�ui��y��3�G�UR[-h5xExM��0�VIu$��b���,�ir��9߇��?�Gaߺ̋Ն�k�1q�������F�Q�@�W6�6�����X�2�ݘ⠑a�[�d
o��]�`����+���.�&n�Srǧ7l��P���Ap�P�P�ȹ!8��'�)����w��+
+��t
�@�i�w�A�5��1��V�B� ������`G7��2���a:D\8HN)�k�*�u��<��o�q����̤��zPA�؉�v#Yh=i Wz_ZğbwR��C��.�ҵث@����d=Kl��VN�-���q�l�|a.\nO���&<\I�
+ۚ1&L9���:li��a�@��e���1B�݈� ��a���}QЬXPK�L.��	����c���jM�-Q\��[N
�W
#V�s���}M�Ƿ�zs��ĝ"�7$��G�s���v"˧4xF�y��tn$?G�w�o"�+��r�R�`
�Re�x0�(�
��G$?��;��@������~b�I��\ܰvjT� AA�_Yi3�N(L���+�WF�E�}����@�X�J���%	��~Ix>�x�w�v�Pu�$ב��5�
+r��z\;Pu㪁f��M3��˱Z\+��)ш*��@-�>���TQ�	U��A�P�T
�%jA� yN5��TC<�����
O��y�=�v�3OZϺ�s�DW�/�嶳�s�Sŷ�s�3��S��ӗ����T5@�b�-��J�D�Dw�.9���Y/�XY�˭�������4H�*�Fi�TR��:�OO��3iY��gy�v�O�eV7g
V�Wґ|��ӓW�O����ܡ@'�+m���Ӈ����U�?
?��!ϰ��.O���iD�z5|
Η��W��.�.7��x����}�}���\�\�.��}~z��y�
���t�<N��X/�c�K�oπ�9PI�X3jNr
܈02a���2dz�l:��g�C�P��$A=������,?��V�RIVڲ�@6R.�ĤI���$�#���z��"Dj��1�%��Y'0�L8sn�\�`s$ϴL2�cjxXG[�p~VÆ5��
��-6�����#
x�

�I~<B�w��S�8�bub8�?����p���'�
����|�G�
���{S�M}ws]���o�m�kᴨ-wZ�Yu�`�����M�h�E�i"e0A(���MBw�M���Mů O��;z�N�+��������������/R~J�9=���|����{wssy} Z
����2{�k~�J�fey�W�여��SYm�o�go����=��W��KVg���9�.xݛ���6Տ�)'�F��铧���g���i_+u��΄��l��7���OA�X��!���s�
ç5�prU��u�g|�7��~�x��p^%9r�0��C�@�<lmd�Mr���N]�����D����a���%�O$E�!��Rd{���\a�������ֱ+��M�R���+s� $�+g�|1�B֐�B�l,�����`-]��%
�NX3��L at 6�Jq�B!�;g��
�"Ɉ�]8���Y��)u�9&�m�K`���u�!�Yf-Ϳ�{#	鳖r�ikm�L
ma}�feV9BO��m�G�	�R�;g-����T�	(I�:�uD�*�'m
,k�j��� �#u3ה�m�K��+n�;v6{�K����F�`-]���
+!�����"͜�}�9�[���#
+[��k)���V�Xnw�z�6um k�9�u�u��㌱7� k)G���o��I��<������۷�ǟ/��~z��߿}���1�<�~u�v�9
��dO
�x��0��?
�/�Wd�=e��~��4����EA���0f2���M��������v�K�-ك�jk@~�_��J �a=�&�<>�<�|�����k��ѦJ�߯E7�
�C�Ȟ<�
~؊�G �
���8����J��mh�$}�T��s�N&Jod���I��r|u�q���K��S��cSgOG1�R�?�8W텂��;tT����Z�
+���w]:)8��u:LMq �
�a�ÛZ]`���7��P��a�!�I�L-A�D]RL�K\_f�ta�mht���h(0m����(t�v���$o����c��)k�X�t;l�;q
Hk�NXV�M9?��ܧ�у�69Ų�R�D
+^u/Xa z�E����L�˜��`B�wȚqx�}p.���Q0��#]@
+�&�q�0���O��bO��S�����d�mM�s�>�R��Ar�a���xI�8�`�
j��kA�p��h
1]x�;���W�^p�m��h
��.�
!�C#٦t����l
c��<�
ݨ
+mKSi����Gi�q�Fֿjokq��r,��D����Y&�N{o@,k.�R��f���bZ|o
��3��
+���["D8��ʱ�
R�g��p�D��
+�����!U-*)�x�`��*�	Qi���Q�<O�Z~��z(Y(
���v��p���en!r�I
Ւt�1���
�_�
�4��q�&;�
}���4�)��Oމa
��J,D������xBl��y���b�"J�w�
�����G���t͗r�P����Yp���J�$9�
��^&C������Z���_� �
�\
endstream
endobj
12 0 obj
16270 
endobj
13 0 obj
<< /Filter [ /FlateDecode ] /Length 14 0 R >> 
stream
+H��W[oG~G:��_"���_��
@Dh-E���:�O"��������/���=]S����&+k7�W���{ͦ����-fcU�[�6��a�6�P'�����%�hc�����B�t
+V�-���Ѩ�כ-'�Wgt���ݻ��x|��{��x�������(��W��B�^=��㟟��������<9<Z�*l�m
x���~
cZY��!�V?��P?+�~V����e�;S�=7��{�4�'#���p��^Uk[�!(v��_�Lin����@��8C�1��ȥ���(yV
j��V��B��P�
+8Z���Q"c�����Lɻ4IM.�o�ӛ�(:�
���	<���ʹ����!�� c����
��;�mS�L8Fh |
+�+����*��$^����
�15����R�#��4y[l8ڲ��
h���X�,�ȱ��ed�d_���@�m)��
��"U�Ⱥ�u���y�r���"5|�#t�+
+��9R�"�����$}��D��8eu�J!�@R.~$�J����8OU_��Xc�v�j%�G"9�;��*��;7 �$�FN����8o�g����Ğ��L�R�5�z`��Yρu51�E#
*W3F/bg�M�����PtC%˵z!�c*�^Z��R@�
���~��e�^tD9�\����ʄ�
S��799�t�9o&D��`Z�6��&
gn��|��.��j�n�6cW��͠��f�{�R��]w�@�
�1ې�Q؁�<B�\�*LE*��C�`��$�Nd_����<]r�`��-�,ct���X2����4��EO�&l�����
+���n�'�T�hS9._���ٗ&;�����^������{�@�W�f>��hF��t�5�69�V� v����
+s;n��cYWɢ܍ �uah��x��!���5���P▍��W̑���Ňj�&�F�],7��ԑ�F��s�����-~k�Unqsn���4����Ѧ~KM������MwU��5Dx��J�
WR��	xbNH�	�v'2�T�f#0��\(y�0]
ޏ1��ĔEn���3 )1?t���Yd�YͩZ��p(>���������M?b�Pj�Q"ܳ]���$7K
�`������$)f+ZlOPUoym�q
�R)

�
[��J�_zI���$ܦD�![[�6R��#�n&_{o8�]����I��V�͑i�۰`���b�_�xP}9�p>�@����63TQWN�Zf�5Q?i���
��U�T��
x,���u6 [V�"�Z��=��I��l�5��]6/�o�
}إz�Թ$������R<&�Y�Mz��ar�I�Y��U��ưJ�*���-�ֶuk�m�ugӲ�M[:Y��㲰ɧ�3c�6SLb/������D:�됰����
F��,3��P�>���P،1�,��D�Wgz�Gz�&zX�n��y��&����m
�e��&y�y��xsl?
|]�enjyX}�D2A_#��,k��V�+J��@9�]E;��kLX�S����X���K,Iu%(�
�%9�NՖTf1����z2�
^��ُ�݋��닻��ۣ�_}�>
+�{����ۋ��˿�

��j���EJ?Q�+.,a�
��'<��g�����ߴ��|�ox�K�E�Y���
�=
��W����-t��я�?~��
��A��>h���qu����q�)
+�2�Mǟ��
��L���,��dr��O�Bj��d��1���5s
�_j�\���a�Y�`���A���ݛ��a��ե������+B�t�l�JN��:V!�zRUe���0��1���g�"-�χ��o�
+
kr~�Zr޽������xw}����k��7�G/���2�{~���w]�_^}Vr°Af�����������4e�;l07���S1L:;!i��l�^�!���@~�"�ZM]TF�~�-:�<ڛ7��Њ�
���
����-F ��D}��ge8e�.�Z'�ى�Ϡ�~x{(��u��ã��Z*�w-�7ЦV���
�ܵ���X8�y&�
RN|��!M�_-%�x|&��c�ͧ�IUr͢�Y-a��9��`r1�\1���Ar��f2��3�x38B��/'�fWYk�`M�?&HA֘�^��xG
d��샄L	�!��y͊=>
+Y`���ioT�t�� S��}�
@1�-��P�Iw�s�01�"��}<b�PI�$>.�9�������n�%I�H�� �hk�
r�k4�D�JL����P�8�h�Jy�t�yFE��{!�s��ю�l�i�'X�ĉ���Y�����8�Ԋ9$I�848�[Urh��Dq!��E����̏ta�7�[!l�b6�%��6
�� �H��6�F�ÊZb�Ƭ��[�w�
�eXa
�}1v�-��v;؂ns6
lQϐK�Zbށ�S.fo at -}Y�
���O���h9���`-ra^j�a�n����+tm�:�
�b2e�.��‚]$!�M=�.ѣK+v)c�ff�.�w��8�W��LP�"�����.҆��
v�n�n�n�&t#�a���
lr+tA4����5��3A7����W�@.h]c�\�3w��\����\�%�
r�s���1��W�XJ4;�Ƅ����M�
��'�-�m��np.؍h�!��V�ہ���:�॒���^����	��;c�
+^�I�z
�n#���&@*��%�di
)\�Fu`�F��Bq��3�����9�5ҍx|����Y�q%/�
��Z�N�J^���xy��w�N��^��&���c���^����h��N_!�g������� ��?�

�$��;�pn����}��̦/
+�bn}q���t
�x�M��ś��\�
�m<�+0L�ƍ���f��R��
��
5��m�
+(�\97}Q#nS��"6���nQ6\�<tm�;}o�"8}5i"r�/�R9?�

�\�+���˻d��w��з�
)?�̄�
������ ���>�
��\�
���+{��5�O�"�����^|w���ގ��ѷc��-��5č7}�^�}U�$��`�^��1��=}��ц\�ۑ716
��Oë�4����\CSs����̹�+q��Lt#.
�6ꃸj[݈��i�F\h��:&oQ|�-Bht3
��������~~{�ᗟ~����ф���H}/�@@�7�v�����@��orB8_�����6�8t!���C#�X��
�.y���̕�*
��!��]�L��l������� �eqCjr�i^p�_'>7
��1�Ɍ*��`ɔ_¼�h���.&� �fG)G�=
����O�
d��sǚ�΃,w$�r�)$�k����]������>(:��nD5}q��(q�Q��=	�����M��XF�6�� ��['!���+�:��K��YCw׻���&������u�]Dfr�í���r���-�b�Sͮ*9��fs�"!���|��u���wv�� �i�
�Rc|���l��9�|�3� `��7I�d3S��/ި��ڨ���^d;��˄`��\K�'��tW��M�n�4>���%��7%���:�!Q�p�wbhN0���:O��e�4
���������4e�㒘�,<X�I֘ϟ�ng-��:y��Ry�`"~SZ#��c��|��1`�����Z��Or�2{ﱂo
�=�
�:�i�N��a�c����+F
mv�_W�R	G.-ME������r���5EvB
Lw�Ea#
ʌFiM�+cV<�F/ݞ�h�X$�ꖫKBѹ�`��US�� ��Uі}5��SS 7r+6\g��ن^oi
��s�8�$��[P�hF��_M6��݇��-�RB�%�(/7���]��
�6���������
F��n��?�I�����z�	>
�"��~\�������Bu�lH��Xiק ���� �\-��������W?�
 �8����
Z�s5�źZ���s�
��z��~��2���U�
+��bQ?���ahN���K�Z&e�ٯ1��׵�Z�Ul.�v$����a�1��	pʾl6�!�p.�l�k�d�'w� �[��0����"H����7��S8�}��l��{:����3����a��Oh�f��>�Xױ�Ҭ��i#'-�ߌ�*�nH��Y���e�
,����˫�D�:�*#�
�
'�	��$L�8
��f�+���–�6
 g��J��;ϊg��ĴR

�<��~`&��5M��ب���;=���X��/�)ql9�
G0{T=Nb���
�N����♑�	hȢ������h�_#�ģЗ�� �e�h�~�([SuT��ӟvX�5?�vÜ�C1��9Be%Ve�҅�TT��
�+���u����]=rY��t�J��"�F&��@���J0��(V�K&pA�Iv�d�+:�d��r.�\�jl"�C�ڲ٢�-уd+k��6��u|sKAV-��Ŋ ���4EU
먌r4���"�ox���'�ڐ՘�1��Z�P`�r�}�j	�ύ`��u�ŧ�i�*x
ic<�A�K�i�ad+���HEq��(��8��Ɣ�m�qr��(3�A9@풯�:�4�3b�P?U���`8	>�A95Ah�
���56N�j
.�yv2�	c���]�cG
�@������v���`j��+
c}�ws�`	���
l��GA�M���*uQh��aކ͚�b�Zgk��U�G=C��\6K�Lݓ
���'o?�����˻&�z8���3�S� [...]
+�ð��b�a��XQ
+�gU����%5{
+K�
FH�B
ƹxFF�����?bF{K�K��l�l�k�b
E�{��ʮ@�*g�)(�F���"'��P�5�H����~�^��f���HHè>�)���x�L������9�1p �A�;ΪײW
�,�j���z
+giS���Q���XQ�?r��F{R��+��l�3�>���$�<jl(,d5g�&�\��,j
X�
g�
�wO3e��c�c�,�螇� W£��bm>��#��r
���hVz�j�
D��l��y�m@����X8��X��a�q��Z׊�1K�WJ��
9C譙
+/��O�1�y�n��J>n�sH
z��ks��A�Jv齀h�u1(ۜ�U��x
�����ኧ5�Ȱ�4��4���V�uV|��L���4�Q�J;`>���
U���30q[7�bb�C7�]d���<ȶ����}j�F�	�ve�
�WG�r�c�MB�NȸH��+��Նi�}m����b�;4 ��8��H�ޭ��Y��\��v�U�k����>��q1Vlu-�Yw�a���rAu�
㑋C�3�TJw�ä�~�Qk$��\/���	��]��h!���'��K�DN(�/���M7E! �	
>��E����nF�o@���u����#�c���h�,>� ��ҕ
jYk
�PZ�D����DGOs�vx��~��F�f�䲣
+��w�q;X��m�[��
�+����K6�t0_���m<�⍖�=��z��%�oC��f�l����/�o~���/���?��ï������
�����������د�ո�#�n�8/֐���%y�=y���b�`ٞب{��0���ڻj�}n�P�$�Xؒ�Oש�U��㻷�V�gjx�{v�S�
T���B�w��#�σ�~�E
o���k֪{_�oE/Ō��r
f�!�Dc��������~G^� g0��-��[�H~�� �C�;\]�ۯ��j� :�h��qW�'�@�����X�Ք.f�b�og8HظV��N �2��>��z�͋Ow�~�������ӗ�(ϛ翇).�o~����������77��׿�]������?�?�
+�C�UG��/�D�
^f�()���

��
�@�����*/D匓�)���2b��AC���u	Pd�b7X ���,��-
��`1GE��K<I�zT���
����4D"�68Ů�������	Ԇ��.��=��[�9�5���3G��y�#,$]Y��LQ�W��F
�[�mE�
����CRAb�X�o�PO7��|F�w(֨6[�T���k<�٪�3��˗�T:SLY��$��c	�E8Ί�R=�.�
6Zw���
��k����
��
	������	I0Z
�4�a#
�� ,��
�3�9��^\�U�g��]
�_
W?�~|��O�B�JE7'�n�.�
F��8i���-�3q�J^$���<�G�N‡Rj����|���&�
B��V��b�f
bƉ�cX�?�?��}P^ ˕����kZ,�68�|�B+tgF�v'�[��8�t]A8�!嶚�Ll������s�|P�=�!�~���x2�]2�bⰴ��@�'�
��#P.
UEd.��g�n�kt�����:�0çA�]
�o��IۼL�޽���2���r������ǝ����M�J�>ˉ�Ӑ��[���������x�VL�#$?�b��,Ä���i�X���5/h��j $B񫙂����J<0��}A۰�\#�
���`�T���`2���؁կ���>��ޖ;
f����H��Y
���aM�U at hq,9k;�-�=v��m��t��X����C�Ӈ&�ه�l��5����n(��)~P�
Fq3�v�<�x�A
��F�����/`�@p��Xp�
b$ɧ��D���W�N�0���	F1x۪ �mu����9T�ԏ�cw�>��7��}����-i��-	 7�	#ֺH�l���/@D�F�e3�ʦ�x�յ� [...]
�/
�
G
�M3�׮kF\z�3��S3m���s�oD��,\�#��}
&4��n6����4Y����8a��%�d[ҼƂ�4W�K�ô���ɔ��+T�L��:�
+;�k�2���:Դ*n�1� �H�B�0��qqj`��`�

B������)��@D%c��=0�
�
+n��
^-���m�a4ɖs����.,�0k.Z�C���j�f`�y[n��9	Yin�lu��ggz�
0����a^Nl4(%�7e]$��`Ă%�
^��.�L̫
.L��Ap��I!��^�L]���q�ʡ L�
o+L�A�h;�-8j=nRm�f0f"�e�_`�
D&���E��c�+��$K�{�,�Chi~]���ä� �Uy�a�ML������
�Q�  [�\f�h
?��"\��*�,��ef!w1f.�.�.cyh	�&�ƕ(�1�[��9
U
�.ʨf.'a���/�O�~���zHvǽV�-�̅ǵH���f�b�M�8ab(���ӌ��J\��3��:ŗ�u"�J�q��~
}8[^
ŰX
 h�
��V�^�C�M{�r��y
S���m���1.���7�Ζ4
��ؙY��^q�^u�mq�b-Ʉ��$٢�oZ� \\9s<838�������v�'��zmg;�
����
�-�Ek��
+�\5n �4���L�
S�
��_�?g����^�9������O���_����}:��}����)���t�>�{;h�
/v��w��Zv���B�w��#�σ�~�E
o����:�e�F!	_)�(x�‹�ۀ�̍X�o'���J�
J���Vl�k�(��B��w��DS<˕���i�*����Cٍ���"=���
+W�f��N�<�N>��1qP�����fV$$�
\��ǵ)����Yޅ��S�����
��eI{��t���.�]�K���
lpU��,-]ƓS�ƋkZG>h�������+E���IoE?���%K6K���H��Дװ�mF�K�D�/J���'�P�(
I�Bf�e�@��
�zܶ�����j+)���F���r�����O�
+��3�*:M��F�#��p���*��Mi�jT���5�~�g����Q�*��>��6����g�rmDŽCC��$,EG�p��j�:/C���^
�4��5��mW���ː
�䀴
���@���A҉7y6|��}
�����yJк��p���L�����L,�u;��&���#��D�i��,G#>�k�_qf���ߨ��]4�>�="[m���|����e�R�fY���>q�(��ZB6���굚l�o��k]��Akݶږ=��𫣱�����UrY�W��r;2�1�p
+�)1<)�R������J.˴
g�Å��`գ
�?��L�[��𡣪7d���T
�_��&��x�.v��������gz���g�F�:D;?�`���],jS04L0�A
�h�1�m[]SV��
+�ӻ	��z
C[�ʴ�CV
*�JJa�pܻX��&<
�d�6�
�;5U!���ׁ���
B��
+z�x�������٬�U4"������H={I�:W�`)� K)����)�xm6��~z��h!D�
+��P^--z
Gt?0����,�~?���E„��� � F��0��c��s�������c��_��z�s�v9�}��!�r� ��l����tiT)��#�Tw��\�j����
Ne
+C�i>—�(7�I��C��\h9\�ѱ놉��[uK�]��L�C�
+[���g�Tȋ����1>�
A�W��.7���F #�?��|��1{	#�Y�9��D
�v}��;o(��� ��puƕ�g��q?�����	���q�M^�Ҋ��w%,3>^�i�/	�
���nP�Ԕ�����Z9�

�Ml5^[,��?��
�A۽_�N^a�
+�н�N�3U��)�v
f���z���iӇaJ�7hP'8�i��ϵ^~�ӝY.S��̶�2��ҩ���E
��I����a���<�V
+YރOV�<��h�J�F��u�V��J1-F�_�Z���,�SK8D	�׽*��	e�oߠ1]�=��?�x���I��'t��ʮ%L��RY
"�o
�Ǹf�䴞�h��{���
/m�8:`PZ
+vb�`Yh)O&'��m�[&-BX[&�J}8����k��%HUiG�x��ǻfS���}�J�6���vkk�*���{×>w����
.��Ҷ�~)�f
�/�۬�1C��%k�S�&i�|���YS�I��g���;m�JaiWi�XS�6m�(Q��6���1ج
�
%}K�=�V��2��t;�$�
 !��29��Tl�����0�b�$�@�x
+��k���"��K�!�
o��b��[`m;y�q�@
ޕ�rb@�x���+�:ը�c��f@�~�`)
J	06cflF�
>� �T��N�*Ӎ)@ih9
���5[o��UK�a��u���o
�̐·s�kʼno�E1�=�
uuxŶy C�"�3�g�xE�O�	0�i��5����X�]w;-�
�m�5���݆Xu��A��7�z0.֤���G�'��h�}9��uB�*b
���+��� ײ�SFxqޮJ���
U�n�0�'��������{�;��	��h��v��aMk)��ՠ�u��`�[�G��r��
r�ãVz�	tq��yzpi3�ux��M%��Bxs]�|.��Bg�8Ycs�Ņ(��
�B��_�
W�<�lH���o���P
+���h���Ԅ���,U5��9MS��?/��+S��o�ꈴG
��M���5bmF�G�D�
г�<�
�i.,�
��O;~�/�3��j2nH�p�1�9&�Fs��-3f���4�u�k�$,���
ц���3ǻB�Ƒ*5��z]�n���%��
���-��sHSF�^�i�V��
��!8���N��s�1
�Tv?��p
&y|�nHk1O+�[#'�|��؃H,�
��Ж)xm���&5E��>
Q�OG���7o@�ezAP��[
�h+�t�Z&�l����Q·yC��ƮE��d�uA�7�m�5~��n��}���*��_O�E�B��#��63�D+��1�

��K c.��i��ژC�./Yv�
�46��P�(����l���f�q�m4�wrA�\��b��
]�h
'�@xa_dC
��\�.�l���]�{

��@EH�3� ��*6v�!��ma~���YjO� d&=V�:R��
f���4P{2�BDr�u�Z��!T
C.(�7���ס� q�
!b�G�Q��8W��$4/`���^����
ap���������L5�}C��upe
��K%SH�1�]��1"
+n���\�(/�i� ��Ws�P-4�@�V�;��p��$����2�J�\<x�6�yh~�!���4�q3�
+S����pzc)�3�5ӑn�$�K��B#s\'Ǔ��pQ�RGn���$��N�� �
դaL_(U�։
_U�'H
5
��
0 ��(G�("
�)[�X���
5�
�f����w�r�?��fPi��G��f��xsa0�Q
�U�׶rTbh�Q�
+嘛�V�J�ͤ����ޛʗ��}-sEd��
B��Aذ'�pP�R��OT��VʁϹ��A	�iiF98��*Gͤ}5��A8(+� �7}���6탟�r���lk�rp�e�
$ḕ�rT��
Y+G�4=-�d�S�r���r�� �oA�rԎ!H!j娽 Zf��
-绿(��|U#
.�+� V�KN� �����Im[7P�0F7j�S��pԾ�������F8,�6#
t���Ax�V7C�y��*�Oـ���N�
V}�F6(
������+#��X�pqj��
�;/{[6
��t�S6�	Q�F����~c���t��ԋp���
�>���
H$b*��F9`
ʩ�O39�F&���W�a�f��A�

��Ǐ��8��BK��'N��k�x�m��.�<�q��D�[���DP�R�
�=�W�À9��%8Z��5�7`����E�%�Ϙ�$��ɯ�X��ӄ��V{	)=���5���q�%���!iC�0�IٍCfR���˲S���d6$���|��|��u�º������B�5h\���r�~�:��n�d����m�\u���I%5��:Gː�h�B&`J5*P,8LHL�
��
+��
�|�6қ�\xh��#6ŝ�:��k~����؆e�TE��������,�Ғ!r%�Ϣ#�0���jp��+��>ן[�c�ӣ��'�k/�y��G�(Ix+��=jq)	��_Wi	�#�g���w�
�1�-��Z
�>x>����sk$tlz~�C���du�%?O���
}w�o_}}{���ݻ��|���߿|���/���_>���^������b�޽�|����ͷ�������/�_�Y������G�����{K�?���ww��3��ʜ?�B�R��!Rw�Y�
��B�|^�x��
>�g��Ҫ��9���vi�n��e�ϛ80���7p���������O{��hua�
i���&T����$�h�U**RU!�����H��3��=>�=��d�[{<��g�o��tw�]x��z���[��Hf�&&2ь����@\!)bg{�<�G��[*�3#ȣP����T

1�D�� �9
Ζ4[��"���s!)�n�Zeà˖Y
;Ɗ�6�#�z]p
+��
ު���&!�x'z���QLܵ��mw�-
+���!��b_3�j
φĜ-��}j*e�qb�����-��qX`j���|_��d�͗q~=������!�s!lN8̟�v
f�T�#�yy,d���=ᆈk��C����n�`��Á�d�oP-Ala�6m����C������'9+;��T�٧0�ؤ�"�v1��E�ь
->K�
ީ�y�5qB��
TϠrO�ՖGt�Pd���͌�9h���<��gx��w!��2�=�zu)���
�McS{i���M���
	X������Sz���
+4��^��&�T������=�x at U+�y�ۭ���(�L�E�)���o�k0�S�Is@7�hpo���[JDpq����-{&�
t9��bߧ�-��U9+Q��\�?28X^
O���դ���T��,��w�V\���
1*·y��
�9`�	r��K�ʖ�~@BF��j1��1�r9P��-���[�W9-r�sWϽ	v��^�K�Vkqa_��]�	Q���.���
l�wΰ�X����I��
:�pS���2h>����.ܥ�d�8���WȬl�
ZXp�y�_b�KD�\�j
+�joa%�`4�KO�6��Ty�s���"�P�4Œe~>�+����Vi���3
+���A�X+��()y�V��f�ąl0y�����\P.�a����SB^��A¦5O�ZeF�[�m}ش��X�NL��нʚ�`o���3�l�Gn�dU��B���UU��|q
�׈>����-��Pq8P��7$L�Qx��#�=j�Ы�ُ?�ӆ/�/��cj���Pq�&*~5����!m�.�z�c
�cj���
�i���J�����4S��#�	�hճ�x�w`�eq�+흘,�sW�Ac�
��m���EG#�������.��/,�Z���ז���H ��o�ĩ�}����Ͷ�������?.
<����_��?߾~������W>�y{��'o~z{���oo_ݼy}r�e��/�{�����~�W���_N���?�eN����ә� �I_z(e��V7�x��j�+�-��UH�B=�W
�A)ů6
��Y��j�W��H~l��'F�}����_�~S&w5���+!�k�C�#8�P�E���
+�{=)�._�H!�-���
n�U��еx���&��%6����V�w{>t��sX��n�BR�SMx"��2
�,�Ab����>S��L�h<�<*�u°���i�-Q&����6UF���Y�5NC�T�07Ȟ��˕`
'4����[��,��
b��L��3L��+Xִ
�f=C��ƹE�DXm�	
.�
��<�ҧ̵�3�Vx�
��r��LT&�Y�G�;�~d�WP6@��X6�Co�䱌��(�|���2�o��]�p�9�f����@�މ#�_�p*��b�Z���b���:'��(��cr�����.|�J��j�* ��5�{ل���ge�5,�Y¶�u��UW���uJ9-���V�o�|�9�5V��U��1nB)/-�މۍv
+r�O
+�}��rD_w���7

��oG|�g�:6��ᬤ������h�y�Ϻ�.��z��o	��Z$����ʬj�U*)��o�Pjc�����6��r�%�V���^����2ץ����`�Y���ʪY+����]t
+�����K���2Z�lH�4J����l�Z�o�N��jZ
����,6���
�q�6��7n���2�vc@��e׽�D��nq���.�9,�Ui�i>�E��VRo[���t(�SL�&R,j�]m�!��,�Q��N�!�
k�Ԑ&N�.TpՐ�2�
��&`��!L'\U��J�Vna�8�̬�'%]�L���h�*��[�^��W�0��J�9$,P��H>�W<g:,qDj�;.P!���;}\�˾���j�sS��h�������X�T�FF�X�<fKU��R]�V-��H����|K��� ��؉;EE���
+i]|����'��•x���>�i߅o�|I����"��v-Z�H;d���p�|(��r��+'��)��e[��
J��t��������ˮM*�YOI� ��C��J����
���^4���闋����SKZ�y��*��P,
-������Tԭ $�+�z��VJ;���,)|ի?��c
�QR�#���tL)
��Д�Oo��˩ӧG��5��~�і�@[+�lM��=�r�+����th��s��Hz��u��c�w�:���rc��E��؛T�z��
���Z�^�<9�̼�����;$F���� Jn���-Ǽ������|*wq(+�o��M�`��\g#����;8I����I����͆0��2�����T�t�~��^���Σ��w/ҿ�q��rx ����߼����߿������W�=�nz����1���������tz������7O��?:������a�@YY
�V�
�+2�޾�q��ZG��a

�dj�մ͉
��.r;�O���s�@�f
O��hB��ɕ�;`t3YԿ�pϽ��(�6o���h��x
��u�)��T+�鶶�d���ϑG��<29��VN�=��c=&�
��Q��Z���zn]}M2�衡L�����I��Jjt�]�FU�c�3��R����MQ�
���ǁ��]�M���@^�H3���� m�<�X9UG!�
ճ�|�g3�lN
%�l=��g��(~�A�φ�6O�ɒ��|����M'm���
M��\�Y5
�|�6�=����Ht>���7������KO �'̮�OȦz�(
Ip��ѻ�%�]��һ���Ȯve�R
�O��C��
� ��lw���1��7� D�woG=R)�c\��\�<�FyQ]�[�kW��4�tPos�@��b�P��=GQt��$*���{���wprvb֖��,�
�)^�@g�FA���XW���&�e�:L`t:ן�
`#S�,h�
@�
5��ga�^���gC��<V|6�����
�}�$�G�e���[�u�8-K �GX
�v����U�8�`�9�&�%@�\
���xK����#�
��M�08�`���R!ъ@���łE�O'rhV�9Ȅ��l�I�ZlP�<F���B��lAU˃د=Ϲ5��Y9�ؒ��
uV�72ʤC�
�3i�[�~eo�>�ݨ��M
��x2�?����!�@�����G�M�^{C���Ԭ�c� c����I�j�gª� ��*:���
+�
�H1���_%�nB��n��X�8k);9�J\����TK0�fOV��֧
�jt-����-�� �{��g��!�?G5��
�+A!��u�]�i}�i%��h?Lh �o�Qp�KH�z1��c����hO�o�h�YD�
� ���[�F��<
�����(�y{=G��;����~��{(��.Ũ�7�	�E��#�u�������a�t_�m�0p�5�D��+XR{fN7�*�����Me�8��xhK	�g��-y'<��b����/o���
"�ZX�2bm����6j?n!�&�r��w�O.�P����l�q�����wL�d��l��r��Xm��Y^
+��*{����j�i�2��#���VJ�A��С1B�(2�tPq at l�1woL����K
Za�cx�&�Uᕧ�B=}�G�i
{�;�U��)�( H���!cId nk��e�w�*�
�ڱ�B	��^����ǡ� n5xUӧ������c��*#�\k͵� Uh�/���F��vTx`m���d�M�3
�ad��$�V��0�~>'�r�\���TI�����JJ{�]א�j��z����3]������b�*�*�M�θ8�%[���p���8��F&t

�O�Aݤ��uh�s,�XM>�hn{ê�t)0c����s�L�U��/w�{����Ճ���� 4��g��‘�>\/�А�B��Zq,\�k�9(�#4Ci����M���0���`V��P�s� m d7�MZ�C�����\��
+�#v
/��n�X�(�anLj=��2~d a}��3h��tH���5Tj�O�c����_��;=
XEF�52�
ҟ�4<V<˳�?�������߻|� [...]
���</
�����L
���ޞ^����Y�D�R?'�,����"��~���k5s
��+s⬨i�F{�ʞ��(�s��a޷�u}�����
!(���y��i~~S�}LJb�G��S��hԠ�9ֺ��R�i��1�M*hR� 
pf6|�%Y=��.�`�������/}z
F���p��	&�
+dF	F�
�P^%ZpI�!��b�m��h�
�1�"�µ���D�
���`�i�����U�*�}�w����-����������!��Ǝ�1�f��t7>j�8>�
0u
+U��N�^����V���<k,po��*�t����
L��V9g�(�T&�h��@8����ϳ�^v#�p��\�n{+Lƺx�����s���lK
'�;T��L�W��[��s^�xMܺ�;��
j|�
�(/�K��_ej,B��
+cq��Q�C�w�Upxe>;��b�|wX�L��
6��^xܳa��ف��&o���uv����>�j�wX�w�y�6-�oRM3�e���I���p^0��׶p��.���V��z�GE��?��j_�c%��r{A�!�|9�}Aue	�,��ѥ=�C#����)��
�NRWp(ؚ�Oš8u��P�H�g�d0����,�*�V��?g����
Hy�g�~�lt�������~��L�
6f:
+S��?0�f�:SL�@�N�UKe���
[�c#��
���:�esJMn�w�������
ŭ�z I��w�g|_� Rm#�}
^=+�D�U�,#@�F`Z^$�jox��q�}hm��Â�O�L"�s����1�,�Zڛ��a��v����#���5��^r �ґ�E�n3�r����zS���
��]�/7v~	4]����21�}����Q)R�G!��$�AB��y�
$�jF��i�#(_x۞�g�
ѵ�98�!�z-�`����vJ����P�&�CW��a�Y�c=G�U�WA(��%7�ɜ�mb`x{DLs�xWJ�zdTv!K���g�]Wǥ<ŏpqm�>�����$�?0p��
<�ɳp5���tu�ل�qwaL/l

�pa��g\5z��'������|C<�1��/28��S��B
+�74�T;a��F��YLRn�%&%�n<)�y�]�k>C�Z�Cm�<�y|����(��3�R
�.��)
�%9��ӣ�K|�Y,w ,c����p��Q���w�q�&� ��I���W
�*������Ʒ��8Z;*�*pa�*~����9�:)�<�
�"-kE�իl�H�.�9|8
%�������h0YQBRh_h)C���C�Ō+?��h'օVA(��B
.��]��'HL
+�]��
+�������
]{"i�q_N'u�P�'7����4��{qR��R�OEO��>�e�[�4�c�E����צ�|�
+ Z�o ��V
3JdҨ]�Le���цe�é����iĥ��OvRŇ}��RB�Lk�"*_E�J����(��6F����v��R�
[�{$����Zl�eP/Z�΄Kp��5U
�בX5x�C�1!�!'�U��f���b�Rt�Y6��
���� َ��S5w�	� ��u��E�9�ٖ���l�4lK2Xl�+��~W��N�,m �98kJW3���bԚ�"�:X�h�R���;
�_O���@��Ϯ]��t#@�ny����,
½�
�~�@��
�%���Y�>��=c
�K<	F7��{��O�y���Y�:�sU��
�M��ط/F�k�X<r8��Q\PB�b��K�~�4��Ɩ�B��H�?�L��P�û	�.jpk��l� �����Q^<�m�9��>����;ױX�b���' �<�uW�W�-�����M4����b�L�I��uuk�*8�����܃�X�%^v̛p����A�30
���N���X�-A��r�<���9���k����&۩� ��\����v��]jc�+���
���}`���I��L?
%8F�M|ʿ#���GQ"��^	���
A���{ܳ����W�6�m�,�:�!)���6�M��ҹV
+eSbk��
����Lqw�>ɬ]>�n����)?sK7�(1/�<�|n�P�b.�Vg<T{�^�b��w�h9Mb��f/Z��z7hC��o�.���ɲ� e0S�W�gkY��M3W#H��->x�z�_�9 �!

zFp祿���8�,�^O����$
U+�&��x�==18��~���:�pjmg�W�$�*5c�të�x�݈�.��J��AY����%`
g���p7pv�Ig�J$�c���������i��bH���4�����
+)³�VI	f�<��B{22i��+	��pc� F�[-�(+;u8��}��HR��BdU.�)�a�T7�����f�}:z--{�,D�Ɉ|R
 �NF݈q����'��}Ê�y~o�w�<�q�A3���1���c��
s����ՑG
���
�|��v��hd�z`��Ob��c4��!��J�J���ۤ��>,
KϤZ�k�Z�h�
�?��D�&�&K�����g2	
��9k�(^���c�6��`$<������]��Ǎ4�C(�
͛{�`�Y��2+D�b�"apu~l�჎Y���wC�G���??,=H0܀����
D!ų�)�5�|��'�U
s�6��p�gMF���k����&
�����ZgR�|�)���{W�u��S�VV
��#ܻ���̪0"
',r�	b{8�hP����$��|`4x�q$HG`r`�܀� �u/�O�;<��`��!H��C�����fz�$k�l�3���a=n��қ�6�:{-��*
3yM��t"����
r�����Qc�v���R��J<� �
'0	�pF3����p��q0:ـ�s�


�>��me��s��5��
V�z1���&:��
/,ҲP�p��\���4
׭N��X
�m�	�Xi�1�o���^�Ӣ<�4���y0�:�hAY���ZsRر�
 n�}���v��J�O�
@���cm�P�#��L��>��g�X���
ݏ�}?�����������x�^� G:a���^p�)�R�-	�%k�=��zr�E�,�m"�6Z)�@
b;;\��`a����Ui8�z�l���{�ٓ�
T��fu��  ��h"
endstream
endobj
14 0 obj
18800 
endobj
15 0 obj
<< /Filter [ /FlateDecode ] /Length 16 0 R >> 
stream
+H�lW��m)�[����f	

��'�/��d
��O0kwvT��2~�����>������ׯ?��[k�y<���g�,OI�
��ct��
!��x~2'��q�
��7�Znٰ^r��^0+�
�.~��Z
��
�'
�ޟ\��\
\
����
!b������
�Rg
�2�琈�p��
� ?�*X�
�%�s=�a�_`�ru�
�q���K����+�uA�~t&�iqί
�u�'{*r� �u/.炎
*Ny���2+p=�?�z9��
���\G���ű"�,�����*���
+`װ<c XV��4)�`�s�U$�Gy��J�g��i�:V���0r��X�*3)�<��NJ��0xa��Ʉ�;{��W�㚿.
9|d������r_�֥�:�B�G�����_^�ZOGx��I��+�ĺ�,�^�
+%y�Щ��/k�X{)O�L��Ծ�Q�w�?g�FL�n>�
+��
����N������h�9�J�L"-��G��bz��yo�|�Y�T�_��+�ftb�>�~��Q�
X�OK��
;�2�M?o�-�V0���]%e��6�0D�Wd���)cJ�c��HNxyL���tc}�Sƙ{�˙F!��R��G}���֠�0'�n¼�M�E��_�UUe���D��
<��Ku��
+=��gN+>z��K
����P���ۻg�Gz�ɍ3XxH����1��&L&

�qm��֝�WQ� u��� q�J@����3 xxb�Q��,�BX
+O���+K�C���T�]�0��.x�K�}U*�B@�\�<^t�n��]�Z�r�����o
�:YR�&�c�0u3�&2%�S��� ��|be�יmt�@D� ���W<��ptB'�įU4o��������i{C�Ћ�[0&�[wb ���^�m��� �-{*S�1�9������s{��;�|5GQm�|7�Ep!������
�C#�����;��^��t���~.{Bsk�?DgBA
I�^㌭3��޲���,s�Am#�3��ו�A���>v�Dw� ��f�W͝(�N@Ž�<�Q]՝&�iY��T,{��h
�i��]8�T���l*�[>a
	^��<��JZ}TS�d��R�jne+�j���v �lڝ��.�uZy�
+���.m��<쁟�'j���O��D�ݭ�+��'i;�������(��:7wAd:5(��Լ�ҥ�}�SW֠
����ȳXL,�4�.do����9u%�9���.B�v��^��
���:
F�NӆLs ����
+
�c�5����􀁭Pwp΂b�,�c�{8�V�}��~+�}g{v����&��cm�Y�W�
2`����Yf@Œ�xE/�[L
��B��xg
��cfUBW��0q}�C�Ә݌�� 7�7��1��֝�o��O����|�A�[���W���x�<eL
XU{�8�~�J��@�7w׉���bĐ�
!"6�����5�E����U1���Ѣ.�wa"j�a
�g׾)S�Cl�R�� �.��-� �
H�K�7ۑ[��YS��

蠧F��S��P�������
+V�0
+�^�
 A� n�,���02n��	Sae�q��԰�R;	����,�?W��� ���c��͡�dC85�Yk
5]�؛�9�FZ��s�gM�}ˏ^��~����~���K+�T���Ҕ0��q��Ț�
+:�e2��ڪb���SN8ؽUT�͆b-���
+F�g��u�/��
��8�����Rr,CzL"��ߙ:ր_�
\�
X��̙U?dA�ַ���N�2�����U����y���{!8\�)쑉�!��D��6����g�)�h�G�AM������R�
+�+�˕*^�˕Np���
I@�+�WnW�]i�����B�)�d�ۓiN�Z��<-�=a�jĒ�77�
���/��r󱏞��-��IH���}%嵵��C�fr�J�:#_�����Ҹ�Oc/�x�1���I�F�'U
;�'��G�=ic\�j�p���1��IC�ۓ�w
Orp� �����I5��G�DS��&�_���b�U��R�p�-�`�����獫�O�6��9���6� �k��O��ں/c���b�jLSmwv�1
�<�4�|�P�˘�Z
c�~�i�1�a7���mLcј�p[���m�B�/
�bCT��
���7�/ԑ.���b����r���J>���@�-����
+u�	�.�+������b2��(,P�ů�WxPF �h�d�Y( ��ԡ���u��L��Gэ>�T�P�������JX�~��h;��#�P����D��	3ƚUO*1L
��𪕡�Nq�
U�钶�-H�UC�^'��K:w����bԮC��8��k���%t��w�\<Q˗€Ԭ9�/�����R.nk����?
֣*��E���|+p6�1�w?<�w���1��r�x
�^'��r�SR���AT�{H�-~��i�P�k���?���%S�_tii�9N���9:(�y�b
�P�@���C���%�#A*�w�}8�y��R�����xf0�����(�G�?F0��
�sv�
+��@�]v'ڶ6>��g�
Dz({���m��C8Uߍ6x�SE�%�\T�؟�9P�b��s�L�}e�p᤮�V�+�Q�����
,�
+T��~� �R��\��}�/��Q�s_��I�^��2��)�W�G��]�$��$������Ow��X������C�v�����0�lC���")������kt$�"�U�Ot�;�}|t�;-KǴ͇Yb�[�0��M�݇��zݧ�О�L}��'�r�2
�P ����[#
lp��

�
Xw������	���p
+X�qY�'|�1Ԩ8>���;�6��
B"WU��Q�T0:�s/|2�q�|2�V ��`����
!����]���i|C!]zcА���
t
=�õ�'��%��lh���{�N)���s�|r{��m}��v�`��TN�[��i��� ����.
Ks����#�h�	�@{Wy� .�g��]�P,��'.��'�V�'.�
���
�dU�
���c��k�Kq�+���'��m��dGo{�Y�F1\����_cg��t���a��]�\�K�w�.��n]�J���Y4�r�(୶� Κ�H���%c�J�]���0���Q
HRY#�����3 �|{�-՞t{��'�3� n3�J���
7F����K��K:nOc��љ��x�ne`l�
+ힳZ�
M/ I�1&�w�o���]�
�k �Z/nWTVi�	eXW�����r1)����w�Rǰ3q�O<Xqب�}hs��6�� ��^P���#�4���-�p$�� �G�:B�t�G�{@f�Ts���
����[H�	=�'��OL=FB1���D�+� Z19��d�#�БQLp;F��Y�XBC��wK�~uMj."v�Y��ךM��	�B
+w���c%/��LT<�DI�O����s3q�����R1��P���|b���YS�'�%�ikuW�� ЉE��Įetb]�d���c�OHk��]�'PJU�>���u<������'
|bx�%7[b�9[b�9[���͊I��X_&����+�JbX�X'���:a:�Ѫw���}�ѕb�g檨5�\��Ϳ��ƫ�rY3�T!T���{(�ZZ�KqŢ��=!e���u����1ڵ�
�Jݠ��ۛ�v�-�=G�*B�7���:�Y�u�:�����z�E`��os��9�S����K���s�eF4�~��3����Qlc4�;j����iT�;�, ���?+U�<J�P-�5R��yI1����Fr����}Lݡ���qR-E���e�4����+7	7��6P��U0��ԥ��$:c�B��׆���M��Vu9H��[b�މ]^�t꧛�ʵ
(-����˕'�,�eOK�/r�L
/��I;���(�*��
+
1�`�ʹ��
��V�|�v��ʬRQ
+
>p��?�j;��+] ����ŀ�P�`����)��if_
�n������#}�}}����ź������
��ĥ �=Wख��JI�_-<~���Z&�O��I��^E��li�p}8!b�)Ѻ�
�wH�ETV�Y7����ˌ���gJ��R5�4����?�Ui��Z1��R\�|��Zl�K�'�t
G`O��'�)�����@A���U�[*���v�m7����#eX��Ipe�m9�41e�FN筍�L$MH�}
��(C]<��aȪ��짊�R�p<}���XPƥ4�e��(��|����XrW�i�X.�Ͱ �Vv��@�S�@hj��fXܮfX,��W,X�W�Z&�-A�#[��+Hk[M<�%
�����
�� �@1B��'~%!���wi�(���˞u��{�{~ݤps4,G6����H�ɔ�	 x��ߥ�5,�O�Bp}

��5,
t%�ik�kX\ް�hͰ�k]��2��Z-�"�a��q^���t�
]���>��v�0km�+
�v������oU�	��*
�3�H��>Ob��By�2<��6�*@dT&���٨�� 7Ȭ�<ǫSCi-/7��a�2�q\�
r�\�b��j�`��0?<�z��[;X@�	�'~�8���_��������������?�@C�/��yBO'�3v�_8���S��n�ن50�J��cy	��KW�@3`#��k�&� �ӗ��>(��'�)In��ŧ��"O�FE:vX8h.�
7�hbT���x�<5*
�A��;�WҲ������6V�GI���\W��XT�9
͍ZZʇ�����X��+J;���
��`��^�ѥ0
��Y��֙,�A�}Z��Y{7�ѝ_��0F*l=���K�C/��G��gY�:��"PY
+�^e���
���#)N�A���ml�Vr>V��Q�up��8����`����ma����x��֍��Q��S)o-�����!e50nv3�#�
&��o�q����x�C{�V�wE���
KI�X]C
l��]�%��?s��z�Q)
�>����q��d��N	ѐ�
+B���G%Ԝn�����W�X.U�2gl��Q�
+����)36ɳ
�4x��Yt>�еQ���D$�y��9���x��>��t+eO<
Ϳ J��g���w��
�V�����
��I
S������
�͍���cI�c��N:�
)�
k)����B4���rcv{&�O4�fu�h��v
�J�ǕYj��*���X̚=����S
�֜㻜�o-�` ��[�{�~�XO �e��т���A�T�[k����f�5�Ց�r���
ؒ��0c��u
�V���um�����/�l���H
>I*3�T��W�ta%t�PWe�hKY�(��ؙ�<G"-e)�GR�<���w�*�P9'��+���>p]��3/��:قJ\�=��ځHi���Ax֩�y���Z�1~�J��d&
 ���P �b�S��y�'���%���S�� �BatW��6s���FA`X��i
��}T�mOK�
+�g'����ɌJ���y&�
����os�.�1NDt$�DK�V���eL_��BC�z�tQ��
��L��u<aJ�	E�+~��ׇ��:Ȝ6[�o�v@�|
NVt�-�Hᮎ��7ڝ+�b�}����cl�(�N�
�3��X����ݳ<J�k|��g�ʑ,�q��ݡ�1*���2��	d�9���F��duW~>k"�ـ
�5�V�U��}	,�;��͵��-���jm7dq��؏����kt��N+T�lE�Gs�p^�P��'w��[sjkES at l~��==.��|o�����0i�4��:�}�茵�zD�^9.��b�����Y�:x۰o�;
zrU�y{��Y���ϣ>�:�
+�2l�:
�nڌNw�g��"]�ǎãMW��5���97j���0t	�H�r�dk�d��'\@�]J�DJ���
�t��E�^��#0T{��aŮ�q�����e��M�<ʶ�2���P���p��O缰wY�����i�k�m������,5�rFq�(¿)�^gcB��9?�
��ۤޥ9�)��W-߭�zisU
n^�9(�_
^���������0�Q;�8�8�t�}��;3d�u7)���0S�U�w�r#7VD�f!;�(y��f��G:�
�Tj�ߡ�d�Ms딴���G�W��(���`��kS�
�
�e��
+�Ӎ��յp�p�� -K���3�@��6�1k�����UѺ?p�F�� �y�Q�t(X�=���"�:kEYӶ��z�.���(�fLx��Tvپ{F�q��Y���]H�[�}����C����2���u�l'��y�����a)h�.�z}�n�&���&1,��
�=��h�e�K�#څ��1Apw��e������>Wν���z��/�R[M
x��G�|�&ґ�ֻ�
+HVy�2*��T^F,�]F_0�}��N��g��e4[{���R�𺆐�4i���2*!
���,�s��-Y���m��"��3����'�
���Kx�o�ؒ�q4Oh�;=l*�`���m\��_6D�]�*���%��l�C��
!�G��C}&S+!!��w���ڧ�|��9"B@Հ��~���S:+���>��}N2�C����N0�ȏ������?�����*�mJ
aq��ET7k�2��jB�B�!��W[�@Q���э��xA���f
���t!�{m���=�ɵZ@�k�a\)�
Ԕ��8RU� ��Q�	�� �����dP-��#@:8��p��o+[\�fk�=ܻ�'� ���
���]Y�x��lr�d����@��PA���>��K;� �.��z�H�B���=}}��N�_��rM�^&N}���������~Nd%�{�J��:0��h�XB�ň
�s)���6��^9������	�'Z��5<��y�"�~�ؔ�-A�^ ��O� ���+-
�y����"�G ��Xʶ����
��ݎ�pn�z����*�91
+����X[a
+��R�hYמz�X�
d=�
P��ßa-Sܦ�æ�5����ƠR�f��Y]�S������0�"��Y7n��f��UӠ��3�ҳ�&�m7{���V�S'y�K-��BX�i���
�iI�
sf�AIA��%���F?�
r����sx���.2j��xm�h	'S1ʆ
���`�ٟ��rB��礔R��ୂW;Jڊj^���
M7Ml�o��b�c
�=
(4�������1f��ſ��4l�DT����,�B4re�
�e��=S�7�:M,��hw���>���Xyk
2"
+��>��Q�4�,�'-���b��� "U�\$����`�3}ȃ�A�Z(�i�+��[
�.+HL���T�j�+y���0G��@�v�c��#�{C�4�x+$�dd��k�)ɳ�-����w��B�Y
&'���IR�%�`�m�dV�$Ht�*o�W�g�dغ��3��bCy�GLƝf�V6&s��/3aQ�F����E�YHϺ�Nv�.�n9�ɶ�Uu��uS�q�����*>��
�
�
�aTiU�
�'z�M���LC%0;��.�ҵ�����\{�5
�NUm�^q��;_E.��3
�H��j^����|���Ѹ�����QjM�q`�mSmCWۇ���d�V����:�\$>[e��z�:�
��{�~�"8���;!�����݀�C����f-����� c�
�)N���y���7�kD̼
Ƶw�
�:&b�3���7\�h���	s�$���H���]]�NN9�*k|�k


�������T޲��
��8�!�݄Qaj$cn�E84K��E%����˹ l�{�W�5
�+�`v��}�R��
cu�j�h�
��u`��X�kǴP�p�x��Y��/{۟�z���HS��%��T��kR��
�dS뜬�"�y�N���)�I�m�]�u
+F��.�b�>�������>dL����M�0T\Y
���}���
�����8Kl�ѓϝ�e����c�[I����h�m�X���\O$�w
�>F/���rI���a4$t�)��f�N}j[oc� ��25X�ǂ�\<�t�1g�\����do&^�z��(��q�m�m�kzU��Hp[Ԅ�s-'�u�����a�m���\���A�uY���Q�4q
��46'Q~%�(
+ʼ"W�1"�x�*�0A�b�'E7mױ��>�M�ru^Z�44W�
a�ˎ&Zn��_&�����X] u)xz�d�k�K)�+Yꨰ����:Pz��FY�w
+؍۴׻c�z��{�w{���Q�~�pқS1 l
@$���qvx]�W4~`]
=ߏY��TS��V��h�XC%�.�J�ژ�`�3
۶�!����������t�_���g����
#H	M�6mk>�
b�X1d��e�֬�4~���>V�ꞥv�@��Yuz1G�A8�XN,�5hH��u�P���T_�[0��Zws���vst5K��Dw�Y_mhF�ۂ񪊲D���j��
�;
����m��zg�.��օ�(���ε�s�uk��*���?DW�F�m����Iٺq�t�:Ple����]ɲ�
����<� {�,w��#�ks�R@p׫��!�T&�
��;�R�:�,�ؚt��6~
k"t��j+ at 5����e��2�ׅ]R�Xh�rcoK'��)������x�U�x)��g��9@� S+
��/�$�﵃
 �a�=%ޯTS �a�W�8��|�0
�����|jI��1 J�
P�:���]�\Nd�� ��68��D�H��� [...]
+�\@
+o1��%oe��Yw ����wMl��C�'՝��-W���@�7^�����%�a
��a`1��ۢ���$g�r/�1ʳ�v���"�*�
,&y��7
|r���ӌ+F�k{g�~h���eH��gf�=�����v>��*ٰ�U:]kXA�A'�
8dPv%���d��#�xv�P����p�N>+��
�%8m���L2P/�gc���|���rlB
|2�t�`
����¥pf�Ŭsiq��Jg@����
 �IH��٨��4}P���$���qS3b:ѩs�����(��bjr�sN]_�(�Y�6���+Omw��c� |ԩ	p�?�$X^`�2?;8>w��qde�B�:��KW�}s�yv���C ��B
+���

I�
+{i�OO��!��
+E���&H��ݸ����ƹ��arL���V������o�*5���V��濱͌\!Ӧ�v�%=���
� 
�}7A�f��f3�Y��b=(��"f�C� �|/wAY>[B�z����1L�M�js�)�1Q���������H'g���Wq����
+.��]�����@�}�k�9����Z�S�84��2�����3���&"p��
I
=��E�X�r�n�8�8����5�}�Q�=�x���l_[J���gd��G’D	�Ce)JZ��	�"���/�D�	w��������4������iN(��U'M����cj@�M`@ڼ�m
Hh{��_|,��I#B=�=�!��W��ִr��/3M
����tz�E�$���l��™eQ��
����4��?(O�^j�xO at fk��{7����g��s
�@�1�-
��[�1��օ�AJi^E��1�
gP˭
93^i\b�3����`a��K	��,�_�
+�0��
�9A��U����1�� ����Ҁ>3l�O
0����5���!gl]X8yc� †[�ӣ2���2����0�z�w�����jN��#]�b10/ǨF��
J�y+N3wx�дl4@6��!l������㩑�_�qT�0C��x
�ӧ�����
T-u%F��?OI\S���*��0���޲��s�)`�j{1)٧0����0Ā�����<T�ߪ�/o�� �<��m�Ңr�?��ER��
+�\�*,�
�r
 7��&� �0�
��P��N?��F/��t�	��~��E��u�
zo�gW���ʸ� R�nJr�%yQS๥֡TLk��1�
�b u2��Dol�ۭA].��d96MM�
ቶ�0�����b��ms+tH��b��+��kJ�R�
+K��D�G�WZ&i��T[|�T]%5�J�*#
5H&���1W7�J(���2���ne
��S��E�e���JRc����-��g=�T��@`�B��Rvy(
}تYϵ^���W�,��-%��@
+f���S�r�� ��Ub����F`�
+�uElZ=��<5Mj��V�M�N��A�5tW�t-�~@�
�R���7���"�6W��5\߲"��̅lYZ��r/�Zr���4��,����`��Y7\�喴�+�H����V!"Ȭ�z��SkyW���s7������뿋9�����
�:$I2J�ދ гK?���0>�}1
�E��L�B/WTF~��#�7�bƅl�
l4vs�\�}LfQ��%��,���5|���
6�W����-�ݘ	,	sN.i�=1��������]���V�;l�p��LX����K�W��YL����,:�
�5t�D��
����	�Z���S
+�&�L>�C���Ec at k =���nC�NTc}��*h/�^m}��-�����?����lE
+J�|ԉ��Tr����v��/�J_��b�@��	"(ӟ�`JK!7�d��04R�n�j��
Ͱ!k�$�ǂ�
�i2�RS�N���a��l�
=���4�V17F` �OW�7T��,�+4��.ŭ~�8���k�Q��5?���
+��D^=21)���[�e}���
�a�|3��
cc$�Vf�(	�K��Z��|����p��Y^X;o��uk��+���W�P����yn
� �t wV~ǩI�=���Z%ʷlY� ]^��x=�ʖ�l
+�����\��>��F{b-H�$�ݖx�W�Z��b+�T�ܦR�b~�J�!�oS)�
+p��
G��!�}e
 �����p�m+�Wm#3���tW))d�:�U6xh;���V
+�,��V��nu[�h+.�J����c��R<�l*3PŐ�Sj^�µ�ZIE&�T�����?}�Iⱕ!��V�w�lex�c+�s_y��Xް;˸�v�!��Y�p��<�:~�d Z��9a)Z�W�j�T:H_��
��*��R�n!�a1�1��5�K}ƅV��������<]�μ#EQ��@7�N�ܜ` Sׂ�K	.-�E�sdk��y�
+J�m�f�+��:r�x���pi��g%����2n�K.z6u���RjSA�;7׈��+¹�)r6����T�J�A�j
[�ײ�f�h�ѧ���j�6�8F
����f�52�D�ݠ��������U
+,.�h)+c�%��GlժS�i:�6�7|l>AT���������V�
��TS=�p
��bV�e�zq��W��]�t�����Kk�U�Ns�1J^7pbJ�V�9i�T����E*c)�H�sۼ���UxiM��+�i
�5%�57-R�qx�w�o8��kW���;�Tr���0f
;=rp�C�3�,E�}8
Ɓ.E����DXR���WK�^�
��?|��L �ޏ�L�E�CB��!�`b��b2&���$�T��'��t]��J::�LVp��֌�
+�d�I������ס*�I����+3ӹu���)5�*=��S��y���
(���قr0��'��HיDx��/��E�=�^���RVХZl�r��������C�
˦�����9�Ф[f\��k��ʅ��9=�� ��^2�Yem����j_�5v��@p�Sq�hZL��UP#��~��P f�wΫ�e�J#��
�����#��"Z�x��4��'�]
�8p4B��q�h�R��t���\qx����[�U�(�X
+'�X��F��\�8Z	�u�Fk��Hk<Z�
�k�wr}�+,�
+t��E:���]aP�H��֑�\�3=��H�C1���(����""�~��To,4��Oh/��q�����hD8I�r5�39��?���o�CF�j=Uy��Y�t�����pD�jp��X���F/�A#��'{sŷ�sۙ�s�
��
�L�;��M�
5��ͼ��V���@�9�����R����ޫb�~��1�3�
+@���Vt�4�Y�l����m#+voa���5"��Ȼk�7����c��M��/l��
i,t�o��5n
+
��(Dž�W�VN�{��r%�a�q�<
��3��]A����۸$��M��<�
AN�.g��9H&�|��-\�6v�βMmXfz
Ӝ6�+(��|�H����ES|>9���$l�Yt]bo�� o�o�(�*�8O�0���Ԛ��u�#L�,arѱ�	K_
�KP�[�:�0
|҄	fG�Pn-�u:/٢�u����M�Gp-�����Y��%2��۱��IC��9��=Z��ȕ|T
�f���͕�%b�
M��;i�L��	���&�n4]E��F.��&\�F�H�rj-�
_�����ͤ-�E�� �}g�HY
����5���0��7�`�9�`�9��_��I�ӈ�]���&�2��&��Y�R$l�r����F<W�D.�ǥ����MM���_�YDmF�����
�;���ǡ�3=Ո�/����Q�5ԛ���	=�v�::W�?Ә�0�zz���_Z�&/LI f�MT�r=E��+MT�`�,�z��>��^X�g�z%�G{8Q�N0��?��Uu��.��uY��C�\��W� �r L�e夂�o�ׅ�-)�{��ޫд�f�s��ṕ0�,�g+M�j�,�o���71v�Eӥ�f
�oe�Q�RT���RX�<�4�ܹ!�R�Bd
d3T>�%�G�R�
+ȭUZ�51��䥅�*���
�`�L'�Dp�šE�RJ] �d~1�Y�=����K�����T�&._3�
��
�9�<E�(��jv�����׹�'O3�ȬК怵�\TkEK��[��5�>�&w�7�
+!�ӹ�^/�Y~lW�*���\��t�&$�V��f�Uܐ�C9��Rಿ�P 4
�<�gԃ3K��B�����-ş��B�6�Y ��V�
jT��Mm �4��`�
<�l�Fݤ�)�k�|7k�s-Ci��W�]��Oϯ͢�5��fgl%�A�H4��
+��4
��)d}ø�İ��m���gpڸ��e��\��|8��@�`�}�b�P�M
<ll���}�^����@
'&�-� �2X�m�A���c���|\�`�vf>"�X:��Ǫ}�1u
.�Y��p
.Ms
�@�rf���;\,�X�o~�D����s��r>!D� �P,һ{�!�G��RԲ
�)mcB�p�
yb�����.1G�-�U�;2!�5�^�΃��|�y>�΃�~u
'X��~u
>�v
>�<|��y�#��Ъ
p-��׌] ݚ�
y���|c�F��;�a\�����

�
7=�k���J�<h�0�m�!�>VƠ�5�Y�ס2���%30��׭����
+�\��]��v�� |.��MV�$�,�$���8 at wG[�t��L/8����>��7�>�������/����˯?���/��������??�Z������'���ϟ���ᑿ}z
�=�����)<�#��w�%����_���(��=������5��H郝p�U����!x�X�xρ���z¯�:#��@>��~O���N�=_թ�a��
i��eX��&�[{����7~����Z�
�u��2x�w9��o�Ozf�䆫�&�^���s�u�1�GE}��)>^La'����;;�9��@���E�ooc�B
:W[,0��$k�^�%�۳�)�f�=V��Aު�	u�e�
��K�7�C��Տľ��w <���2#
����LC�
�М�>� g�e���̱�K�%��D�q���B�����$�
���'�,�
9l�Ź+x�A���]*`g��d�V��Ȥ�X� k���
+'0q
 �<{!��1֪�
��!;�,l�L���j��1�&`iU���C
�%�`U6�T�/f��U�X�
*�&-z�{�㢻\pN�Hm� a�����y!𳕇�#L+j�]
34����֣ ,E�4*�\vsW��6���,0U)E�u!�l	������(�r�k�H� oS�d�k�/0�
��^^�Y@'N}>P���h�w���(,2i1W�=�}�C
��A�xjK����9�(��$s�������
���b�a��/�p�@���#��m_����q]KuOX���
��_��
+��-��(
��8��Vb���Kqy�܌p�J��8�V� �C�L��o��I�e9@
���-�=��KD��PZB��z��̳T�bT��ajM�ڢ�ޔ��ԧ���?�C�"�v߃�^�	
�%@��]$@M�
�Y5G�U9���g�{���"K��/&���(�%	#��t
掐o��Z�=�[�K�.�n0�Nj�uK��x=��4�D�8�1�>.P�Va��&��4���s����й/�x1���/�p
�����$�K�A �.�
E��}�;+`%%M�N5%p�M��ߘ��Gw�dK�°+f\�6����d�z�T��G:��,�C{���=?PNs�qJ,�EK)\��,��i�^
�Zi�`��+��e<�!�+������v;a��׶,�E�`0.�-��|���-?�
�e2��+b
᫲2qw�2�
8�wh�t�M����Y*�U.Q
d�aC��H
BcbB.��: �~�qx��f�C�*p/���w8����n��e�K� RjN [...]
+�8KX-0q��<BTm\�|W
����b+��؉�u_����� nq����\�l+�c��q�<5;�����}~���U���c�C�W�����-L�͘���Ѥ�K��0LNn��>����%�6�]oki[{/��>�	reS>+J��i�� �]Hç:����ɝ���l7��ȵp^7����#�
��đ��y]+F��:��F�)�ڐm�~�\�o޺CY��l&�[���™��V�z !��l���F�Jm���5�e��g�� ��%W�og��+Cy��
+��
[�{{���h͑ӎ�<
�k��b��Wm�@C��e5{�/�M
n�I���b�]l�b7
���ג3<J�3R�{Gf�7�����ˤ�N��S,�r�yo��l�7��~�U�⢓ �
+�my�(�

[tn��o��~�x�>��R�:�j%������زj$/��Ԡd
+\�E#,*���˦^��
Nj�y"Z<��`�[���5w�%K�*�?A �ꐧ�,�u�y�'aY����3~.���n0�:5a�|�oC��ux����?�
`+-��?����#9�#/ۢ��dO���4�JU{�<M��1”�).�	r)��8��rE��Y�
�؅V��V$~����ic
+���%�OV	�c1��B
+N����Nb��E7���	/E��]��찢wF
�񻨜�v�.�dӵ�
-R�<��d��zr��ZI�P�D����6kPr�`�g�
+=d���}�-pRz��*��r�ʽ:̍3Q��z
`
j����guA��DG)0�3���B5M�K�
4�Q�fz���
��s�x/�^��
�(g���
���V-��7C��8p���-{��ٻ�F�YPo�����S��]M��5��7b�h����?�m��|܂u���
V R��� �Km�'��cqr`�K=�?�'��_&h��z��y��EM��
+�(��Ut�cګ
5��
+�c���8�����ee��� J�����D�R
{�8
����5	j��,;����~(���̭|��C��{�`����e�@
s,�q�E7�8%[�����܊�Bi�B#�?�ȳ

aUf�p;'�=�Q�],r
J>��I7�!܋��ՇY�٥��q2��*�&�:b�C[�ܶ���k�Wy�b��+\ΊU�'M�y��
jE֥D�#�;����T�cK\M�;��a��A-d2��,�����p%
'j�d�|�2��<���j,�>�O;�-vd5�/l���Q��܏L�x����^�c}��f}�p�iZ�� #���8z���p��$1�"��z����>E�w@�-8�ѝ�.�E��
+]��K,��49"�F�p�2�.�p[+��q��,����
�_�F�	��Q�u1YXB� �-
���~���0$�$㴐x�V���t|�u�z��v_W�80T�����<�
;��0[ ��"�ɇo�V�
����V`Е\LP
0��2�X�z�ۗ�T�M���WԔ-��=+
)'po���f
��H�z�˔����K�[�3 �>4�;-"�V��,K�N��CLx�t��E~l����}�i���/@�;��1�k,���H����a�$�� h�0Lfɕ
�$
�
a7߇Ý�
�h��Njx�ue;E_+��ы��
L��L��6eV=�ƍ��[�dJ�fip�n3q�W�:�oO���=�
U�k�zF0�a�a�>��h�ΐ*h�^ k��WN���Ҵ-��
��V9�e���R�8ާ
+d�E��˷]�� ��LU����P���+ʮ��A������㶕Z��r`ܹc��M�`�-ye��
�i�c�K_���E��K
���W}$N��9|�
W��ˢ��ګ�����K`��g@�U
�F�
H�X��l۹�`��yp,���;H<��ɓw��'[�l��f����&�3#�@�^<Y|ΣŸ5)�g�U���ֹ�b�X��j�\p�z����(��1���"Y
1/�S�8�[	�Ag����.TK�X�a%w��6u^��e��5e��⊍��V	v�{
����	̹B�X�m+̂QZ�u��c���^�^�k
i-^1��P�
���T��e��Z�#J��aF�6�T(;��*hF�?���W[;��vE�,Y:s3{j�6o�6�Um
f��V���<�e�
+�7�Ւ[Y��V�{�
t�_�
W�.
+x���(�Թ�tГ ���e}(
+���;l�]�
i	 ���R~��;
Ppm���[Qsi�rò�
�^
+X�[��%7�v
� �@� �⅗��,>�
�E
�]�\zp	@�
�ٝ���8p�\^ߊ��)E'�0�h���
W4�2��b������2��Z}�~�;Tq������B/�h�W�����8�nQ�����,z[Gլ��vw�Áݎy�߹�6c�h	�,�i�h�<�<^�.L7uH�� ���]��זXԟd	l1����s,���S����CAxib�jK�I at O�C�H�8nu�]].���6��`Ƚ$Q
�eA[���
+,%
\���5͌ԙ���S�ɽ8W����]M�~
+Jqw��n��m�2jv��מ�u�.
��}�J
ig���u��HԨ͢��rӀ��H��i���٪�9�NjVT�0<�C5�4J-m>\a�)xq�R=7:���*l_�� {ku�	��F	^���R>$��d��S`��m�8\��_�[]ķ
��+xK�v��^���.p�p���\8�N�[,l��G�d���om�
:fŞ?4v�M�FL;wxz
�~�P���MC�m��\r�	C��r>���0C��6X�Z� B�0�ю(ޫM<ý7ʠ�Gg�����Mգ
�+����v���
��� Iˎc�#
>c��"��p�m��z{xk)
��{����)1-��{������z��t�30�3�y�����@�VS:��ጂY���<^*T��·
+��{�U8���X�l+������5�N^˿s�,�R�Z�(w�
�� �@py�|∀�e̦{x"wϙrh�>�8Y{v���¨yv��H�Z��m�R�RN߅/�Yz	ɸ��K��Sɟh��c��r?�����(l��$���bƳcmc*s���C��.X
�UV'�C�ML�1e5��y�
�iƳR[��'���=��ݫU
~Bs� �����|
<��̦j�����=���&rT>ן ���9F����>��[�2��.A�y�}���
ӖRvQ��#-H�X���e�̅�)J�� 8��&l�К�
�Q�/����7<��gȘ`����9�C#�
�5]2�l���
t�b�
�"
+o[
+�6�
���'����`����t���U����+C`���
{���q��(I ���p�U�Ιw�?��<�%f��ly���(
�jn+u���[��g%=�2>�X���jv�
fEl���{h�����+I!W(�����
8r��
��y7'�M
�9*�9�ϹQ �v�xp�Ҍ�/B8��`�om��{7r�
���*1,mN(L�VO ���l�8\B|����@ �X��6bkq]
+P6��q�yǜ�
�x�g9����Ņ-��;�J�
٣��s{�7
\��,��#H��
�(|o)5�_6��.!a�����da��&1�6�=��	��s4���wq��%l
�X�j��P|���. �M�W)"7�,�Z���$h� .;�-�v��-�!,t|�
��Z?���6;/���b��M����pcw�Q�*BD
�u��Qewf+9nc)�э�����&x:z
��-��/�i3֦!-?>���t�η>UyἫuR)�qn��Y��{���.ȴmI������}J��OxgG�x�0�>�Z�G��Э��X��(�q=�P‚��=‡�i����-W�+�i��`?	~��^�S`�Iڨ
d*,��US�ϻO������;/&4r��/���C
��pw�W�`��Q?��|�����?�ϛ��$�1
���L�
c���fKX��Z���=؊�KT�g�V��A�G1�q��+;iA�8��U�P�N��$';��mgl��߹]x~��-��G��T�
ʎ�o��ׁ�A+��{J��sّ
l2 �� �r�V}}x�f�g�(d��O���@"
����0�rq ~7�?� ��U�ڥχ�
�ni��/�}W��zV�/vT���p<�17`7�^�o�N]
S�I�\�NΚ
��/Y�ՒI��0�ɑX� jSX�4*6��P��
"Ѧ��
+ �d*r��܇��.18�
K���B�� � 
K�������(@V֛4b��h���C����
�Q�l^
+ʌ�[���S��ao�}J���9�
+��҆s���gL����Tp|D
+0�F��E��h�\=	��X #;nK�N�%߿���}�0�w���V�i��:�"xgl����Ef��;p�
+�ˢ���i����$��`�O�8�"C��5
��ܺ���ŭ��o{��t��U�7R�tP
'r�,f5��{g'07�M�}��w�:G]o'��e��:8��P����O�~tM\��	�C8����y��Yɮ�f� �v�����/YYY ��X��
�$�F�|Ȧ��(MĨ����֛K8�"�6�Օ
�`#1e����Ύ0lf�.@�F��s����*۽�X�
䂊��=��lU5���S��r�� ��m��m�P�\U�7�F�Pl�+�>��W;�X���������]K7ܝ�%
�L�g�ؾ���yݥ���d�j��
����C��݈��i<�ۣ�]Bt��
"�
\Y�h���@�]���m+��F�F-M�V��?<|��*�v�u�c�N�=���b;Uo�h��@S��u�1��
|�@E� ��t�uʃ�#I�
{QXXo�e���W�\i�F����ڵ)
+	�Q
��9
�_�}�
7kLY���ݬT�l�r���
o�:�]<rȿHa�('�i�޺&
+l�N/Q$'�/�:{���v#Gg�=$p��۶B���%�a�]�G0v�g�m���%Ҽ�t�I0�B���w
+
�
BE�

������l������8�1�_:q:M�K߷�%�p��YF�m�bw]SY��xަ=$�2�U�#�n���


_��a~s��G�.;G�
�0�
D���-&)>XC8	
�.m��
+q�A�>��Nh}Ϟ�p��b
�6h�Ux���H��Ld�����t���Ӷ�fXW�,�r�bb�E9�֩��{��ؖ��e �����ɀ��p�
18w͸��a#_
|������a4П��.�IJx݄�p^��0�W�!��nC��

+A%�z��4�3F���	�6� EN
endstream
endobj
16 0 obj
20423 
endobj
17 0 obj
<< /Filter [ /FlateDecode ] /Length 18 0 R >> 
stream
+H��Wю\�
}7��p_�E3�DJ��'{Ӈ�Ha�AQ��M]`7�v�"�C�ԝ�;/�a����E�����C".��ճ���q��c뵧��9o����*��R
jY�����۷ӌ����5�T�;���D�p���M������63��(��Hv�sɶ2%�z
;�خ�BJ�]�T��nM�Sx-)��ɝ8���NS�
Nc�[�����S37����\�r`��oP�0��
��BU��� �+�Q
�����m���}%�
�K��Y�P߬�p�p)E��S;q0���؛Li�;
6�B�`N�@&���Z?P���qb�Po��=�Dw�ЌC���kGM�Y�D�@j�]�:��G�t�ٿ���s��I���Б�Ȃ��-oK)� ���^�
���dt@��
�JZ�_�!����r�+welo�:����5��~ ����2�һ��(��΀
j}E8�Ej冽xՓ���~��*o�<[�yd?J��J���d[�p
���NMZ8 �/hR�Aċ���#��Z��G�Z��
��l��>��U]ڨk1W7�9"ӄ��
�^8x%�yFT��G
�����д*���`M����kz<���8���%2$�	��`k
�sw����$O)�"�6��#MŜ
��W��h}j�b飳�Mj$��v%���H��x�W�]1E��8
�tx���{*�VG�R�Ab���A��d�g�mu"�?�͙rs#c7RYj�D��{�����}kε��Ƀ7�'���Nn��E�p��}.a�w�;`��a*;,��kdx
Ӗ�J-��S�
�>���b���-�
d��5H�
+>��
+��')3(��@͏�0�
x��>�+\I�Rj�D}7@�8
9�R_<�w�l��b)r�BJ��F�N}P��_9n�Et����p�K��I
Or�qt=}���c������U$>��B�?32�)cMG!n�B�V
c�~MU�P)�%j'���C��8{h�z����Xt6+W��)O�1�բ<�5
���j�
ӊ3=�lt�}�����m�E�W<h���b��#
�����e�Ɍ=��^������	9i]4]_�AEٓ����:9X�pu�
��R��aAO��q�o�O=8a��ж"]�g��	qXG2G��!Fei�s�!p.�y����䒶{kXj�p�}S� y�[��YQepf7A�f�8���a`��r [� �#w]�f�y=��C5�S��hݞ�T
�Z��`Ʃn�Z�R��p��㦃��i,eԠ��c�}6��^<5�Vu���-c��
6V�[x��-pptL{��u�=sG�w���S��|����߽�z��ne�r��&N]
F���Ġ�r�M7�/�+%�F$��@�k��=�?�~���g
%�x�W��a*H��
�  �Ud:�����\����P�yq��X�d�o�PP���_0ۜ��v�}��l���,1'*N&���M���B��
��Up���ܳ�"Gc�
J�g�9bYJ��Tfg�.���rH�¾���H�a,x�B�� [...]
���jMҊ���!ĥ�X
:B���g.�M\)�2�
��Uf�I
 �,@!��wX��-���=J�ك"tO|��QVb�
!��H����E7���P�8�J;[c��>[80��x�eTN���|� �r��zǹ�bB�s�Ut �C`�l�>#

�!֒�.&�\XC�]/�?(��k1����s�w�$W��-~$e��Q�8;̀)��
SO��,�Z�)g/�z
�<5��Ȅ��d*�w���LY���:<"���]<E��S�xP���@�VA �� ���i�� S�ή�Y��n��o�0�4I0�FZ�pç�sߖ��b�F��h�5"E=��΀ �V*�mg.� ���♝���b�7
f�
.N�G:�pE�]ҌQ�!���6*�Mw�5ܨ�B.%GKq��.W訏M�sW�ID[����t�SYP�o+�[^7Q!�d�����-�{V@
+�R�z�%�a�
~bf
�iy��EV�BM0E�ֺ6P)95�6x�:�3;k`��[�7�R� _���O|[��`M&� .b,mx��{$^rMG��Gj�E��9e�z{A��)�KY����Q��Gi���Zw.��;�<�|}5��/�7?\=;y�����?ݿ�����ۻ���W�&���O�O������}x��
��/��}��t�
�[������
���o�m��g��C���~��[��u��:C�c��&tt-��'V>�����i�+\C_�'CÃN
�%�
ل��?1���l���PH�4�O\���	u�fSrI�[29<��|x��6be[��_��Y����Q�S���,U'YOZ�SFRF+��I�x�j��Tg
�s�.>;�L���~����ۏ�������$���LƜI/�o����������W/oo?�}���;]�b���������ϙD#�s'~q����
���Q�
����q�
O�K� t�X��1�4�c���
KK�d�O.�ί��K��p.�x�sPP���)n��*᧖q�\�G,�E�f��b{�2�����R"~6i�q�k4
li�e�sx�۩���Qzڠ�

�l+�����U�
e�
+�g|v��7G�c�O{���q�wK�?�K$;������
D�@�
FY�:#v#�(��S_=�w�m�d�=驮��:u*w)�![��wc
 �!�4��"�XH�
�O)$G������Gz�nUL�:� �T��RP|?��}��T���A��c�T��1�r�+���u~���uC�S�#�:�C2�=�OK
A�]�gM��}Ў����h���1QC ʼn�c��X��2�4f3�a�XEe�)l�J�Y�۪)P���P(��}�4�U�G+����.�r_c����f�5yԆ�4"�
+]
��e)�t�"�9oQ��N�
+/��rT��(+�J�
+�nJ7A�V)
�1M]�@(h3sH��`ѢEJ�˾r�����!\W�0s	<�"�٠�
:��B:*��ҁ>w�(�|\J1�2܄���j��,�,
+YU��>5���*adO*�Ce�]�z~��u��?��
WB�-o4"��Z~�P��
��ipE�֘
��)
+f��j��5�Ucq����\&�J�FH�'��]�W�/4W]Khn͗�oMtqh�u��u1�y�f+
?˟=�ox��n���� 3��W���agU|�
�+���0
+���Ώ�շV0�R��'%a��K6^��]䯕�jM��֜
f�*򸃖â�dE��(
��y��v�UY{��[�[ =u�
6=)(e�n�W�R����J+ "��M}��]��
+�/Z
p
-���UfGE�v��`.f}D���G�W�I&�
&��[�u��+��FZI.�3�������޳O�h���^n��o}ȐI*�j%�h���*��/Q���i����s���A�/�n�L�tt
Q���
���̳�O-�K1
�r��E�Q.$�a�
I=�|[���[���;�O.NTN|]	ʏVpM�=
��=���QV�؅w͉����-߰�
�UL���ٹX�x٢�Ϣ��#�1T2W$�I�҈�,4BW3?]J�h���
pۀ�
�= �Y��㗞m_e�-=k�ǖΟ�ܚ���r�wQ�	����JVw��`�8���]�ȋ�Q`.˿��e.|y~�D�k�h*�\}����/_� �*?�E;ι�\���)Ƥ}�
L�=ԇ�(�a#��NEP�7^�6
�8�?��SNa�c9L�1��ѯ
oA�Zn�:���l���]W�X�����
M3J���/ˊ��Q�Ϋ]֮�I��9)y�	΢�Lp���\]���
?��?D};���HU*
����J�*]�҇����8
���������i,��,/�tz�������W��{��݇���߿����鑠Ͼ����}�񋻻׷߿Y��GNN=��w
X_-/�_�� �i���5,oN��Ź
���բ���c NI�Sǐ}}�*����~���7oo޿�������_!�W��,���,_���ۻ��Ϟ=���p��������|�����y�%��n&��K^"'�Ni��t�!��
o=��
�>�=�^
�w�#V�`���RWժD�8����7|v�А�Qb��Eɹ �˷�K.��y��B�K�%�$fҊcQ��(������궯>�� ��In� ^�ҔC=C�]�mI�3�g\�ц�!̒���wBΜ�+ϓ�����|%�x�>��\� [...]
+��{
+�Z�X3�(��
�}9��K�����}��ǚ�K,�I���

0hN�c�
��GQl-~>ZD��u���ػ�Ш���1/�T�DPE�zA�U� 
a�z�����j��B^AKfGK2<� ���Z6�9ؽ�!~�jAE-��5|[j�@V�Axx

��R�߂�9�E���k�kU��*�b
`԰���@[f bh�ӌkmo�V��t 
�-�$s�f�@��,4#�19���8�̡�-�v>��_|�OW
P�A���+�5�^�X��
̲:2�1���B�f���W>N�� �#�	I�`���
c��
���
m�nA�Y��aU+��Nf�w<y\����,h~G�}�Ь〳N�o�ZU� ����
+ճ��
��Z�`֬ ��
̑
����B
+�o,��̇��}LԬ�������m�Z����Z#��/�D��s�X
dO�{��\��+�a��6���	*��N��� �H
bP�
�ReR

u6+�hxNJh}*
������@��&^��B��cs۵�J1��� 
.<���>�4������6�@���`k}�F�����%��+F�F�-�����h5��L at wa�3��JS�:�*tZ�b�Y��ق����ކT�<X3�g!�g�<�p�5�����e����9'n���1�`�/��x��2rߜo)X0�T��I����9�Y�9�����F9H�+�uho1�[�hLQ�]���5ƳHY�U�3�����u�{\�lKf��Ye<
c���i�u��s��q5�dx
�� +9�nA
ju�\ok&���u(�C��A��dBcy�Ϫ���ѤI�7�L��/��p�`ҡ�wR�FeB���-T������
F��/J�B��P�ё2*�J��L��0Z`�h����$I�
^�'phBú�u
o����H�jho:*�y��D+���x�6ɠ5�6����Np,��xI3Nl�����ʯ��=x
���}@�hC��K�^�ss�l�(&�
 [...]
+$�j��0l0��xmu�w����<X<C_�t�{s5Ω]����+O�x4૶+t�А�[�OРJlT�8 at p�;<�y���,C"�>�L-谜�3�9�
+曫Y,M�>X^A�s:�ŭS��[�
�j2l��P�-���
�ty�
�dJ�ﰊ �b>糏���dϮ Hjm��8>g�٘b�?
�9��9XJ}���䠤��><Z�@;�Tv
+��.>,(N��� ��c�/W�A�.�NH��]�l2���z�5�c�|H�K8]�V�uvF�dڠ.����-�X˺[^m&O�G�X]}F4��p͙5�UF:�i����U�u׫�?!�Q�Ljʅ�n�תy������f3ى"�Np��{r��8�i�W�n�[���N��n9���A�,�vp�.�2�(^��A��ݻ�@��a��ԆO�nt0j�����ѻ�[�o����8�d�?}
?oO��;|��˘����8��Ȭ�1�N#�X#�_������;
B��G�`� �J�Y�=CC�`�)`a�hL,p��� �|lS%�
l+!�s}wN���C
�
Sk��58
+���
:����(�e�s%��
����  ח��*BX7@ā'��!OGȎ�&�)��O�rs��Ξ㑹Z>
{�ؽ(I�y/A���Z��Yפa)$s�Fa�A`��\%��f�v����B0���3~�1�( s�i}ф��<P*�;�r
P2zWM{{�α�\
p$b��Q�q��*�ڸ�ރ�s��̓�`�ҮX=?D��򏡬)Z���fi��V�peb��ݠ
+N&�$*��~��2(1Ѹ۞��#�?R\6u��z
+��Ulp`��^�Y*��A3�9@�x�~����Ʋ{F2��;+�q+��
�9�ѯ ��Ӽ�%Զ��
��o������3��^t�H�'�N<��[�
L��:���nI؟�
~u..�Jܻ���k}�&1p�m&�W�-\v�<\C*{���� U0�l 8��f�N()�{�~l6(�e��Ԁq�)��yf��f	�k
Ž�7t���Wt�E�}�"ms}F�Y�
�T>�ĭ[.��z~�q��`�6��7e�5<�"V|yJ�4UҦ'o�VQpegc@��m�����e]a���p�M.:s�O�((}8�7,�*�C���Oq����Z핕R�%Uwd����[at��Pˢ�&L�ӊ�G�� ����t�zv���g��T� ו�}��պb�`n
���]p�I<_~�� ������.#S�����uyW`�T7�#85�6��A�wv�Ղv_��r���
��HE� %pYhw�~ �B�
�`X�o��9
�w�1��k�|�GI�/ �Ģ�s���~v*���v�ƻ
��b4�
G�4[A���ؐ[�ꅆ�����m�ƀ�nu���6�Gv7H��`�
�c7M���U��0hG�br��*�G!3
�&)�����|�l_�ϻ�1y���OС��d%�__{;�Qi
+������[���7�n
o�ji���
8�z��yfK��q�^���&��Lh�ta� '����4���T����9
lK���3O
������>
�hi��0���r�2�1�(����� d�IQ2z�l[�#`�+��
+D��p�봶%��R9+4�<�
V�'WsW)�y�G9�҈���1��E1j
+k���
+��5��x����"�su�M��bW�
��Z�
.�e��E3���5j�^A���\1��8+��ާ��i�B�j�Z�v��녞�y}���T�/т��ToR�K� GI�K�c�q_M�ꋚZ��b���ArL<�V��
+�
��P�p��G䝉7І�+��b��s||����J�IWpJaHDE�,�gO�v
+Xůf�u
�Jp�
��1Y7�^Z�.�w� l5**
T0�r**3^���|�<�ՉpVT��}���a\^��8�
+��d	�^&87kTmy��S�Fa��FaIu����sV�:� Y(�=̘29Sk��N��p
�G��5=���'�
+�2���$��-G�3˥�(�e_
�%Y�LJ�
ڤ�BAxDZ�k[9��p
������+�$� q�J(_������E���\s黨�q�v�y��4��_��஥qQ)d���:~yo�yّ�����˄N������Pp"t�@�
+0��{\ ���b�}�{�����컲�Nk1��Lc�jCM>
�Yx�' *3o�����U�
�����(i�/D�fx���q� 
+�`�
;�\�Q����Yi۲�G�R����0�*�J]��Ŷ�P�Z�sw��jW��5�i0>�^�Ce�!��:A �2�
+«t�'�ꑤKq�U�L v�u�u7ڝ���J	xU=�tg�	�+��F�X�D�d=�vf�q�� -��)Z���
/�0� 
�5�:���`����O^?��o�-�pPг_��enޚ��OP3�z7�
+����{�*ٹ�tJ��%�+3�h��
+��Ԡ��X�]���^u���s6M
+�Ga^���[$�9�+�u�d��W�__���1�x���R0j�S��@F!���d��}

+�����;���\� alkҨ�i�
)[�P���\Y,x�k`���v�	�4�)
�%N
+�U�`�s6�	�j�t|z��+Sp�e"x�ݕ�BP��kX��^v�7>�ʪ�x�)�����M�h��װÖ�4h����2��v��I�G���H�JE!3S6�k��iᖎ�S'׬L�-��u��6<�\zߊ�]+��⭣��RVV����8q<Y&���,�c��+�J)q�&n��((f���	`g��R���k�-��:�

��u
R�T���.��v�-���Ak�����5�\x���dc��ٕ���s��I��^]�k�5!�L�
�
˫و:�j�ٿ~��5��
�!�]:��Hj��i �eq*6}�ό�(F10�Z�M+W&�JU8�Ⲅ����
� ��J�N4.�
�M��.p��	k޿hy�:�[��Fh��F���?�f@��Pa�4do���κ�?���+țV�$�X�P�Y����nV��h�����Y6�ڹ����:̝9�y�������lJ�U����Cw��ۓ���_v3�R��]A����/��Cr��>��K�F��披`�3� �×��
+�*p��za(`?8���

3�
���%�aA��TL<q75�&��c�U�;��ժN㐝 t���9���ek��h�Ǟ
+�D���<�eZW
;F"�;�W#�*�mq
+�m�*h�	F�~z
<��Z�@��8��` �H�T��h���2�+R���
P�&����lM�����pKϔ������#jo_ �Oa�C�r���6ػ�u����)V��
\U
��O4S�;��N]n�k~Jfߛ2PSjsk�~<�)'t
K�pjnQ7����HKX���_�|��-X�� d�l��e+MU0q�I�z�U����h���cY���s(���T呟X�bt]��g;&#s��\�8�[�K:`��O�ٙ(�p�C���S���*�wX��J~<T��������j��o����;S��Zc)��u%`��]�:�u	(�[���R%��]
+��#d�Vٶ��������,k�U{���)�o|��Y]��6��y�l����x�h�lk��pGD����c�u>��K�yȔlE�����e%AۉG6���8�����:gԕ_QXU�?@^*Xg9��CA�f
�k�����Dm�nb�d
��1�T�4�[g�W��2y9��d<�;V�J����(��r�~P��e��.�	չ���D�G�#Kѧ:��M=G�4Ч���)�D�@[�
+�9���~G�n8�K'��x9�d�Te��u�u%��&�3�g��Vzg�=Un�T�4�՘,H�P�јt׼�s�n~�RLO��q�8P"�!���[wpE�e+p�b�OO�\���]���B�
�.����Gg�\����[���oyZ�˯�N(� /
������n[�����Hm
ֽB����ʶz��V�q�yn���OW�!�",sf����S�4���t�\X��rq�n@�,���o��q�:�~���a��������� %���`#*�4��}�^9���t�����߿^�W�{�}�N�]��})臞��?�Ww�x��L[
���*\K�&���]'�+4�
+�67)�/��h�_1
+�z����V��]2�Or��y(�iĺQ
���@��7�0w���1׋.�v?7er�f�^�@�}c��^�i��W��d<���*I��U]&�^I
���� 0ޕ���U�M�c�	�`����$��
_= vL)�3���K3�	���U�������tA.�	=��6lե�ܢ�
��Q���/�
ǛuU��cZT?c������1�L��
�2��@���_c8��Z�A�Ram������
/ɽ�5��]3���	ɋ{�@\�����]��*Se����|���O�o�����-��xnPL�W�<�u��:U�m0�_5����ɼK����+��*����lˈ�� ���� n)��\��
+�UN
�g*آ��,��*1� �V�>�k5}�p	/'"
��
Kg�fr�J<�9Æҹ�ͫK���Z�_���#߱M�:l"�jp�}���N9
��Sb��>�jYpT7�lA/���ȟ>�r?p�#�j?b�
� 5���]�
�=��2�!���9����	�0����us<��
�+3��
�s��n'��L�e��S]�/���
�܆�ƬTP���la�Z�5^s�ְMX����e��Qwhmr,����&���s��0
��tVLMP	�u�-������#Z�‚6-�d��0�4
+�b�*�Pf�T�
+(�?
,rn
������[�n�
��3QdKsՂ��\��b$��5;Y����Zn��X���Y�z����,�r<f (��2���P������"��L�[���2��,�c=�D!�S���C[)F�AbA"��
�����J5�C
�ALQ]Kqܨ,�����!
>���GL�	z���[��{�\ԚJ�G��@�rM�
m0l`�� ٻo`� �#��	 �Y�:��{�
f*G��`���E
ٖ�ٜ�A
\E��Yf�Q���B܀�	j�$ ��f����P�
l�7YE|�`��e�dW�B�x���5���c����}��QQ��z\��9d��
U,3��B�K�����u�}|;�G
m�F��+F�:R�g�O��;S
���).���6��\C��|��O�d�����Þcek��(t۵\��������<�a��x)VQkQ�����N������|R���˱�Er�8+�
�\Up�‚j��a��S��B�d���׻��H‡�G�?�S�wF(sˌI�B��k2�!����ӷ�ZC�~���t���h�5���~� �Ó]* �H�(�m�8�c*��,������!�hͣ�~CqT�s@�"�A���[���~�2�7
�
�ꗿ�ڂ�k}-�p��Qj-۔�n�Tc
�83o�b���.�m��-��E���~�-�[+7�J^�F\��
�q��� ��7�%d�Kyx.�f����%0h�c�D~x;
�	�ۆ�Ƕgj���g}�u���·1���voH�i�)
IQ� G���6
�-Y�5
dɨk�m��H�.^�Tv�Թa�<|5�a��q�%f���_^
-O���`;���F�>*�k�}��?���f"^�O��}n��D �'҂��^~a��=@-�ޑ�*4GP�|
uX���{9��i~7𶵄��l�)����܆�rzP�����	~2*��3-�"��+(e
dX �7?�g����kq{���Q�o�t�7�R�|��B@<BP����8��{,��t2���^(w�Ş&�a��T�����
+	j��T{�
p��e�����z3�4�VϷ�Օ^
��l[õ�i[��lQ�xI{��ӌ8���F%s��>��}���{�zlm�V���F��	_�S~ǎW�c��g�V�é��`j˛�7O$�)Nro�ѰU�a.V��>����r����vvRl��e\�kAt�-�QM��U�--�:[}3�k5
Z���9k�{���
��50,�5�7��Y5��>�p�`�V}��z��������M����>ge���vݘ����7;_?��:�Px��H.�H8�b��
�=%`�QN��$
ɭzT��i
��rM$���ã��Q�B��������^f����l���̞�[�B)�m����|+(�R��W0�
���'
��Ui�҃�X[t�2
+\�?�v�~�.O�䀡�/�h/V[��?i��:s{�ˑ.6֚�U3Sl#�R=3����9�
p���5]�_�VS�'�y�X\.c4����2Z=�w�a'����d�a
���l��a�����f?��i��g�����=,KO�_9��ɒ=�n�{�b��N)5�w�S%8+��x��ҙr�0 at c��ˍ�RH����r�
8/
�J��I�`=��)��)D�1������g*��3����jp���p� +��*��a��&������8<&��\b��~���d���
�x���,e�m�qȴ�y�|6�ƴ��Syp��g�ϡ ��i�{
�a��=>����W��ڮ;?�����:�h�ܙ�����@�L]���R♖JC
�X��(��_\��ks��N����=x���*ß��ŧ��Y��M:f�b)�}9���׷6~
�4|����w���+�H*͑B��ێ�pmc
J
���
��
�+���T�:J
�9j[��|�g%�av%��xuofenX��ś.��=]�� p��qͦ�[�R�{x9?-�˭J���S��o��r��m�
�
z+�����\„
'z����s���%����'����KF�'~�ǧ�������h�=�����p���7
���#�z���"\8B��-��d��A�P="݌cT<~�^��D�a��4���q=p]�
�C��c��
P�8��1x�o����$Ց��L����B�=�~���?���
E����6����-��*Z>��~�<��u
�]ӂ��2�>t
�+���+�_z�
Rh��;���4�Ԍ�R>{�k�g�#�!`��g�=9\U��
���¶�rm;�Q��/��E�厉�
��BV+���I�C��R��GI
�	�V�4P8�J�]L���
���5"Vk�l�E��B�G�m�	�'Ơ
˱c����
��mVakDZ���v_�vM�|Mך�@`���.�۵&y9�i`ͮ�їc~�hq�F���~җ!�8�"��._̈́�k`�س��� ��^{�<l4̚X��������[�5q�L�_�,qv�z�c�s�
=���a���J���F�X;��&��2��-��u[F�Oah��w03�|}�ݠBqx��wa^3��+�s�Ù�Md�x��:��'�
�

r���b�b���X
��EH��6�ce�q
�*5�6�e^�
á4q�
Ci?�
�sş���΀9�>;3Uƞ��z��,�e�+��<�#��]


���Y��6�_�5ѡ�y
\�{ל@#:o�/�C��L�����|
�-�>�9Ҫ���C~}��	��W�оe�mYl/:)HL�e�C��`���ى�v�3S�I
N��LsmE�H��le��-�N��к՛Y
�\Z�`�|U�	��/
�l�G^�nVB)��`�
ɱ�lW��5���A�K�L���
����Alc�8�����{[�Z��e����"q���@���"`�'$H�A��
6�
K�=�	�#k��Ҍwi󌑛w*y��o�)�
1N[�, �#AGJP�^��l�Dglsga:�o��G
�QcSY3/`�X����d���y��.f3Ro
K�/�R�@X��f�X� ���;bp�ϥ<��v�cYҫ�
ͱ�/��.:~�O�lvUu6��Ua
B\g���M��~�E�u�y��S�>H4n�.C���Sߣ8�=�p�d����C�2�"u5���4ƶ����if^"�����t{�Y�M:��������c=�&�3|�+
3�T�f2rf
��{�:�[	Q���rW\�W�O�Hx��5��E�J x�k�^�Ӄhu02�`�m/wx��k�Nɒ���O�m%zv��m}�&�
(ɧ�qq�s$��Lg��P2��
�t֡���M�@=�� ����Mg3����s��@��BP7,-ꭜV��
���n^��)�����z9��8N���r���u.��2~�bij����8�`���Vi8q5
 ,I�
O-������ޝ c`mv�d�g��71�/�Jl�Y����@b�,<���~
8��X
+i�j$��+��7�2:��{3
��
-��
nB4�V�E3�����q�C��8��L�����J���F��
_��ַ
Z�Z��>���ŷ����)�jޕ$�ܯ/Ju�.�^uR�
n`�s^�=+Mo��ė�$�1�6�	r�oݳ�YStF���
t��C0
\�U��L��oN�̳�9)˥�U��#%CwrM|����
�IC�(��| �䒣�r�e�~�6����%�/2���>ģ�|��P�2=�ZL�P�}8q+��9V�
�1�YR0�I�V�K�K�c��u�HW+�E�	m�4bCd8f1 �	�o�>xu]����p�!�@���v4�=i	���Њx�)��
�17�V����P�)Gs�p�v����n�L�lQXX�+��B�x�(�a�/��� t�����Y�R������t��a0w�8[潮r��דScy�a��K�t����,U�iLC�1���9�� �r��
����sFF<���Pw�q.����
�b��u1��X�#1)�{�+���w��ʽ6Z�W���i�#��� ���k��T�����w��2�Ǒz�X��\ 
+
��a�LQ���|��p��bl��}?̦���J��øw���ol�od��;
=vL�nЦ>�s��al��f[H
��'A�{��	��
&F�:#�4
O^�X�tͪ^�H��0��2M��
�����R-��t
;̑��"�|\k�2t�:7�1t,F2
Y��e��ϗG��u��E����-?�Gx[�/��U���Q�Z/9:]
&�����]�
+_��xB��~��_m����i��7��t��-��y8c�.�:sk�`{������U���
�:+�ϫ�
�Ãݗ��
%��Ňt�\Jrq,L�&c~�&�X�50O���m$G
+'!�h�
��
4�º���@-'�6Y"���@�j��TD�=Y���C@�E�@�J
+P�0Z�ǜ
+&�I���[j�(5��-����~��g���p�`��߾�Ր�i�쯺��z��G�4ݟY��ş�T�&��i ��v\
T$_!ͻ
i�=&��s�~=��b��
�&�8��
�j.�qx��U���b}�������;k/��
+Uxz�z�+�{�iN���QY���qc�s[EH�"�ܻ�
�1g"�B��`�k�(�������<��«;8�W_��>��շ\�yg!
�A�^�:�u��x�R��J���E
��E|�,�ꄄ�:�U��?�@~0�L�
sqE�ǚ6�|xg�o��s�)C�pl��;��s����MtdW������~?ۛ�6��X�&]���~��!��q�����r{q�`p
vo
�3<۫�Ǔj-�
l[;�aa��*.�@l{�l��aY%o ��?F�c�l
�Ƌg���7��s�n�_m
^
+U�%w"��� k�b��j�b�q|�<��X\n���]��޼>
qv�~x��ޢx��B��2��21t��Q��{�U
��
��A��:��p��x���2]��e
�$���
�rp4��sL����݇}nA���Ӧ�R���T`�2��
DA̷����g@���qV<��[=�Wj�$�o��DpMEG��1�͊�h���|�a�S�#��Ne�+2O�/�y�u�\
H���Z{�lvp�۝h��{�����%c>�uz�b��>�̧�@,�q,Ϻ9Q�tlϟ����=�T��8?�
�;���g��=Q��а�^l�4L�γ�z��̣@
���!C�r7Q'Nݣ�n0B��F�LF��

����)�_;� 3;�`����6��������z�i�
�
������Ǥȇ`;��ɓ ��q�|.�=������@u��ǻ.�?�:hn�����<�;w��?��Z6HA�����Xw��	m2�߶�����P����֯��
�5��&��
�='O�߮�x���8$dΰ�� �(f�y�F�L8�i��r~;�� �t�"�p,�w�����/
�K�
[��H��#�6
�A2F�����O�
+xyvC�65
�z�Z
��ƃ�
�?�}��n�xA�cͤVَ`��W�ݛڏ���6c'X��m��
@e���^NM-<�M��|� ���tE
gޫߊl�8��Y�Ȫ�?��
����R�`**~�<сKH�������@K�%��͈���r+��n9nM�0�|̔[w�3�R�G��p��T?:L�_��A��~1����ޣD�����4I�՞��zAP�a}�Z��I��$�kUR%+9`��
l>�Fi�C�� o��y�
�b��@^#�經��
���j�Eۢ,,'�[���g�
�堟	n��X���Y`6��B�
+iM�
+�R^.�upt��P���,]_9 hCt����Wۊ]�}8��_
����ɓF�C����c��DR
�����ޫn�ϙ
��`�5�����uY�j��}��Ø�~XF��\"�̙gw#-=
�f�]��ګ���k��,��"~�e��r���Z�A/��p�����E��\%i� �f6�>*vQg�5]8bE�&>����=<��,�t���H�,
���@.
��w[���۰��[���-�I�
�~5�̑��ރNowR��B�������E�-��q~��qm ����t�?���4�~jGo��0�G��W�
�N~�����?]�=�����������W�3E��}��������廷[|8K���٧C�hK���g��o���V��l��g���̫��(V/�&~k�_�QGS�,��7�,J}����܇ٹ��_�5��N����$�*~`Kk��SHJ��C�Er�Յ���%�3�l�3	��w#�G�`�%ʪ,[��۪��J��IK�񓒔��$���0>�LY�� [...]
+*���
+�&����Jr����o�����_|8Q�Iz��x]��,�ЗS�����>���9l#Ŵ
>�$ �07�KPH��迄Q�ǁ-u�AL���Rv5�[!�W�,NW6�l�,�e�����0]l6q�2���$COSI�afURg������<[=��S�.(��ij㽂����2��Ba�gו��[J
'`:U�r���!iqB'�L�<��[
+�D:�9m�U�W�a��
�{��M�B�ȈqR	�A���u��b��MTy�
���
+�ZD�:ZĀ�<���z1\ŋ{��n��ema{k�1��Z��3�?/
1U�aN�D����z�dU�y�	A����
���[��[�H]y[P5u}Xo�
�ȇ
3,L�!�$ABkɆ�R^�<^{-$+�}���4 !���
X�:���-P:<+�:�P�VJ��B�
+��l��R�z����=�e8Ld��י���a�l�EC
�����&})
+Uu��`�hU�ʕ�M]m˄�
�ԳY��� ta�zt��⵪��٠� �l�ꙴ�W!�`��'>��b�)�	@Ź�F�����>e��[3�P�s(k�dz�QLs uZ���`Y8ɱ:���@�a �CS< �e\魘H[1w�3�F�ѵ.`̡�.KW��C
�4ZOB���IƑ aOUQxZjES�5���
 e)�
+,�0T��j!�eH�h��!���eD�0gG�;!/ڶ��Zl�AI at tu��i�Բ�|Vk]�gt��~xں�
1}���k̫(
Lb?����Ye�0Xh �w��5��@���{����l�`�\�!�g��|R��e��le�H�$#�HƩ
 Q��b,�%�n	ڮ5�*X
'[u�(��J��-=?Ġ�SE
��� ��J��
����Kq�Y�t�ȯ)Ψ���*�Ρ�vr���s
d9�:�����+�
�-�ړ�
+���n͍%kZ#��`��T?���+$��V�I'5�A��[AMw�rj�<ڍ�lo�����,�Ԧ�tOK�
ZuQD��@`�g�ޒ�4_
~�������
q���p�H�P#S;��%��"��#d��UW��ћC긫ղ���U�|��R=~ۏ˸/u��[~8޻����
�/_������?�s���������#Я����x������W�m��ϟ�y������r���;9���. GRq���
�t�
mҖ��6dB^����}{�C��?���܃�i��)��Vi��9u���3�b I�s��F���o���|/+�ộ+u��[��� ���:d��f���

+��nBBm
$���R���+1��,�纾o�p�9.A���*\������F�6���f�
O���W�"<Pb�y�t
��&N1h�s!�.��!)s�
(c�|���7��&:z
�`p�&���w��N��-���n��C$Y�
��S���:�
d��6��`jɃ���������J�Ø(9@
+��.<|@�EA6�U�d��Q�����=����R��NQS���^ncw�@/}Z�
sF�MS��X�hʙ[���h�
�� �vv]��0�(�>y���ڑ��k�����c��m
�
`N
=��I�K�1�b���e%"�,��4
d�
�DH��8`
C;g���T ��J�DZqC�"[
U��H�����*L��[�xOlQ
(I�B��ӭ
+��� *1�T�{�{�-�-V�
}ދ?���ܰ�����Xš�f̐��1��)v��rAp�y3ЙF�I���U�K`d�Xv(���}O
�����kQ��}b�]�P�Q��3���18-��-T�
�)
�Uc�Nݓ,��)���!
���ng˓TZp�
����
6N
��}��$ *B_.����qd '���X������f{��q��QDz���3��[�N���R����a&A�����H2�L(���7����vg�>�Z��
�[��= ��;S�_S�r�'��
���q����XA�F�CFܑ�B
8�p!�p���XQUy7]�g��q�s���Cs|W&�@��I^ʵ��ԉJɸ�k�+�Q֑o�YKP<`��q.i����
+ro�5[J=�`�@.�6Ӂ�e���A�4�
�8�k��$I�
k���ԉ
���I!27 J�4�q@��&40W�r��u�c��}DG�
�����1
z�F�s��=��<w��`)�����X���8�M�Iܫ���r q�<��6�
J��3�T��(�jmng��=���9vs��BKZ�ۍ�_�^/�%�l���Kz#aW����t�����PyA�6٤o���Ђ��`o�ש�
���l�ڲ�|�ۋ�(!m7�䓷����q��\F=��ɷ���%
LUԊۇ��1j<� ;t�Y]��6�~�K�j&
+�
H�NP���ĴN� ܔ)���a|�<,�	�s�q n��"'(t��*�`s�Y�!� �K���Rb�iw����j�k%	�_j=m��$xٷt�#�?mʙm[~����0�ڪ;��\�,���u(֯�<�rl�������b� {��~]�#g~Eع[�+�:3aߞf�͋�ID1G�s��\�.���x�C�ٜ��}
�%��t���^��,��?G;�H}k��`�����Zp{3��d�P���i�p^T����%�(�OJ_��r�-�:-��C��Ɏ
��
�*1��!ֹ�>\5��1�j)3A��ƀ�-�î]
<�D'���C�G<M�#G�\flm�z��E{@
�Q
��JLIX�=E���5[d��5.$A�
ĺ�1Z�8��#no5�;���#$���
+0 �f�
endstream
endobj
18 0 obj
19883 
endobj
19 0 obj
<< /Filter [ /FlateDecode ] /Length 20 0 R >> 
stream
+H��Wmo�
�n��a���z=�yo?�I���.	�K/EQ��� K�,_����C�ή�(mq�°�~��>|�Cr�qV%S������YLIw:���1�B
-\Й@�s
$lhR��cD�TlM�Mdc2q�^��
9r�rb�z5/��1.K�şŧ��hs��>�Z��E^��
�
����5"o:\d�8����"�|g3���������$!w`��5�`�%PBM,/t>�z�P���
}������ўq
;�]vъ�e
*il���"��*n�)ơKɊ�!�����;��X)
ׁPp޲����d��ѕB�I<��=$�`%�l�cm!rbp��s�Yo}��cb��T�1���Z���A|f������s�t�h������
]�0W��IS��ك�5����!��.p�z�]�̢�P�
����..{��.��2�P)Š5Y^�!3�>� j�00�x��
��[���u� ����0h��ā�
��!Te8A�s�>��

B0�G��q4�-�ѩ�a�x@����`�TD1p�:a1�
�i�k���޿��ް�k�'K���>
�C9{� rIў)��\7�p/�K|r
+VR�@9�A8�*B��c�eK(d�kK6�8Ȁ��
�������O�͌YHF�ą��4
M'�q d�t���)�"W9�� S+
8���9,1Dc2�6X+�6F^��2�\;^�[�5�	8Z�o��j��aS1�L-��sHr*,��K�v�]�`1e�b�
+�G@ם�(%40Z������G?
?{~�پX̷��j���~|�����|N1�Su~��,V�����|�p�f�����
Y���
uϕ�J/�؈n+
l鬄K�#貍
�����
+R�*�t �5�A����.c�l-G���e�\ֵ���!�����W���qV'��ݏ;��.�M������<�߼�m��f�+��?.VS���j5��U����GZ]
=
ke�V���>�|��Oʩ��?���5ڼ{�C��y�7+P�|7EB���.��@�nul��
����3�V��ˇ��g��bFV��|��kG��Q_4 ��ԧTgK�#��e
�F���X$7�P��/��H"��̽�����T1BB#�Ps�(�C�v9ʰ���]��W׸�7߾�;��m~�|�OQ���2�.6�CX�q�@�G�,�a���"�4!�i,�q��nπc��S�*a�
<��^IW�Kq���
@3�QG�4u���Av��4����܆�_O8TP8
�Gƣ����:�
D1u�<��
+Rvވ��Qi��� &U:.�X�4�\��86������
���mh�
JzϳZ�,��1S�#P��
7�\&n��ڏTD
TG������
+T
�LFgI;GU�e,�/��8�Uq޴��:�5���X�i$9+ʀcB�!�4�gP{#p��e��1�y���
+��GI"�
�[�>��2�PA�0
�Ț�G"L��
�l
{

��.� B�;o@�8�T��pĶȃd������sp��MH0nj\��5S�#���
�;��^M��#�F�(TP(T�c�������:�j@�4�(�z,�UF;���t?���L�Z�BJ,C�<�F��j����;1���
+7r;�àd�
ϭ��N��L9TP8
���-���G:-e:��Ĉ
�
�¨|�K�F���������܈nwq/9`\�j�DS%�';IAN3�f�y���_�,j6���S��#���w^/���q
��FnEhf�x��
o
^L]�J1>��<��$���Y�rp�o\�l<��,��R�uu�f���`�˴a�+�
{	�(�k�N#p�=�rM�z!Ф�s�{Ƭ
���b���HU��a0	
�eB
�b�X�g8��DdX�C�"�������2��M����z��a�	qv&x����9>zy7���^>��W~��[��\\�?�r7�~��}�7���ߜ~�K��>�-�������b.�?���s��V}��m���S��O��iū_f�C
����9�ڿ�s�8��mٗz�~X]
�,�[M��e������ˇ^�.w��j�y5��fv��뾙��������h����W�����J������f{�����!�Wf���}��~��.��~����Պj�d�}�_l֟ [...]
���ى�Q�����|	��z��yS������{�Y(r�K{��;��$��<LS9�.Q#�Qx˔�3�Rd���	]M���OG��[��O���!����Oد�
�K�}��1xށW?�N�.��;�� ޑ�
���
ߞ�q�f˛��3���ٲb=�ca���vb��>�MlGW��.��,G�b���O~��s������	�l�
۲�O\S��
	�7�~i@�u���d�����
�'��r\!��[��?/
��
|$= �"��"$�%$����5�
��O�
���Χo۠�����
u�Ms�v����H,�����iTwV��>��W*���t躯��`
+��1r���H�3Ĉh
�ы��k���ݡ0h~l������b�%���35��'���1�Ҩ��]���� j
+�bQ�5C#S�؛5*_�dS"�4jH��Exm�}=���=q�ܘ�[WhQ�
+54����'|��u�e�%���!��1�

��@�2[E
x�h����2A��SPM��&���Ԑڗ������@��Ѝb�=8�U��ŝޡi��q�M��N�����&���q���Qx�g3BWdG�<b��ֲaמ��Y�Ps$�U��x��ZD���o/��ӄx =@Q
.
d7��
A�#*�3�9
VLM�sm�.��7��	�<%�l�Bo�T�5�)�R�'!��0� ������F�e��Kz�$�p,:
N%%?x��s��l%LV.ɔ�JI��e2岕2_iJ���L�
��]%��"K��D�)�,�07+��N�W�����������+%jc5g�����
���
�f��f�*Ȧ��Q�t~w���G\Ώ=2��+I֔n��Ɗ̣�Fm0K�n���ݸ����t�Mq7�x�
+��#�?���x`�Ha��C
+UQY�.ˬ#��2�H��J���r	+4
A7M��
+
+��j%����x�{Xa��`���S'ȏQtu�S>����¸�Z���Ip�`"��~
�.8Q�L��%�ۑ�+h�� A㙕awS��#,��b�f�$"QӟYD4	��2�3���$G�M7��l
�C���ٻ�<L�"�@���{^�I�1��F

{,~Z�`
pqٷь�}��6�� �JڪAx����;,�IyW�[T�T��Ӏw�3R�:6��%��.��
�׿
���1
6��k�����?gw�g�C����/Tg&�1����aQ��1F>���G
0�� �j
���,�����o

�����x�e�}��
�n�c��(���U���`���J� �q#liZ@�<�V�Tǘ
+zC�H�Q�7�jRbKՉk9��O(��!��y䀏$�K�|a���
y�X�B�����e=
��2(
+ļ�����ѷ!�~
:�f��y���}�K
B6c�?�� �0y9TIן�α�<t�_7��g��
���nSnk�۲�c��W0j]��TnD��c�g�CZ�Z�1	s�f�p�ZK�T5�f�d*`�{�df�o�`���щZ��wV����Ei���#6����!U��Q�&,F�(��1�f2�D���k��d��픴S��j��$T�~�]3���5����^u��e
�7?�m��cQ����l
]S���@�$ ��
��
+IҎ�p�!��;~Dq_d����H���Q�v��H���j�~B��gM�&��V6�i��6�kme�[uz�>���d�(���w@�`h��Cr�,�Ӗ�rXN�\�.8E�$��E

)����� ˒�[`����hF޾���z��H�OCbu�M��0��!�0��4��=%�6��e��,�o ������P��8����^�����}r7p�;��Ѿ��������uo���w��/��
<�A�{A	"Q!p
,����T�C
:���6��{{����-�t�F0
� }
FŐ^��;+�)�!���#�!��y�A
+n�I�M�j(P���j,h�3zB�X7H���A�� 2�3I��(�EJ�B�U�|:��)�4��&dw w
��\`�š��wmZ�]/&���s}�%�Q�&�I�cp�b����
+�,&�܌��Cê��щ���wV�CN�Z�r4%
�c�!)|4�|
���a4�o
�l&JԹ{h��^�^q�/��l�����
��h��6���O
��<P,�

�U�l�J��0@��o0�^Ԥ��Z�2y���!��l��q�\=䏝��0.�G�����<���K�.��MB9��(5���d�ڢ&5YԞ>Y�bʺLl ���&7��:�j�ڮ�e �w
��&p�i�h
`Q�$>[�3!��]���hL��ࡠwo�8�!�v�g`��p�3���fV�̂I
����S�#q{Hڎ�����nh�8?��� }
FE�_��F�)��3X
��Σ
L���o�v���+ˡ�����DkL�؏���HTQR�SU

Ɇ�Ⱥ���PJ����)�iY�@R�
�ˏ�`.
d7E��&�ݽ$���z�V�e���ذ3�|{y�ț�
���_e�m#I�݀�C'�`�EL�^��r����h,�ăl`PmqB�Z
N����[�ͣ)Q�<�;Al�G��������q`��+1EI����җ~x�~�M��q�1/RH���r����/P��w��g�QY�*���[�F�#��S-�L=��[���G��
�;��cذ��<rL�eP(��(�_�c}��-��"����x.�QS��W�:����ه�r;���-�?�ϼ����F&I��Γx��@�
��� Z�Џ�<��d
���
����G��;��.W脵�i�z���<п�
�e:@�)�܂\5
f	yc܂�i����'�^��]%F]���<�7_LJ]�5?)%(�e]nq��V�R�xA����0K	@R�6�KL��q)�\��Qˠ�["�� TO:��S��K�@��m���!�P����~Zc�Rn
̚�B:�`�p�"E~
��ʄ
+�r�]�.
՚He@�p	���5Tm!���}�Q������6K��+�
[GC1X*�
�se =V��b�U=����
�'�0:��F�
Q]̳l4�I�u����D^E���|i�b}�Ϡ�wd��/K���L0�iO9��h�/�Y�b2om�iB�/��in҅��;U(Y&
Z
+i���_�ր<�� ȬQ��4�p�A�J��v�慎*x���€:e�(wk;R-�YV
�6IT
�ӮT;JDj�+]�B�9�
+by�m��`S�#_���6,�eT;#d	�NI�x�4����\�*+�
+d���=�C۟a�n����
�#�:���,�#e�:T�Q-M��_��?ݘ�8P	K7�pj�IIv�Ǥl9M���֘+-k�����H^r��T�)��
�A�S?%gg;���5-/OAyO�t�P��ݲ����ߩH1�k)�4̂�˨�PV�F2�'Q0��|��qfSH��בH���U�B�`b�S�% U at u�Y7
��~t~��)�����]*�J��H��ȿ��Ώ
+��� Y����ϖ���e9��o�(:�I�58c����O��jS`/!��l
dG��Ź�-��Q]�Ȱ�͠t�Z	nJ�p
+��L�ie�a�3IH�[��ٍ�9���
����Z�/��V)Rd�tH���c1���,���t.<��I���
��2v3'rGJ�)�!<�Ӓ4�V�Ɛ������<�{^��{5�
+��2M��Y|�`6Β	x���D� 'K�z%J���"~�<ڡ���R9G��E6'c8
��;�צ���cV��u���i�dX7	V2����
���R>�J�]�۟j����myR�gɴXq��ϡ5�puR�p���n~z��e��wr
����i>I�tF�I��P
R��
��z�����'rD������4
;Yu
;�5
t+_��4�
��l�A<���d��d��S���\�K�c.��G��<����/�^���������%Q�	Q�%�*���!��~aRŐ1�����
�[�Z������
1 ����$����E��?��O2��I��4��7��,v��oԛ%�M(�4��`+LY����i���GO��\�Y0Mf��� �
���
+�Y=��ǿ>\��#Ez�?s�R/��}s� ���(��?����w3��|7�'4�����e�I5��	&��2U��C��
+F��$�Q����BNΓ����y�$�A��)��1���2�¼���3 (�д�->����ƭ�$u����
��%�>������Y�XH
L`f�܄
�A,�
�泵���9�S#4tX�C�;j ^�L�G�}��B�Hz��>Rr�#�"W���>R�;|�	�~�"�+���If=����
az�p��u(Y�Da.��4<.l�M��	.7��S��ɹm��9
�y�aqP[�j(�E��B��#<Rk�g0&hc���\��&��+M�+�I��U�TN�¥,S��	
�78�xC
hDa	���q��wu���^A�jx�޿�+.g��

��7����a�B��us��-䶒�GaK�PR�
+�)7�����z�:���<��n
��p

��5
F��/�E=
r��9�`#"�5`a
+ �W.\ó0Y!�L���w���N���[��
P��A��@���һv�Z	��aķ$N+�2�,؎A=�I�
+D0'
Ӱ�)���9��ϳ�- ]Z�ܡ���s�!��

,�
��a���i�����l�P�u���U�d�`�U�y�A�����@
�J4��
���ݖ��Dq���˟{'W�pd�g��S�  L���C���
�k�3
���7^IJ�f$E��e��맫���r>*&Y�7�<�'q at p-�~	�r U�*���Wq=�0�\�*�`�ic��u�	��j}�PJ�*l��	'㹤�X�o�8�ԩ�~��F��G���
�P�m
�

+����
���P�9�r���|J
��CG�h3�[�=�q���'Q���x0�Y��8�П\)~�Z���N[��2Z���&��
R������
�t�
:����~ς;�S؉�
y11` ���'�Ls�V(�X��`�3-�.g
+%�q����fp�#�['JQ���
# �d�����׎
+u=��
Ƀ�;��J�x�\��8�Tѩ��0�� �'��#��G���}�.
��s�uϰla�Put|
ĪQLw'�
�T��x;����]��&5����_-;
�@��?��#!~ı��JU�$�W���JiR9�ѿg6���i�ƅ�z�Y{w����DNpM��B��-Pd��h��F�2
+0�].��H��B�n �3J2�O$�H�ɢ`���V�^ə��P��0�MG�s$��o
�"�S.9�
���z���7#G��n���qg�"
���dDR'�e7�<�QJ]��檠�'Q�2�	�"
d��
+Is,�>,K��m�}�\�
�>���o���q+�m0�b�����?�
�����/	��(��K֣1�
n����H)�,
|{�g}�'�`�י�uT�q��ٝ�0�
l鞼]WM�l�Kl]7���RRz׆ƻ�]5od�M_��ͳ�O��
�7Cr�߬k
��.$��-��ve��L�n����
�TCȭ
X�x'w�����Aa�mJo���OwX�S
*��*~���h|{~�1 ܱ��
endstream
endobj
20 0 obj
8571 
endobj
21 0 obj
<< 
/Type /ExtGState 
/ca 0 
/CA 0 
/BM /Normal 
/AIS false 
>> 
endobj
25 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /OTMRTY+Times-Italic 
/FirstChar 0 
/LastChar 255 
/Encoding /WinAnsiEncoding 
/FontDescriptor 26 0 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 
500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 
611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 
722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 
500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 
500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 
250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 
333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 
389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 
675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 
611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 
667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 
500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 
500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] 
>> 
endobj
26 0 obj
<< 
/Type /FontDescriptor 
/FontName /OTMRTY+Times-Italic 
/FontBBox [ -169 -217 1010 883 ] 
/Flags 32 
/CapHeight 653 
/Ascent 883 
/Descent -217 
/StemV 76 
/ItalicAngle 0 
/XHeight 441 
/FontFile3 71 0 R 
>> 
endobj
27 0 obj
<< 
/Type /ExtGState 
/ca 0.98999 
/CA 0.98999 
/BM /Normal 
/AIS false 
>> 
endobj
28 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /YZUSTY+Symbol 
/FirstChar 0 
/LastChar 255 
/FontDescriptor 29 0 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 
500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 
722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 
741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 
631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 
521 549 603 439 576 713 686 493 686 494 480 200 480 549 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 750 
620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 
549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 
686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 
713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 
329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 250 
329 274 686 686 686 384 384 384 384 384 384 494 494 494 250 ] 
>> 
endobj
29 0 obj
<< 
/Type /FontDescriptor 
/FontName /YZUSTY+Symbol 
/FontBBox [ -180 -293 1090 1010 ] 
/Flags 6 
/CapHeight 672 
/Ascent 1010 
/Descent -293 
/StemV 120 
/ItalicAngle 0 
/XHeight 771 
/FontFile3 69 0 R 
>> 
endobj
30 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 357.63574 401.36816 386.93457 469.17627 ] /Length 31 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 32 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 357.6357 469.1763 m
386.9346 401.3682 l
f
endstream
endobj
31 0 obj
88 
endobj
32 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
33 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
34 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 381.57324 395.82813 390.30273 405.56006 ] /Length 35 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 36 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 389.3281 395.8281 m
387.2344 398.0166 384.1865 400.5381 381.5732 401.7881 c
386.6201 402.0952 l
390.3027 405.5601 l
389.4219 402.8003 389.1689 398.8525 389.3281 395.8281 c
h
f
endstream
endobj
35 0 obj
222 
endobj
36 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
38 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 354.26758 464.98438 362.99707 474.71631 ] /Length 39 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 40 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 355.2422 474.7163 m
357.3359 472.5273 360.3838 470.0063 362.9971 468.7563 c
357.9502 468.4492 l
354.2676 464.9844 l
355.1484 467.7441 355.4014 471.6919 355.2422 474.7163 c
h
f
endstream
endobj
39 0 obj
222 
endobj
40 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
42 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 354.26758 395.82813 390.30273 474.71631 ] /Length 43 0 R 
/Resources << /ExtGState << /R1 4 0 R /R4 33 0 R >> /XObject << /Fm1 30 0 R /Fm2 34 0 R /Fm3 38 0 R >> >> 
/Group 44 0 R >> 
stream
+q /RelativeColorimetric ri
/R4 gs /Fm1 Do
Q
q /R4 gs /Fm2 Do
Q
q /R4 gs /Fm3 Do
Q
endstream
endobj
43 0 obj
82 
endobj
44 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
45 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
46 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 357.17676 401.16992 387.39355 469.37451 ] /Length 47 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 48 0 R >> 
stream
+0 G
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 357.6357 469.1763 m
386.9346 401.3682 l
S
endstream
endobj
47 0 obj
105 
endobj
48 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
49 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
50 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 381.57324 395.82813 390.30273 405.56006 ] /Length 51 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 52 0 R >> 
stream
+0 g
0 i 
/RelativeColorimetric ri
/R1 gs 389.3281 395.8281 m
387.2344 398.0166 384.1865 400.5381 381.5732 401.7881 c
386.6201 402.0952 l
390.3027 405.5601 l
389.4219 402.8003 389.1689 398.8525 389.3281 395.8281 c
h
f
endstream
endobj
51 0 obj
217 
endobj
52 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
54 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 354.26758 464.98438 362.99707 474.71631 ] /Length 55 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 56 0 R >> 
stream
+0 g
0 i 
/RelativeColorimetric ri
/R1 gs 355.2422 474.7163 m
357.3359 472.5273 360.3838 470.0063 362.9971 468.7563 c
357.9502 468.4492 l
354.2676 464.9844 l
355.1484 467.7441 355.4014 471.6919 355.2422 474.7163 c
h
f
endstream
endobj
55 0 obj
217 
endobj
56 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
58 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 354.26758 395.82813 390.30273 474.71631 ] /Length 59 0 R 
/Resources << /ExtGState << /R1 4 0 R /R6 49 0 R >> /XObject << /Fm5 46 0 R /Fm6 50 0 R /Fm7 54 0 R >> >> 
/Group 60 0 R >> 
stream
+q /RelativeColorimetric ri
/R6 gs /Fm5 Do
Q
q /R6 gs /Fm6 Do
Q
q /R6 gs /Fm7 Do
Q
endstream
endobj
59 0 obj
82 
endobj
60 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
62 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
/CS /DeviceRGB 
>> 
endobj
64 0 obj
/DeviceRGB 
endobj
65 0 obj
<< /Filter /FlateDecode /Length 66 0 R /Height 80 /Width 128 /BitsPerComponent 8 
/ColorSpace 64 0 R >> 
stream
+H��?N�0�+q	�����	@,0
H� b(�R� Ca)RG�JeEB= ��̧<Պ�/�c'n��P�Mj;����3c-��������z-�b:���^H����F�Cv\T��A>���???�^K�/�z!͂�L[X˄�3�ϔ
���L� �f��������g��������!�l�'q��i
qq �����������ߩ@�v�^Z���\__C�����|�N��鬮�����
�$�ˬd

+>s{{{||����mm
E�G:`�6d�K`
��6
�w���hTP|Ma� ́�~nR5y8.���=N���}&
���ē����J�v�】�;��w�s�/�~S�f�z`����^o����9>ONN�A��y���Og,~6><]���� ͎e�
�Bt>#ComYɫQ�OJhv���V�x���Г��R>�M
+|||�������_�|v�
+lV�g�]oͳ�Rވ
+]�����ˋ�0��������\�rU�c�3�Ӎ���Lӈ���"�ӏa;�),�ᖌ0�Rt��|FFxG{��F��@_�,	~�E�`F�]�����np
9���Ex�F,�����5w
����?MU;�}F�F�B��\��ѯ��
(�I
+�9�YN���呟wI�٫M/>�DWy��Ոf������3J���W]#�n�2��}F7�2����4��������|F�n
�Qg
�� ,>��P�'��Q�jD�����mf�nd2��U��K �p8�>�tvӟ7�-�0;nyq�C�����H=b�A|�3,�ԣ
�Kn���? ��n#d��60����e��J,�邇=6Bi
�


�S�s���%4���=��
,��������U����K�F��c
>�?A���"�Ӎ(����:
�1����_t�CsR
ɻ��Ò�E.�zΐ�3��!�%�WVV:��[!.
���������/�آ������.��1�L���
��@��E�:Wa7�����F...&����Ҹ���݂tEF����T^Ӭ@h���>�����s�T��
ټ���;����+
+B���
��_ �����H
+�2�b��ڪ-�w�V�@
^U����4���
�R��L�9�
�K�
6Z9E���V�
+�2��_��%�@(njP2粗�Z���|���0�e���b�?��W���/)�����U�+)X �
�J�x�뱧H�����:*��
[

+�����x�p�w	�*x�'��zj �B��o1����y�@&�
���L&%.J��-Y�@tQ�P�R���L+�������5�nMTqji;�P�*�z��g�
�@�M��b
+�
�n���
.��%o���|���1�.��m�gBb0�%����6�E	�F���www��ۭjJ�A��WWW����j]����y�Y��� }�@v�OR�����Nm-
��R�D�ki4��Rm����@TK[ "�-1P�@�
0 >hr
endstream
endobj
66 0 obj
1513 
endobj
67 0 obj
<< /Filter /FlateDecode /Length 68 0 R >> 
stream
+H��V�n�F����Y:
��� A�ʲ5�ZD6�
E�
(ɥ�8���\���i��hAH�9����
��*�,�e3)���۷�]6/>��\�e,�Ա����*�
�TZ������;>�c�o�kQC:-���햫7��r]~�ԛ�Gwu�,^����l���r��n7.
lfY���jU�j���֖Nx�qplVe��\�nZg��sV������h|����3���E	�[~
�3~��Gɧ�E�4�_��v�(���y]�@����8+��&�����0�D����H����^'�H��~ə1��J�
���@�i���r6`�J�m�"�@���܀�lpj��{E���쉍�n��J�D�F����m�Q��j�Yg��p�b��9lO��͆\�'�&LC�&�.C�ag�u�wHM"�V�|@r�
+Y��jO��<�` ��;i�I���DȬL�����X:H����d�u����PAr�`�^��H��9~�0��R3ٯN[1�\�i՜�
��G`�nfJ��
�6|5����ȍ��5ȳR���cQ7e�U����g|t�]ܬ�EF�~������:.�z���|R�Yp�,h��/�٧���Y��u�-󂛘�re�G�f���m�Fi�z���x0�a����B5g�
z�_��.���M�����}$<�0����_b�
Zh�Dڦ�[�$�aA�<Ȉ�OI��
��
�
s�j�9����P�w��k��^}+0��w�۵�wk+��]��i�w��k��-��4��QC��
�N�����^w����xj����keԞ��|�f2Hꫣd(���5E�7
ݙ4��Ra�
����N�x���	��Ѱb��[Т
��X
�6�%���O�3�*	HAL�p%�Si?�=����Fo��lEN���emE�eD��ު�sԏ�9�M
���yD�#n���b���Ɉ���{��ta�x�~?��-���6G�AZ
��h�6���ٙ�I��_
 �v{2
endstream
endobj
68 0 obj
990 
endobj
69 0 obj
<< /Filter /FlateDecode /Length 70 0 R /Length1 407 /Subtype /Type1C >> 
stream
+H�bd`ab`dd䋌
+
����M������a�!��C��
�q��
�w���������w?�3~�	1�02��f�%�d$�X8�Te�g�(h$k*ZZ��Hs0i	"-
����cJ~R�BpeqIjn��g^r~QA~QbIj���cN�ؘb����Ԣ2� �y

��
��
L��,'�����\�s�憆r�-���^#<�G��jQ��n��l�k�6�n�X]�1uu���I
9e�Q�N5�Y�{,�����xC�ټ=�v�z�b�9+8�c{��X\2�ja��N��3���D%[g]WvYYNN���)�j�7����������D���gD�W�V�4U���M,]X��quۊ���'
�t`��%�.�;�XՊ�e��
9�&N����W1��߱3؞s=�0 T6�y
endstream
endobj
70 0 obj
409 
endobj
71 0 obj
<< /Filter /FlateDecode /Length 72 0 R /Length1 951 /Subtype /Type1C >> 
stream
+H�,�}lu���][��F��ӻ�uFq��e��0]��E���(�kw��{�l�]��`/ݖu��
C�.�0 ������$1"ƿM��~5��>|������<8�#�p
_��Xm0�+2�
�{�^4�m��^(ј�,.='���.�y����2�r�W�L���5�+���qU|�N�j�N���t5
��c"�����\�uˆ
K�,˰L�eI��\��y��j��"�ps�z�Sp9��[�9��n�
�47g�ݼ�I��M9��3s�`�����<���;�f��
>����뭛�gK�ݍG�6��,�x������t�X>Fa۱
X5f�T��`r���Ǽx
ލ�${�#9���'Y��ߕLr�>Y�I��TK
+�LVd8!�_�%�#������V��F�^�H@>�O_�����I��օ��=f"@LG�,>��o�>
ڋ8TȢ�H$Z ����<y�v^Z3�bc^��oP��P�PzY�;�M쏿�97ÇE�_�
X���As���t��dVK��6�%�����@mPբ��tP�����|�J����P`��F���DE�	�/,幽��L�?E�'"\��w��,C�#˄�0M�8z)!��P~I�4�%����߀ȝt[ a��1�tð�4S��Oi?�v�sV-� ?e���/N Lqg�"l��


����p�����o��
������M
+��}V�{tҫ��L-B�iv��8�D8�7��� K]�")�9z��f��ԩjU^��*��A�S�<Zg�m�۫��w2�>�
l�՝Sj��n$.�R1��𢆊yQ	1����
Fi*�ٗM�?�gE���io�&�ܽ�{
����gc��>5�vv��=o�]�{��V at n�^{��@��O�
�<�,���0��+`�lJ�Q���W��3�
+F"�ݫ�O%r�Sk!��W� �U��
endstream
endobj
72 0 obj
936 
endobj
xref
0 73 
0000000022 65535 f
+0000000016 00000 n
+0000000069 00000 n
+0000000133 00000 n
+0000000578 00000 n
+0000000687 00000 n
+0000000841 00000 n
+0000000920 00000 n
+0000001196 00000 n
+0000001233 00000 n
+0000002724 00000 n
+0000008472 00000 n
+0000024824 00000 n
+0000024847 00000 n
+0000043729 00000 n
+0000043752 00000 n
+0000064257 00000 n
+0000064280 00000 n
+0000084245 00000 n
+0000084268 00000 n
+0000092921 00000 n
+0000092943 00000 n
+0000000023 00001 f
+0000000024 00001 f
+0000000037 00001 f
+0000093024 00000 n
+0000094244 00000 n
+0000094472 00000 n
+0000094565 00000 n
+0000095754 00000 n
+0000095978 00000 n
+0000096309 00000 n
+0000096329 00000 n
+0000096405 00000 n
+0000096486 00000 n
+0000096951 00000 n
+0000096972 00000 n
+0000000041 00001 f
+0000097048 00000 n
+0000097513 00000 n
+0000097534 00000 n
+0000000053 00001 f
+0000097610 00000 n
+0000097998 00000 n
+0000098018 00000 n
+0000098093 00000 n
+0000098174 00000 n
+0000098522 00000 n
+0000098543 00000 n
+0000098619 00000 n
+0000098700 00000 n
+0000099160 00000 n
+0000099181 00000 n
+0000000057 00001 f
+0000099257 00000 n
+0000099717 00000 n
+0000099738 00000 n
+0000000061 00001 f
+0000099814 00000 n
+0000100202 00000 n
+0000100222 00000 n
+0000000063 00001 f
+0000100297 00000 n
+0000000000 00001 f
+0000100389 00000 n
+0000100417 00000 n
+0000102070 00000 n
+0000102092 00000 n
+0000103160 00000 n
+0000103181 00000 n
+0000103698 00000 n
+0000103719 00000 n
+0000104763 00000 n
+trailer
<<
/Size 73
/Info 5 0 R 
/Root 1 0 R 

>>
startxref
104784
%%EOF
\ No newline at end of file
diff --git a/doc/alphacalc.bmp b/doc/alphacalc.bmp
new file mode 100644
index 0000000..afb7e10
Binary files /dev/null and b/doc/alphacalc.bmp differ
diff --git a/doc/alphacalc.eps b/doc/alphacalc.eps
new file mode 100644
index 0000000..6896a90
--- /dev/null
+++ b/doc/alphacalc.eps
@@ -0,0 +1,9433 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(TM) 7.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (alphacalc.eps)
+%%CreationDate: 2/21/2001 12:57 PM
+%%BoundingBox: 131 279 490 504
+%%HiResBoundingBox: 131.7148 279.0898 489.9043 503.4688
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentFonts: Symbol
+%%+ Times-Italic
+%%DocumentSuppliedFonts: Symbol
+%%+ Times-Italic
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.1 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%AI5_FileFormat 3.0
+%AI3_ColorUsage: Color
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 134 -263 720 503
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 370 240
+%AI5_RulerUnits: 2
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI5_OpenToView: -49 619 1.5 1345 943 18 0 1 11 68 1 0
+%AI5_OpenViewLayers: 77
+%%PageOrigin:134 -263
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI7_Thumbnail: 128 80 8
+%%BeginData: 5330 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD67FFA85227A8FD79FFA8522752A8FD79FF7D27527DFD79FFA827
+%2752FD7AFF522727FD7AFF522727A8FD79FFA852277DA8FD78FFA852F852
+%A8FD79FF7D2727FD045227275252527DA8FD6FFFA82727F82752A87DFD06
+%FFA87D52272752A8FD69FF2727F827A8FD10FFA8522752FD64FF5227F827
+%527DF827A8FD12FFA82727A8FD5EFF7D5227522752275252F827A8FD14FF
+%A82752FD5AFFA852277D7D277DFFA8FF27527D52FD17FFA8277DFD56FF7D
+%2752A8FF5252FD06FF27FF52FD19FF5252FD52FF7D27277DFFFFFF27A8FD
+%07FF27A8A852FD19FF7D27A8FD4DFFA852277DFD05FF27A8FD08FF7D7DFF
+%52FD1AFFA827A8FD4AFF522752FD06FFA8F8FD0B27F852FD1E277DFD46FF
+%7D2727A8FD07FFA8277DFD0BFF7D7DFF27FD1AFF7DFF27A8FD42FF7D5227
+%7DA8FD09FF27FF52FD0BFFA827FF7D7DFD19FF52FFA827A8FD3EFFA85227
+%52A8FD0BFF27FFFF7DFD0CFF52FFA852FD0CFF7DFD0CFF7DFFFFA852FD3C
+%FF7D27527DFD0DFF527DFFFF52FD0CFFA827FF52A8FD0AFF277D27A8FD0A
+%FF52FFFFFF527DFD38FFA827527DFD0FFFA852FFFFFF7DFD0DFF52A8A852
+%FFFFFF5227FD04FFA852A87D52FD0AFF7DFD04FF27FD36FF522752FD12FF
+%27A8FFFFFF52FD0DFF7D7DFF52A8FFFF277DFFA852FF277DFF27FD0BFF52
+%FD04FFA827FD32FF525252A8FD13FFA852FD04FF7DFD0EFF27FF7D7DFF7D
+%527DFF7D52A852FF527DA8FD0AFF7DFD05FF7D7DFD2EFF7D52277DA8FD15
+%FF27FD05FF52FD0EFF7D7DFF27FF7D7DFF7DF8A852A8A87D52A8FD0AFF52
+%FD05FFA827FD2BFFA852277DA8FD17FF7D7DFD05FF7DFD0FFF52FF7DA8FF
+%FFFF52527DFD10FF7DFD06FF52A8FD27FFA87D2752A8FD1AFF27A8FD05FF
+%52FD0FFF27A8A852FD16FF52FD06FFA827FD25FFA827527DFD1DFF52FD06
+%FF7DFD10FF52FF52FD16FF7DFD07FF52FD22FFA8275252A8FD1EFF52A8FD
+%06FF52FD10FF27A8A852FD15FF52FD07FF7D7DFD1FFF522752A8FD21FF52
+%FD07FF7DFD10FF7D7DFF52FD15FF7DFD08FF27FD1CFF7D52277DFD1CFFA8
+%A8FD06FF27FD07FF52FD11FF27FF7D7DFD14FF52FD08FF27FD19FFA85227
+%7DFD06FF52FFA8FD16FF527DFD05FF7DA8FD07FF7DFD11FF7DA8FF27FD14
+%FF7DFD08FF7DA8FD15FFA8522752A8FFFFA852A87DFFA8275227A8FD13FF
+%A82727FD06FF52A8FD07FF52FD11FFA852FF7D7DFD13FF52FD08FFA852FD
+%13FF7D27527DFD05FF27A82727FF277DFF27A8FD14FF27FF52FD05FF27FD
+%08FF7DFD12FF52FFA852FD13FF7DFD09FF52FD10FFA82727527DFD07FFF8
+%FF5252A827FF7D7DFD15FF27FF52FD05FF52FD08FF52FD12FFA852FF277D
+%52FD11FF52FD09FF27FD0EFF525252FFFFFF27FD07FFF8A82752F8FFA827
+%27FD14FFA852FF27FD05FF27FD08FF7DFD13FF527D27F8A8FD11FF7DFD09
+%FF52FD0BFF522727A8FD05FF52FD07FFA852A87D7DFFA87DA8FD13FF7D27
+%FF7D52FD05FF52FD08FF52FD13FF7D7D52F87DFD11FF52FD09FF27FD08FF
+%A852277DFD07FF7D7DFD23FFA8FD09FF52FD08FF7DFD14FF27FF7DFD12FF
+%7DFD09FF27FD07FFF8F827FD0952F8FD2E5227527D5252527D5252277D52
+%52527D5252527D5252527D5252527D525252277DFD13FF52FD09FF27FD07
+%FFA8272752FD37FF52FD08FF7DFD29FF7DFD09FF52FD0AFF7D272752FD34
+%FF27FD08FF52FD29FF52FD09FF27FD0CFFA87D2752A8FD31FF27FD08FF7D
+%FD29FF7DFD09FF52FD0FFFA852F852A8FD2EFF52FD08FF52FD29FF52FD09
+%FF27FD12FFA852277DFD2CFF27FD08FF7DFD29FF7DFD09FF52FD15FF7D27
+%277DFD29FF52A8FD07FF52FD29FF52FD08FFA852FD18FF522727A8FD26FF
+%7D7DFD07FF7DFD29FF7DFD08FF52A8FD1AFFA8272727A8FD24FF27FD07FF
+%52FD29FF52FD08FF27FD1EFFA8272752FD22FF52FD07FF7DFD29FF7DFD08
+%FF27FD21FF7D27277DFD1FFF52A8FD06FF52FD29FF52FD07FF7D7DFD24FF
+%7D2752A8FD1DFF27FD06FF7DFD29FF7DFD07FF52FD27FFA852F852A8FD1A
+%FF27A8FD05FF52FD29FF52FD06FFA827FD2AFF7D52277DFD18FFA852FD05
+%FF7DFD29FF7DFD06FF52FD2EFF5227277DFD16FFF8FD05FF52FD29FF52FD
+%05FFA827FD31FF522727A8FD13FFA827FD04FF7DFD29FF7DFD05FF27A8FD
+%34FF272727FD12FF527DFFFFFF52FD29FF52FD04FF7D27FD37FFA8272752
+%FD10FF27FFFFFF7DFD29FF7DFD04FF27FD3AFFA87D27277DFD0DFF7D52FF
+%FF52FD29FF52FFFFFF27A8FD3DFFA8522752A8FD0BFF527DFF7DFD29FF7D
+%FFFF7D7DFD41FFA8522752A8FD09FF27A852FD29FF52FF7D27FD45FF7D52
+%277DFD08FF2752FD29FF7DA827FD49FF522727A8FD06FFF8FD2927F827A8
+%FD4CFF522727FD05FF277DFD26FF7D52FD50FFA8272752FFFFFF2752FD24
+%FF2752FD54FF7D27277DFF5252A8FD20FFA8277DFD57FFA87D27277D2752
+%FD1DFFA87D27FD5CFFA8522727277DFD1AFF52277DFD60FF7D52F82752FD
+%15FFA852277DFD65FF7D27F8277DFD0FFFA87D2752A8FD6AFF5227F82727
+%5252A87DA87DA87D52525227527DFD70FF272752A87D7D52527DA8A8FD77
+%FFA8272752FD7FFF7D27277DFD7EFFA87DF827A8FD7EFFA8522752A8FD7E
+%FF7D27F87DA8FD7EFF7D27277DFD7FFF522727A8FD7FFF272752FD7FFFA8
+%272752FD10FFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+	put
+	/packedarray where not
+	{
+		userdict begin
+		/packedarray
+		{
+			array astore readonly
+		} bind def
+		/setpacking /pop load def
+		/currentpacking false def
+	 end
+		0
+	} if
+	pop
+	userdict /defaultpacking currentpacking put true setpacking
+	/initialize
+	{
+		Adobe_level2_AI5 begin
+	} bind def
+	/terminate
+	{
+		currentdict Adobe_level2_AI5 eq
+		{
+		 end
+		} if
+	} bind def
+	mark
+	/setcustomcolor where not
+	{
+		/findcmykcustomcolor
+		{
+			(AI8_CMYK_CustomColor)
+			6 packedarray
+		} bind def
+		/findrgbcustomcolor
+		{
+			(AI8_RGB_CustomColor)
+			5 packedarray
+		} bind def
+		/setcustomcolor
+		{
+			exch 
+			aload pop dup
+			(AI8_CMYK_CustomColor) eq
+			{
+				pop pop
+				4
+				{
+					4 index mul
+					4 1 roll
+				} repeat
+				5 -1 roll pop
+				setcmykcolor
+			}
+			{
+				dup (AI8_RGB_CustomColor) eq
+				{
+					pop pop
+					3
+					{
+						1 exch sub
+						3 index mul 
+						1 exch sub
+						3 1 roll
+					} repeat
+					4 -1 roll pop
+					setrgbcolor
+				}
+				{
+					pop
+					4
+					{
+						4 index mul 4 1 roll
+					} repeat
+					5 -1 roll pop
+					setcmykcolor
+				} ifelse
+			} ifelse
+		}
+		def
+	} if
+	/setAIseparationgray
+	{
+		false setoverprint
+		0 setgray
+		/setseparationgray where{
+			pop setseparationgray
+		}{
+			/setcolorspace where{
+				pop
+				[/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+				1 exch sub setcolor
+			}{
+				setgray
+			}ifelse
+		}ifelse
+	} def
+	
+	/gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+	userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+	userdict /level2?
+	systemdict /languagelevel known dup
+	{
+		pop systemdict /languagelevel get 2 ge
+	} if
+	put
+/level2ScreenFreq
+{
+ begin
+		60
+		HalftoneType 1 eq
+		{
+			pop Frequency
+		} if
+		HalftoneType 2 eq
+		{
+			pop GrayFrequency
+		} if
+		HalftoneType 5 eq
+		{
+			pop Default level2ScreenFreq
+		} if
+ end
+} bind def
+userdict /currentScreenFreq  
+	level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+	{
+		/setcmykcolor where not
+		{
+			/setcmykcolor
+			{
+				exch .11 mul add exch .59 mul add exch .3 mul add
+				1 exch sub setgray
+			} def
+		} if
+		/currentcmykcolor where not
+		{
+			/currentcmykcolor
+			{
+				0 0 0 1 currentgray sub
+			} def
+		} if
+		/setoverprint where not
+		{
+			/setoverprint /pop load def
+		} if
+		/selectfont where not
+		{
+			/selectfont
+			{
+				exch findfont exch
+				dup type /arraytype eq
+				{
+					makefont
+				}
+				{
+					scalefont
+				} ifelse
+				setfont
+			} bind def
+		} if
+		/cshow where not
+		{
+			/cshow
+			{
+				[
+				0 0 5 -1 roll aload pop
+				] cvx bind forall
+			} bind def
+		} if
+	} if
+	cleartomark
+	/anyColor?
+	{
+		add add add 0 ne
+	} bind def
+	/testColor
+	{
+		gsave
+		setcmykcolor currentcmykcolor
+		grestore
+	} bind def
+	/testCMYKColorThrough
+	{
+		testColor anyColor?
+	} bind def
+	userdict /composite?
+	1 0 0 0 testCMYKColorThrough
+	0 1 0 0 testCMYKColorThrough
+	0 0 1 0 testCMYKColorThrough
+	0 0 0 1 testCMYKColorThrough
+	and and and
+	put
+	composite? not
+	{
+		userdict begin
+		gsave
+		/cyan? 1 0 0 0 testCMYKColorThrough def
+		/magenta? 0 1 0 0 testCMYKColorThrough def
+		/yellow? 0 0 1 0 testCMYKColorThrough def
+		/black? 0 0 0 1 testCMYKColorThrough def
+		grestore
+		/isCMYKSep? cyan? magenta? yellow? black? or or or def
+		/customColor? isCMYKSep? not def
+	 end
+	} if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+	Adobe_typography_AI5 begin
+	Adobe_typography_AI5
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+ end
+ end
+	Adobe_typography_AI5 begin
+} def
+/terminate
+{
+	currentdict Adobe_typography_AI5 eq
+	{
+	 end
+	} if
+} def
+/modifyEncoding
+{
+	/_tempEncode exch ddef
+	/_pntr 0 ddef
+	{
+		counttomark -1 roll
+		dup type dup /marktype eq
+		{
+			pop pop exit
+		}
+		{
+			/nametype eq
+			{
+				_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+				put
+			}
+			{
+				/_pntr exch ddef
+			} ifelse
+		} ifelse
+	} loop
+	_tempEncode
+} def
+/havefont
+{
+	systemdict /languagelevel known
+		{
+		/Font resourcestatus dup
+			{ exch pop exch pop }
+		if
+		}
+		{
+		systemdict /FontDirectory get 1 index known
+			{ pop true }
+			{
+			systemdict /fileposition known
+				{
+				dup length 6 add exch
+				Ss 6 250 getinterval
+				cvs pop
+				Ss exch 0 exch getinterval
+				status
+					{ pop pop pop pop true }
+					{ false }
+				ifelse
+				}
+				{
+				pop false
+				}
+			ifelse
+			}
+		ifelse
+		}
+	ifelse
+} def
+/TE
+{
+	StandardEncoding 256 array copy modifyEncoding
+	/_nativeEncoding exch def
+} def
+/subststring {
+	exch 2 index exch search
+	{
+		exch pop
+		exch dup () eq
+		{
+			pop exch concatstring
+		}
+		{
+			3 -1 roll
+			exch concatstring
+			concatstring
+		} ifelse
+		exch pop true
+	}
+	{
+		pop pop false
+	} ifelse
+} def
+/concatstring {
+	1 index length 1 index length
+	1 index add
+	string
+	dup 0 5 index putinterval
+	dup 2 index 4 index putinterval
+	4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+	dup type /arraytype eq
+	{
+		/_wv exch def
+	}
+	{
+		/_wv 0 def
+	} ifelse
+	/_useNativeEncoding exch def
+	2 index havefont
+	{
+		3 index
+		255 string
+		cvs
+		
+		dup
+		(_Symbol_)
+		eq
+		{
+			pop
+			2 index
+			findfont
+			
+		}
+		{
+			1 index 0 eq
+			{
+				dup length 1 sub
+				1 exch
+				getinterval
+				
+				cvn
+				findfont
+			}
+			{
+				pop 2 index findfont
+			} ifelse
+		} ifelse
+	}
+	{
+		dup 1 eq
+		{
+			2 index 64 string cvs
+			dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+			{
+				exch pop dup havefont
+				{
+					findfont false
+				}
+				{
+					pop true
+				} ifelse
+			}
+			{
+				pop	dup
+				(-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+				{
+					exch pop dup havefont
+					{
+						findfont false
+					}
+					{
+						pop true
+					} ifelse
+				}
+				{
+					pop pop true
+				} ifelse
+			} ifelse
+			{
+				1 index 1 eq
+				{
+					/Ryumin-Light-Ext-RKSJ-V havefont
+					{/Ryumin-Light-Ext-RKSJ-V}
+					{/Courier}
+					ifelse
+				}
+				{
+					/Ryumin-Light-83pv-RKSJ-H havefont
+					{/Ryumin-Light-83pv-RKSJ-H}
+					{/Courier}
+					ifelse
+				} ifelse
+				findfont
+				[1 0 0.5 1 0 0] makefont
+			} if
+		}
+		{
+			/Courier findfont
+		} ifelse
+	} ifelse
+	_wv type /arraytype eq
+	{
+		_wv makeblendedfont
+	} if
+	dup length 10 add dict
+ begin
+	mark exch
+	{
+		1 index /FID ne
+		{
+			def
+		} if
+		cleartomark mark
+	} forall
+	pop
+	/FontScript exch def
+	/FontDirection exch def
+	/FontRequest exch def
+	/FontName exch def
+	counttomark 0 eq
+	{
+		1 _useNativeEncoding eq
+		{
+			/Encoding _nativeEncoding def
+		} if
+		cleartomark
+	}
+	{
+		/Encoding load 256 array copy
+		modifyEncoding /Encoding exch def
+	} ifelse
+	FontName currentdict
+ end
+	definefont pop
+} def
+/tr
+{
+	_ax _ay 3 2 roll
+} def
+/trj
+{
+	_cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+	/Tx
+	{
+		dup
+		currentpoint 3 2 roll
+		tr _psf
+		newpath moveto
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		dup
+		currentpoint 3 2 roll
+		trj _pjsf
+		newpath moveto
+		trj _ctm _pjss
+	} ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+	/Tx
+	{
+		tr _psf
+	} ddef
+	/Tj
+	{
+		trj _pjsf
+	} ddef
+} def
+/e1
+{
+W F 
+} def
+/i0
+{
+	/Tx
+	{
+		tr sp
+	} ddef
+	/Tj
+	{
+		trj jsp
+	} ddef
+} def
+/i1
+{
+	W N
+} def
+/o0
+{
+	/Tx
+	{
+		tr sw rmoveto
+	} ddef
+	/Tj
+	{
+		trj swj rmoveto
+	} ddef
+} def
+/r0
+{
+	/Tx
+	{
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		trj _ctm _pjss
+	} ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+	pop _ctm currentmatrix pop
+} def
+/TO
+{
+	iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+	pop _tm astore pop _ctm setmatrix
+	_tDict begin
+	/W
+	{
+	} def
+	/h
+	{
+	} def
+} def
+/TP
+{
+ end
+	iTm 0 0 moveto
+} def
+/Tr
+{
+	_render 3 le
+	{
+		currentpoint newpath moveto
+	} if
+	dup 8 eq
+	{
+		pop 0
+	}
+	{
+		dup 9 eq
+		{
+			pop 1
+		} if
+	} ifelse
+	dup /_render exch ddef
+	_renderStart exch get load exec
+} def
+/iTm
+{
+	_ctm setmatrix _tm concat
+	_shift aload pop _lineorientation 1 eq { exch } if translate
+	_scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+	_tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+	_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+	_render -1 eq
+	{
+	}
+	{
+		_renderEnd _render get dup null ne
+		{
+			load exec
+		}
+		{
+			pop
+		} ifelse
+	} ifelse
+	/_render -1 ddef
+} def
+/Ta
+{
+	pop
+} def
+/Tf
+{
+	1 index type /nametype eq
+	{
+		dup 0.75 mul 1 index 0.25 mul neg
+	} if
+	/_fontDescent exch ddef
+	/_fontAscent exch ddef
+	/_fontSize exch ddef
+	/_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+	/_fontHeight _fontSize ddef
+	findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+	pop neg 0 exch
+	_leading astore pop
+} def
+/Tt
+{
+	pop
+} def
+/TW
+{
+	3 npop
+} def
+/Tw
+{
+	/_cx exch ddef
+} def
+/TC
+{
+	3 npop
+} def
+/Tc
+{
+	/_ax exch ddef
+} def
+/Ts
+{
+	0 exch
+	_shift astore pop
+	currentpoint
+	iTm
+	moveto
+} def
+/Ti
+{
+	3 npop
+} def
+/Tz
+{
+	count 1 eq { 100 } if
+	100 div exch 100 div exch
+	_scale astore pop
+	iTm
+} def
+/TA
+{
+	pop
+} def
+/Tq
+{
+	pop
+} def
+/Tg
+{
+	pop
+} def
+/TG
+{
+	pop
+} def
+/Tv
+{
+	/_lineorientation exch ddef
+} def
+/TV
+{
+	/_charorientation exch ddef
+} def
+/Ty
+{
+	dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+	pop
+} def
+/T~
+{
+	Tx
+} def
+/Th
+{
+	pop pop pop pop pop
+} def
+/TX
+{
+	pop
+} def
+/Tk
+{
+	_fontSize mul 1000 div
+	_lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+	rmoveto
+	pop
+} def
+/TK
+{
+	2 npop
+} def
+/T*
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	Td
+} def
+/T*-
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	exch neg exch neg
+	Td
+} def
+/T-
+{
+	_ax neg 0 rmoveto
+	_lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+	_ctm currentmatrix pop
+	_tm astore pop
+	iTm 0 0 moveto
+} def
+/TS
+{
+	currentfont 3 1 roll
+	/_Symbol_ findfont _fontSize scalefont setfont
+	
+	0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	setfont
+} def
+/Xb
+{
+	pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+	pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+	currentfont 5 1 roll
+	dup havefont
+		{
+		findfont _fontSize scalefont setfont
+		}
+		{
+		pop
+		exch
+		} ifelse
+	2 index 0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	pop	pop
+	setfont
+} def
+/T^	/X^	load def
+%%EndResource
+%%BeginResource: procset AGM_Gradient_Sep 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient_Sep 5 dict dup begin put
+/AGM_Gradient_Sep_private 100 dict def
+/initialize{
+	AGM_Gradient_Sep begin
+	AGM_Gradient_Sep_private begin
+	_compositeJob{
+		initializeSinglePassSeps
+	}{
+		initializeMultiPassSeps
+	}ifelse
+	initializeSeps
+	AGM_Gradient_private begin
+		/_fillSD newSpotDict def
+		/_rampSD newSpotDict def
+		/_nCustomColorSD nd
+ end
+	AGM_Gradient_Sep_private 
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient_Sep
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop	
+ end
+}def
+/terminate{
+	currentdict AGM_Gradient_Sep eq{
+	 end
+	}if
+}def
+AGM_Gradient_Sep_private begin
+/initializeSeps{
+	/currentoverprint { _of } def
+	_noImage not _level2PS not and{
+		/linealFill{
+			currentoverprint{
+				0 0 1 1 rectfill
+			}{
+				mySave
+				8 setImageParms
+				_color{
+					_nCustomColorSD begin
+						cyan magenta yellow black
+	
+						_spotColor{
+							spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put
+							spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put
+						}if
+				 end
+	
+					4{
+						makeByte8 4 1 roll
+					}repeat
+					true 4 _nCustomColorSD ncolorimage
+				}{
+					_nCustomColorSD/black get 1 exch sub makeByte8 
+					_nCustomColorSD bwImage
+				}ifelse
+				myRestore
+			}ifelse
+		}def
+	}if
+	/_whiteBytes 1 makeByte8 pt
+	 /knockOut{
+		_noImage _level2PS or currentoverprint or{
+			gsave
+			false setoverprint
+			1 setgray 
+			0 0 1 1 rectfill
+			grestore
+		}{
+			8 setImageParms _whiteBytes /_image load 5 execImage
+		}ifelse
+	}def
+	/newSpotDict{
+		11 dict dup begin
+			/nSpots 2 def
+			/spot1 7 dict def
+			/spot2 7 dict def
+	 end
+	}def
+	/initSpotData
+	{
+	 begin
+			/name nd
+			/tintImage nd
+			/tintValue nd
+			/spot_C nd
+			/spot_M nd
+			/spot_Y nd
+			/spot_K nd
+	 end
+	}def
+	/initSpotDict{
+	 begin
+			/cyanInk nd
+			/magentaInk nd
+			/yellowInk nd
+			/blackInk nd
+			/cyan nd
+			/magenta nd
+			/yellow nd
+			/black nd
+			spot1 initSpotData
+			spot2 initSpotData
+	 end
+	}def
+	/copySpotDict{
+		/_dst xp
+	 begin
+			cyanInk magentaInk yellowInk blackInk
+			cyan magenta yellow black
+			spot1 spot2
+	 end
+		_dst begin
+			/spot1 spot1 maxlength dict def
+			/spot2 spot2 maxlength dict def
+			spot2 copy pop
+			spot1 copy pop
+			/black xd
+			/yellow xd
+			/magenta xd
+			/cyan xd
+			/blackInk xd
+			/yellowInk xd
+			/magentaInk xd
+			/cyanInk xd
+	 end
+	}def
+	/setCustomColor
+	{
+		1 index /Black eq{
+			6 1 roll 5 npop
+			1 exch sub
+			setgray
+		}{
+			6 1 roll _ccAry1 astore exch
+			dup null eq{
+				pop 0
+			}if
+			setcustomcolor
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		
+		_colorStyle 0 eq{
+			0 0 0
+			4 -1 roll
+			1 exch sub
+			_spotColor{
+				/_colorStyle 3 pt
+				/Black
+				1 index
+				1 exch sub
+			}if
+		}if
+		_colorStyle 2 eq{
+			3 npop
+		}if
+		_rampSD _fillSD copySpotDict
+		
+		_colorStyle 4 eq{ 
+			pop
+			9 2 roll 3 npop 6 -2 roll
+		} if
+		
+		_colorStyle 3 eq _colorStyle 4 eq or{ 	
+				
+			_fillSD begin
+				/_spot1 spot1 pt
+				/_spot2 spot2 pt
+		 end
+			
+			exch dup _spot1/name get eq{
+				_spot1 _spot2
+			}{
+				_spot2 _spot1
+			}ifelse
+		 begin
+			 begin
+					/name xd
+					1 exch sub /tintValue xd
+					4{
+						tintValue mul 4 1 roll
+					}repeat
+					_spotColor not{
+						/tintValue null def
+					}if
+			 end
+				/tintValue 0 def
+		 end
+		}if
+		_fillSD nsetcustomcolor
+	}def
+	/renderCMYK{
+		spot1/name get null eq
+		spot2/name get null eq and
+		dup not{
+			pop
+			spot1 spotConverted
+		}if
+		dup not{
+			pop
+			spot2 spotConverted
+		}if
+	}def
+	/currentInk{
+		true
+		_inRipSep{
+			currentcolorspace 0 get
+			dup /DeviceGray eq
+			1 index /DeviceCMYK eq or{
+				pop
+				currentcmykcolor add add add 0 eq{
+					pop false
+				}if
+			}{
+				/Separation eq{
+					currentcolor 0 eq{
+						pop false
+					}if
+				}if
+			}ifelse
+		}{
+			currentgray 1 eq{
+				pop false
+			}if
+		}ifelse
+	}def
+	/currentInkN{
+	
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		{
+			currentInk
+		}{
+			gsave
+			_spot1 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			_spot2 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			grestore
+			
+			or
+		} ifelse
+	}def
+	/fill_ /fill load def
+	/fillOvp{
+		currentoverprint{
+			_inRipSep{
+				currentcolorspace 0 get
+				dup /DeviceGray eq
+				1 index /DeviceCMYK eq or{
+					pop
+					currentcmykcolor add add add 0 eq{
+						newpath
+					}if
+				}{
+					/Separation eq{
+						currentcolor 0 eq{
+							newpath
+						}if
+					}if
+				}ifelse
+			}{
+				currentgray 1 eq{
+					newpath
+				}if
+			}ifelse
+		}if
+		fill_
+	}def
+	/fill{
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		
+		{
+			fillOvp
+		}{
+			_spot1 begin
+				gsave
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+				}{
+					1 setgray
+				}ifelse
+				fillOvp 
+				grestore
+		 end
+			_spot2 begin
+				name null ne{
+					gsave
+					true setoverprint
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					fillOvp
+					grestore
+				}if
+		 end
+			newpath
+		}ifelse
+	}def
+	/expandSpot{
+		_spotColor{
+			/_len xp
+			_rampSD begin
+				spot1 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+				spot2 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+		 end
+		}{
+			pop
+		}ifelse
+	}def
+	/rampImage{
+		currentoverprint{
+			rectImage
+		}{
+			_enabledSmoothShade{
+				fillRamp
+			}{
+				_color{
+					_rampSD begin
+						/cyanInk _cyanData 0 ne def
+						/magentaInk _magentaData 0 ne def
+						/yellowInk _yellowData 0 ne def
+						/blackInk _blackData 0 ne def
+				 end
+					
+					_nSamples setImageParms
+					_nSamples expandSpot
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 _rampSD ncolorimage
+				}{
+					_rampSD begin
+						/cyanInk false def
+						/magentaInk false def
+						/yellowInk false def
+						/blackInk true def
+				 end
+					_nSamples setImageParms 
+					_blackData _rampSD bwImage
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/nsetcustomcolor where{
+		pop
+	}{
+		/nsetcustomcolor
+		{
+			/_nCustomColorSD xp
+			_nCustomColorSD begin
+				4 copy
+				/black xd
+				/yellow xd
+				/magenta xd
+				/cyan xd
+				4 copy
+				0 ne /blackInk xd
+				0 ne /yellowInk xd
+				0 ne /magentaInk xd
+				0 ne /cyanInk xd
+		 end
+			setcmykcolor
+		}def
+	}ifelse
+	/nsetcustomcolorend where{
+		pop
+	}{
+		/nsetcustomcolorend
+		{
+			/_nCustomColorSD null pt
+		}def
+	}ifelse
+}def
+/initializeSinglePassSeps{
+	/_decodeNorm	[0 1] pt
+	/_decodeInvert 	[1 0] pt
+	/spotConverted
+	{
+	 begin
+			name null eq{
+				false
+			}{
+				tintValue null eq tintImage null eq and{
+					true
+				}{
+					_inDistiller{
+						false
+					}{
+						false
+						currentpagedevice/SeparationColorNames get{name eq or}forall
+						not
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/dictImage
+	{
+		20 dict dup begin
+			/Dict xd
+			/Decode xd
+			/DataSource xd
+			/ImageMatrix xd
+			/BitsPerComponent xd
+			/Height xd
+			/Width xd
+			/ImageType 1 def
+			Dict
+	 end
+		/_image load 1 execImage
+	}def
+	/bwImage{
+	 begin
+			gsave
+			currentoverprint{
+				blackInk{
+					[/Separation /Black /DeviceGray{}] setcolorspace
+					_decodeInvert dictImage
+				}{
+					5 npop
+				}ifelse
+			}{
+				/DeviceGray setcolorspace
+				_decodeNorm dictImage
+			}ifelse
+			grestore
+	 end
+	}def
+	/ncolorimage where{
+		pop
+	}{
+		/ncolorimage{
+		 begin
+				renderCMYK{
+					cyanInk 
+					magentaInk and
+					yellowInk and
+					blackInk and
+					not
+					currentoverprint 
+					and{	
+						pop pop
+						gsave
+						cyanInk{
+							8 copy
+							[/Separation /Cyan /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}if
+						magentaInk{
+							8 copy
+							[/Separation /Magenta /DeviceGray{}] setcolorspace
+							4 -1 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						yellowInk{
+							8 copy
+							[/Separation /Yellow /DeviceGray{}] setcolorspace
+							4 -2 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						blackInk{
+							4 -3 roll
+							[/Separation /Black /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}{
+							8 npop
+						}ifelse
+						grestore
+					}{
+						/_colorimage load 10 execImage
+					}ifelse
+				}{
+					6 npop
+					gsave
+					spot1 begin
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							4 copy
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							1 setgray fill
+						}ifelse
+				 end
+					spot2 begin
+						true setoverprint
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							4 npop
+							1 setgray fill
+						}ifelse
+				 end
+					grestore
+				}ifelse
+		 end
+		}def
+	}ifelse
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_renderCMYK not{
+			_rampSD begin
+				[/DeviceN 
+					[
+					spot1 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					spot2 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					]
+					_inDistiller {
+						/DeviceCMYK [
+							spot1 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 1
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							spot2 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 2
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							5 1 roll 6 -2 roll add
+							dup 1 eq {
+								pop
+								8 /index cvx 1 /exch cvx /sub cvx
+								9 1 /roll cvx
+							}{
+								2 eq {
+									8 /index cvx 1 /exch cvx /sub cvx
+									10 1 /roll cvx
+								}if
+							}ifelse
+							4 1 /roll cvx 5 -2 /roll cvx
+							8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx
+							3 1 /roll cvx 4 -2 /roll cvx
+							7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx
+							2 1 /roll cvx 3 -2 /roll cvx
+							6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx
+							5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx
+							6 -2 /roll cvx /pop cvx /pop cvx
+						] cvx bind
+					}{
+						/DeviceCMYK {}
+					}ifelse
+				] setcolorspace
+		 end
+			/_nColorSpace currentcolorspace pt
+		}if
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C0_Space _nColorSpace pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C1_Space _nColorSpace pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/initializeMultiPassSeps{
+	/invertXfer{
+		[
+		{
+			1 exch sub
+		}/exec load systemdict /currenttransfer get exec /exec load
+		] cvx systemdict /settransfer get exec
+	}def
+	/ccThrough{
+		gsave
+		1 setCustomColor
+		currentcmykcolor
+		grestore
+		add add add 0 ne
+	}def
+	/spotConverted
+	{
+	 begin
+			_isCMYKSep not{
+				false
+			}{
+				name null eq{
+					false
+				}{
+					tintValue null eq tintImage null eq and{
+						true
+					}{
+						spot_C spot_M spot_Y spot_K name ccThrough
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/spotChannel
+	{
+		_isCMYKSep{
+			pop false
+		}{
+			/_spotDict xp
+				_spotDict/name get null eq{
+					false
+				}{
+					_spotDict/spot_C get
+					_spotDict/spot_M get
+					_spotDict/spot_Y get
+					_spotDict/spot_K get
+					_spotDict/name get
+					ccThrough 
+				}ifelse
+		}ifelse
+	}def
+	/getChannelData
+	{
+		_isCMYKSep dup{
+			pop renderCMYK
+		}if
+		{
+			_blackPlate{
+				4 1 roll 3 npop blackInk
+			}{
+				_yellowPlate{
+					4 2 roll 3 npop yellowInk
+				}{
+					_magentaPlate{
+						4 3 roll 3 npop magentaInk
+					}{
+						3 npop cyanInk
+					}ifelse
+				}ifelse
+			}ifelse
+			{
+				true /nonZeroData
+			}{
+				true /zeroData
+			}ifelse
+		}{
+			4 npop
+			spot1/name get null ne 
+			spot1 spotChannel and{
+				spot1/tintImage get dup null ne{
+					false /nonZeroData
+				}{
+					pop false /noData
+				}ifelse
+			}{
+				spot2/name get null ne 
+				spot2 spotChannel and{
+					spot2/tintImage get dup null ne{
+						false /nonZeroData
+					}{
+						pop false /noData
+					}ifelse
+				}{
+					false /noData
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/renderChannelData
+	{
+		/_tmp xp
+		_tmp /nonZeroData ne currentoverprint and{
+			pop
+			_tmp /zeroData eq{pop}if
+			4 npop
+		}{
+			_tmp /nonZeroData eq{
+				{
+					invertXfer
+				}if
+					systemdict/image
+				get 5 execImage
+			}{
+				pop
+				_tmp /zeroData eq{pop}if
+				4 npop
+				knockOut
+			}ifelse
+		}ifelse
+	}def
+	/bwImage{
+	 begin
+			gsave
+			dup dup dup
+			getChannelData
+			exch pop false exch
+			renderChannelData
+			grestore
+	 end
+	}def
+	/ncolorimage{
+	 begin
+			pop pop
+			gsave
+			spot2/name get null ne spot2 spotChannel and{
+				true setoverprint
+			}if
+			getChannelData 
+			renderChannelData
+			grestore
+	 end
+	}def
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C0_Space /DeviceGray pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C1_Space /DeviceGray pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset AGM_Gradient 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient 20 dict dup begin put
+/AGM_Gradient_private 201 dict def
+/initialize
+{
+	AGM_Gradient begin
+	AGM_Gradient_private begin
+	initializeVars
+	
+	/bd systemdict/mark get def
+	/ed
+		_level2PS 
+		{
+			(>>)
+		}{
+			(counttomark 2 idiv dup dict begin {def} repeat pop currentdict end)
+		} ifelse
+	cvx def
+	
+	_level2PS{
+		initializeLev2
+	}{
+		initializeLev1
+	}ifelse
+	
+	queryDevice
+	
+	initializeRectFill
+	initializeShading
+	initializeOps
+	_producingSeps{
+		AGM_Gradient_Sep/initialize get exec
+	}{
+		initializeComposite
+	}ifelse
+	_illustrator{
+		/f{}def
+		/F{}def
+		/s{}def
+		/S{}def
+		/b{}def
+		/B{}def
+	}if
+	/image where{
+		/image get /_image xd
+	}if
+	/colorimage where{
+		/colorimage get /_colorimage xd
+	}if
+	AGM_Gradient_private
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop
+ end
+}def
+/initializeAI
+{
+	pop pop 
+	AGM_Gradient/AGM_Gradient_private get /_illustrator true put
+	AGM_Gradient/initialize get exec
+		AGM_Gradient begin
+}def
+/unload{
+	systemdict/languagelevel known{
+		systemdict/languagelevel get 2 ge{
+			userdict/AGM_Gradient_Sep 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+			userdict/AGM_Gradient 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+		}if
+	}if
+}def
+/terminate{
+	currentdict AGM_Gradient eq{
+	 end
+	}if
+}def
+ 
+AGM_Gradient_private begin
+/initializeVars{
+	/_d255 256 array def
+	0 1 255{
+		_d255 exch dup 255 div put
+	}bind for
+	/_d255- 256 array def
+	0 1 255{
+		_d255- exch 1 _d255 2 index get sub put
+	}bind for
+	/_sSave nd
+	/_dUserSpace matrix defaultmatrix def
+	/_bUMatrix matrix def
+	/_imageMatrix matrix def
+	/_saveMatrix matrix def
+	/_xm matrix def
+	/_ccAry1 5 array def
+	/_bbox 4 array pt
+	/_level2PS 
+		systemdict/languagelevel known dup{
+			pop systemdict/languagelevel get 2 ge
+		}if
+	def
+	/_level3PS
+		_level2PS systemdict/shfill known and
+	def
+	currentdict /_illustrator known not{
+		/_illustrator false def
+	}if
+	
+}def
+/initializeOps
+{
+	AGM_Gradient begin
+	currentdict/Bc known not{
+		/Bc{
+		
+			_renderFlag 2 eq _enabledSmoothShade or{
+				6 npop
+			}{
+				pushBSpace
+				_rampIndex 0 eq{
+					pop pop
+					setCStop
+				}if
+				linealFill
+				popBSpace
+			}ifelse
+		
+		}def
+	}if
+	
+	currentdict/Bg known not{
+		/Bg{
+			10 npop
+			/_gradName xp
+			/_renderFlag xp
+			/_enabledSmoothShade false pt
+		
+			_renderFlag 2 ne{
+		
+				_illustrator{
+					_of setoverprint
+				}if
+		
+				/_enabledSmoothShade 
+					_level3PS{
+						_usingSmoothShade
+						_producingSeps not
+						currentoverprint not or and
+						_noImage not and
+					}{
+						false
+					}ifelse
+				pt
+				
+				_illustrator _eo and _renderFlag 3 eq or{
+					eoclip
+				}{
+					clip
+				}ifelse
+		
+				_gradNames _gradName 2 copy known{
+					get
+					mark exch aload pop
+					/_gradType xp
+					1 sub dup /_rampIndex xp
+					/_maxRampIndex xp
+					mark exch aload pop
+					0 0
+				}if
+				pop pop
+				getRampData
+			}{
+				mark mark
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bm known not{
+		/Bm{
+			_renderFlag 2 ne{
+				_gradType 0 eq{
+					linealRamp
+				}{
+					radialGrad
+				}ifelse
+			}{
+				6 npop
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bh known not{
+		/Bh{
+			2 npop
+			/_yHi xp
+			/_xHi xp
+			/_radHilite _xHi 0 ne _yHi 0 ne or pt
+		}def
+	}if
+	
+	currentdict/Bn known not{
+		/Bn{
+			AGM_Gradient_private begin
+				dict /_gradNames xp
+		 end
+		}def
+	}if
+	
+	currentdict/Bd known not{
+		/Bd{
+			AGM_Gradient begin
+			AGM_Gradient_private begin
+				/_nColorsBd xp
+				/_gradType xp
+				/_gradName xp
+		}def
+	}if
+	
+	currentdict/BD known not{
+		/BD{
+				currentdict/_gradNames known not{
+					/_gradNames 20 dict def
+				}if
+				] _nColorsBd _gradType
+				]  _gradName exch /_gradNames xput
+		 end
+		 end
+		}def
+	}if
+	
+	currentdict/Bb known not{
+		/Bb{
+		
+			AGM_Gradient/AGM_Gradient_private get /_illustrator get not{
+				AGM_Gradient begin
+			}if
+			AGM_Gradient_private begin
+			_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin
+			}if
+			mySave
+		}def
+	}if
+	
+	currentdict/BB known not{
+		/BB{
+		
+			/_tmp xp
+			cleartomark cleartomark
+		
+			_tmp dup
+			_renderFlag
+		
+			myRestore
+		
+			_producingSeps{
+			 end
+			}if
+		
+			_illustrator dup
+		 end
+			not {
+			 end
+			}if
+		
+			{
+				2 ne exch 0 gt and{
+					2 eq{
+						s
+					}{
+						S
+					}ifelse
+				}{
+					pop newpath
+				}ifelse
+			}{
+				pop newpath
+			}ifelse
+		
+		
+		}def
+	}if
+	
+	currentdict/Xm known not{
+		/Xm{
+			_xm astore pop
+		}def
+	}if
+	
+ end
+}def
+/queryDevice{
+	/_inDistiller
+		systemdict /currentdistillerparams known
+	def
+	/_inRipSep
+		_level2PS{
+			currentpagedevice/Separations 2 copy known{
+				get
+			}{
+				pop pop false
+			}ifelse
+		}{
+			false
+		}ifelse
+		_inDistiller or
+	def
+	/_noImage /lv1Fix where{
+		pop lv1Fix
+	}{
+		false
+	}ifelse
+	def
+	/_useShells where{
+		/_useShells get /_usingShells xp
+	}{
+		/_usingShells false def
+	}ifelse
+	
+	/_useSmoothShade where{
+		pop
+	}{
+		/_useSmoothShade false def 
+	}ifelse
+	/_forceToCMYK where{
+		pop
+	}{
+		/_forceToCMYK false def 
+	}ifelse
+	/_cyanPlate 1 0 0 0 testCMYKColorThrough def
+	/_magentaPlate 0 1 0 0 testCMYKColorThrough def
+	/_yellowPlate 0 0 1 0 testCMYKColorThrough def
+	/_blackPlate 0 0 0 1 testCMYKColorThrough def
+	/_compositeJob
+		_cyanPlate _magentaPlate and _yellowPlate and _blackPlate and
+	def
+	/_isCMYKSep
+		_cyanPlate _magentaPlate or _yellowPlate or _blackPlate or
+	def
+	/_compositeSpotDevice where{
+		pop
+	}{
+		/_compositeSpotDevice _compositeJob not _inRipSep or{
+			1
+		}{
+			0
+		}ifelse
+		def
+	}ifelse
+	/_producingSeps _compositeSpotDevice 0 ne def
+	/_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
+	/_dpiThreshold where{
+		pop
+	}{
+		/_dpiThreshold 600 def
+	}ifelse
+	/_screenFreqThreshold where{
+		pop
+	}{
+		/_screenFreqThreshold 150 def
+	}ifelse
+	/_contoneDevice where{
+		pop
+	}{
+		/_contoneDevice false def
+	}ifelse
+	/_subSampleOK 
+		_deviceDPI _dpiThreshold le 
+		currentScreenFreq _screenFreqThreshold le and 
+		_contoneDevice not and 
+	def
+}def
+/initializeRectFill{
+	/rectfill where dup{
+		exch pop not _producingSeps or
+	}{
+		not
+	}ifelse
+	{
+		/rectfill{
+			gsave
+			newpath
+			4 2 roll moveto
+			1 index 0 rlineto
+			0 1 index rlineto
+			1 index neg 0 rlineto
+			pop pop
+			closepath
+			fill
+			grestore
+		}def
+	}if
+}def
+/initializeLev1{
+	/currentScreenFreq{
+		currentscreen pop pop
+	}def
+	/_byte 1 string def
+	/colorimage where{
+		pop
+	}{
+		/colorimage{
+			pop pop
+			/_blackTmp xp
+			/_yellowTmp xp
+			/_magentaTmp xp
+			/_cyanTmp xp
+			/_cnt 0 pt
+			[
+			_byte dup 0
+			_cyanTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx
+			_magentaTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx
+			_yellowTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx
+			_blackTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx
+			/add cvx /add cvx /add cvx 1 /exch cvx /sub cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/dup cvx 1 /gt cvx{
+				pop 1
+			}/if cvx
+			255 /mul cvx /cvi cvx
+			256 /mod cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/put cvx
+			/_cnt dup cvx 1 /add cvx /pt cvx
+			] cvx
+			bind
+			/_image load 5 execImage
+		}def
+	}ifelse
+}def
+/initializeLev2{
+	/level2ScreenFreq{
+	 begin
+		60
+		HalftoneType 1 eq{
+			pop Frequency
+		}if
+		HalftoneType 2 eq{
+			pop GrayFrequency
+		}if
+		HalftoneType 5 eq{
+			pop Default level2ScreenFreq
+		}if
+		 end
+	}def
+	/currentScreenFreq{
+		currenthalftone level2ScreenFreq
+	}def
+}def
+/initializeShading{
+	_useSmoothShade _level3PS and{
+		/_usingSmoothShade true pt
+		initializeLev3_Ops
+	}{
+		/_usingSmoothShade false pt
+	}ifelse
+}def
+/initializeLev3_Ops
+{
+	/initShFill{
+		/_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt
+		/_rampFuncsArray _maxRampIndex array pt
+		/_boundsArray _maxRampIndex 1 sub array pt
+		/_encodeArray _maxRampIndex 2 mul array pt
+		/_beginCoord _rampPoint pt
+		/_colorSpace null pt
+		/_firstFill _rampIndex _maxRampIndex eq pt
+		/_lastFill false pt
+	}def
+	/linealShFill{
+		popBSpace
+		_xm aload pop pushBSpace
+		
+		/_size _index 1 add pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray 0 _size getinterval pt
+			/_boundsArray _boundsArray 0 _size 1 sub getinterval pt
+			/_encodeArray _encodeArray 0 _size 2 mul getinterval pt
+		}if
+		
+		bd
+			/ShadingType 2
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_firstFill _lastFill]
+			/Domain [0 1] 
+			/Coords [_beginCoord 0 _endCoord 0]
+		ed
+		shfill
+	}def
+	
+	/radialShFill{
+		/_size _maxRampIndex _index sub pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray _index _size getinterval pt
+			/_boundsArray _boundsArray _index _size 1 sub getinterval pt
+			/_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt
+		}if
+		
+		/_rampLen _beginCoord _endCoord sub pt
+		bd
+			/ShadingType 3
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_lastFill _firstFill]
+			/Domain [0 1] 
+			/Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] 
+		ed
+		shfill
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+	}def
+	
+	%
+	/sampFunc{
+		/_tmp exch pt
+		bd
+			_tmp length 1 eq {
+				_tmp 0 get
+				/_tmp 2 string pt
+				dup _tmp 0 3 -1 roll put
+				_tmp 1 3 -1 roll put
+			}if
+			/FunctionType 0
+			/Order 1
+			/Size [_tmp length]
+			/Domain [0 1]
+			/BitsPerSample 8
+			/DataSource _tmp
+			/Range [0 1]
+		ed
+	}def
+	
+	/fillRamp{
+	
+	
+		/_invert _midPoint 0.5 lt pt
+		_rampIndex _maxRampIndex eq {
+			initShFill
+		}if
+		
+		getRampColorSpace
+		
+		_colorSpace null eq{
+			/_colorSpace _rampColorSpace pt
+		}{
+			_colorSpace _rampColorSpace ne _rgbInCMYK or{
+				/_index _index 1 
+				_gradType 0 eq{
+					sub pt
+					linealShFill
+				}{
+					add pt
+					radialShFill
+				}ifelse
+				initShFill
+				/_colorSpace _rampColorSpace pt
+			} if
+		}ifelse
+		/_endCoord _endPoint pt	
+		/_rgbInCMYK false pt
+		_producingSeps _forceToCMYK or _rgbRamp and {
+			_spotColor{
+				_renderCMYK
+			}{
+				_isCMYKSep
+			}ifelse
+		}{
+			false
+		}ifelse
+		{
+			_compositeJob{
+				/_rgbInCMYK true pt
+				_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+				dup length string copy /_kData exch pt
+				dup length string copy /_yData exch pt
+				dup length string copy /_mData exch pt
+				dup length string copy /_cData exch pt
+			}{
+				_rampFuncsArray _index
+					_cyanPlate{_cyanData}if
+						_magentaPlate{_magentaData}if
+						_yellowPlate{_yellowData}if
+						_blackPlate{_blackData}if
+					_nSamples expandOne
+					sampFunc
+					dup begin /Decode [1 0] def end
+				put
+				/_invert false pt
+			}ifelse
+		}{
+			_rampFuncsArray _index
+				bd
+					/FunctionType 2
+					/Domain [0 1]
+					/N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div
+					_gradType 0 eq{
+						_invert{/C1}{/C0}ifelse _C0
+						_invert{/C0}{/C1}ifelse _C1
+					}{
+						_invert{/C0}{/C1}ifelse _C1
+						_invert{/C1}{/C0}ifelse _C0
+					}ifelse
+				ed
+			put
+		}ifelse
+		
+		_rampIndex 1 ne{
+			_boundsArray _index _gradType 1 eq{1 sub}if _endCoord put
+		} if
+		
+		0 1 _invert {exch}if
+		_encodeArray _index 2 mul 1 add 3 -1 roll put
+		_encodeArray _index 2 mul 3 -1 roll put
+		_rampIndex 1 eq {
+			/_lastFill true pt
+			_gradType 0 eq{
+				linealShFill
+			}{
+				radialShFill
+			}ifelse
+		}if
+		/_index _index 1 
+		_gradType 0 eq{
+			add pt
+		}{
+			sub pt
+		}ifelse
+	}def
+}def
+/initializeComposite{
+	/bwImage{
+		pop /_image load 5 execImage 
+	}def
+	/rampImage{
+		_enabledSmoothShade{
+			fillRamp
+		}{
+			_color{
+				_nSamples setImageParms
+	
+				
+				_rgbRamp _forceToCMYK not and{
+					_redData _greenData _blueData _nSamples 3 expandColor
+					true 3 null ncolorimage
+				}{
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 null ncolorimage
+				}ifelse
+			}{
+				_nSamples setImageParms _blackData null bwImage
+			}ifelse
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		_colorStyle 0 eq{
+			1 exch sub
+			0 0 0
+			4 -1 roll
+		}if
+		
+		_colorStyle 2 eq{
+			_forceToCMYK{
+				3 npop setcmykcolor
+			}{
+				setrgbcolor 4 npop
+			}ifelse
+		}if
+		
+		_colorStyle 3 eq{
+			1 exch sub /_tmp xp
+			pop
+			4{
+				_tmp mul 4 1 roll
+			}repeat
+		}if
+		
+		_colorStyle 4 eq{
+			_forceToCMYK{
+				6 npop setcmykcolor
+			}{
+				3 -1 roll pop pop
+				1 exch sub /_tmp xp
+				3{
+					1 exch sub _tmp mul 1 exch sub 3 1 roll
+				}repeat
+				setrgbcolor 
+				4 npop
+			}ifelse
+		}if
+		_colorStyle 2 ne _colorStyle 4 ne and{
+			null nsetcustomcolor
+		}if
+	}def
+	/nsetcustomcolor
+	{
+		pop setcmykcolor
+	}def
+	/nsetcustomcolorend
+	{
+	}def
+	/ncolorimage{
+		pop 
+		/_colorimage load 10 execImage
+	}def
+	_noImage not _level2PS not and{
+		/linealFill{
+			8 setImageParms
+			_color{
+				currentcmykcolor
+				4{
+					makeByte8 4 1 roll
+				}repeat
+				true 4 null ncolorimage
+			}{
+				currentgray makeByte8 null bwImage
+			}ifelse
+		}def
+	}if
+	/getRampColorSpace{
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		/_C0 [currentcolor] pt
+		/_C0_Space currentcolorspace pt
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		/_C1 [currentcolor] pt
+		/_C1_Space currentcolorspace pt
+		
+		/_rampColorSpace _C0_Space pt
+		
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/npop{
+	{pop}repeat
+}def
+/xd{
+	exch def
+}def
+/nd{
+	null def
+}def
+/pt{
+	AGM_Gradient_private 3 1 roll put
+}def
+/xp{
+	exch pt
+}def
+/xput{
+	dup load dup length exch maxlength eq{
+		dup dup load dup
+		length 2 mul dict copy def
+	}if
+	load begin
+		def
+  end
+}def
+/mySave{
+	save /_sSave xp
+}def
+/myRestore{
+	_sSave type /savetype eq{
+		_sSave restore
+	}if
+}def
+/gMark{
+	counttomark 2 add -1 roll
+}def
+/execImage{
+	/_tmp xp
+	{
+		exec
+	}stopped{
+		$error /errorname get /undefinedresult ne{
+			stop
+		}{
+			_tmp npop
+		}ifelse
+	}if
+}def
+/pushBSpace{
+	newpath gsave
+	_bUMatrix astore concat 
+}def
+/popBSpace{
+	grestore
+}def
+/makeByte8{
+	/_tmp 0 pt
+	255 mul cvi
+	8 string 8{
+		dup _tmp 3 index put 
+		/_tmp _tmp 1 add pt
+	}repeat
+	exch pop
+}def
+/setImageParms{
+	1 8 2 index 0 0 1 0 0 _imageMatrix astore
+}def
+/linealFill{
+	0 0 1 1 rectfill
+}def
+/testCMYKColorThrough{
+	gsave
+	setcmykcolor currentcmykcolor
+	grestore
+	add add add 0 ne
+}def
+/expandOne	{
+	/_tmp xp
+	dup type /stringtype ne{
+		_tmp string
+		exch
+		dup 0 ne{
+			255 mul cvi
+			0 1 _tmp 1 sub{
+				3 copy
+				exch put pop
+			}for
+		}if
+		pop
+	}if
+}def
+/expandColor{
+	/_channels xp
+	/_len xp
+	_channels{
+		_len expandOne _channels 1 roll
+	}repeat
+}def
+/blendColor{
+	
+	_color{
+		_rgbRamp _producingSeps not and _forceToCMYK not and{
+			_redData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_greenData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blueData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			/setrgbcolor cvx
+		}{
+			_cyanData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_magentaData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_yellowData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blackData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+	
+			_spotColor{
+				_rampSD begin
+					/_rampSD cvx /begin cvx
+	
+					spot1 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot1 cvx /tintValue 3 -1 /roll cvx /put cvx
+	
+					spot2 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot2 cvx /tintValue 3 -1 /roll cvx /put cvx
+					/end cvx
+			 end
+				/_rampSD cvx
+				/nsetcustomcolor cvx
+			}{
+				/setcmykcolor cvx
+			}ifelse
+		}ifelse
+	}{
+		_blackData dup type /stringtype eq{
+			/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+		}if
+		
+		_enabledSmoothShade{
+			1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx
+		}{
+			 /setgray cvx
+		}ifelse
+	}ifelse
+}def
+/useRectImage{
+	_subSampleOK _enabledSmoothShade not and{
+		{
+			mark
+			0 1 dtransform atan cvi 90 mod 0 eq
+			1 0 dtransform atan cvi 90 mod 0 eq
+		} stopped
+		{
+			cleartomark
+			false
+		}
+		{
+			and exch pop
+		} ifelse
+	}{
+		false
+	}ifelse
+}def
+/linealImage{
+	_noImage{
+		rectImage
+	}{
+		_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get
+				/rampImage get exec
+		}{
+			useRectImage{
+				rectImage
+			}{
+				rampImage
+			}ifelse
+		}ifelse
+	}ifelse
+}def
+/linealRamp{
+	pushBSpace
+	_ramp{
+		linealImage
+	}{
+		linealFill
+	}ifelse
+	popBSpace
+	/_rampIndex _rampIndex 1 sub pt
+	_rampIndex 0 gt{
+		getRampData
+	}if
+}def
+/radialGrad{
+	/_usingShells currentoverprint _producingSeps and _usingShells or pt
+	/_firstShell true pt
+	_enabledSmoothShade not{
+		currentoverprint _producingSeps and{
+			
+			newpath
+			clippath pathbbox 
+			1 add 4 1 roll
+			1 add 4 1 roll
+			1 sub 4 1 roll
+			1 sub 4 1 roll
+			_bbox astore pop
+			
+			newpath
+			_bbox 0 get _bbox 1 get moveto
+			_bbox 2 get _bbox 1 get lineto
+			_bbox 2 get _bbox 3 get lineto
+			_bbox 0 get _bbox 3 get lineto
+			closepath
+			6 copy
+			gsave _bUMatrix astore concat
+			1 0 moveto 0 0 1 0 360 arc closepath
+			eoclip fill
+			popBSpace
+		}{
+			fill
+		}ifelse
+	}if
+	pushBSpace
+	
+	_radHilite{
+		_xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp
+		_rampPoint 1 lt{
+			1 _rampPoint sub dup _xHi mul exch _yHi mul translate
+		}if
+	}if
+	_rampIndex{
+		radialRamp
+		/_rampIndex _rampIndex 1 sub pt
+		_rampIndex 0 gt{
+			getRampData
+		}if
+	}repeat
+	
+	popBSpace
+	
+}def
+/getNSamples{
+	0 exch
+	{
+		dup type /stringtype eq{
+			length exch pop exit
+		}if
+		pop
+	}forall
+	dup 0 eq{
+		pop 1
+	}if
+}def
+/getRampData{
+	/_rampType gMark pt
+	/_color _rampType 0 gt pt
+	/_ccRGB _rampType 5 eq _rampType 6 eq or pt
+	/_rgbRamp _rampType 4 eq _ccRGB or pt
+	/_ccProcess _rampType 2 eq _rampType 3 eq or pt
+	_producingSeps{
+		_rampSD initSpotDict
+		/_spotColor _ccProcess _ccRGB or pt
+	}{
+		/_spotColor false pt
+	}ifelse
+	/_ramp true pt
+	100 div /_rampPoint xp
+	100 div /_midPoint xp
+	
+	dup /_colorStyle xp
+	_colorStyle 0 eq{ 
+		2
+	}{
+		_colorStyle 1 eq{ 
+			5
+		}{
+			_colorStyle 2 eq{
+				8
+			}{
+				_colorStyle 3 eq{
+					_producingSeps{
+						_rampSD /spot1 get begin
+							/name 3 index def
+							/spot_K 4 index def
+							/spot_Y 5 index def
+							/spot_M 6 index def
+							/spot_C 7 index def
+					 end
+					}if
+					7
+				}{
+					_producingSeps{
+						_rampSD/spot1 get begin
+							/name 4 index def
+							/spot_K 8 index def
+							/spot_Y 9 index def
+							/spot_M 10 index def
+							/spot_C 11 index def
+					 end
+					}if
+					11
+				} ifelse
+			}ifelse
+		}ifelse
+	}ifelse
+	/_tmp xp
+	_tmp index 100 div /_endPoint xp
+	
+	_gradType 1 eq{
+		_tmp 1 add index 100 div /_midPoint xp
+	}if
+	
+	_producingSeps{
+		_tmp 2 add index /_nextColorStyle xp
+		_nextColorStyle 3 eq{
+			/_tmp _tmp 4 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 2 add index def
+					/spot_Y _tmp 3 add index def
+					/spot_M _tmp 4 add index def
+					/spot_C _tmp 5 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+		_nextColorStyle 4 eq{
+			/_tmp _tmp 5 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 5 add index def
+					/spot_Y _tmp 6 add index def
+					/spot_M _tmp 7 add index def
+					/spot_C _tmp 8 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+	}if
+	_rampType 3 eq _rampType 6 eq or{
+		/_tint2Data gMark pt
+	}if
+	_ccProcess _ccRGB or{
+		/_tint1Data gMark pt
+	}if
+	_rgbRamp{
+		/_blueData gMark pt
+		/_greenData gMark pt
+		/_redData gMark pt
+	}if
+	
+	_producingSeps{
+		_ccProcess _ccRGB or{
+			_rampType 3 eq _rampType 6 eq or{
+				_rampSD /spot2 get begin
+					/tintImage _gradType 0 eq{
+						_tint2Data
+					}{
+						_tint1Data
+					}ifelse
+					def
+					name null eq{
+						/name /Black def
+					}if
+			 end
+			}if
+			_rampSD /spot1 get begin
+				/tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{
+					_tint1Data
+				}{
+					_tint2Data
+				}ifelse
+				def
+				_rampType 2 eq _rampType 5 eq or{
+					name null eq{
+						/name _rampSD/spot2 get /name get def
+						/spot_C _rampSD/spot2 get /spot_C get def
+						/spot_M _rampSD/spot2 get /spot_M get def
+						/spot_Y _rampSD/spot2 get /spot_Y get def
+						/spot_K _rampSD/spot2 get /spot_K get def
+						_rampSD/spot2 get /name null put
+					}if
+				}{
+					name null eq{
+						/name /Black def
+					}if
+				}ifelse
+		 end
+		}if
+	}if
+	/_blackData gMark pt
+	_rampType 0 gt{
+		counttomark 4 add -3 roll
+		/_yellowData xp
+		/_magentaData xp
+		/_cyanData xp
+	}if
+	_ramp{
+		/_nSamples
+			[
+			_rampType 0 eq {_blackData}if
+			_rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if
+			_rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if
+			_rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if
+			_rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if
+			_rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if
+			_rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if
+			] getNSamples pt
+		_enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if
+	} if
+	
+	setCStop
+}def
+/rectImage{
+	gsave
+	/_sInc 1 pt
+	/_bInc 1 _nSamples div pt
+	/_nSubSamples _nSamples pt
+	/_optimize false pt
+		
+	_subSampleOK{
+		/_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt
+		/_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt
+		
+		_pChange .5 gt dup /_optimize xp{
+			/_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc 1 _nSubSamples div pt
+			/_sInc _nSamples 1 sub _nSubSamples 1 sub div pt
+		}if
+	}if
+	0
+	_nSubSamples
+	[
+	/dup cvx
+	_optimize {
+		/round cvx /cvi cvx
+	} if
+	/_ndx /exch cvx /pt cvx
+	blendColor
+	0 0 _bInc 1 /rectfill cvx
+	_bInc 0 /translate cvx
+	_sInc /add cvx
+	] cvx
+	bind
+	repeat
+	pop
+	_spotColor{
+		nsetcustomcolorend
+	}if
+	grestore
+}def
+/radialInit{
+	/_nRadSamples _nSamples dup 0 eq{pop 1}if pt
+	/_sInc -1 pt
+	/_rampLen _rampPoint _endPoint sub pt
+	/_bInc _rampLen _nSamples div neg pt
+	/_optimize false pt
+	_subSampleOK{
+		/_uRampLen
+			_rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			2 copy lt{
+				exch
+			}if pop
+		pt
+		/_pChange 
+			_uRampLen 0 eq{
+				0
+			}{
+				_nSamples _uRampLen div
+			}ifelse
+		pt
+		_pChange .5 gt dup /_optimize xp{
+			/_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc _rampLen _nRadSamples div neg pt
+			/_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt
+		}if
+	}if
+	_radHilite{
+		/_xBCInc _xHi _rampLen mul _nRadSamples div pt
+		/_yBCInc _yHi _rampLen mul _nRadSamples div pt
+	}if
+}def
+/radialRamp{
+	_enabledSmoothShade{
+		fillRamp
+	}{
+		/_saveMatrix _saveMatrix currentmatrix def
+		
+		radialInit
+	
+		%
+		%
+		true
+		_producingSeps _rgbRamp not and{
+			_nSamples 1 gt{ 
+				pop
+				/_ndx 0 pt
+				[blendColor] cvx exec
+				currentInkN
+				/_ndx _nSamples 1 sub pt
+				[blendColor] cvx exec
+				currentInkN
+				or
+			}if
+		}if
+		{
+			_rampPoint
+		
+			_nSamples 1 sub
+		
+			_nRadSamples 
+			[
+				/dup cvx
+		
+				_optimize{
+					/round cvx /cvi cvx
+				}if
+		
+				/_ndx /exch cvx /pt cvx
+				
+				_usingShells{
+					/_firstShell cvx{
+						/_firstShell false pt
+					}{
+						0 0 3 index 360 0 arcn fill
+					}/ifelse cvx
+				}if
+		
+				blendColor
+		
+				_usingShells{
+					0 0 3 /index cvx 0 360 /arc cvx 
+				}{
+					0 0 3 /index cvx 0 360 /arc cvx /fill cvx
+				}ifelse
+		
+				/exch cvx _bInc /add cvx /exch cvx
+		
+				_sInc /add cvx
+		
+				_radHilite{
+					_xBCInc _yBCInc /translate cvx
+				}if
+			] cvx bind
+			repeat
+		
+			pop pop
+		}{
+			_usingShells{
+				0 0 _rampPoint 360 0 arcn fill
+			}if
+		}ifelse
+	
+		_saveMatrix setmatrix
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+		
+		_usingShells _rampIndex 1 eq and{
+			fill
+		}if
+	
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}ifelse
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.2 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+	userdict /Adobe_ColorImage_AI6 50 dict put 
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize { 
+	Adobe_ColorImage_AI6 begin
+	Adobe_ColorImage_AI6 {
+		dup type /arraytype eq {
+			dup xcheck {
+				bind
+			} if
+		} if
+		pop pop
+	} forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+	/Adobe_ColorImage_AI6_Vars 40 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+	/plateindex -1 def
+	/_newproc null def
+	/_proc1 null def
+	/_proc2 null def
+	/channelcount 0 def
+	/sourcecount 0 def
+	/sourcearray 4 array def
+	/_ptispace null def
+	/_ptiname null def
+	/_pti0 0 def
+	/_pti1 0 def
+	/_ptiproc null def
+	/_ptiscale 0 def
+	/_pticomps 0 def
+	/_ptibuf 0 string def
+	/_gtigray 0 def
+	/_cticmyk null def
+	/_rtirgb null def
+	/XIEnable true def
+	/XIType 0 def
+	/XIEncoding 0 def
+	/XICompression 0 def
+	/XIChannelCount 0 def
+	/XIBitsPerPixel 0 def
+	/XIImageHeight 0 def
+	/XIImageWidth 0 def
+	/XIImageMatrix null def
+	/XIRowBytes 0 def
+	/XIFile null def
+	/XIBuffer1 null def
+	/XIBuffer2 null def
+	/XIDataProc null def
+	/XIVersion 6 def
+	/XIColorSpace /DeviceGray def
+	/XIColorValues 0 def
+end
+currentdict /_colorimage known not {
+	/colorimage where {
+		/colorimage get /_colorimage exch def
+	}{
+		/_colorimage null def
+	} ifelse
+} if
+/_image systemdict /image get def
+/_currenttransfer systemdict /currenttransfer get def
+/FourEqual {
+	4 index ne {
+		pop pop pop false
+	}{
+		4 index ne {
+			pop pop false
+		}{
+			4 index ne {
+				pop false
+			}{
+				4 index eq
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/TestPlateIndex {
+	Adobe_ColorImage_AI6_Vars begin
+		/plateindex -1 def
+		/setcmykcolor where {
+			pop
+			gsave
+			1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			grestore
+			1 0 0 0 FourEqual { 
+				/plateindex 0 def
+			}{
+				0 1 0 0 FourEqual { 
+					/plateindex 1 def
+				}{
+					0 0 1 0 FourEqual {
+						/plateindex 2 def
+					}{
+						0 0 0 1 FourEqual { 
+							/plateindex 3 def
+						}{
+							0 0 0 0 FourEqual {
+								/plateindex 5 def
+							} if
+						} ifelse
+					} ifelse
+				} ifelse
+			} ifelse
+			pop pop pop pop
+		} if
+		plateindex
+ end
+} def
+/concatprocs {
+	/packedarray where {
+		pop dup type /packedarraytype eq 2 index type
+		/packedarraytype eq or
+	}{
+		false
+	} ifelse
+	{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		_proc1 aload pop
+		_proc2 aload pop
+		_proc1 length
+		_proc2 length add
+		packedarray cvx
+	}{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		/_newproc _proc1 length _proc2 length add array def
+		_newproc 0 _proc1 putinterval
+		_newproc _proc1 length _proc2 putinterval
+		_newproc cvx
+	} ifelse
+} def
+/clrspaceissepn {
+	type /arraytype eq 
+} def
+/clrspacegetname {
+	dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse
+} def
+/clrspacegetalt {
+	aload pop pop pop colormake
+} def
+/clrspacegetcomps {
+	dup /DeviceGray eq {
+		pop 1
+	}{
+		dup /DeviceRGB eq {
+			pop 3
+		}{
+			/DeviceCMYK eq {
+				4
+			}{
+				1
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/clrspacemarksplate {
+	dup /DeviceGray eq {
+		pop plateindex 3 eq
+	}{
+		dup /DeviceRGB eq {
+			pop plateindex 5 ne
+		}{
+			dup /DeviceCMYK eq {
+				pop plateindex 5 ne
+			}{
+				/findcmykcustomcolor where {
+					pop
+					dup length 2 sub get
+					0.1 0.1 0.1 0.1 5 -1 roll
+					findcmykcustomcolor 1 setcustomcolor
+					systemdict /currentgray get exec
+					1 ne
+				}{
+					pop plateindex 5 ne
+				} ifelse
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colormake {
+	dup clrspacegetcomps
+	exch 1 index 2 add 1 roll
+	dup 1 eq {pop}{array astore} ifelse
+	exch
+} def
+/colorexpand {
+	dup clrspacegetname exch
+	dup clrspaceissepn {
+		clrspacegetalt
+		exch 4 1 roll
+	}{
+		1 3 1 roll
+	} ifelse
+} def
+/colortint {
+	dup /DeviceGray eq {
+		3 1 roll 1 exch sub mul 1 exch sub exch
+	}{
+		dup /DeviceRGB eq {
+			3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+		}{
+			dup /DeviceCMYK eq {
+				3 1 roll {1 index mul exch} forall pop 4 array astore exch
+			}{
+				3 1 roll mul exch
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colortocmyk {
+	dup /DeviceGray eq {
+		pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+	}{
+		dup /DeviceRGB eq {
+			pop aload pop _rgbtocmyk 4 array astore
+		}{
+			dup /DeviceCMYK eq {
+				pop
+			}{
+				clrspacegetalt colortint colortocmyk
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/makeimagedict {
+	7 dict begin
+		/ImageType 1 def
+		/Decode exch def
+		/DataSource exch def
+		/ImageMatrix exch def
+		/BitsPerComponent exch def
+		/Height exch def
+		/Width exch def
+	currentdict end
+} def
+/stringinvert {
+	0 1 2 index length 1 sub {
+		dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+	} for
+} def
+/stringknockout {
+	0 1 2 index length 1 sub {
+		255 2 index 3 1 roll put
+	} for
+} def
+/stringapply {
+	0 1 4 index length 1 sub {
+		dup
+		4 index exch get
+		3 index 3 1 roll
+		3 index exec
+	} for
+	pop exch pop
+} def
+/WalkRGBString {
+	0 3 index
+	dup length 1 sub 0 3 3 -1 roll {
+		3 getinterval {} forall
+		5 index exec
+		3 index
+	} for
+	
+	 5 {pop} repeat
+} def
+/WalkCMYKString
+{
+	0 3 index
+	dup length 1 sub 0 4 3 -1 roll {
+		4 getinterval {} forall
+		
+		6 index exec
+		
+		3 index
+		
+	} for
+	
+	5 { pop } repeat
+	
+} def
+/StuffRGBIntoGrayString
+{
+	.11 mul exch
+	
+	.59 mul add exch
+	
+	.3 mul add
+	
+	cvi 3 copy put
+	
+	pop 1 add
+} def
+/StuffCMYKIntoGrayString
+{
+	exch .11 mul add
+	
+	exch .59 mul add
+	
+	exch .3 mul add
+	
+	dup 255 gt { pop 255 } if
+	
+	255 exch sub cvi 3 copy put
+	
+	pop 1 add
+} def
+/RGBToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin 
+		sourcearray 0 get exec
+		dup length 3 idiv string
+		dup 3 1 roll 
+		
+		/StuffRGBIntoGrayString load exch
+		WalkRGBString
+ end
+} def
+/CMYKToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcearray 0 get exec
+		dup length 4 idiv string
+		dup 3 1 roll 
+		
+		/StuffCMYKIntoGrayString load exch
+		WalkCMYKString
+ end
+} def
+/SeparateCMYKImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcecount 0 ne {
+			sourcearray plateindex get exec
+		}{			
+			sourcearray 0 get exec
+			
+			dup length 4 idiv string
+			
+			0 2 index
+			
+			plateindex 4 2 index length 1 sub {
+				get 255 exch sub
+				
+				3 copy put pop 1 add
+				
+				2 index
+			} for
+			pop pop exch pop
+		} ifelse
+ end
+} def
+	
+/ColorImageCompositeEmulator {
+	pop true eq {
+		Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat
+	}{
+		Adobe_ColorImage_AI6_Vars /channelcount get 1 ne {
+			Adobe_ColorImage_AI6_Vars begin
+				sourcearray 0 3 -1 roll put
+			
+				channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse
+				load
+		 end
+		} if
+		image
+	} ifelse
+} def
+/colorimage {
+	Adobe_ColorImage_AI6_Vars begin
+		/channelcount 1 index def
+		/sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def
+		4 sourcecount add index
+ end
+	
+	dup 8 eq exch 1 eq or not {
+		/_colorimage load null ne {
+			_colorimage
+		}{
+			Adobe_ColorImage_AI6_Vars /sourcecount get
+			7 add { pop } repeat
+		} ifelse
+	}{
+		dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or {
+			/_colorimage load null eq {
+				ColorImageCompositeEmulator
+			}{
+				dup 1 eq {
+					pop pop image
+				}{
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						gsave
+						
+						0 _currenttransfer exec
+						1 _currenttransfer exec
+						eq
+						{ 0 _currenttransfer exec 0.5 lt }
+						{ 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse
+						
+						{ { pop 0 } } { { pop 1 } } ifelse
+						systemdict /settransfer get exec
+					} if
+					
+					_colorimage
+					
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						grestore
+					} if
+				} ifelse
+			} ifelse
+		}{
+			dup 1 eq {
+				pop pop
+				image
+			}{
+				pop pop
+				Adobe_ColorImage_AI6_Vars begin
+					sourcecount -1 0 {			
+						exch sourcearray 3 1 roll put
+					} for
+					/SeparateCMYKImageProc load
+			 end
+				systemdict /image get exec
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/proctintimage {
+	/_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+	/_pticomps _ptispace clrspacegetcomps store
+	/_ptiscale _pti1 _pti0 sub store
+	level2? {
+		_ptiname length 0 gt version cvr 2012 ge and {
+			[/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+			[_pti0 _pti1] makeimagedict _image
+		}{
+			[/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+			[0 255] makeimagedict _image
+		} ifelse
+	}{
+		_pticomps 1 eq {
+			{
+				dup
+				{
+					255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+				} stringapply
+			} concatprocs _image
+		}{
+			{
+				dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+				_ptibuf {
+					exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+					_pticomps 2 add -2 roll
+					_pticomps 1 sub -1 0 {
+						1 index add 2 index exch
+						5 -1 roll
+						255 mul cvi put
+					} for
+					pop pop
+				} stringapply
+			} concatprocs false _pticomps
+			/_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse
+		} ifelse
+	} ifelse
+} def
+/graytintimage {
+	/_gtigray 5 -1 roll store
+	{1 _gtigray sub mul 1 exch sub} 4 1 roll
+	/DeviceGray proctintimage
+} def
+/cmyktintimage {
+	/_cticmyk 5 -1 roll store
+	{_cticmyk {1 index mul exch} forall pop} 4 1 roll
+	/DeviceCMYK proctintimage
+} def
+/rgbtintimage {
+	/_rtirgb 5 -1 roll store
+	{_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+	/DeviceRGB proctintimage
+} def
+/tintimage {
+	TestPlateIndex -1 eq {
+		colorexpand
+		3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+		dup /DeviceGray eq {
+			pop graytintimage
+		}{
+			dup /DeviceRGB eq {
+				pop rgbtintimage
+			}{
+				pop cmyktintimage
+			} ifelse
+		} ifelse
+	}{
+		dup clrspacemarksplate {
+			plateindex 5 lt {
+				colortocmyk plateindex get 1 exch sub
+				exch {1 0}{0 1} ifelse () graytintimage
+			}{
+				pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage
+			} ifelse
+		}{
+			pop pop pop
+			{pop 1} 0 1 () /DeviceGray proctintimage
+		} ifelse
+	} ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+	XIImageWidth XIImageHeight false
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	imagemask
+} def
+/XIImageTint {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIType 3 eq XIColorValues XIColorSpace tintimage
+} def
+/XIImage {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse
+} def
+/XG {
+	pop pop
+} def
+/XF {
+	13 {pop} repeat
+} def
+/Xh {
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		/XIImageMatrix exch def
+		0 0 moveto
+		XIImageMatrix concat
+		XIImageWidth XIImageHeight scale
+		
+		XIType 1 eq {
+			/_lp /null ddef
+			_fc
+			/_lp /imagemask ddef
+		}
+		if
+		/XIVersion 7 def
+ end
+} def
+/XH {
+	Adobe_ColorImage_AI6_Vars begin
+		/XIVersion 6 def
+		grestore
+ end
+} def
+/XIEnable {
+	Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+	Adobe_ColorImage_AI6_Vars begin
+		colormake
+		/XIColorSpace exch def
+		/XIColorValues exch def
+ end
+} def
+/XI
+{
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		cvi dup
+		256 idiv /XICompression exch store
+		256 mod /XIEncoding exch store
+		pop pop
+		/XIChannelCount exch def
+		/XIBitsPerPixel exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		pop pop pop pop
+		/XIImageMatrix exch def
+		XIBitsPerPixel 1 eq {
+			XIImageWidth 8 div ceiling cvi
+		}{
+			XIImageWidth XIChannelCount mul
+		} ifelse
+		/XIRowBytes exch def
+		XIEncoding 0 ne XIVersion 6 le and {
+			currentfile 128 string readline pop pop
+		} if
+		XICompression 0 eq {
+			/XIBuffer1 XIRowBytes string def
+			XIEncoding 0 eq {
+				{currentfile XIBuffer1 readhexstring pop}
+			}{
+				{currentfile XIBuffer1 readstring pop}
+			} ifelse
+		}{
+			/XIBuffer1 256 string def
+			/XIBuffer2 XIRowBytes string def
+			{currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+			/ASCIIHexDecode filter /DCTDecode filter
+			/XIFile exch def
+			{XIFile XIBuffer2 readstring pop}
+		} ifelse
+		/XIDataProc exch def
+		
+		XIVersion 6 le {
+			0 0 moveto
+			XIImageMatrix concat
+			XIImageWidth XIImageHeight scale
+			XIType 1 eq {
+				/_lp /null ddef
+				_fc
+				/_lp /imagemask ddef
+			} if
+		} if
+		XIEnable {
+			XIType 1 eq {
+				XIImageMask
+			}{
+				XIType 2 eq XIType 3 eq or {
+					XIImageTint
+				}{
+					XIImage
+				} ifelse
+			} ifelse
+		}{
+			XINullImage
+		} ifelse
+		grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog)
+%%Version: 1.2 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin
+put
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+	Adobe_Illustrator_AI5 dup begin
+	Adobe_Illustrator_AI5_vars begin
+	discardDict
+	{
+		bind pop pop
+	} forall
+	dup /nc get begin
+	{
+		dup xcheck 1 index type /operatortype ne and
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+	Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+	dup load dup length exch maxlength eq
+	{
+		dup dup load dup
+		length 2 mul dict copy def
+	} if
+	load begin
+	def
+ end
+} def
+/npop
+{
+	{
+		pop
+	} repeat
+} def
+/hswj
+{
+	dup stringwidth 3 2 roll
+	{
+		_hvwb eq { exch _hvcx add exch _hvcy add } if
+		exch _hvax add exch _hvay add
+	} cforall
+} def
+/vswj
+{
+	0 0 3 -1 roll
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			dup cstring stringwidth 5 2 roll
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			4 -1 roll sub exch
+			3 -1 roll sub exch
+		}
+		{
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			_fontHeight sub
+		} ifelse
+	} cforall
+} def
+/swj
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+	0 0 0 6 3 roll swj
+} def
+/vjss
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index setmatrix stroke
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			gsave
+			2 index false charpath
+			6 index setmatrix stroke
+			grestore
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjss
+{
+	4 1 roll
+	{
+		dup cstring
+		gsave
+		false charpath currentpoint
+		5 index setmatrix stroke
+		grestore
+		moveto
+		_sp eq
+		{
+			5 index 5 index rmoveto
+		} if
+		2 copy rmoveto
+	} cforall
+	6 npop
+} def
+/jss
+{
+	_lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+	0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			false charpath
+            currentpoint
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			2 index false charpath
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjsp
+{
+    4 1 roll
+    {
+        dup cstring
+        false charpath
+        _sp eq
+        {
+            5 index 5 index rmoveto
+        } if
+        2 copy rmoveto
+    } cforall
+    6 npop
+} def
+/jsp
+{
+	matrix currentmatrix
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+    matrix currentmatrix
+    0 0 0 7 3 roll
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+	transform
+	0.25 sub round 0.25 add exch
+	0.25 sub round 0.25 add exch
+	itransform
+} def
+/setstrokeadjust where
+{
+	pop true setstrokeadjust
+	/c
+	{
+		curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		moveto
+	} def
+}
+{
+	/c
+	{
+		pl curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll pl curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		pl 2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		pl lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		pl moveto
+	} def
+} ifelse
+/d
+{
+	setdash
+} def
+/cf
+{
+} def
+/i
+{
+	dup 0 eq
+	{
+		pop cf
+	} if
+	setflat
+} def
+/j
+{
+	setlinejoin
+} def
+/J
+{
+	setlinecap
+} def
+/M
+{
+	setmiterlimit
+} def
+/w
+{
+	setlinewidth
+} def
+/XR
+{
+	0 ne
+	/_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+	closepath
+} def
+/N
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			_eo {eoclip} {clip} ifelse /_doClip 0 ddef
+		} if
+		newpath
+	}
+	{
+		/CRender
+		{
+			N
+		} ddef
+	} ifelse
+} def
+/n
+{
+	N
+} def
+/F
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+			/_doClip 0 ddef
+		}
+		{
+			_pf
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			F
+		} ddef
+	} ifelse
+} def
+/f
+{
+	closepath
+	F
+} def
+/S
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			_ps
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			S
+		} ddef
+	} ifelse
+} def
+/s
+{
+	closepath
+	S
+} def
+/B
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		gsave F grestore
+		{
+			gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			S
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			B
+		} ddef
+	} ifelse
+} def
+/b
+{
+	closepath
+	B
+} def
+/W
+{
+	/_doClip 1 ddef
+} def
+/*
+{
+	count 0 ne
+	{
+		dup type /stringtype eq
+		{
+			pop
+		} if
+	} if
+	newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+	_pola 0 eq
+	{
+		gsave
+	} if
+} def
+/Q
+{
+	_pola 0 eq
+	{
+		grestore
+	} if
+} def
+/*u
+{
+	_pola 1 add /_pola exch ddef
+} def
+/*U
+{
+	_pola 1 sub /_pola exch ddef
+	_pola 0 eq
+	{
+		CRender
+	} if
+} def
+/D
+{
+	pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+	/_i save ddef
+	clipForward?
+	{
+		nulldevice
+	} if
+	6 1 roll 4 npop
+	concat pop
+	userdict begin
+	/showpage
+	{
+	} def
+	0 setgray
+	0 setlinecap
+	1 setlinewidth
+	0 setlinejoin
+	10 setmiterlimit
+	[] 0 setdash
+	/setstrokeadjust where {pop false setstrokeadjust} if
+	newpath
+	0 setgray
+	false setoverprint
+} def
+/~
+{
+ end
+	_i restore
+} def
+/O
+{
+	0 ne
+	/_of exch ddef
+	/_lp /none ddef
+} def
+/R
+{
+	0 ne
+	/_os exch ddef
+	/_lp /none ddef
+} def
+/g
+{
+	/_gf exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_gf setgray
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/G
+{
+	/_gs exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_gs setgray
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/k
+{
+	_cf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_cf aload pop setcmykcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/K
+{
+	_cs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_cs aload pop setcmykcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/Xa
+{
+	_rgbf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_rgbf aload pop setrgbcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XA
+{
+	_rgbs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_rgbs aload pop setrgbcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/_rgbtocmyk
+{
+3
+	{
+	1 exch sub 3 1 roll
+	} repeat
+3 copy 1 4 1 roll
+3
+	{
+	3 index 2 copy gt
+		{
+		exch
+		} if
+	pop 4 1 roll
+	} repeat
+pop pop pop
+4 1 roll
+3
+	{
+	3 index sub
+	3 1 roll
+	} repeat
+4 -1 roll
+} def
+/Xx
+{
+	exch
+	/_gf exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XX
+{
+	exch
+	/_gs exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/x
+{
+	/_gf exch ddef
+	findcmykcustomcolor
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/X
+{
+	/_gs exch ddef
+	findcmykcustomcolor
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/A
+{
+	pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+	pop pop
+} def
+/discard
+{
+	save /discardSave exch store
+	discardDict begin
+	/endString exch store
+	gt38?
+	{
+		2 add
+	} if
+	load
+	stopped
+	pop
+ end
+	discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+	/endStringLength endString length store
+	/newBuff buffer 0 endStringLength getinterval store
+	/newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+	/newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+	newBuff 0 newBuffButFirst putinterval
+	newBuffLast 0
+	currentfile read not
+	{
+	stop
+	} if
+	put
+} def
+0
+{
+	pre38Initialize
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff endString eq
+			{
+				cleartomark stop
+			} if
+			shiftBuffer
+		} loop
+	}
+	{
+	stop
+	} ifelse
+} def
+1
+{
+	pre38Initialize
+	/beginString exch store
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff beginString eq
+			{
+				/layerCount dup load 1 add store
+			}
+			{
+				newBuff endString eq
+				{
+					/layerCount dup load 1 sub store
+					layerCount 0 eq
+					{
+						cleartomark stop
+					} if
+				} if
+			} ifelse
+			shiftBuffer
+		} loop
+	} if
+} def
+2
+{
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		endString eq
+		{
+			cleartomark stop
+		} if
+	} loop
+} def
+3
+{
+	/beginString exch store
+	/layerCnt 1 store
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		dup beginString eq
+		{
+			pop /layerCnt dup load 1 add store
+		}
+		{
+			endString eq
+			{
+				layerCnt 1 eq
+				{
+					cleartomark stop
+				}
+				{
+					/layerCnt dup load 1 sub store
+				} ifelse
+			} if
+		} ifelse
+	} loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+	/n /N /s /S /f /F /b /B
+}
+{
+	{
+		_doClip 1 eq
+		{
+			/_doClip 0 ddef _eo {eoclip} {clip} ifelse
+		} if
+		newpath
+	} def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+	4 npop
+	6 1 roll
+	pop
+	4 1 roll
+	pop pop pop
+	0 eq
+	{
+		0 eq
+		{
+			(%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+		}
+		{
+			
+			/clipForward? true def
+			
+			/Tx /pop load def
+			/Tj /pop load def
+			
+			currentdict end clipRenderOff begin begin
+		} ifelse
+	}
+	{
+		0 eq
+		{
+			save /discardSave exch store
+		} if
+	} ifelse
+} bind def
+/LB
+{
+	discardSave dup null ne
+	{
+		restore
+	}
+	{
+		pop
+		clipForward?
+		{
+			currentdict
+		 end
+		 end
+		 begin
+					
+			/clipForward? false ddef
+		} if
+	} ifelse
+} bind def
+/Pb
+{
+	pop pop
+	0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+	0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+	72 exch div
+	0 dtransform dup mul exch dup mul add sqrt
+	dup 1 lt
+	{
+		pop 1
+	} if
+	setflat
+} def
+/Mb
+{
+	q
+} def
+/Md
+{
+} def
+/MB
+{
+	Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+	pop
+} bind def
+/setcmykcolor
+{
+	4 npop
+} bind def
+/setrgbcolor
+{
+	3 npop
+} bind def
+/setcustomcolor
+{
+	2 npop
+} bind def
+currentdict readonly pop
+end
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_pattern_AI5 1.1 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators)
+%%Version: 1.1 0
+%%CreationDate: (03/26/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/@
+{
+} def
+/&
+{
+} def
+/dp
+{
+	dup null eq
+	{
+		pop
+		_dp 0 ne
+		{
+			0 1 _dp 1 sub _dl mod
+			{
+				_da exch get 3 get
+			} for
+			_dp 1 sub _dl mod 1 add packedarray
+			_da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll
+			definepattern pop
+		} if
+	}
+	{
+		_dp 0 ne _dp _dl mod 0 eq and
+		{
+			null dp
+		} if
+		7 packedarray _da exch _dp _dl mod exch put
+		_dp _dl mod _da 0 get 4 get 2 packedarray
+		/_dp _dp 1 add def
+	} ifelse
+} def
+/E
+{
+	_ed begin
+	dup 0 get type /arraytype ne
+	{
+		0
+		{
+			dup 1 add index type /arraytype eq
+			{
+				1 add
+			}
+			{
+				exit
+			} ifelse
+		} loop
+		array astore
+	} if
+	/_dd exch def
+	/_ury exch def
+	/_urx exch def
+	/_lly exch def
+	/_llx exch def
+	/_n exch def
+	/_y 0 def
+	/_dl 4 def
+	/_dp 0 def
+	/_da _dl array def
+	0 1 _dd length 1 sub
+	{
+		/_d exch _dd exch get def
+		0 2 _d length 2 sub
+		{
+			/_x exch def
+			/_c false def
+			/_r _d _x 1 add get cvlit def
+			_r _ ne
+			{
+				_urx _llx sub _ury _lly sub
+				[
+				1 0 0 1 0 0
+				]
+				[
+				/save cvx
+				_llx neg _lly neg /translate cvx
+				_c
+				{
+					nc /begin cvx
+				} if
+				_r dup type /stringtype eq
+				{
+					cvx
+				}
+				{
+					{
+						exec
+					} /forall cvx
+				} ifelse
+				_c
+				{
+					/end cvx
+				} if
+				/restore cvx
+				] cvx
+				/_fn 12 _n length add string def
+				_y _fn cvs pop
+				/_y _y 1 add def
+				_fn 12 _n putinterval
+				_fn _c false dp
+				_d exch _x 1 add exch put
+			} if
+		} for
+	} for
+	null dp
+	_n _dd /_pd
+ end
+	xput
+} def
+/fc
+{
+	_fm dup concatmatrix pop
+} def
+/p
+{
+	/_fm exch ddef
+	9 -2 roll _pm translate fc
+	7 -2 roll _pm scale fc
+	5 -1 roll _pm rotate fc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate fc
+		1 -1 _pm scale fc
+		neg _pm rotate fc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate fc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore fc
+	neg _pm rotate fc
+	_pd exch get /_fdd exch ddef
+	/_pf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					patternfill
+				}
+				{
+					pop
+					fill
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_psf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					9 copy 6 npop patternashow
+				}
+				{
+					pop
+					6 copy 3 npop hvashow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		sw rmoveto
+	} ddef
+	/_pjsf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					12 copy 6 npop patternawidthshow
+				}
+				{
+					pop 9 copy 3 npop hvawidthshow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+/sc
+{
+	_sm dup concatmatrix pop
+} def
+/P
+{
+	/_sm exch ddef
+	9 -2 roll _pm translate sc
+	7 -2 roll _pm scale sc
+	5 -1 roll _pm rotate sc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate sc
+		1 -1 _pm scale sc
+		neg _pm rotate sc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate sc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore sc
+	neg _pm rotate sc
+	_pd exch get /_sdd exch ddef
+	/_ps
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					patternstroke
+				}
+				{
+					pop stroke
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_pss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					10 copy 6 npop patternashowstroke
+				}
+				{
+					pop 7 copy 3 npop ss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop sw rmoveto
+	} ddef
+	/_pjss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					13 copy 6 npop patternawidthshowstroke
+				}
+				{
+					pop 10 copy 3 npop jss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+end
+userdict /Adobe_pattern_AI5 18 dict dup begin
+put
+/initialize
+{
+	/definepattern where
+	{
+		pop
+		pop pop
+	}
+	{
+	 begin
+	 begin
+		Adobe_pattern_AI5 begin
+		Adobe_pattern_AI5
+		{
+			dup xcheck
+			{
+				bind
+			} if
+			pop pop
+		} forall
+		mark
+		cachestatus 7 1 roll pop pop pop pop exch pop exch
+		{
+			{
+				10000 add
+				dup 2 index gt
+				{
+					exit
+				} if
+				dup setcachelimit
+			} loop
+		} stopped
+		cleartomark
+	 end 	
+		
+	 end
+	 end
+		
+		Adobe_pattern_AI5 begin
+	} ifelse
+} def
+/terminate
+{
+	currentdict Adobe_pattern_AI5 eq
+	{
+	 end
+	} if
+} def
+errordict
+/nocurrentpoint
+{
+	pop
+	stop
+} put
+errordict
+/invalidaccess
+{
+	pop
+	stop
+} put
+/patternencoding
+256 array def
+0 1 255
+{
+	patternencoding exch ( ) 2 copy exch 0 exch put cvn put
+} for
+/definepattern
+{
+	17 dict begin
+	/uniform exch def
+	/cache exch def
+	/key exch def
+	/procarray exch def
+	/mtx exch matrix invertmatrix def
+	/height exch def
+	/width exch def
+	/ctm matrix currentmatrix def
+	/ptm matrix def
+	/str 32 string def
+	/slice 9 dict def
+	slice /s 1 put
+	slice /q 256 procarray length div sqrt floor cvi put
+	slice /b 0 put
+	/FontBBox
+	[
+	0 0 0 0
+	] def
+	/FontMatrix mtx matrix copy def
+	/Encoding patternencoding def
+	/FontType 3 def
+	/BuildChar
+	{
+		exch
+	 begin
+		/setstrokeadjust where {pop true setstrokeadjust} if
+		slice begin
+		dup q dup mul mod s idiv /i exch def
+		dup q dup mul mod s mod /j exch def
+		q dup mul idiv procarray exch get
+		/xl j width s div mul def
+		/xg j 1 add width s div mul def
+		/yl i height s div mul def
+		/yg i 1 add height s div mul def
+		uniform
+		{
+			1 1
+		}
+		{
+			width 0 dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+			0 height dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+		} ifelse
+		width 0 cache
+		{
+			xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul
+			setcachedevice
+		}
+		{
+			setcharwidth
+		} ifelse
+		gsave
+		scale
+		newpath
+		xl yl moveto
+		xg yl lineto
+		xg yg lineto
+		xl yg lineto
+		closepath
+		clip
+		newpath
+	 end
+	 end
+		exec
+		grestore
+	} def
+	key currentdict definefont
+ end
+} def
+/patterncachesize
+{
+	gsave
+	newpath
+	0 0 moveto
+	width 0 lineto
+	width height lineto
+	0 height lineto
+	closepath
+	patternmatrix setmatrix
+	pathbbox
+	exch ceiling 4 -1 roll floor sub 3 1 roll
+	ceiling exch floor sub
+	mul 1 add
+	grestore
+} def
+/patterncachelimit
+{
+	cachestatus 7 1 roll 6 npop 8 mul
+} def
+/patternpath
+{
+	exch dup begin
+	setfont
+	ctm setmatrix
+	concat
+	slice exch /b exch slice /q get dup mul mul put
+	FontMatrix concat
+	uniform
+	{
+		width 0 dtransform round width div exch round width div exch
+		0 height dtransform round height div exch height div exch
+		0 0 transform round exch round exch
+		ptm astore setmatrix
+	}
+	{
+		ptm currentmatrix pop
+	} ifelse
+	{
+		currentpoint
+	} stopped not
+	{
+		2 npop
+		pathbbox
+		true
+		4 index 3 index eq
+		4 index 3 index eq
+		and
+		{
+			pop false
+			{
+				{
+					2 npop
+				}
+				{
+					3 npop true
+				}
+				{
+					7 npop true
+				}
+				{
+					pop true
+				} pathforall
+			} stopped
+			{
+				5 npop true
+			} if
+		} if
+		{
+			height div ceiling height mul 4 1 roll
+			width div ceiling width mul 4 1 roll
+			height div floor height mul 4 1 roll
+			width div floor width mul 4 1 roll
+			2 index sub height div ceiling cvi exch
+			3 index sub width div ceiling cvi exch
+			4 2 roll moveto
+			FontMatrix mtx invertmatrix
+			dup dup 4 get exch 5 get rmoveto
+			ptm ptm concatmatrix pop
+			slice /s
+			patterncachesize patterncachelimit div ceiling sqrt ceiling cvi
+			dup slice /q get gt
+			{
+				pop slice /q get
+			} if
+			put
+			0 1 slice /s get dup mul 1 sub
+			{
+				slice /b get add
+				gsave
+				0 1 str length 1 sub
+				{
+					str exch 2 index put
+				} for
+				pop
+				dup
+				{
+					gsave
+					ptm setmatrix
+					1 index str length idiv
+					{
+						str show
+					} repeat
+					1 index str length mod str exch 0 exch getinterval show
+					grestore
+					0 height rmoveto
+				} repeat
+				grestore
+			} for
+			2 npop
+		}
+		{
+			4 npop
+		} ifelse
+	} if
+ end
+} def
+/patternclip
+{
+	_eo {eoclip} {clip} ifelse
+} def
+/patternstrokepath
+{
+	strokepath
+} def
+/patternmatrix
+matrix def
+/patternfill
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternclip
+	Adobe_pattern_AI5 /patternpath get exec
+	grestore
+	newpath
+} def
+/patternstroke
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternstrokepath
+	true
+	{
+		{
+			{
+				newpath
+				moveto
+			}
+			{
+				lineto
+			}
+			{
+				curveto
+			}
+			{
+				closepath
+				3 copy
+				Adobe_pattern_AI5 /patternfill get exec
+			} pathforall
+			3 npop
+		} stopped
+		{
+			5 npop
+			patternclip
+			Adobe_pattern_AI5 /patternfill get exec
+		} if
+	}
+	{
+		patternclip
+		Adobe_pattern_AI5 /patternfill get exec
+	} ifelse
+	grestore
+	newpath
+} def
+/vpatternawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	3 npop
+} def
+/hpatternawidthshow
+{
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		9 index 9 index 9 index
+		Adobe_pattern_AI5 /patternfill get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	8 npop
+} def
+/patternashow
+{
+0 0 0 6 3 roll
+patternawidthshow
+} def
+/patternawidthshow
+{
+	6 index type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get 7 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse
+} def
+/vpatternawidthshowstroke
+{
+	7 1 roll
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			3 index setmatrix
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			4 index setmatrix
+			7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	4 npop
+} def
+/hpatternawidthshowstroke
+{
+	7 1 roll
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		7 index setmatrix
+		10 index 10 index 10 index
+		Adobe_pattern_AI5 /patternstroke get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	9 npop
+} def
+/patternashowstroke
+{
+	0 0 0 7 3 roll
+	patternawidthshowstroke
+} def
+/patternawidthshowstroke
+{
+	7 index type /dicttype eq
+	{
+		patternmatrix /patternmatrix get 8 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse
+} def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+	Adobe_cshow begin
+	Adobe_cshow
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+	{
+ end
+	} if
+} def
+/cforall
+{
+	/_lobyte 0 ddef
+	/_hibyte 0 ddef
+	/_cproc exch ddef
+	/_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+	{
+		/_lobyte exch ddef
+		_hibyte 0 eq
+		_cscript 1 eq
+		_lobyte 129 ge _lobyte 159 le and
+		_lobyte 224 ge _lobyte 252 le and or and
+		_cscript 2 eq
+		_lobyte 161 ge _lobyte 254 le and and
+		_cscript 3 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript 25 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript -1 eq
+		or or or or and
+		{
+			/_hibyte _lobyte ddef
+		}
+		{
+			_hibyte 256 mul _lobyte add
+			_cproc
+			/_hibyte 0 ddef
+		} ifelse
+	} forall
+} def
+/cstring
+{
+	dup 256 lt
+	{
+		(s) dup 0 4 3 roll put
+	}
+	{
+		dup 256 idiv exch 256 mod
+		(hl) dup dup 0 6 5 roll put 1 4 3 roll put
+	} ifelse
+} def
+/clength
+{
+	0 exch
+	{ 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+	{
+		dup cstring
+		show
+		_hvax _hvay rmoveto
+		_hvwb eq { _hvcx _hvcy rmoveto } if
+	} cforall
+} def
+/vawidthshow
+{
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			0 _fontRotateAdjust rmoveto
+			cstring
+			_hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+			0 _fontRotateAdjust neg rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			exch _hvay sub exch _hvax sub
+			2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			3 2 roll
+			cstring
+			dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+			show
+			moveto
+		} ifelse
+	} cforall
+} def
+/hvawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+	0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+	0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+	0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade true put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider
+currentpacking true setpacking
+%%BeginFont: Symbol
+%!PS-AdobeFont-1.0: Symbol 001.008
%%CreationDate: Fri Mar 28 22:03:48 1997
%%VMusage: 30820 39997
11 dict begin
/FontInfo 10 dict dup begin
/version (001.008) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.) readonly def
/FullName (Symbol) readonly def
/FamilyName (Symbol) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle 0 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Symbol def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 32 /space put
dup 33 /exclam put
dup 34 /universal put
dup 35 /numbersign put
dup 36 /existential put
dup 37 /percent put
dup 38 /ampersand put
dup 39 /suchthat put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asteriskmath put
dup 43 /plus put
dup 44 /comma put
dup 45 /minus put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /congruent put
dup 65 /Alpha put
dup 66 /Beta put
dup 67 /Chi put
dup 68 /Delta put
dup 69 /Epsilon put
dup 70 /Phi put
dup 71 /Gamma put
dup 72 /Eta put
dup 73 /Iota put
dup 74 /theta1 put
dup 75 /Kappa put
dup 76 /Lambda put
dup 77 /Mu put
dup 78 /Nu put
dup 79 /Omicron put
dup 80 /Pi put
dup 81 /Theta put
dup 82 /Rho put
dup 83 /Sigma put
dup 84 /Tau put
dup 85 /Upsilon put
dup 86 /sigma1 put
dup 87 /Omega put
dup 88 /Xi put
dup 89 /Psi put
dup 90 /Zeta put
dup 91 /bracketleft put
dup 92 /therefore put
dup 93 /bracketright put
dup 94 /perpendicular put
dup 95 /underscore put
dup 96 /radicalex put
dup 97 /alpha put
dup 98 /beta put
dup 99 /chi put
dup 100 /delta put
dup 101 /epsilon put
dup 102 /phi put
dup 103 /gamma put
dup 104 /eta put
dup 105 /iota put
dup 106 /phi1 put
dup 107 /kappa put
dup 108 /lambda put
dup 109 /mu put
dup 110 /nu put
dup 111 /omicron put
dup 112 /pi put
dup 113 /theta put
dup 114 /rho put
dup 115 /sigma put
dup 116 /tau put
dup 117 /upsilon put
dup 118 /omega1 put
dup 119 /omega put
dup 120 /xi put
dup 121 /psi put
dup 122 /zeta put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /similar put
dup 160 /Euro put
dup 161 /Upsilon1 put
dup 162 /minute put
dup 163 /lessequal put
dup 164 /fraction put
dup 165 /infinity put
dup 166 /florin put
dup 167 /club put
dup 168 /diamond put
dup 169 /heart put
dup 170 /spade put
dup 171 /arrowboth put
dup 172 /arrowleft put
dup 173 /arrowup put
dup 174 /arrowright put
dup 175 /arrowdown put
dup 176 /degree put
dup 177 /plusminus put
dup 178 /second put
dup 179 /greaterequal put
dup 180 /multiply put
dup 181 /proportional put
dup 182 /partialdiff put
dup 183 /bullet put
dup 184 /divide put
dup 185 /notequal put
dup 186 /equivalence put
dup 187 /approxequal put
dup 188 /ellipsis put
dup 189 /arrowvertex put
dup 190 /arrowhorizex put
dup 191 /carriagereturn put
dup 192 /aleph put
dup 193 /Ifraktur put
dup 194 /Rfraktur put
dup 195 /weierstrass put
dup 196 /circlemultiply put
dup 197 /circleplus put
dup 198 /emptyset put
dup 199 /intersection put
dup 200 /union put
dup 201 /propersuperset put
dup 202 /reflexsuperset put
dup 203 /notsubset put
dup 204 /propersubset put
dup 205 /reflexsubset put
dup 206 /element put
dup 207 /notelement put
dup 208 /angle put
dup 209 /gradient put
dup 210 /registerserif put
dup 211 /copyrightserif put
dup 212 /trademarkserif put
dup 213 /product put
dup 214 /radical put
dup 215 /dotmath put
dup 216 /logicalnot put
dup 217 /logicaland put
dup 218 /logicalor put
dup 219 /arrowdblboth put
dup 220 /arrowdblleft put
dup 221 /arrowdblup put
dup 222 /arrowdblright put
dup 223 /arrowdbldown put
dup 224 /lozenge put
dup 225 /angleleft put
dup 226 /registersans put
dup 227 /copyrightsans put
dup 228 /trademarksans put
dup 229 /summation put
dup 230 /parenlefttp put
dup 231 /parenleftex put
dup 232 /parenleftbt put
dup 233 /bracketlefttp put
dup 234 /bracketleftex put
dup 235 /bracketleftbt put
dup 236 /bracelefttp put
dup 237 /braceleftmid put
dup 238 /braceleftbt put
dup 239 /braceex put
dup 241 /angleright put
dup 242 /integral put
dup 243 /integraltp put
dup 244 /integralex put
dup 245 /integralbt put
dup 246 /parenrighttp put
dup 247 /parenrightex put
dup 248 /parenrightbt put
dup 249 /bracketrighttp put
dup 250 /bracketrightex put
dup 251 /bracketrightbt put
dup 252 /bracerighttp put
dup 253 /bracerightmid put
dup 254 /bracerightbt put
readonly def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 42996 def
/FontBBox{-180 -293 1090 1010}readonly def
currentdict end
currentfile eexec
8dda0385bbe2e28975521ce366a1efbcd19951c755b299f7de57699ffa32088176bbcfeb9d3d075a656fc2d3ffadac652e0956194030c65b6ac7dfb4cce0096cf30964c72ac7742ef0dfd71d6aeda00d45b6c86f2ebeadafcc658a64b076f436a780849440223f266d2dab36e19a62bf7550db533ad06fe9bb6bb7ebaf6f78
+06f6852f23ff339a8c1fa991f1bf47f71268b6727020001c8171cb3acdb4eebea4d340dbfb5d95d8d24eb1c831a51121a967305aec34b69ab5a3a0c21ee4192997502d726972f6ccea2c58f4e7ccd90e299cdb76cdba9c42084edd3a07ecf08d5d8459c87f2d392b866eb9ca8d6b8e8cb4cf97599599df0d1c87704f3532f9
+44b58dfe91e713ff665bc5a1d74808d77591d2989951c76bc0cb73e1b40597b250c9776948f8d60bead8cf0d4fb39c205662436ac4a6187b00b5645538a68c6ce44e7231c7492f6b4677329a9823d5510077ae7874e5cbd15e8a39797dd2b269d030912cbd063fcd5befc5065c16972fc994aef7110c16634aa476dd2beaf8
+9a89a81b20101bbb2942dac0e7bd0e6fffb56a851127ee061e3e97515730d3f92d488ba61997e88e50520e778b6e4fdc856126a03bae52db2584ff2d7852ba528fa91db625ecf87d97c1198ac22a8cfb2f19e377c558112ac6c2603dcc29d9402998e7e5c749c156b98f8424ee10395dcd7141d8dce9bbea1888b389ad7288
+38348d4c0f924643d9fccde61c5c46f99939f2eb3dc0002137e456161b54f58a06299bd20184d58981613c285aca7dcd5736db403c92e9fde31f3ec14c2e3e67f9648387c1d2fb251fc8310c35608177e05052764505a7e054c1568429017d5af318ba6f39d33cf88dac226b1e3f3d3a3b1dd7d3a8c67367ffb00a7568e1a6
+fda2907236f77bdb618fa1f04e5317fa2d8f5da3f48fd88d77c73f439b7a68b9a7970ba0108da48bd1fb6284d94470ac957d679cc7665a6f0d3a1abce3352866b459ea0aa6678f00277172daf4c5aa545ae425b2ab530c7404a04ddd891ffb0b3cbfc6e5b8614986d7216e4bc571590cdf32ead925c0afc93110751b5c6a95
+025bb9b74a00e941bb7714525646d584d0565c0106ee006d10ec7e289ab250d6e99c3072afb4c15e1ddebe02a78b508517f985a4406b0bfb74c7011010b1f801217c1fa21f60c4e50ddee045e69c9c40075683c68dfeedd25ce02dca55b96c246670c9e84e586360077921ab65d0836eae8675227b3c40e10cbd7c410f2999
+2f1bad2fdb649626271df074e58d4754a3877316f32f9f6d891bacd719b3de29707622f725d5508a268a40a5896e06ad92d2e133389bb0ded7dcf837635377dc16fe2e5ba97c6f04f751911f82fab56def6221c8029dc6fc0878c36954a92d4001000cf48949e772a8fd21de1922a2e546ceaaa2f8e464fc6e82e114b5fa17
+ee00bac6a27e96ae49775f26f1cc6dd494b16fa60fb976e5cdffac370a977dd1ca8468c45c9919cd17113a811073516589fd5bcb5c5a50fee1df5cbb0fee6a71756e08d144d082f7714fd797f75adfbfd7a4ce0b2a8e25bba46fef859bf88afcfedb408fcfe3a0c517af7065d93bc9534ea318ea2fc45e0ddb427287b6f4c2
+9b1bf79b82021ebcdbfcbdb93254c3f7e9a8c431d8d7bb617b9c8c9b1d78b70cf24ac4b1dd4edb7b4629d5061f0f1cb86698afebd44fb08afb198ceec07d799f426cfee1bc9913e7a997c7c136a9b8571194349a8e960615de021415355640c3e3855873a38c726eefe0d9addccc89ea1e4446ef4365478d26c2cf094f8596
+29ccd6f433f42b5eb3f065a96dca95297e406d97f60d3490dc6c2ec0830d16b502ee1832ed29356a16c94f2f74bef5bda000b36a1b7c228958ecf8df388909038fefa348b2394fd6018206aefe6ff3b7362a9f65cdc181ab7a9f1b9abb5c36321e9faa8e081b583035c34d3a0eec08e7b08f182c67de2efdb4c68ab169ec5a
+89df851a3b53019c2c604b560a58ea246c8444f9380f19b553611fd2cb4ab5c99740289a947ffb7e2b4670efc0fbf28a631c93c0b9e84cb738f93ec6c7f78e247419676a3ec643169f01465c032cbbf6f62fdaf66495105d30538708eb93e58474374b8826a64292753bfdda20b265105fd7c4b1d57993b063b752e890fc9d
+2453595f50fb0c16deb4ca009d581de07767a8afac5fdce02ffb4874a806e38df9ee47d963c9f7cb3e650335a1c85237e83ea2dabff0d2fe93e82a00329c607b76d45425344d5fe894e55394775409fa582a50b06130034ac92f03b63939da92fb22f192d2579517aa7141f28bbb58c3aa7951c9615fbeb1b76d04ad6ff685
+d4887d9cec6e1ec2355ba1ed9bad56dbf58426a9964cb84cabbc307614ecd83f47e3856f09719c82246c7f987a6e820e88353adee2f7c58084991a3020ee034b67d0f16b921a8d992d407177abd6027b85b5abb4053dd5a1c54e1cc679a63a59b5327332860dabdcddbd29e976a242792b320ca11581d5d71ca398673ba4ca
+a3a2764fbc2ff807f0c05f5fcbad49877f9abe090324b0673e366a6d9cbf120e7b50036c363b6188d8f5e2c8cf6ee4e0146bbecdb0283dbdc3f4fda4a757c916eda66f627ded80d3906ab023c318128512ea33999ba08c604c372f742605c884864c3fce5de17320ffbce73ccf9d1b293643bfb587d97e73f91c3dc8707551
+a9626fe765901e9e15f3128efa8c133c2ee55a5f1622aa143fd2d32541badf67dc1dbe132b3d5d3d28cd83dc7311bb1fafc0477ce525737191bc318a3d6f6cdf80bfd8289d0e9a984a2b43fae6894748fa4ddc3a4015dbf9cb8778e7b957ddb126b75dcadaae6c41c48072d767f4d533bcc3692608e4153e4c51b077e0f867
+357de6624ae6abfe9d7c77638ef25a8bb685f8a8f736c91556bb9fbf31e97df1aa45eff70ddc64c3da1ec15962e34f62c9281b78970d09a069e31ca5239a449b68f97fd45453f8c74575d93ba32d7de8e7023cfc69a565ce01af28ae06949b826c32f4d899c90665dd666a4a3a887961d02d220c30014391153158c6eae0fe
+6ce5d67c4e4a4f014ce2ae331d1ac04e9131e7683843ac285253f8f211e47547bced470d3da3af611cf3eaf64373e7922488522c9dc6250e0d45951d4c5d81aff239392924b613d82f75e12739db4e4d61a98b72e912647e74a243877c6b5044041051b67446aef3aaaac555970651b44b3f3f2f38c7b1d4f806ff6bfb09a7
+0b81365831aa9de761222d9dbc17ee4e2a5f3dd9d6115b4b234efbaaf7e6e0bc29176bedfce51c2fd6a49a8214be6ab282b236219849b6497fa6d9ecbd4a3ac6dd1906829a3eb83a3011c918d1d4f7f5443f03cf7c7a4c6b0a4863be4227d96d547f700f0a0165352a9485c752182b7657d199cdc8b4d492db7bd201348d60
+41f092b3111efc8e534238eab160e439d9bd2f2881fa51378380fb7442edd63ec35fab38896e8f355fd0cfce5d5626d7e58a7c359611f6d5ee1baeab9695d26c2716b20157e7337c5a9eac8278ca2243a70d4ab9a597f457bffe8dbf1185865a9b4551d602bfae5259a6bcfe0359ad33a02e0bbd8a16061f918a31c5701820
+1195a528a6bff4042304f184a93385d98ee591a489184706152fba680ae7cc46ce18c3988c8be0597786d87de3c3a6b87e54664f7b9688d6c04e6090bdb1538913ae3513a858bcb6acf336e03f1776e93b74604723db8bcc746e8f117b1aaa7bd834f328d3ddbee4960cd7d2227f5e373bfaf1704ec5911607e66ffcf877fd
+84978f5eda69ad33715b9005104d888baca0e810c2d9bb5c3333e92a7b5d7ec5065a44cbfebb070a32e492469ccad1067d5bccc7fdae294087f9688991aaf6beba1e771e15fb03b8f867806c6e4dd7e872f370025f11ea8d0a4098d6f335c75019138502e9ade27a170257c0566ea3c0cee8b4fcb7a6ec5491ac346b35f97b
+224b3fd13965f1d5bee6ea025f1a97c51c2d5d46ba6f48eed37c5a8bac8a36ed6f0cc72340f02646ea4c67568ccab4bd233266ae8d83623303f9c6ee79da6dc347d26251c5599a52096b795a24a82e6c4b2cabe150758e9358615ffeddc218d8f81bbc32e4780d925ae0b79688c146798a6bc81f308dd00067c94d2094b1cb
+254a5c041ecaf70ae06fe53b7beaeac1cd4e44fb503144eedca7414e184e37cda24f88a290d075e278a09d9e826d666eae1312a6f5abcb55d2b88ba3e6c4b95e08246c2123d0f7552e5c975fb8afc67bf7617c922943be76dd670c50df969f3b5bf2c077e4cdc27d910bfd2d81300ce868953e39b279eb823fff40fe2f7ed1
+23ac4ce9b33883bc666e8ff0c73372918ae7b3bf76c373a3e978d32971791b36c99e0e011ca35d529ab7a5c8612f27d25fb43ea881ec3db171cbeb3a3a2d08a0aa6cbd8ee26ca957ddd557cbabe0dc969323ffea0750984dfae620b9ade74bee70f9800dea62e3d182da5bbd35b37d52d710b2e31f959836723d9acf104590
+33c48108c6acc641cb25259ef387af8c2f5476847e415a9b37abe9a9bb0c35d3177d47b826a07d4680056afd60afece29e29f8ace87416c7343df851931534e2e92e2407e709dfa25be5d31961161705e23abf87e800ab49ca6b61e18e4835cf9807d0f360835ce12b8bc11e2057402f913ba0cb9cb921383c956ef7e38993
+6d8c63c9652cd307cf356edf8266dcdcffd162822b3d5745e839d5aead8fe07a3d4e2136e90797c5d0d73c82a2d5d5c9962d02ac784b7b20174bdd47fc0a1dce504cd9fd139719df3c9d9a119667ad3e8a8967f17c044961104de938f14f0aaca0513ea9081ecb27348cc77536729efb2aa5a3daa54371207b36c5fd352a98
+cc4896b537b30fee8165b7233569a418d297531dbcb3a14c78a3d85462c5f58167a9bbabc3e81563c7bd4d67e28b9eb4a9e8e0aaa5bac958e0b098ed48c81e5f05095f4d4076a37eb859fbb32e3594131b547a0b2be52f68c98cc688aefb1f498108cc425fd9eb6668f50da7d11602b3644e1243ca05b68b86993b1d3d564f
+93ecacf6c7bf2d967da77e395e4d761bc04a170c35d1cb9040cc824a33564c11b579a113f598f6063e20b1a90bfdacb5f9d7bef4009c7dde9f0548efa4b84704e4c7db807bb6c45a59442b2f5cc505d2f708a07791a8377299f9a93d5b020635f62a1698f90487692e7c4dbce5a89830c9383ef38c35e1c4da5e6d8c82ca71
+da2e066c7d0be8775e1597ee3790b341d04ace82f8793a8699f40f4c215b740a4ddd7ed6f633dd7bc5bdfe382ba44d8da0af288d27c5ac2275afd98c0f6dcef689d6c18dd05444197c235d6c4fffd0d4ae738f708583370ab97e23fe3487e9a1448997f5ae85f0333b7acede3c2e017cc5959844057a30571d5c105cd70060
+598e46b1338b252f106fb414673fbf5769918ba184b2721c4f346bf811701118dd7bc87b99d94030f089651cfaeaa67ce98fde391c4ffaad4b461749595c359aa3a29fd8eac363034a441bbde61658a968359309e8cfa46713c28573a8ffcfca320a9b261b924d0b3594752eab93d3ae412e42498cea914b060bf2a3f873b6
+1d70d50ceed77d7e8dfc8afd686749bc2a1172723a9489c1ed7e50bb32887efb97721c2095ca934ebf0c5a560989c726986287e6e5aa8f8b41cfd7966973de9fefd7a951343da41ef7deda1a90a736ecc23791220058140a9765a68da3a05410feae05e892ab98480fb9a0683927443ce0ee6a3d41af55e6360f365e87d3b3
+66f49aa22a96948b63efbff46f2877a5c82db0e3350f875f6e06008eca65b9abd3aa46393e634e864a2467d03fcba30c0d901fadcc4f32be09123a3097b8668039b2ddaf65d9fc0f162762633b2be257c3b6d1e219495303bfeed7585fdbd773a3bcf9a9216701ed906134b72ecf116cfc158e567e86bb094dd75f7a31aef3
+95b57f96cc4ac739312fb475491a51a87141cb9b69d26ab25ad0cc2db3f5fbe2f4ac62f763d0e07c68a90b3f080cc4439cc9203cc35f1cc1b05c8b15fc8da648aaeaa7c6e9be25bd4ab0e546cdb4fde2d3e37492a0d1870427d2a5512ad4a4404fca76525662bea2f092a3e459a57c43bfe967f825b337a149b4548fcc6092
+833e3601a7174d65428b0fc127b395079ccc41eb0783ae6a59f27deea923ea1218004b28ae86ba9fd1ac220164e56cba287866e237994f7b3c9f87c89273e87ca37ad2a7e4b49f8725eaff5945bc1e8a38ec762a1698f90487692794b8863b8829a12f0173cff77206de0c51863f9486b535195b402e6756fbe9aae85b0fdd
+cd37bc42e77755eac8c9112fe050d4ff4f85b0593e5ac5fd15ccab06d233fdde2c4273fe4100613a6e216246c50dbfea5ae4d73c9011cb57354bb5a7367877f8b713109953752e71de96469b5e7962cfca0a2801a7cdc744ac8eddd3faf50dea43fc847271bfadd691b25d725ea0c048d9bf3a647a28490e28dbcbd776dadb
+a506f4b9e48a19f6b8c88563974d27bbedc8f90ae194a515887b33acb58310d8d9a6bd66517239ada895df2b76947eefbdd95d5b4d4249338d5d4e79fcaaf80e6021e3168d31d46f250a21045bc26ffeb66de912d2f65bfdfec70f40fa1fca155be79e19ef3c47449aa13aa2cc4608ca8cb46dea76314364250fa7b18fa096
+accb689cda9be75c1c97c54d163d900f3a2df0b149096f267e5188eb70a72516d7902ceb4d2b53196e97fde812842eb18bd8b81fdca020aa6fe0423256d62c239db9b468865de7308e892a9c3ad9de5cddea3377b83c5525fdf7c68092a6fa1f4dde10ffeede3d575db8c76304e4693ef0997a01d76c8babc93435dc47d5d9
+2d4978d73a5eee6d1c3faff112ec24f2e9ba1b7fb6b77d1a17b4218807d52f2b9b19dbcf792de9e0cae5a63b5d19876c8747b85820ed5156dd76e40047d604f956eaa13f088a40cfe12d7bdb48dcef4d55bc9d1a36f1fe388b3a18b08c6c814f95e576fd37cb04ac2a808ee2463beac694d5242b0ed37d7ad39f5fedf6d24d
+e9250097259ef8b2fc7876267b6e4185f011699e91aabdc29d8b6a7b2a591bd24a20558c0f4acdbc90c55a2d946b1ca6462f2e4c6a1f6bddbbb22c71db352cd5875dfcca9eb600f40b5773647bff7062e3a70007b1b67ab5082ac00fb543829efa14c2de67f82af0c1dd2df76f3ecd59cac53780c7a170b66066b1d2424263
+9d001bb68503f68c73b18ada215459efc7892b32dcfaffe8e5fd689e264115274a289b99a16f3394e746f09481cf2a654946b67b1a689b73c8ac076925338161fbc0f7e562286cc287afb9798a54d9fff7aec4f29c792e455f803b855898899d4703504f00a83b937f92b429634732f116a69ce1276006e63b2058e59e3879
+5816de7cc7b75d480e72660527a72d87dd111c6a598899f8a4f6a61b071e349b61b55293da28c5db5a3e3284d8ca5d90ca4826dc140172a5f5ac7d839256ee9be9cd45eeac3aee11a1fc4949acd796c52de69320310cd143210458cf31c32413b180af54f2a08d4211e0407de959a46b569371a4cc573ad77d6fc07a6932d0
+1ac150d96fb3f028aab2fade0823d2b606ce517257883042d716c016f4377b8448fd461a0f710467c429c99db02dcc30a54d6e8ee952d68856c5f47538ff793a38d6fa34cb798b204e7525e898bf96edf9f5664a07d91c16a8e8b4138364fd615701e40cf9a8e0ef1b8d531d544053b3d78665f4fdccaa3a2dcb61fe360752
+a79a19da5db010b0d319b97ca6682400de421739901efa66f9a88ae97cadfd155d359948d21fdce3b4722e49d5989e2d5d6fd1e6a3964ebf12e2c72ac5035360cbbefb77bf83bf5e983ad39a5695a64e0584e5e5ea60fc4018ff70d6b725e51a82dc5575759d6130ad57e2f0aff28484beba6106c854df1552da18e6a886f2
+f75611885814fafc8a7befcf6afbba04809175281d78f9de0f3574e19584a7133d3a879acc2a76fbbbd9c1dd69eeb348ac699b5c23637c5842d6d3b8852a3864e44afbf1ad6dc72892bc4042e8d4a83cf5006849b4fda58b27200212e40f7b33410366a19349eee37d5db96cd5a9a7a2ec739ec3716300d1963bcd6a327afc
+a6d3d0ea4a530373c0433418c133942597fd01baffa24fb7eca9ca8925ad3eaf574c3590d52f450a808f81a0c17e1735b7a0b33e9bb87da1d4b1fe5982b5e67d998074e92eb42c9b89a397bbea6640ccd8b85c5db458fee3e9d7afc5e62c372bb5df0931f807b0d9685db68cb86180f30d09471424e233e882fdeb3dedb235
+ee5aaf4fcf963a215a0611d5737941b404f56f5a09c1257cf81f1fa5e4c259644fe058f0ed1e5ff03f2812e341f1c32aaa2eec7378146817aa946f974090fdfd8ef644874a77930b7507532e89a92e9b8bebbe2b4f4cfd90ffc1a12d05e40b30d81bd636e56012e6c1aa6c0a0ce10261303b7b87ccc39a78e178492489fae2
+dbdf46a22da38c23da154ab5b2040b05a2ac11e0a33d34b5ed1e4bf958873bafba0d0c9c1a43a566eee422f47431b6a6958a34bef02b91b868eeed9e38a6d20d7af1ea66c21dbb0d42f273633f87ced2554519dc51368ed60ccb752090b5e3c756dcd024b7c2c3de9c02a79142cc23b1bb5fcc08e6c9777e1a41e86d8b0f07
+03811b3790eb224a6f752883bfe0860715e334946a1c8ea440cd6710674caccfd90db1897f020b7307ba2793036ec96347ccb1dbf78c000e49c8110fa5597e2fd2a0c48ba0b96b18b318756488db3ca3215e958b34f1fe9aea94a1a7aee7f697848a2cc07675822783c9c5807ebcb069f1d070943dd926de12d88c35592789
+1a420c985b969e986e0192f662e886d2a5513dea2d839b35d9902d4bdc6752295b761292a63e997c20051a040314c6a86fd3f2f791d7b5371914e343e61428833dfd3eeadbdf6cf368fe636212877d348e95c2882a5661ec1ec028e76e944ef033662cb1677ff63df2a537e89222348d7ce4579b5fbfac2a71b3cf584c0acb
+e2dead719b06874a7b4f725fff17e1f5935aff4d50691ff781d6772e4e916430f66dbcc522aa88af24b2e30b5e3264558624ef3e8792c142371320bc6d31b0706dc458d81b860e293d47d70e1c12fce97acd06fef46aeb22c8384a7aa66d307867d7b3c90544febf15254b5639724280c08495ef3198afae50c4a64ca1082c
+34d1b181053c346314cac3497f15f32946e0f30fcd48ad64ce05db65812e9b256acd53afcd3900add856cc73b2bdbcee4b905f72845e4046a055b441d7e23bdf8de57cd6b7449d28bfc1376bfa7c1deb0aaeece95e9818feb14f5ee6cef4ce55553f6a314ea042c8a3b4f038eb223e03dde23d4dfc21b04afe0130db1be221
+639aba016be874d16f50ef548a33c9aaabc701acb0b0e1a806d81d0a4cb21c0f8b7e064027febb8d9b98c0caefe7bc2073009c9f55d10f4b2653e08262f2dbedb6b3dc5b0649abbfd7a3be625944fae5064bab68f7267f8cd3bdc732537f8dbba779e3f50f607720fefcf3a2505bdc44eebe30d8b35a59417693a5d62158d3
+5dc42758b7656cb7331761802483a156c5d47ba1926f1abcedacd4ba24a60488459e5a55fde0f56682d3abd004b29438a735b7484afcf057cd4f32733a9caa3ba2ebb778097e30ed2ff7b56dab7e58b4aadb109fb8ba2ba69f1e661849d7c8638faa40318f7e15cff2cfa260da0451cf0fda569461f10319431ee42aedee83
+df31f72d5923751745713a3b71fb7b5a7ee2de6583aafff1a77be181a5459e59e8071b6aa9a992e67f7d34a826be2d664002abe68c4d09f21799e33f31e86e2d48b250910d5da3862fd2ba75bb48dee55a88b6f68cfa91bbbb0f08b77c56b43ed295578043dd3675f9cfb7ff2c6cb843abe28974c2e8fecaf0ca923da144f2
+d91ee185df2c0e9e1c7ea35a38daf6cbdac67db999ae9b83fac72b22be42a2f63b470c2f86eb552d482294b95f01053abaf7f079d51782d9d0eb7ce9595228a50d9f2646277e8d9df31e26c2c8a434efecd49b53341afdfb41d5d86dcb2ca9a3f48ec48eaa82983cbc69397b76431110f6724e7cc0f7b4546bf41d073ff25a
+6ad6a43b8a8f50062cbbd6c5f9b3d09e0f161e942823dd28e01cac4e51f7ef5eadaf6a8dec6853b2b412ddfb8dee2dfb58e4be766cbcf1e8a954c8b67f28d7a6675bfbd581301ec31dfe47bdaef075e73769fb768686e19fe0d5333e5825b0b98b9753bd00a5b18d6c595b5199a1004b745b205db48e43d2e65a4b6bcb7f69
+3711f07e367eef6588bb98c5ecc3a951f1826a0db31a440df73d1e8eff42d31322d0730360a4af1c318529cb3faba1f219d0dbe62d2aa5fb998ddbf78ed7dff1169e3c2b32bbf926be863c5dc357bf95a378ff104c9634c2489f944d5070795cbfef6822f991157cbf1267310922db6a8700a85ce19816af9f5009791a1db8
+72f04ef6227850bbed40f105effa93ae747f237ebc35996a17def8c2c553bdcb87fdbfc73c562e619d0e22e8734992934cb13c8f5bb6546a519cacb85974919daeed4cc39315d964837dc7120c16faf23d339b39d8ae5fc555ce04db33e77fd890af32d3c21507cd181336b9b1e8de43ffc805843364e19fe9a91c89161403
+99ed0ce9322db840d2d559e6e2676cffef5ccda610a41a36e17a3851a9b6a3b196a16d60ac56ae04a23be73f1bf2b6ea6a4dd5dd8fa498c0bd9dd7d64bf26227dbfc0ad2da8b617200762678036f0553f3bc7551cfa19ed13673b7ea9a6386fcfe0a3c18521a2e3335fb4c2aca5b9d10616c657c900c5c7709dd6519406ee7
+09189406a7d3afb767e251ff11d55feac2cb7aa8fc7ff10b9758bf12cad01b78f802875cef9e8c25a876a11269ff1c9236e4b9d2010ace6270a23b035ac333d409aa96598a093fd97d73d3574e4ee7b39069daf9608b1e1b910792cbd5bd6b41cc20d10e8eb7afeea758913e8b7e243dbc33a760aa8f73400b3f8b4d4d8175
+d4ddd12b49a7157d1f078a77460229f29d8af315e29e5ecb386fc32b41871efc789ada932f6ffea4fbffa07055cd5d47a3fd8c17dfc956132b8117345e17292080efb5bfe77ed2a956866509ac8e896b737639b6eb6dfa5ad97a27996df5ee0ec807ba74511f6a382fbf1606cd813a8b92ea5bce7c127614d8c9cb19369772
+00fc8c5b8a615f8a3e583a440860c8602f8803c391ace1c88573dff597e1e1e86a7fa09b762a1743d10e2ad991fc020fa9034f7ab37bfcd9d8add572f89e7dd7132972042f8f80de3300f4424c45449e80cfb9a7c6cb3ced41d03dac06967b92822a15735e0b4b3e856107a6f5dfe5f87c88e83184462df50e2b3dc73cbbbc
+e7e2527fef7928efa85f72a6645788480996fd1fa5b20f6ad38f20f1fe92de35ef7f078faf9780bccb95795cea7da36a0a59ccba9cf04eabb9cf608f13d30d9d5060f11ccd07240e2cbf82eaa10fa069a9ff5df33cc5f04291b62944d9c541f976021d73d34ef99677bf0c77d976ad480af40a182375d75d8799cc3a98c1d3
+db6669237461d98c2c94b47e5d5a16848d161bc6b8d6bb49ceaedf19e0a1445b2b43b5db1ee6e7e8a56ac3e39308adfacc682297cd27dabfa64f4859121654cd4bb804b75d6a2aab1ae308e37c8764ff9a50dbc77d4980780405fe1794527b7b9dace056d7d27076955cb9084426d1318991e40c2c1f7c98445f324e74fa3d
+d56bf9658fe5100e29d2815142f22c8b0a0179c89389737e4b11b18eb05acee9d75d0d52a14bd709648947c7ef660267aef6ae23fce6ffb75ee208f0afa915fffe85966de1e8aa6dc68d9844e3cabd469f058164af943d7aee1b80e7edab46117cf4e5a804a981404232462c647cdb1dc827aba92f3b45960e791696aa7157
+7de6a00c47b6bd5bbc565363fec2b112048790d9f880dc1547eeb9611b4273d434cf00c460134f9903dfa2512bd1d87be35cad3dfdd73409802e40834a9684e8450695956e1e9af26de84a6927db278ece1a728e742e626063b237a101505d908e1d9715f9d0e2a14b5405a8ed94748e2b773b40e25acb42241b241a1a7425
+54c9d2f89ac539ca78e0a7e70cac1dc181aa3268d3799f001000f4063d315a7c780dd68a431b156ce363fff3d6c41e24602658868f38d7e6925b226b6a11c7f1e2b5fb67df7e1fa5ed7fa683393ee2b7834276926494ee47562b2f05f17ad122c3e1d91c073f0800ba544e8a40627112d2ede2e24becfff9af3898f7b736c8
+cb62c91206aa2964a70c6e079e1c5fcf73478409c4779840ff0ee47fabed23fa3dcc495b43a13f89febfc454c3d0839ca36095af09c48a197370e7b978f7f29fd2e61e782efb3a78d780f62faad43f67ed07340ca8bd96d41f2f2367c57748bc2205df12a4321db5487249674f8daf15014ffaa6c890f5c7d9fbc97a0eb021
+93b541f4f3268803a6261f6408009f0a655a5f2aca3bf7c69e344f1d706b2b4ce2e4fe45759cff8461efb66f320e8e5b585261fe966cba1f021f93b0ac8490ea015eb1fbd1f7b5c2a1203480d45661826479c3afb67e7619b8bbdc3202232cbd84b5048d84ae60de9c27e42d08213a7e6c6a89e2ed1c9fe24896194ea93bab
+993c754fabb973193ad4cd3b3349f7501ec9da3bef61bc9c37ae15e0a39f7927d931fbb3904e841a61258dc6f9f817f8968e1b56cff47280572390142c3506fad50c1eaa389af430823b1d50d6bbb8a7bf0bcaf00f09a9c416d7b6eadbf3bad6c66681b63e8e982b923eded93676928803ee7ef1a92361c8d463a50dec7611
+16fb36b1e5645d6d11b6d9d5915dda307c45768b40ef3eab0a3cd47795857ebc906df50d62a348f1b50e78ab823bb9ca6c5c3d79e4a727d2bb4c7e0158f789a06a5ef10fc678b94678a1494817474ff3eff2e4365abec2ede8803a52ae223bd44a9f6de006f25411203a252d3f0a7d31433a67ba37fdf5c19cb1dfa8f6f2f7
+0a20e40940b1e2649b409d89bda82d225da83f7d7262b2e833dc39109a9f7c52d2908410feab8bace469cd5582d69f83c127cbf94b2ba18a5f693e8addcacae9fee9efcf00b43426908aac0d211988aa456890b250072e47c849ac5a2dd3ae7aa094d2fe2fd31b283e58bd247f13dcfe7aaf7051a9d780aec1971985fb6c64
+83ad6e7e1d7802bb6d249182642b478a1cda88d141b25e82ba91ef65fdabdddae37e9dfcbe015cea798f895f9c3f2aacb14022edd5a5b613b7c6dd2d1095bbb107b03af6955cd516db4c0f6bf2fbad7da9984948dbd8261a0da69898e70666a1f0ce8f0f657635f50e55248cad29a7e737277b54bbc9a6879839c1652f871f
+2f2f37b979dd0129cae254d20ffe4ef7aae24e07191c0a264c162360e328cde396d7717c5e45a27cbe06430b4e35d1b8559c34b81a7ce00ff0efc1c98a07526dbcc28231b1fcd32a3a8afd2f757a4e5867ea67b01c8989da742222c8cbdb568f8c38796f8ea3b9c782ec1fd018284179897d1c09f184b486a61fad60490c5d
+474459d960927e73a3a0f884cbe6f1df3e6b7ab90422e701432722286919c4ba13e1292a8f87acfa353622a10115e7899f204b5358fc8b9ed670e4bcf55e76e10284d2912c9a00b36f391477de60caee3c239f990343ec10d47fd989f3719ba0020beb04fcc3601fdb5b19254abe0a3026d47b85c6b2b206213adbc8dad30a
+7fa9eded4e736787646900bd08eb1d57ff1af0a67b83f6c61894197659e0d6563fdbadffc51c190338fc5ffad81173827f1bc7a00db84479250daa018efe4ac6fe33b26bd3765dd0d996890b77a82ac9555eb388d6ac131c03790add0e0b5aa0fa2ed569d3ebf276a7aeb9ae7f0746f56148668120fd65d221e670d6519877
+52adf0dc0369bbd0025f9c43bbff1adde52942885e9afdadf8dc452b845a1a37eb622c08a7bc0460d4b1b417b36e091edc6302fea4e47939f30d5e4d67db5cf35c9ccccab5c393d4c61b8e88c3dc14c6efa5cdd534593167aed46d9e2f758703cd272ebf5ad2dbfc2dbc7cdb82a4d88253e47dbd33abbcf72381ae994b6b5e
+d750dab87b87aef008d5a76f5251bc35921c22c51aed2f73bb9da6a9a5d43ef6910e25730556cbe8b05a3578109ca2dcc8821b223ab51ee27112951825028b7d48de5590c4aee2a94c50d589644cd34f4a8c027f98d769236f6203344994b05b4ffe317137d0dd6bb13c32bd8a066d2ee7915fb51d5ec2a2b73605a68a6a9a
+65c1521ddb30b74e5d760778f1b1763c0c935fc8119e41799b76304fd3d2da90155109fd20b31cd661dba5decf444ef8431b3edf47ea1754a2ac96d27342a5cb09611b90126c884ffe27f7cefa08f6b84b023d3095ded200a24fa692e84d3ea4159d90ed93e2cdd131faf7ae0ef6367915c47ba9029e58550a36097ae25c8e
+df5fc9e8a3568d36d08e826b377044214415bb82271aa769160959d78e972cf5a637fea493fa0291703e6c922e0a4684fcea3e0c8ce794fca23a154413b095c0a2bef152ba57d911fc3d9849e7024afdbe703b4c7c959cbc01802f413236999b1a749d3a12bc3c190881322fbda197a84859f1d4d7ee7652a5dfcfaac40f30
+dd003f807e9893e2c6e7892fda5a67c90c344f7220b1025b61fba8651219c6499080e37513bf84135e95ccf1069b3296df6c6b4bbe46f064cec3fd60a0607393b9f29353f3cac0ed86ea823d2ce65174c9d69500a4bc25fd8ffaba8813116c621d3da8735a0e13caeacd7a8931b358f75df4d5574e0461327b943bba799c67
+993fe07bb180375cc36d07734ea13a92a3d7afc1136938e8d4059c919b41c7545ca5d469cab0edede80b627d31e987235f2350ff0c9b75a9e050b0537331e70f0df6aac3c5581bffdef5d1b24735d15976566621ab52b15a1bd4d6725e5d5a69d5e2867d209929f1184b8478ca85fe04dfc6fdc0164a76ff9e5da5d3a68d54
+e96463f64d34c9e0cf7133df9a8c18a6689497adf6a86e82f71d89c2c8ccbfc81ed616d66ef3f29468bb57b236a3772889b4ca39bd70d3b9022b15830bf43c462a493eb29b9b2ae43f07dc29542d426e659c682f89f2d655e7d94cfb508b25f57dda601e1df6c5cec8f8565ec110bdfd1ae69a3a84c4cbf12929929ebf575d
+7082d2428dc0fdb93472f793865a325f3ccd66ecf9072df98b55c6a788264f0848bca0bf864f4a0d4ec941bfe339f60ee9e6c3ac5f43031c7aaeab97f1e4831306f8911ee45ed10148b51efecce6b7293b8f40b4642af614f204af6c072b48c47e7074822570f317a5fe730e59d725cfb698db0ca73c95a532771ed2cf19e2
+729dccffc76b4c9b32280cc6cbb1e20bc5a016ead5820d841d61614c604c7e4e50ef845e90c140d0c1c7a312634c59fde56c147a1c394280f01b78d28e70f31bacddf09cd5efb4bb51f956280aef96e617b6fdd5b2c3e9e625680a34dc2422fa6efb7865ea061c8088681532d8103b7781294b028efe0b64900a9c240bee05
+e73683859f5515b3076c435324e2e2c914b76570852a7b7f562efb6121a92ceb9f1d37fd2b1cebcde72824d0a6c1e91a451be797cfbc3b6d47759ae09b1edba945970648030686fd859afa8a6765ee025134bda9c2d6b13c22fc48412c9039537a03f831f3d292d43958526b9340a0489d9d7808e2904ec531c7d56e17592b
+f62d1c9047be95c0cae9be1785428ec40897fc27dad0714654ff8fec5d7188b396304161dd65ecb626ed34364d4b06610107c20cf25338a3160ed462c2746b21f774e8621a1b7a11b6ab41a727a03011516a993a8bffe2b72ef23c0f30f23a6a0d41c579ccaf0c97c19580f3f0185a223e526f83a19b4477e877c67851df59
+0d1e29ec76b7ea84bbc7958f4fafcee76bc0602e09756e324c67466dd46721c92010a3881514b25aa093c1f4709d60df96bf47f2c50065253f2f3cb16d66b5d7d8d8281db3632a6adc24df76a72d4ac515157347ea5ef7defced3beeccc46345efc52c6b2fb3a06b8d6d65258ea44fd63ef9f553882f09c83a776664ab569f
+3ec7d69b8730b36a2ae6ebfc3fe3646e286ed25cc8325154057ebc9edabf2812fb8fd247d942f254e5594b5e4ff122af8f04c9d8cdab08003df911456236397c51b4efaefc1011e3b3c5d64dcd35091626b951cec80e89c6cbb9b471b4314e5ae0797f7d10c5505f4a421d02af13304eec5414d548c36d3c99c8efe624b310
+792bb3b5fa229b08479ea9385c55ec505270902e5568228d5332574eb1d22b27b9fdc57537852245a273de669d25019f771a7a5c30d8d337c151cd2b776cbc2ee89351ca5c4ec2555062cfa668bb75f3203411a71bc2ab5825b9ebd0621893348fa4b8e8b4d9e458a429d6d26ebea99dfa01b279210c3ef464426627bb2c6a
+8f4ffb219ce04a4564015575888d0d76e013f79ea964187a0d6ceae8753e18bc7f0fe928037c1eabf3769214975c73f5ad3f0b49cc80d8617e500802437d9020a4a0a0e98e43b9c16cea472c0d5e4bbbb7d54c634e97228f3c513550d63c51df10b22f710ba41de00e3d209372c276f7b7530260b16f0c8bf273cc6980f6d3
+63b94a94d8ca813eb601a2f07328cea787abf0e00a5005ee49805e58d3c33a5cf090759df241ec4c871257dcd3fc0e7d083a967fdb3fe8383341452716ddff24799d651bc1e7fd4931c0e7c1a868846c77ede5c091a13a18c09d6d13d103bcdb5a77c16296ff63263f0dd68b8f88d3ed3bc2e48ea51c5c18029720be5a64cc
+def3cd0c101b4275d973be1310960788860c4b6c05eeac7d827bd9963cb0bb5e169b79c146614c4a4842d5d588672eedeb304a89e2ceaa93d42b601d5aeaf79f9bf8a9fbf18b926cb2e626771cd7e2e07447d355e0257c22848f48906b58408a8137ea44e90ec5c804aa9700ffe0677bd26479d01317eda6821efa7f341846
+d3d844e272385add9ed441c15b8d54eb50614bf2e70351a328b55997cb0e3db12320bbedfa1044579bbfdbe7380b6a3056bcaea088c85b97613f13ffdbbf6c237c25dd8e7b3df00cca0effbdc389cd5937ebb2395ba7d9c11253d8b7fae27f30895b1107dd460c78bf21c2022b328cae888ade147afbcb01a477d1561a322c
+22b422281444c30d7319627c12f5775b7ca56cf58c0982aace7ae0ce84b5c4b20a664c8efb1183e3e673e0b689e43c45a7754c3c1a30a3094ae9ed82f5286293ad4e5e92ec9ce384ddb545f9a00723800acd1669706e0a5708679bffc0f3be2831c28be5ae64f8535c28844f5db6ccc8eddaf97a85aa2b0786012da0d69945
+13d31e7dc3b4f1611db18db7ec703facf71326f9acf586f0bd32aff925abaf86682819f37e8f6904027cb5731228a512094e166b149d9f3b0d0eabcc8ca6ca6c41f20985e8eaa0ed74a3f7c7982aa1a4f247eb08f6f087bd8ec8d789c6fde9bb75e294ee405de885b33d192b0cd0d0f51903fd55453666bc10072579b21b3e
+c25b6f0ee17043d7c83ce1ec05994da4c403bb51ea25d27b084fecd5e596a43d37fb6f2f2d5cee95e7138a4ded8cd60a9eb83771f1f011975e2cfc4f1ea033b7240a5d87e349831cfd7e0bb965df052282298bb25d0c5e72ae086ecb80a5919a0066f2ea5885d112fc08d5ff78308aab9477f3eb94f23a9af9166901d79ff2
+a3ffd58d7a8062b50f4b1ef73ece442aba266ecc05d275750f17ca0af60872f9472e327b5a5b781eae92fca9589289297fc04498891b33a732b60eeda5e8941ed72db22cd99aec7687fdae7d2239ab496803fb7f4521e3e1b1e5df3cd5559fff7ca4f014a7ab3c712689117a1f66ca2cab11b1a930336d56947746c2c2ebcd
+e8fc576c053ab8625061f909243adb5691c22bab9e8307f1aff9596ccb5304b1aa8451132b22171dd9b0d104022e3fc253ee07e73fc297f75ecd4646ee6a21742e033056e7a826a04f7b525402656f8500556e6e378b7051bada5a095948a1fc651a681d854fa51825033233b26c4ce62c905bd1a7d5a4668301759b2f7a02
+b944cfec5c21b918e4b29cb3af1469392eda968c5b4df27a5e623661f6105f7746c4150d005b6c1d38c731fe6f49ca4fbd6a282322806f7c0907b4d6fea19153f465fae3dabc3ef1f9ae170653ac71bcaff7a315cad72204077b92d508b23cb237604859ef8c2ad8490dca4f622e16a60871214b719406e0937a14e7754fcd
+c286d6746d8d299203d9578655cfc574a0fe027b3ca449e19facc444859f51ff4a3e7947e76b941bfcde9e91bf49e424dacfc7f3f2d57d764234604908d44e9cec3cbb1a5976cd882697f2ae69b46888edd364f47a528bd092954772b3592b7108cd1bb60de961ee82220f4cb2521f6fb64ad02161bf3c3055ffc7d97b24a1
+e1552a5e7f3d3abda7779b7f4df6f76a25258cd609a959e66f301ebea94faf846fc6c3b7484d4fd1f2e34c1840944579a4710e7889dce62f1aebfa5693e3333f1f9afaf41439c9babbf49acf54571630ca58ff3daca297839d4384c77d00d3f656da064b7095a18290f52e66a6020b4c0d0e0e6d5d3af818670c51c0b5e5d0
+d20f125c0f4405627ab5a0c4a6d74a77ba732afcebd7e9c8b091ab697c53e3bd5fc00dd745b80a3521ccd233df15f7fe9c40d34a3ce3ebb52f2c729975902d6fc955a6fef71d4dca28a8b36c1bf9898fdcef49546e82492554940a17cff78d5e59cbc295b5082458ccb0e81ae519e382ff1fda6caeddf25fcf96b7b35bd7f6
+dc16a78361c8f0cda9c88e29175bce6722a5a82cf04c712c5404af8262d00b2dd59074f26cd668c2e5b0cb8f158e18d20fda399ac84533ac81a904b1ec24c082cfc266c6b28b15c4e563a94e52e5230251850122eaa893d6533eece0d6b59ac1d669900cf4a347b74fcd44aa62f4d4684672d7602ce25106be3234494c4b01
+c17919d8507e7491902ee48e8999a9658b97ffcad2e9eb49eeaebd9143f556ac9c0d9ff4fd73f084cc133af1315a0fee2248520a812f0551de463a24afc6809a68b50bd49b329d9a83792331330a1cd3002df4067518b88628779584e2ab85fd4fd9a35777b518ddbaf58abaf95c932db9c357984aa5ea5ec4b0f211693ce5
+6db21538d1477195221f4326bbf99a4bfaa9218ecac3fbebb492d36f75068093cf55fbfbb8187ef5af1d826c8882c499749bebf3ba5c515e97de3f0c222e81f03fb2d2bf4b2932ebcbf154ea1714225d6fd78ffa775de98dd6c34b07342d950e73f9c1e779d19ad24f07b27b7129c5db28bb5a729727eb6c1f0d0dbf87732c
+d7d49c7b0d7159315ce0694a86dadee6caa516ccd24d35333855666a4e59660aba220b351a8c88e731b0d74d3813fd56eeb24adeabe6ac2787f6d76aee2787f53e8238aef7950be2ed09abd13a18da9267f83de74522855f0cf1c584ecf29d139a14f0c6432b1ac22ffed104590e14742df17847e1ea3be0c387273bb8e121
+e4ebea0be5c3f8dfeef4fce37c98edb6ac1a69ecb31ca57fdc725013de578c9d313f47b3f120d09f3d0492f9bd5da8c890005e82eccc396d550b8e35ebabe2a8633772518d10d28a7e8981cb07b9ce1f9889e3d03ab6f3f0fdbac1d305c617f9a50777075977b2612deed34e1296ccb8891c7c242965a397404e00be6e8274
+22cdaf8da6357fbbe3fcaa932cfcc8336bd56ac33950900ec0d5a843faa9dc64b77b3a993987c14350faabd948b3987a87060914724d9735b264ea522ec6df689c232e05c90512c0f12d5560de1890866f09ec2cb4967cfef0656260f54ed8f0245e3c2bded20c3d743028214b4ca73c7b0d535d70689039ee0a8019cbf62b
+18b029f48e022f1ff1f12ac795ae12734ec3d0b7899259cfd31184c428c761cfcfc1c0a477999e7d3595225bfc500e681f29a1ea66fa80f98bdf39a89d5aa56644162aa4ce28842a529b16f780eef2e2dee7511331804a58680c81a0da811283e1d572bfe58ad58fb563ba903f5a27ece9bf6df047bf61d7cbb12dc63ee348
+a8d4f4166827cbdc406327395ec555902b51e8f03850da8f9542f0d253fbbb24b0fb992572dedb700ba3dd338cddee0e532256f2c29ff22e41eaecf8cea2090fc8ae42a0dd2406d3742ff95dc236d83b3243b45d2aecff891525a0d429dfa9fa47d658cd0b47bf508daeba39be9126f6435fd3e21ed77b884291a52b1299c4
+13df2bd32349ce7ad44d88719bcb3452646f5bac6d04c51700c96e55608484ced972b512418b7eb9bb6c7873f3d1477a12364b9b27f6feef2e3607022abdabb8249149acd7ba821f811af603efe20409f9acd261e53abbf3503d914db79164cd7ac0d02af00fa9eaf159c6ee1d4e6645c1db7998141e647c1bc3b2243bf3bc
+6ca9b4643147fafb0e0aae1fe24569f4615857487f1be9865131764f8c6f0675ef6798f18ad4e9d5ec26dcdc5a7889a31a4e3a2c97933617b94e188d2dbb67b860e85e0b210aec97820c5a15f57f3ec6c846f6582d9f0bf99ee05b07abf64ccd3471a3010a63ebcc7cc39c7720f46d91e4d5b7b59c88da8bca5917877939ca
+96763ee87f73cb61edd167d5d13eb6175c084cfac84ba56c6390455e42f474967dfeebc63a996fd4e849dd8f9692ad4a28e754f6774d37fabec8005429d3dfaab837707138266056d79e3be5ab060f6a0947a2db1220cb7b298e2969f2e8f4c14ee511834d7cf6ffe465cfb8f7c739e4526b13bd9aafc6c7f6852095aaf1a1
+9c9ec78afd3239a5fabe695b35b631c50aaccc8c4124cd9022dfce5cdd83a7c1f5cf0e8646fdeee883831f2b720e507c722c32655dea19a26e4f4dafa3f824c2abccf063ef765a6480956f88e58aba6fc8768fa7648f75633b55808d08e64b9186d6c71de1e6bd50c290db15a4c89014472934ef315500666aa515d38262ba
+069d0581681441740a4b7c1d1ca361929ec8734af8630400feb0ba59d8432543e85c5b2649c024eeef3f30042eac1bd6648b0e83dc53215058cb828f2a7cb910a080e3fdce7312e66b529bf17d4e5a86d52e206906e431f83051b401265f0445f0bb1f69ddf256a0408e0b8ad9ceffd32a9ccdf7b9402d821d739e06074425
+8c8ee9bcf7e1d23369276e58afbb0482d9eb85add648fc2b726400f4a5918494e6e14b1d46bd01ad303464b4367364d5755cb7cb4c5f32bbb37f3b7177be38f825d370936b3d291a81019a46ec2bb79a3edd0ba525a5e016f0883d0987d97e8e6b00620bbce266fd14978bcdeb8bd70cb0997cf11f40266a7e5056217917d2
+e720e55a923b7cfb5756028d34e57d775de86c7aa56cf7aba899d0e77a72e25dd80dd8adcce7c1512eda0453c760cf36a2cfa296e43cfff0a6dec28113a1889db68f0258dfd69c291b581bb5b40502f9e18801d434f92f7d03b6ec16254357b57ba5a4bb0e4d85297e8c4dbc1cdc80dab172421cc1c1dfb10cf2c96d524a8e
+99638bd38eab05614784f94ef1a4ecfbd816092e18c9ab3daff5738efd79b51db9a93d2ac0e80479fcd08054e0f5399deaf6398a0838da62bbf4ebba55b244c7f965af5f3f641a39455a725091cd0bb3c16c9edde9269b586955e5a866c9a530598aa54957dac68549ff77cf685173061a2430dfe5adae6a12896d5952cf37
+53459b93cd30e9bc76b0edca624c3d85313bc5bdf4cc76ebb82e9a43d95bcbf7325a8182f07aa4f056043340dbf8ce6a187c1705a3897551bd0e1dcc8f3fb09ac53c7227e85c070aa696fd3f66bb9dbf2610ffaec4ba0d37e6acd1c340ab5729c1fa46caab96fd94d4e212ba097252b701d72855fdd72c861de1d69d0df79b
+a57fa6ebf631574a83664223d95faf416468fae864dabcd2a71da5095410d6495d2ef4868fc7dfe72d77d7f30f09ea3a4009d399e9998b37b7745bfa5b78465c523984057aa9c17ca428787c7c070deebb7e4e3e3c7429cb697b91f5af5a46114b788df2cc256eabed34c857e1b1e5634d19b7efdfe2ac2bbb4285e5f72b65
+aa9cba9cc7a9af330f1b7cdece551d71278f8ccc3461ccd7c6e4ba4d693751d2f04cb01c4afd6c34d89fbfd7123f562e57845156214554a9480d600ae594442cf92821b3b0bad2c77f1d84cd90abc3686c7b6f8fe8c9e623b1e5fb5cf14f374ff0730e8d51fb6c30a3dcf3540683d0e6ba226e35e4aa80e6d45305d49b0a59
+5f84e36b367c2b1662cab9e4e5f359cbf8bea18af2da7a2353aab63814f21813f0145d8fcded42fe56ec9b90c973c7e9ed3f2f7b462a91787d5d34b8a30fa2c762410e727d8544bfdb12cdb62d95df6fb0afdc872a78d268c3665733e153bcb09176b22093dc16863793e3be3034855d0ef240d26680c9906debadd330bf92
+ee93ccb0099c2701a2e71b6861199207c79a30624f1e773b3fb5ad8403d23a25f6c53d49b16640410dfa2ded167385430aede652a61150852546634b92d2d2a0a99d6a0467de61f35cc49c29bb3771bb235fd6339cd257b0e09c96574cdae1182f09d27d3be66602f220f9aba917c0d3cbdc9bbf4d20f93c11a501b4cf6c67
+974824fc79f3cdf59d6d10772df8e005ba2b70dd5161310dff02b12f1d488b8c07de7842c33f753bcb3cc10523beeaf1a0f655194cd977311669bc368fbefc526d81c88693b293b5a64580422ee11c776b1e7d4436cd18af8f1dbc50a4a5106bc781a1d458bc7752e0f06ad07b63cfde6abef355a42158fcb308b2d0e25861
+88b57974a2d301378b9fc9de13114392c9142fd4078fcc33b809be833f46e9de93c2abb2c6fa5119ea357e992f1e879fcd80b7405693cffe7ec5bc4ee461640606672f82754e481e01c5dbe0af11f18d17dfabbe342e190e7f2ea46d0e1b32ef57176257cba464850a66d7761322ccc2dfdff00ef4e1032081cd01973e8233
+31404d4e40c08ba9dea78025aa6830004412d72390e69cd74aacd88692a880f6e9d2a00a77c52c9f96861a2393b732f31d34198d88a2b7e138416d3201a0bf6b23f6d0b5e57176f88edfb439c4a3df4786ae8802e29d674b05f2098d6e864acbd1cd5a1d9214106e4d85f95dab48095f8fbd9268073df742cbe68577aee0fd
+1d7f84673fb1ed400822c6dc31d56a22d150eb7b01bd431637f7e263900860114079fd7e0bb2dca152575eb5586bbe1aa71bb75febb12b5c39aeed0e85790c2843cde0562f196e8f1610bdbddf21080a38add8da17ee311b52fa4f92ec20ac43c7f10bc189a92bec2d26baa9ca95ce5b950af2dc1feff04955e9bddec88369
+95028eb37b408c1afc08782a1af6fbb3e0641834f37e2ed272bb37a8e92b553a7bd93eaaf597404d87d45d0c31c234fb11d0d723fdf8e9d5546112caeddd83b729c91cf2d2aac2b4e002be7b0c6b214ba0e16c860790ee5e1a753a4ddf0e1b29ecfa534bb43a7cf8fd1030049708cbceb014950f8e7f367128e57680aadda9
+a05e546f62cb32cc19e963ffe2f374ea3bf7ed9a5affa4de339f60e3e1aa7d55361705f0d3f8dce36704be4b500ec2af47fb7266ca37ef664cc33c3b3bd2dc644477b0c228eb3512b18da8d56ee1da0ddb38c757181a9e70f7588fcac1eba97531337cfe68e781c292ecaf5def97b4038732a9ac7d52c6f76ba36b888f8ee7
+6d6db5094d638d8551e3d3e268c3ff1038e1677defa587e988a574eb7b598511f91cce21ec212675dfb11c9a9fded970c837fc270ffc5a5a7b0b07d789933e5e49bf8962902b0992c9f133872ac632cf9bee9de570f5314c1169bca817cf36bce129c3fdbf4da6227420e3d1408fd1099e19fad087fa89d9f2bbd8e0067ba6
+935e8b349ca5f1c7b43d4e69318472985ee36368641d180fdde6f6044fa6764ca2834b873f137c071f4c197f9d1a5476c59e2629ad57b539b489154e2e9ecf8196ff7e48fb4d9f9ca73eb11b8a72652ee4baf29735f3b38e630dace9ad3207812cee35810ddeb466a9768dfa90d63b5696687824bf63b3f20ff57c7f6d0745
+b6f6d4f7f6e397f79e655c5991dc4a9d65045ac0d7dac4eff8e71b9095ea8994a053bdcffd375411ffb1113f494fd4fa8dd83f9bdbe43533bf9a2e961f93a47ee6dd8818edbc810391caf25d8f13053d86a4d264b0a03832c372fb1d194e45d8265757b5573cf9d988e5d5b164c44d2ee7ce02e6b394c7ea709c63ea793e3c
+bc7d5dfe6b5af6b32cf1a0303a8db5b1d9b0593416427efc5cb5fa968c35decaa8262610637679db3865faa20a700b4cbd53dad08ba0f20fa0e79f9eebc4df5e77ef74bf50b341b30cbd1623933210a9c5aaae69c3a9cd55038878d221f80f98840d249d066e03acca0787018e35e9299e26118a787fdd9085f9374a49c5b9
+6dd39968a836ebe7203388d39431ce67c38b5d8e3207c672ceaf4ffcaa946932fe26b7d4604d365c72d581b5d9940a4b65039cd9a0b79101c0302662d10cff4c36d8876fd34affd9f7696f6ac97a4d535fcfd57d4e3c3ac34410d87443850fb19e0b988193de149fe0540aa5ddc8bc71ec35cee91ddee93af5d297158e8e9f
+138c5b22d5b525724118dd2f1b7d77466b76464bfcd45967ef53cf3ad2dbcace50c65d22a459bef414e170491587596cfede9767750dba43ddffb58d5ec0b5d4bad84bd8e01e2bbb102128a2975def0d7a5823760c697d522a53567d479dc5c3c7b1ca78942a1ea8706c4d51b05d01888e0ac3d25c2fc1532cb9c286f3d6c0
+cfc8a0bd5b0e6b3bfddf15b62a8f5042b4f8d74c14c545845f6eca4acaf9f7c202da7c4827fb23dd7f362dd9a0bffcb3b38ee7e3bedeeec45fc799780a7ff895ff706e031ae6ad7dd27dca4d25ee572b3d275cb26cb80593878f394cbde2f2670138802144698d137f7f61467ddcc66ff36ff5ac38fcfa506d7f6e7ceab11a
+04b3c9d5571f5fca27f46dfbce4c3e6606cde136d78ed979afed5d956bcb25f3016b03180fc57f4cd1c8bd8ff46d25fc6fcc4ae5dca59317e0622a31cb39810c09061c36c9e18f35faff8590442fd9f02e4fe62a03d85266ba883e1061473dbec136c6d25cfd509269f171fa4b534a0c1c78b0182e5ccd4490bbe57728fb05
+45b1b1dee107bebb0fe8d43708d334806f1dc2ca81c5dfc42b7d81c94dcc94e84267e94c1c3c51abf261dec41cfc8cb5cec2ba4e0b2d396d6ebe64cc0a12d0dee8cd816de9a88cd5290e09568d4835815f85c10eefcb158282e82637783ff09b804e5bae910d4a10835a16732b59da547c887e91e77dcdc14a03d0103e6dac
+4a71de3a186c2b80619e4e662bcf456ab0881bfceb432d9a5cf87885738a2ebcc644cc47464e6be60002a7e3353b20306834bb3adc80a2f449bfcd0483499cb41e5f83f58a90eb3ac8ac39d18622b94d9827ffe5b4198079d523877f80f7fccc976967d679f05b58eb75c337ac6b33f99cfe113bf0944b585516258e26eb5b
+576503f990d3bb07c0fd1e7701a1d5d35b356b532481f31e759a7a085c46298ca5cae19975ac550cc30177fbd684c75a8b3f5aa3e4c963e0a4abcd7ff6174149818996eac898cefdc91b402d270bcbf5ddaa851b6cc07fc6d145dbce645f590716ab70bcab3764988d64622c901e8ce8cb596de839e4f01881ca22fe064b71
+42807945ed70ef2fce6a550d410c7de6ad4a8be9c0141ce4e3e0f4986b0d14279be49bf06d2fdb333abea4178c782eb0ccbb09679a791a9c7c671820863ac8e1b542718d543f9a90a10f67ae8dfe91348522e631eea42176e1114167a8733224f8e666ca972398c5d1b88e632132a9913789bf74210dd112634687d0446d05
+8167805a14ac50e36d00ae9335981a158e09fda16d2ac66969e02269c428aab24ba9a7df8176ffe857a19765b62684e5f0886cb1e55d6c67fb8d27f0ff020607f2c8f64d12c5f0861da372a0a58e36831e9856338c9b5150af16ffa247199d93d9b36477f066b1eb1e7fb9fc6279c7840585faebf9e3eb4e998a52352ad94a
+4a45d002aa19fc2ba8266ca466682915632bc3cc85acc844d4497cd9ab2472498fb1f2a36b79ac2a6e1818087842648d1797a952c5da3cd33e18fc11f87599983bfbb8f32fe3d4d94460715e1b27f0ad7260b49acb60768a868fb80c437624271683a1b34151b439e5a843f1f3d8dddd02d3ce58d8d97232714428ae036df4
+f6e5a7e3ddcbfca8540341171a0c0a07269f7090477d9c6a67a2ee5ffb3a7028fbc0e95b3e1ea725e1595eb4fddfe71b34743e7f4ce5fcb5947ebb249beefa621b9a9992f46edf5956b8169181ec67391c190efd17e30e6f3ceb3a8c9f40f0672865137265bec25b2394b4d8b5962b91d47b5b99f383745fdc2202b81999ae
+b07d34aef93e722caa9f1d8a6d360f41a59bd4ca0695c98e227496c01a39508cb86d3596ae706738fc44f0fa2bd53e5ed35f5a21928d91468b1d1d3799d1d7d2ce47db2997078b34bd8566578fc6097df820385c7333af6499c5c32e37488e4a4bfa48031c5e7a5773cd783e31cb5a47aff0633d40cc82fecc80b4107fb35d
+12fab16b86856bf8b484fda78e1aa962b06d046659a4a52f3c3e473f2739a3b2191d38b0bbb47cbef3eb7872cf7a3ece0517db01d9f8c226767a3cad9251649234ab3c653f00a03323c668a1c4d3bb5e22a4ce389414b62375f25902c00d69d34036315b5d581f509b8ae92f8bd67bc5a84e6f0ea6d1631794d60dd1fb58ba
+569a4df3141ef04f642d63a4e89d96c01ce9b0c5586f41a5dfaf2d269edaf135bf06ba8649e14e93f9acdfcc5492c335357cfcf305e5107a965830cd18cfd8ac6a0b5c6011152843e3b4bcb8f71470aa5d99e7ccdbb507c80d2ed8f70a5f6328080515fa6eab20fb154499ab9bb39318b8dccfb2bbf9be94e32dabbe3a2d28
+e6436f72e59cce23dfab1eba104222c6a0784d51fb0afa5cd0e6894d75144fe1b59a3013a5d803d54ce702b0fec134fa764776e72367af0c5eb20e6d0affb7171dac5ee7a73d56b1625584dc79228d40a28bbd05c494b4bfe672eda6faa95c9dc1f35f0e16bec2f87a2ffe558bfa047964cc58c1d7a4e16d4c6ed27948593f
+c4f608370a8d01c89c0de9b300469c2dd99acd189e0a8cb56ed5dabdc6feb9b61b594458100f93f9243b90761a37b04a12312ebf7e91f68882e38c1cac8172c57d72e9c4dc50154227254e424831dd418ff4e28b1f3fcaac56c5d8ac68fb5407a94018a97dece53afe9095178a9f8802c6706aefe9ab5309d5f13142ef2c04
+4df751d282135e65cb0f0e1f1872220526e247e00bfbc79f27e5db089db13bfbd73acaff9e8b19f1722d5487779f2eeffa470a0f2386e03160737675ab5ef85b15818f8681a32939b4f87eeee7912d829619050404ec25e1f21bfabaae220cf98a98fff0dbfe554ca6eb01836e79764ee984ba03621b439e7fbba1ccb1616b
+28e7f9871380fb554f076e677a049d59952b134c7a7cd1c9c637e5337cb5f356d9861c7c7ab7f4efd96c8fdedfaa7144c48e22be3a2cd989ffff2cb6b4ddaa6c6ebad073dc111e3794ec58c30d9a3a7028778b3b04b4e8af09243d0788389819ef286cb9eb496923a9dba38861d332db79fa25c06e69cd34786ae0b92c22cf
+8ad20cf9277d53fbc4a6b8c77e9033ff33db0b781a633833f6767a4aec343694c8bda1e70caf773217ee5bb1ba945ad687d9ed151b5e61369ac7f13b9630b85aecfa68d8dad1027c0d25219c6b068077fdf1b62681f3d624702793b1471193843e5604e3e0dc657bd8e850a33b1746c0c6d831a80155f978f10517ef843c12
+54054a4804d221dcd3a3b78052733e0ddfbdb3041ed9a07318c7e74ce851e9b4abdcfbeede6eb780051407b9e5db01e3fca882f0bc4f560dc041b97ff12bb2cfcbe8c0d779dc839f8ca0ceb68e27f37583232d2563f054b8dcdd737a48f709c930de8ae87837eb3c2cd55b2bcdd143df870334b3290e275a268dffbafdacd0
+8bb5d8ea5c2e35fecb63c4d0d5924a413baad8a6d9099089c6f8330d9a9c39888cbc2a147daac2e81e07059c3659718516e1d71eeb0d29204256078b6a3eb0772c6e3135617a2a9c4cfe2170c4e66a56ad8721c08140805dca7494cce6b530644beb677cba28fb62de4c5a784ca5fd40246321c4148844219926b246bbe86f
+fb642d251912e64ae152bcbb834df0d6745138ca65bbe7cbbb3017323450dbc0b47f4388299799c252933fdec374fe93457e94224db816a7c458bd99b27a32c7054f302518fbd6050df1ddd7b6a05565395458968a436f66fb42776ab4cbf93f6271a0d6a1976e01332ae00d13e3bb6b789b1e152b934979ca6ffc0e2638b7
+6b265a118d64236e2fb8caee7c5c870e73aadce6896ddd9b9908c1dba575cdb5dedf66eb8cd563ace22069b88c277774032f78e206598042207b1a249393294f792566bd6e7aa539588e2a9c34b9e00e8854a9a091f13bb7948a8185595228250eb4f02ee93ffc0c25b590ceb82946ffd98d52f92b90ef81f62b64b16dfb6e
+8efaeea6fbf813ae76176f3b67f457cc4fed4b492b94b786b294bab88a3c961d191b4d8175827e788f5bdfa0f5974858020010dabc8c504204c43d1a9bbf7079eaa2b80f544cc746322831442282d81875587eac06135308d67adcb2da1500f77938b6c9db8fdbc7f197162fc167422ac4eee1780af60ef4b4a6cfae913933
+d3f5b5a1d8d528678627339bef3c00d89ffd0b0330852e73674cd267bc1ac47827b04e3634794829a485140ed03c6b819895c14138fbf11a0cd1d13afb99fdfdb737f674a9074a17e0d2059fa05fff30b00fd1d2690c93a302a56bfa4bffe9cce42534429ad260fd9c8b0e2256dc44ca584a657f0de052c9de62a821c885e0
+ce9c591a34c263e8da2cded07ec24f8d5d329b9737b1fe831c7c3b7e3d6ea7d0be02bca48450dfb6dd69a43492f84bdf7ec0ae34d39041757d87c1cba9bfa5951930227a67089629a6603ab6431b3887b581bce57d4209252fee3e51726e22799b0132fbd263855e69e25aa4ea992e9b547d4704163e01598d24d43b43ecc5
+4605b817844f37454eef1d6d5c6f4b602a35417c234ec9b9ab9f26339d0cbd39aaf696c44774f65dbc64d70cadbfe02c20f965da9f57eb02c8ed6d9cb883d2defc824e8e7999ea2e928c523052af0c64a997664c2acc9934aa5c954f00ba1d86286301e13e2e682dae8e006c52665bc637083795b91876090b3b23199364fc
+6062a9d919f462b2e5daff3a1aa368397bc496e3fa6b42bbc17fc37665dbed43ee6b1fff57425b87fbecb0ba02dcd2109c7f0bf7b3e19594f3b2d1d91614fd8aad2a833e538a90263b6b7e87f534e4dc907ad019d92ca41f056c99bc1e106cc3466c0ba6b04f2c82609e88f236d1109d1c18d033253126c843f5137e2d5090
+cf568d78e31ac03bfbd4c472dcd6dfdc24d97811c168a983af25f6b4a1add72fbde130c5400e517a2df5ce122eb79a225c4b6833842cb9467c8f9ed591cfafcdfdae91b8390dec86408afad08352e259cbe898f62ee66640647d017e16f2b15f898f51d488d91057080f660af85d313e7a089c497000bfbbc4d52fccbfa314
+9b22c7c520d15dfb8743c3ddbdfee9379ce5f3fac1af3dc1bad4c17f24bb87ad43c92e339128b95c42ba692a8a65858161562e4dcfc5e0ab661ba96341d000d71a0453d9e32fed21dbf05290fd7a6772730f5bbbcb680f31b566a0906f0a1f91d463a1f20103a6e1a422d49b578ad89a1b06648113a1c4470ff421475bc427
+7cd96cb5e75a33702dda7ce2d99511adcb4b08f8c5a99f775408d61226455234ea792ec345a34404c7e8b7db8524306bd6ba2000f85d5665c5414c734feb27e41e898b2b226ceb7c09c45fb97be9c8da15aa56009380589c42509a7e8f6574e930b20b69f5cfec97dc753a03e93c5ef69811a32f4b1d23a9fa09d615760e85
+bd9a553e07b04630a99b41a3c4080b90f176b7ef933d8e4113c8095b7672c0a2bfceef163775b2fc753f4293c39874d3b58ad3df54fcf04c073063306a313c63983b836c5454875166566d9d8679ff1f7316f21bf55e845330bb25d2a166f4527203e1c3d0d7925f08341ba23a49c01201d4a6e62efdc12a02b7d55d1ec231
+eec6b63e30405f3ce78aaeb2102c2527121906368ece6b0a912ebee20086e095b7f1e9deffaf29f7a94bc87702e2dfa7356b154a562598cdeaeb53783ced9f15e01924ffa370cf055a45a23deda4a4a561d66d46bc4d0c1d258f65a342cddf3b981768677c78f0b7f0f9937eb88e925ddd347e36fef8cb0f75316c64409212
+537af7c22d72c558cd94c52b5a8f8636e8f4097de899193556034a3aaa2ae72549b5a7622e7af2a72516282e7b0411f411da79ca95393d5ff9488a41dca4081f2a742f3d6678662cf590fff1a4241bc6cad596fb5a162dce70ba3501f24be6cf3c022e4b23f175664bc2d422019e5af0c1ecd823141a9046ca0b095e81e88f
+1ff817eb6a7cf04ef5f053361d954da1072336c22c6f8bc733cb54801c0bcb121511baaae113ce384b3245f141f4389c3df3a58922ee64574c5f75d74f76b11d21747c3c6578754dcb2b4451938c78f44957029f9f84e4204d0d5835ff585327e25061bfb78288fe6ece19ed731afcc42521d1050c0ae5ab768b6d3f73a5c8
+465c03ce4698e0ebb3d7ae9e4a21120f83c71f3fa6d080626ec03b93d39ff727fa467d95892e684c36725fa237b3fd09b282014a55c90bcace8f71af2296b9701c778a65b94252bf7c878d568732a261a57716fc7a15e11678dfdd83875cdf9ff7269e4982313a7dbccd9df2182e274b7f6bcd59d6502f3c1d6388aa70a19e
+dbd780f5bedf5e8a37a60987e0937ccdc4818ddd153eb7e4c0aef785d28234a58bc1bd6919391f396af1f64b08fe1c55992857c5dfab5fe40e96d51ffd64637f234248dea2df8991a54091ce147b8c5f595bb2cc52ae168311bb94d8621d01fad463bb04971f56c03e0ea5b7d2f5313cae80690f373bef77a24e9f95c487fd
+197e167061b2847394d1ef5afe8295efec99cf30ff9af53dbb8840cac09601aa48ba690bb33da784ccec09ea4aa5a8cc76e58281b484c4eba15ab80e640f49d1c6330a7c44ebad76a62e70a2a4b123d2f30ddc392327e642d2bc4372ee905259fe6e94b14667220a615d55bb054cafbcf58681e70226348dc17c8783322478
+81585d36e9f25b27d16d490062a6f4fa514d129002d1f74f6fbcd67b010d1529e8a389e61c16d4ee65aabc838588df52c6c019e5aa64021aeff593b8c12845c0c99b27f0b489453e9f41d4031e583aa9ae9321c46628e18e45a39f52f2e4be9053f498735e1dd686d2de1cb19bb2c00858a4bb2fb38079cfef3990f5c220cc
+8948ad96c91edc85443c6ed5e0677721f0826b078f322bb6a712a9ff06c9325384bb029ad30dd93af96a22dceb410be33ab0d9189a60eb5c762a0e93284fbaf6b70016217051b11cddf61bc5582b1f6d06c187fcf6f02010378cd10469d264fa7867e1443cbef0349c2b5959e4ceafc24fd83fa6243ac6df53c0186f4637fa
+56399bcf8fcabf87efcf951f39284074ff308a0bd43bdf4b7e7b3d846f90e21a4021aa513db14d818e2974d4d5d74380b89eee28ae0207aeda518eece871e37541a21164db6db0c7fea838345b3570bf7194963946aa9b8a8675d903c2d9feb22918e52647374018e19b6c58be78403cefc9be9501136a7a760a3dd6c58da6
+04ccde96d2e4807dd056ec112af1642830c2536b4c38d934c063757867a11bc8524bf33480be5e91b72ee66e3f4cff1bab803c30b265f771202ca0d25e499e93e1e36b3ede2d1712841faae096fcc635d2961e2ab193e61fa920ba9907f3c2968b103f925d8d0bec39492e3015d60d4c773a42d9cd038fe3b305bcc663e191
+38e0870180945598200497bd709e8707aa26cdf1a0c9812d60cf322c62d3c43afe8b3745273d6f01ad9871242d27fc1749b8705ecc94707149c51adab96d45f52b675a898bd629a2af3d960a9d003b8ffec63f52a51863c007f49fc666275bd0098ca5f12d6a961b2134d0d9e5c8982d9bf78b02e04c86700f232d4aeb7b8c
+d53690d9e2ee2397b725e7e436eb8913d4153d4d414695cae9e26e822f36874716a948da62ffab00827eb5e9aa60f6b34dd16e4e7dd42a0d9dc92bbeffdd921f4867f86566923dc1472c200e8b253e619072c613c6f3557cf49617001135de0b417342a389fb70f556dce6a3bdcccc641072fee406d83e3a85c1271d99c4a7
+23a3936d954e2a9567746695328ec626544aabfdcbca1268dd48b6e0e842ec4e196aac5e229f4b95dc12a82188bd53e443dc0d4a23b40cb13e883b67ea19411986f5bcb88cf29ffbba591046dbec9f47a6698fc04ef697f377523e99ae95ab7e64f9079333eb7e002782db3040e12606fe5e1698af41b829684e2f3bcc5ccb
+39a5b77f834496bafdfea0e8f8baba1090c5b115b97c3341bcb158199386a171598b34e137b1574f51f09c5bf785db93104d465c4d945c4652cdc36d59567b18d0907e89b98b3a67eecb7a1cb69558d9a2f286bb7ab1bdde51bfbd7efcd67ece3821d0bb5419ba7177739eee8d12680cb18ca1757fb438e5820c4bffa6f419
+162b0a0b7a843ca00e37ec3a4a4b04f4ed8e7f424b4a9d1456c6fe6287860ba088a47635ea731abb80cc67c3322cc67c551171219db9fe95e002ef4f54b3328ef32239e09b3ba1c972941231dc51cb0d5d8dd4b833d898a40048fa9cf12c2f73e7fd8871779431f0ffb6024c357a1cfafb5ae2a352f7cc78263846d13837f1
+58f38ad0cbabed46fd47c5719fff252d4ddc1b50fea6a5d8aa61a1a1c2da888e6bd22fbec6e3543de95a9dd209a2706c5430c5a7331577025079cd8e08b550712c7286a07189284e22ca946fbea2524a17e26b38148d2f77aa2e7f61434abaa9dd7ed442b430e636ae49ba382eaa6a4bcc70033f6b96e29339fcc95afe2f48
+0cd004f967c37174b3fe213af666aa615bda747723ccc90b1366750ff3f1b09d3d5e0b2e111ce46ae9cb279ca786663e2c20db407508f5a9053112f1cbe4f6c9aaf0f3dc6de9f4d3b535a64525b168854f37f7edc9174fc782bc933bf5d83e988ded92de45f3299d83088aec2ffa01ade2030177661d276715ce7ab7818c32
+a48c4ef1c6bfbedd338834293893c1717f1ef6466a6b16c5c0260f4a42a9785868999167774a4df80df627564bc3e33a7495ab3b8b2a11c929420bea1830002de2f6db17a1130b75eec1ed2a74191676dab58c68bf16a8fc0457621a2669ea1e7acb4bf8adbc2289c086f47f1e01351653fc5629f146ea101fa72015552958
+7fa014fbf31f02e5844242e406d71ab3b06c71ce3c1207bd2081afcf58c3dab9e39ebd87ebb6e0db0ab6f81da96a20110af0e56b45f1463ac3120db679ea2eda282c339220031c93fb244eb1d73a405b8de455700071a1a25400d42785dc6b8bff374163356ede39c4efa063298ced265eb8372569da1e2e325e5447d10b94
+acc11caf5089cfc95ffac6cf7aab564ed58d35f1a6b2e4046a186cd831a1827a8913b6b6369ba327683b080f4884456cad8fae0773c3e2718099436c684188683338e7b001ecf5ca61e0edda0e2e95550f5f8902092a651dd429312a1bf4ee918e2fa21454dd7329dc99e039b33e04759352db0380cbdc986906aa16ab9fe7
+7d74103970722a22e130c1f4585ba9ad6b619c60612aff65915e5fb8831fba02032d33addabde16415933ba05b1daeb3aa34fa2b03f1055e3a378eafee5d8614a778b4e6c6e8d25d900b1e2552c6513d074b398abc6ec23dd9c302912452332bbe524688d7a2881196a499726792c493c5e3f5f52de45e338a5dd5a5f85463
+630434e841b81634460a830d5e7f00ecd2df1fd289e8e15bd1b2222670be241199a8e62127631639e76855b90b438d5253884f4cc6cf425ecb8f6e41c39e2918975d603d7e5922ef8bb3bbec384cdd1a1a937d247cd9a6f64c6ab9a408035a16d38dd93f2bf7ec9ca002687e302d0bc5576603e21c214b787e16f94dd95b45
+cf1ac5bfa8043280edcf2612f27fc933ea521edff0a2cb7c7ba103ea444e0bc28909eb0f258f084d4dfe1149da6523a83616cbe90cff7af60603cb8a1c4ed5eddd796e2a2e10f9462b48f90fe7e493330cd308e3815e7b140ad562d82c8dd1e72ec7e782691a2816197fd605098edab5dcebb16f1649c27cb0addd69862efb
+52e3dcd0a497fbd2873f204c48236b96175c760c432d5e275c8c634612d2e07cbceea765bfe0c54dbde6d31343bcfbb7adb32163228cf43d9ca6ee5cbb81edfa30c1da85febbf19672043daf93e6923f0ae7dc0286819445c7f327a20388290488eb04f47762919675592510fe299f813804e2b68a22b62776a2424c04abde
+79876d5b041f903bbe92c88902563ad910ea7f3df74a17174b186b4bc5b12b7880853478a5b6540281b971ffc8b0ba2f6869ee528cffb1b984b036a6a3793e42973445428f25253dd251bb71a5be536220cf3ff8677b6198fc5643d623820df45f31448f1c959bdbeb7081bf5ac582b08dd28909aa1def6360608f2b4aadf7
+7b9a92c20a86ccd50579c3162616231da3b27336a0d3e8d94907c09b1f73c46cf2145ad44606248988c17727a1067833f3eac3dfaafc1ea7c64b5cd4762a87cdecac4d2787debd03897ccb467eac59708339e11e9cb1961d3d254e6a6ab7722822b59d342a2e79e030f45ac2a3890cc7e2a95abcd3e7daa2f4cdc5c3246148
+1e5acb93655df9e8e538c14feab325016bd5d54fb767331cbbec874268bfd8faac9eb0a46c1501c81a4039181337df1f5d11294226bba2976796262a82f335440dd28687c166b78398305e1c73d0513c4aa0387d20461bb69bccb1a4ac804cdeabe6ac2787f6d7252b1b69e2bcc8a4adfdbaddbdc454e896c489989d47095f
+cced9823c951938a9d962debe96473d9e4447b761e69e486be14a447e5e899061b6463a9733fd5d483016456954bcff2f7eebc48f934d7ec4ccb133e19b7528c371f85bc0aab2c33464843cc7bcfd34eadefa744bffadc9d7eaa246bad45616d9340a8bc72a2a75911c866974e1306e13cd618f770092d81e8c590944ddd0f
+f482d24fd677dc8b22ca4c08b0fe423d0931382938a40b79c13fceb09e6389669ea69d6268a2d40ec37b5fad440c49904d9f09df089e5c173ea5943e676274e69eb0da19a46de72249bb6b9af96ef17b509e4a71b531ae45d89608d14937d68f8f9d0320919bf78c58f8e65fa4c5c21dba0546c6836c117d58dccceb7e9b40
+e363866482ba02eb7ab974656af5d6cc97ce1b6d08c20596434f49183a6a232c339b477e5dbf2bf03be77a43646ee958c40d4b7ed6f7aaf6258b3d046dcc1379b1a52adc89bb768939f9ea57cde21dcba5e859f960cf8ce7da2b30f671d8bd623588e5cd3b99220ec66f881f99e9d71db48ac4eaab96bd93d1176399dd1ac8
+dfcc5ba4f0010fd576e236a4306a4fd694aab6c881b7ddd00e6f0c83fd02f43d011f48d443572c0abdf7f5c90700998899103f64f84a096be5a12e1d44734fdf15de9e59bfefec1c4116cbb97711f518d39e35f067809d88f563952d5558757b2bd5fe145b8fd6fcb095dcdf7c4bc3f5b98b2d0e79f5f1d967c36a9b865be1
+356e91e3afa02cad97bbc52ff6e1dce666469e72864105ff51c62c9be04ff17330f4c09572376ce69601f488a50775dbdde2a9a5eee389b654ef1aa48bfd5b5b26127ca482d88247b0eb260a802c87a9cef4347fb2d041f8404997de3145dbe722264da369f5b3eb837df9f8bf0b283a05590aa4eea782c4ee5097f415431b
+69c3eeee0e41b579df3eae3c557c19b10e952d5ed87acf5b804aa11030159fbdfa01dbd7ba84eca8100250e4c55b191e3b529e6dce055d49e6bf1ca48fff4e28c5255b4323518e8775df0efb5370b6d0c5980e3963d511b2f08aa1ad9e0f2727fb7f43cf8806f33f6af01a4f13063281323e008497cf1da4b7eb772f7eda1e
+a059cd3ecd558c03f8a808d7be311f8088aeb5605510671a8d03157e1137858a0faeed64b251a7c96549d830fb59c8c1268c0c48b1ea8ad0f5295c285bf8420167cc5da484b8e200af03d615764aee51f8768a0cd123928f1b3f3e91a46f5130b000176f520cd3f7d48378882578810a7c494d840272b2243e2ca830fa9195
+7bf05deb8963a12991ad48db5f07f5caa61d6aa8e9f9ed895f9734cf9cfc01882d03c85a9ff3963f67d489640a2b989133c7cb307d5cfec8f31f6e35c87292410b3d1f301fd5adb11e33e2f2029c5e3dc0484b1d88ea400d7fa461146135ffa5f1824e8a57a986b53ea059b3c8998373e2673968ca99f89d46eff589806c12
+b706be71c1db78f29444608a0b886b8a59df8e2271205f0e008b96ef616a239492e0108687ad56b4314b888d4dfab64ccebe5351ec3556b8e3a2ccef716d809d7e23bd74d75ad6abde177933553322be0c1275e91982d19e15169ef293cfc447421b5641b00dfff942d73ee56f4e79a114138238d498c117ed72326bb96052
+8fb884d59c8d2e2e83296523f6061fa5be37a84d4f1bd4d88d2f27dd7d3fc04b1bac8f74dfcfd58eeff5dc8749a0f5981f854f7680a7c847c7742530dbd627829d96d0a6d3e4f7ba14dca3601ce354ed7c9d3f49ce07cee46c82da679153945115ab50a33d49da938395f29387b4d908f040739038e75b44f9f560d780a8c4
+8ceaf9d47cf592c447a567fd6634c7392ecf31091c34af2d7b31dd14070539989f11fd916e5dd02ddfa41f76e0ced99c785f0c8a1aa6e43cd26db4ed7a36ebe9ee2f958fe94f42b675e199c3b2e6e5f959f6acd00948de268e326535ce3b356b28d818e1c1644a7b649f13a81f3186a9dd95a30ec99d429ebe0e13119c1369
+42c023108721edcc376a6e1ba8380cb0ef9ffa8a00b13a0e74704e29a71902d9f33cbc56cc47b4d9fb96aba13009f0059b3c53f26aedea73f3346f0e809bbe904cccdc75c4228a6a9d3f56477903dc1dfc2fbb3426945620f94fae7e6af622c8444b8941a549acda534f9e0c125967aed7bd7c832cad33a6c57a0d8f539ca8
+00f84fd2c87618a003e94c88ed328b711206de3bee0124402f5574035fc7d3ddcb519ea0670392c12e476aff9f59e9b8569078e236c49afa100d58b8de81f2e4ed1bab63dcb0f2c180f6c60ea76782579c83f331eacb9cd75f912ea12ca6d49e4deb77ea81257dde8c5bcfc67d3bc115c55baece396a42eda8b8752f79f8a2
+9058a4dcd2f9e1188b4a36c00ba3a5a6e851424b86f95ae3f2d8765340143dc6663cb0bada459e0760a7a49ac621eb1799c51a8cd7d76bb9cd2f679de03b06022563edf64abed6eeff3780c20e965ea2111e7e7fe11f75864a3fc54233ecfc518c8cb17f0183873e66625be2feb0ecb79cb834a6ac7945c9068712bd9a335a
+6f195ec6e712764bee0edbf50bca12c98e87539c8b17800f29b115fb8d58fc4b11b0837dfa9f62b73e9ddf08033d0a15dca7d3eb21a0851179755bdba76ae61e6bdc17882213915fc865bc8c44c5c9ff3ef1ee7611dfc261f582c6f1092bcdb4d22c3c8a7a41e48100b1b76a5657b013a9e4691108bd08997d3a808af31445
+5d78fec3ad7b712b5f8e780ba22de1eaad1520ec63d092d44cd822760cff8ffde07c4a74013eec441d4309f5d3d1f8f6921735a1a3f2f491eda6c72b78ff3ad2ca83bf992a9fb90527eb3e5346a41e8560b9c285bd32bbd2bb0b2434bd4f7c1327db96f9687c8c7ea6888bcb5737ce1e4d20660337f0731869f34e101404d5
+214d56075a7ebea66dd483314691c64bd5143b2499f78983bf152ed573f5747c1ec8fdcd5c4b38cb20eca2985076d9920dae4bb9a806115106108b329bc3f524c22d89608080677593d2073ee5e2786c7bf858fe688cd272d42b0be8b8eba87ff96725f0c1725bdee0ef988abb27c200c9dbd33d471f4717744ecb928b9279
+eb98bd03d1a569435aeeb2996916f116c031b0bd5457c30d3da7ca79e85071a4d91c885a4092c1622e631fe30a2a06de75f02f185ad726fb1612a3bede5e46e01268aadf558dd34f3bda7efb6d9e499d7e113efd536d0482eb6b8c5594396a75af2c2f9e0387661ac30dbb10d88d76c092e68bb80688c975fa1a9a9a12f225
+5711514cbd91aeca9cc10166894cfceb7339fcd34f7e2521485b96d7c29c0f42321d09b24f6f1e462ac7e49a98e3a66e63e8a71f37c4ba4786ee6f9eaf559655fa419bc584883ba9ff033bd2861e028d81664b89df81019faf15a555e37e551b45da582c99362bcc39f03709aa0fae6f5bd36c856e79d0fe920601c798314d
+2058884895e84a14a124daca885fbb0a79559d909dcec4696cecd393a4a3a6aab414af6f7b5eae63122c373065593b666290e5dd93836f7f9828ddbeb6479aea667d78bb4674af1296a55747f711cfe5b9b90e5191242153922b58da07f768cd9489cc60973882410d43d2c27d7b3b2b23a3e93039db6f4c55b057ffd10e7f
+3c02a9f005d1dd464d06c8bc8dffb311e67ad0103fd5356c7a962540a37ca57e52d3f2b279f4a53d28670c80696ed53bb9dd15d9798563ac88b47af1f6783589df59642e31b047413d5b45cccc5b4c384b05530880b94db8b26a5636938172a121d284a8edd61414a4a62f4a6c97d946306525393e25ef97a6cbab7e0379e7
+aa8b16f449445c3bdc76ff117bbf29420d5c8149d61559888336db54a0b0be97b0556844a762cf9f214edfa472db4633e7ff124fdddc9ed01d063cb0cc9a9a00f070077b6bd40c0aeb42eb7c76ed2e286618563d5a9985734264c875b4beff341766edb6d2c91e5872b3114f2266c64edcc03336c0c1870a25edba86f5b1e9
+4831baaefe75c6726bde39cf57551d4f71248d20ca5b78ecf22616a5f769302eb5e751a8e4a11c6640f28c8c78d57132e974a868028eb1508698fdb3690da78f4622074720f9b45cb61649b23dc976b63261bbcba2a679f8b46669fae207d39e131be1d8788261f693bca225b4e26cf9bad7746ee7d540e52a4ada888d58f1
+db373e7152b8a9ad861dc7efb71ce0eabbc7ce577e7e562531df032fa713bea60c1f57c1f9fc43f22a4528abd17144311e5df980591d082a488e75f1379314ba2fc6f21dba4a285354e54e1321aa21db86561eecf7fc5c53b3a157e9f069ac687f7c11ea9a35b108df5e1ed6472e8d7e4c0867ad8283052fe1ac4f0e5de2e9
+abc5d8d17040a98a2c9c535a654ffa3dbc5d94113894c3be63e6a0eaa78b944caf2670c53c820b1a687de8a54b998df371d11f8b46b1c4e348bead1a66ce23707e02f86a34c1258fdde754b564aae79cd4536cda7ac5b3ae17c82c1af518d2d406c38b1defe8404a40c762b7f38b25037dda6b0784131d4da2735c6118d1b4
+de068dcdcfe2243791dc30d657f3f9ae0859e458be107a96204096fa5427dc763542cf1e87f994d0c67cba07fa26b605fd1f27fafd1dd4ef1ec6f1d76930b121c4e2791a914650bedc4cbed048f8a877a048d20ede5adcc0b87d7f25ea5a94ec0f8dc8eca2307ab2a0d98a8947bf8b5be2d793b2b6183ec35db38c1d3e5f40
+78e4d5178ab8fa36cf239e561c81b95a46655f11a43ceebe3ac762344a551c4e6358b943cb667a4b2de4f9f7f12f8d7f1b655076cf77ec115796d0470ff54d26db7e155839232a54898766fa03888b378b2e600fbad5613f0b09a9d07c1965c13734f5c678b2c236b4ef6cacd4e2b4dbabd69d5df78450ae14e6311a37de72
+ad54be4ff1f0650690808d7f699e4ed39ee0d2752bbd07dffe96815754a0babbbc8ac0a4cf3f2452f92ce72a2570184f794a6c932fa3849b782c2a0bf9e6e4b0cd0e301a5306a191ac79c9d709f21541cbb35154d3ae8aa8ac721181bd5032c215bf834585d7df29811707c500fc8240cec005ded2190d4e497267bc1b57ad
+ce81880c49ce082d47d0d22a2bb7748653f2473e20790697880c4a3a34c3444ed12382d7f2da965d50e18145a9c4792a819fcd16ede8ffc9de2ce783e8d9600113dbfcc05210df22eaf4fbded7d3f6153d4a7b8a271520b8e4ee91457250bc82b3dba929f09a95bf93798a975ab5d11f4a24b77917dba13783b1456a84bb63
+6d86df0b0c631ce1c56bfd80c85a8f92f37b3f8aee7d4cb0ec3ac88b89a34bc2293800a7a56591e4f88949de7ca2d359a8b765b9c8f0292e5008362735b803d54738350ee653bd7b2fe2902c2a90f5daead13e95b4cb72511bebb45b240435458653930362510822e0744eba54ceaf9d2d7039fb01b56e6b8aa3da917d6e8a
+6773d86b61874e30ffbc61f28eb8434595618ea6d4fa941ff2ce7a80ff8edc1f5fba4554f942fbd2403b954a8cd71b6a65bd7d396e76d83ad2cfa48041a33841fd3bc29cfbe3c69c77b8ef2598a96934d3ec7453a2e728b04f6671db5494bdf4c364e7d8d356acad2d1ed7e2efa6a67a76542b614ac0f791b753a2b1a2c755
+e54b3333ba72b932b6bb843bcbd14fe4df9b19eb9eb33a5393fe5a0903b3dcc125784f09f2cbeea3f92577bbae102155e090fcf2be95a24a2b0b509581c891c20195b82af9d707f30e4850b4b270990980628b007af7cff19577cc7e5cad2c069d0fe2da4e0dc4088309890b215927353266d201b829c2be7ae637148ba502
+adf9d2d689a99a9d43d7aa6b82683c5b13cbb41229f74d4963b828c9bd861e65059803505c10cc52ee2e669975fd7c6e27bcaf98693d8790d1b659ea307c10ab46196e7868ae642880673699addbb1991ec395d00e86e48c0b88ffc715a7c59e4ea45f6898f075d8480b4baa4cc7d154e2d239b850783b9719d21674e563af
+40d77a3dd00798be4df1c00d6ee23c4f1c592af7e3611f6d650b438a96d583b68336ba6291fdf189f591b66d5805345238fd71d3b119abaf891cc9e999287e2f754b7f4e0cac0aab57c942e75b1ec9f49de5192403a5e770fb5b370c74f239dc546e56953d068ad94b51fef63bc6dd635a9d49b767fb9fa52d6eb64fda3362
+6f0e9e6c348c17167384430531af663b57b61b42aad800c28e1edfd5511dfc8275a0a6b50a9b2a9083d5e78fb70fa29708444365a0ce9d668616fd44a6c50f419c72123b92faf44b6426af0e4a167b901c79f11208eb03fbb0858fb807bd5d92dc2984f4085931dba69152641c8893918e71274fdb9888798887481a9c536c
+1270aec13cbd8c3c76345188cc81113ec8590a8cae306d799b02b20000d68b3313502bcc880a7d1704a286fd394f588f995f1aa461e88def58e23be9b129b83b2e8c6eb9e45618b274a4519cb48ed1bcf737d7fb55e203c2c60b1a073d31ccce703cf59716bc46a145125a92be1ea039b6b32440b7efe1f784f6bf6746ab20
+cf3e0af7267c4b5c5c6ad8ec418da49f71ef9c4c14156d216228d0805fd1965e5e1b100922fc025329f6f3f3dbec35b47c77b8e38769fd6b9597395a72bf613488776482b9dfc35777b9f6886aa9ac573b4de7be7ace63f58add64a0a82c179cbed927e8802c8a93f0d6dedf18d89be10b396961832c4978fa7b1c78344ab0
+32d3ff72e4840f502c26fd6e5912223184098fecc3f2efccd48b0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+%%BeginFont: Times-Italic
+%!PS-AdobeFont-1.0: Times-Italic 002.000
%%CreationDate: Thu May  1 14:20:19 1997
%%VMusage: 37530 44422
%% The digitally encoded machine readable software for producing the 
%% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 
%% 1997 Adobe Systems. All Rights Reserved. This software is the property of 
%% Adobe Systems Incorporated and its licensors, and may not be reproduced, 
%% used,  displayed, modified, disclosed or transferred without the express  
%% written approval of Adobe.  The digitally encoded machine readable 
%% outline data for producing the Typefaces licensed to you is copyrighted (c) 
%% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. 
%% This data is the property of Linotype-Hell AG and/or its subsidiaries and 
%% may not be reproduced, used, displayed, modified, disclosed or  transferred 
%% without the express written approval of Linotype-Hell AG  and/or its 
%% subsidiaries. 
%% Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
11 dict begin
/FontInfo 10 dict dup begin
/version (002.000) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def
/Copyright ( The digitally encoded machine readable software for producing the
 Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990,
 1993, 1997 Adobe Systems.
 All Rights Reserved. This software is the property of Adobe Systems
 Incorporated and its licensors, and may not be reproduced, used, 
 displayed, modified, disclosed or transferred without the express 
 written approval of Adobe.
 
 The digitally encoded machine readable outline data for producing
 the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell
 AG and/or its subsidiaries. All Rights Reserved.
 This data is the property of Linotype-Hell AG and/or its subsidiaries
 and may not be reproduced, used, displayed, modified, disclosed or 
 transferred without the express written approval of Linotype-Hell AG 
 and/or its subsidiaries. ) readonly def
/FullName (Times Italic) readonly def
/FamilyName (Times) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle -15.5 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Times-Italic def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 43148 def
/FontBBox{-169 -217 1010 883}readonly def
currentdict end
currentfile eexec
a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e
+7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7
+353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5
+cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1
+fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380
+1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7
+f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529
+e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7
+7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc
+30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79
+2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae
+a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa
+72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208
+cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e
+935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd
+8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2
+78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6
+667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa
+458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a
+64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697
+60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da
+b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60
+b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff
+2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2
+cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6
+5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c
+736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4
+92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d
+91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63
+e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0
+77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3
+447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e
+a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335
+ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832
+1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378
+501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e
+c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840
+0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20
+474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66
+4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8
+1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70
+2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922
+27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2
+78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47
+3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924
+0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4
+8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d
+12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c
+748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e
+b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7
+1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107
+28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0
+a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e
+12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c
+b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e
+8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738
+268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6
+8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31
+2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d
+c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f
+fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814
+17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a
+f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77
+da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0
+f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca
+d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0
+1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb
+380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7
+2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3
+db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21
+fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de
+5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8
+d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a
+697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23
+ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07
+a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb
+b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520
+61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee
+8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6
+6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c
+2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2
+7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c
+73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2
+773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4
+d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1
+c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219
+3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722
+c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7
+54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370
+58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165
+0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70
+e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a
+d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2
+e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0
+af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f
+c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640
+a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec
+47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d
+1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b
+882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855
+f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa
+64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911
+c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33
+f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3
+d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509
+9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb
+31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19
+42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45
+27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72
+c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34
+f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1
+481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86
+04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b
+837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae
+cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e
+cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e
+cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e
+ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5
+6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826
+a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753
+10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596
+0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8
+58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9
+e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6
+5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783
+8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb
+c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee
+b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6
+e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130
+a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e
+bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb
+fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f
+76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb
+8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99
+604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a
+9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93
+237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42
+cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d
+8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41
+a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290
+572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223
+b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26
+44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f
+7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1
+41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09
+730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f
+3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2
+cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823
+6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d
+cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400
+6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd
+5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3
+637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c
+a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419
+9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909
+e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42
+a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb
+428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a
+d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca
+638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e
+423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de
+10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4
+645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693
+5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa
+118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0
+9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19
+d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a
+3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b
+f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418
+1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec
+5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1
+5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13
+c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1
+19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62
+09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8
+0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc
+5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835
+b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f
+1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239
+bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65
+0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845
+ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5
+6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827
+e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c
+8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2
+079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976
+abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29
+de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3
+d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9
+a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6
+953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc
+1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8
+4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28
+f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6
+5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3
+d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be
+4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188
+0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3
+1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02
+b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79
+4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71
+50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411
+aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6
+1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1
+e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6
+f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795
+ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b
+d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e
+db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef
+b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669
+267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54
+73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967
+486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d
+7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058
+7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5
+b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7
+cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21
+9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895
+06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4
+f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3
+139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d
+3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869
+25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2
+27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5
+a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6
+ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46
+a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e
+e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019
+cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6
+29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca
+15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536
+c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1
+114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1
+1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702
+01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b
+7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9
+2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f
+45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083
+97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d
+69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057
+e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4
+9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592
+8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94
+222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445
+25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2
+bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0
+2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c
+bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a
+8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4
+9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6
+6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5
+d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642
+a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955
+eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308
+109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d
+3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd
+48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784
+5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad
+7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e
+5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1
+05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748
+0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858
+25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4
+2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c
+b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e
+744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96
+6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2
+799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee
+42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857
+2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9
+a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd
+7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c
+e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c
+e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a
+d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124
+085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f
+a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd
+d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457
+a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67
+419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a
+fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd
+0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043
+436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019
+9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02
+92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058
+588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c
+e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095
+12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3
+43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59
+8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd
+4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52
+b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2
+0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266
+52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83
+b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392
+949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09
+4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0
+afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134
+9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984
+7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138
+c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283
+2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0
+dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035
+610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae
+0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30
+17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82
+3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27
+1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705
+2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb
+5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+setpacking
+%AI3_EndRider
+[
+39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis
+/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft
+/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark
+/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar
+168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring
+/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla
+/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave
+/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute
+/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde
+/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
+/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute
+/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex
+/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute
+/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Symbol Symbol
+[/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/exclam
+/universal
+/numbersign
+/existential
+/percent
+/ampersand
+/suchthat
+/parenleft
+/parenright
+/asteriskmath
+/plus
+/comma
+/minus
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+/congruent
+/Alpha
+/Beta
+/Chi
+/Delta
+/Epsilon
+/Phi
+/Gamma
+/Eta
+/Iota
+/theta1
+/Kappa
+/Lambda
+/Mu
+/Nu
+/Omicron
+/Pi
+/Theta
+/Rho
+/Sigma
+/Tau
+/Upsilon
+/sigma1
+/Omega
+/Xi
+/Psi
+/Zeta
+/bracketleft
+/therefore
+/bracketright
+/perpendicular
+/underscore
+/radicalex
+/alpha
+/beta
+/chi
+/delta
+/epsilon
+/phi
+/gamma
+/eta
+/iota
+/phi1
+/kappa
+/lambda
+/mu
+/nu
+/omicron
+/pi
+/theta
+/rho
+/sigma
+/tau
+/upsilon
+/omega1
+/omega
+/xi
+/psi
+/zeta
+/braceleft
+/bar
+/braceright
+/similar
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/Euro
+/Upsilon1
+/minute
+/lessequal
+/fraction
+/infinity
+/florin
+/club
+/diamond
+/heart
+/spade
+/arrowboth
+/arrowleft
+/arrowup
+/arrowright
+/arrowdown
+/degree
+/plusminus
+/second
+/greaterequal
+/multiply
+/proportional
+/partialdiff
+/bullet
+/divide
+/notequal
+/equivalence
+/approxequal
+/ellipsis
+/arrowvertex
+/arrowhorizex
+/carriagereturn
+/aleph
+/Ifraktur
+/Rfraktur
+/weierstrass
+/circlemultiply
+/circleplus
+/emptyset
+/intersection
+/union
+/propersuperset
+/reflexsuperset
+/notsubset
+/propersubset
+/reflexsubset
+/element
+/notelement
+/angle
+/gradient
+/registerserif
+/copyrightserif
+/trademarkserif
+/product
+/radical
+/dotmath
+/logicalnot
+/logicaland
+/logicalor
+/arrowdblboth
+/arrowdblleft
+/arrowdblup
+/arrowdblright
+/arrowdbldown
+/lozenge
+/angleleft
+/registersans
+/copyrightsans
+/trademarksans
+/summation
+/parenlefttp
+/parenleftex
+/parenleftbt
+/bracketlefttp
+/bracketleftex
+/bracketleftbt
+/bracelefttp
+/braceleftmid
+/braceleftbt
+/braceex
+/.notdef
+/angleright
+/integral
+/integraltp
+/integralex
+/integralbt
+/parenrighttp
+/parenrightex
+/parenrightbt
+/bracketrighttp
+/bracketrightex
+/bracketrightbt
+/bracerighttp
+/bracerightmid
+/bracerightbt
+/.notdef
+/_Symbol/Symbol 0 0 0 TZ
%AI3_EndEncoding AdobeType
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Times-Italic Times-Italic
+[/_Times-Italic/Times-Italic 0 0 1 TZ
%AI3_EndEncoding AdobeType
+%AI5_Begin_NonPrinting
+Np
+9 Bn
+%AI5_BeginGradient: (Black, White Radial)
+(Black, White Radial) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 1 0 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Nova)
+(Nova) 1 3 Bd
+[
+<
+08070707060606050504030303030303030404050506060606070707070707070707070707070706
+06060505040403030202020202020304040405050606060606070707070707070707070707060606
+06050504040404040404040404050505050606060607070707070707070707070707070606060606
+05050505050505050505050505050505060606060606070707070707070707070707070706060606
+06060505050505050505050505050505050505050505060606060606060707070707070707070707
+07070706060606060606060505050505050404040404040404040404040404040404040505050505
+05050506060606060606060606060606060606060606060606060606060606060606060606060606
+06060606060606060606060606050505050505050505050505050505050505050504040404040404
+04040404040404040404040404040404040404040404040404040404040303030303030303030303
+0303030303030303
+>
+<
+0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223
+24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849
+4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D
+6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D
+8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC
+ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8
+C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2
+E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0
+F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5
+F5F5F5F5F5F5F5F5
+>
+0.9137
+0
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9
+D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4
+B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291
+908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171
+706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353
+525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938
+373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121
+20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E
+0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101
+0101010000000000
+>
+0
+4 %_Br
+<
+030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20
+20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A
+3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163
+6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3
+A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF
+>
+<
+F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC
+ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7
+F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC
+ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7
+E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6
+>
+<
+E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8
+C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281
+7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241
+3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A
+1A18171515131210100F0D0C0B0A0807080707070707
+>
+<
+00000000010101010101010101020202020202020303030303030404040404040505050505050606
+060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718
+18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E
+1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606
+06060505050404030403030202010101010101010101
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A
+>
+<
+00000000000101010101010101010202020202020202020303030303030303030404040404040404
+04050505050505050505060606060606060606070707070707070707080808080808080808090909
+0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D
+0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112
+12121212121212121313131313131313131414141414
+>
+<
+000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D
+1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A
+3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758
+595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576
+76777879797A7B7C7C7D7E7F7F808182828384858586
+>
+4 %_Br
+[
+0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs
+0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (RGB Rainbow)
+(RGB Rainbow) 0 6 Bd
+[
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+[
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Steel Bar II)
+(Steel Bar II) 0 3 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+0
+0
+0
+<
+FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391
+8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250
+4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827
+272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F
+0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404
+04040403030303030302020202020202020202020101010101010101010101010100000000000000
+00000000000000000000000000000000
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 40.45 %_Bs
+0 0 0 1 0 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Sunrise)
+(Sunrise) 0 6 Bd
+[
+<
+EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7
+F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4
+E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC
+DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1
+>
+<
+35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303
+02010100000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+1
+<
+131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+<
+00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D
+0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A
+1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728
+28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333
+>
+<
+666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D
+8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5
+B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD
+DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F
+505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576
+7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E
+9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7
+C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8
+E9E9EAEAEAEBEBEBECECECECEDEDEDEE
+>
+<
+05050506060606060706070707070708080808080808080808080908090809090909090909090909
+090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B
+0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313
+13141314131414141414141514141414151414141515151515161616161617171717171818181918
+191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221
+2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A
+2B2D2C2E2D2F30303131323433353435
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7
+F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3
+F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB
+FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC
+FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000001010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010202020202020202020202020202
+02020202020203030303030303030303030303030303030303030303030304040404040404040404
+04040404040404040404040504050405050505050505050505050505050505060505050606060606
+06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C
+0D0D0D0E0E0E0F0F0F0F101111121213
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8
+E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0
+CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8
+B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0
+9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888
+878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070
+6F6E6E6D6D6C6B6B6A6A696868676766
+>
+0
+4 %_Br
+<
+07070707070707070606060605050504040404040404040405050606060607070707070707070707
+07060606060505040404030202020203030404050506060607070707070707070707070707060606
+06050504040303030303030304050506060607070708
+>
+<
+64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C
+3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413
+121211100F0F0E0D0C0C0B0A0A090808070706060505
+>
+<
+F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4
+F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA
+E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9
+>
+<
+01010101010101010100000000000000000000000000000000010101010101010101010101010101
+01010101010000000000000000000000000000000000010101010101010101010101010100000000
+00000000000000000000000000000000000000000000
+>
+1
+<
+999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0
+C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9
+EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB
+DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5
+B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887
+878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B
+5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736
+3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120
+1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B
+0B0B0A0A0A0A0909090808080808080700
+>
+<
+2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222
+22222323232424242525252525252626262626262626262627272727272728282828282829292929
+2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232
+32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C
+3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849
+494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859
+595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262
+6263636363636363636464646464646400
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101010202020202030303030303030404040404040505
+05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D
+0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414
+14141415151515151515161616161616161717171717171616161616161616161616161515151414
+131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707
+06060606050505050404040404030303030303020202020202020101010101010101010101010101
+01010101010101010101010101010101FF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D
+4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273
+737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697
+9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9
+BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9
+DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6
+F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF
+>
+0.6
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2
+B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C
+8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968
+686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746
+454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726
+25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09
+0908070706060504040303020201010000
+>
+4 %_Br
+<
+EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3
+F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA
+EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4
+>
+<
+B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F
+7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442
+403F3D3C3A3837363534333231302E2D2B2A28272523
+>
+0
+0
+0
+<
+333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A
+5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283
+8485868788898A8B8C8D8E8F90919293949596979899
+>
+1
+4 %_Br
+[
+0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs
+0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs
+0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs
+0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs
+0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 13)
+(Unnamed gradient 13) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000001010101
+01010101010101010101010101010101010000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000FF
+>
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9
+D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6
+B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796
+9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A
+7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160
+5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A
+49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736
+3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626
+2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919
+19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F
+0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707
+07070706060606060606050505050505050504040404040404040403030303030303030303030202
+02020202020202020202010101010101010101010101010101010101010100000000000000000000
+000000000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9
+D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6
+B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796
+9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A
+7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160
+5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A
+49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736
+3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626
+2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919
+19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F
+0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707
+07070706060606060606050505050505050504040404040404040403030303030303030303030202
+02020202020202020202010101010101010101010101010101010101010100000000000000000000
+000000000000000000000000000000000000
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 28 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 2)
+(Unnamed gradient 2) 1 6 Bd
+[
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+[
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 37)
+(Unnamed gradient 37) 1 2 Bd
+[
+<
+C4C4C5C4C5C5C5C6C6C6C6C6C7C6C7C7C6C6C6C6C5C5C5C4C4C4C3C3C2C2C2C1C1C0C0BFBFBEBDBD
+BCBCBBBABAB9B9B8B7B7B5B5B4B2B2B1B1AFAFAEACACABABAAA9A8A7A7A6A6A4A3A3A2A2A1A0A09E
+9F9E9E9C9B9B9A9A9998989797959594939392929191908E8E8D8D8C8C8B89898888878785848483
+8281817F7E7E7D7C7B7B797977767674737272706E6E6D6C6A6A6968666564626260605E5D5C5A59
+575756565555545453525150504F4F4E4E4D4D4C4B4B4A4A49484847464645454444434343424242
+424141404040403F3F3F3F3E3E3E3D3D3D3D3C3C3B3B3B3B3A3A3A3A393938383838373736363636
+3535353534343333333332323232323131303130302F2F2F2F2E2E2E2D2D2D2D2C2C2C2B2B2A2A2A
+2A2A
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000101010101010101020303
+03040505060709090A0B0D0E0E101112121415161618191B1C1C1D1F20202123242426272828292B
+2C2C2D2F3030313233333536373738393A3A3B3D3E3E3F4041414243444546474848494A4B4B4C4D
+4E4E5051515254555658595B5A5C5D5E5F61626264666767696A6B6C6E6F7071737374767878797B
+7B7D7E7F80828383858686888A8A8B8D8D8E909192939595969798999B9B9C9D9E9FA0A0A2A3A4A5
+A6A6A8A9A9AAACACADADAFB0B0B1B2B2B4B5B5B6B6B8B9B9BABBBCBDBDBFBFC0C0C2C3C3C4C4C6C6
+C7C7
+>
+<
+0202020303030404050505060607070808090A0A0B0B0C0D0D0E0E0F101011121313141415161717
+18181A1A1B1C1C1E1E1F2021222324252526262728292A2B2C2D2E2F30313233343436373738393A
+3B3C3D3E3F40404242434243454546474849494A4B4C4D4D4E4F5050515253545454555556575858
+595A5B5B5C5D5E5F5F616160616263636465666666686869696B6A6B6B6C6D6D6E6F707071727372
+727475767778797A7C7D7E7D7F808183848586878988898B8C8D8F9091929494959798999A9C9D9F
+9FA0A2A3A5A6A8A9A9AAACAEAFB1B2B2B4B5B7B8BABBBBBDBEC0C1C3C4C4C6C7C9CACBCBCDCED0D1
+D3D3D4D5D7D8D8DADBDDDEDEDFE1E2E4E3E5E6E7E7E9EAEBEBECEDEEEEEEEFEFF0F0F0F1F1F2F2F2
+F2F3
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000101010101010102020202020303030304040404050505050606060607070708080909090A
+0A0A0B0B0C0C0D0D0E0E0F0F101011121213131415151617181819191A1B1B1C1D1E1E1F20212222
+23242424242424242424242424242424242424242424242423242323232323232322222121212120
+201F1F1F1F1E1E1D1D1D1D1C1B1B1B1B1A1A19191919181817171717161616161515151514141414
+13131313121212121111111110101010100F0F0F0F0E0E0E0E0D0D0D0D0D0D0D0C0C0C0C0C0B0B0B
+0B0B
+>
+<
+33343435353637373838393A3A3B3B3C3D3D3E3E3F40404141424343444445464647474848494A4A
+4B4B4C4D4D4E4E4F50505151525353545455555657575858595A5A5B5B5C5C5D5E5E5F5F60616162
+626363646565666667686869696A6A6B6C6C6D6D6E6E6F7070717172727374747575767677787879
+797A7A7B7C7C7D7D7E7E7F7F80818182828383848585868687878888898A8A8B8B8C8C8D8D8E8F8F
+909091919292939394959596969797989899999A9B9B9C9C9D9D9E9E9F9FA0A0A1A2A2A3A3A4A4A5
+A5A6A6A7A7A8A8A9A9AAAAABACACADADAEAEAFAFB0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7B8B8B9B9
+BABABBBBBCBCBDBDBEBEBFBFC0C0C0C1C1C2C2C3C3C4C4C5C5C6C6C6C7C7C8C8C9C9C9CACACBCBCB
+CCCC
+>
+<
+FFFEFDFDFCFBFAF9F9F8F7F6F5F5F4F3F2F1F1F0EFEEEDEDECEBEAE9E9E8E7E6E6E5E4E3E2E2E1E0
+DFDEDEDDDCDBDADAD9D8D7D7D6D5D4D3D3D2D1D0CFCFCECDCCCCCBCAC9C8C8C7C6C5C5C4C3C2C1C1
+C0BFBEBEBDBCBBBBBAB9B8B7B7B6B5B4B4B3B2B1B1B0AFAEADADACABAAAAA9A8A7A7A6A5A4A4A3A2
+A1A1A09F9E9E9D9C9B9B9A999898979695959493929291908F8F8E8D8C8C8B8A8989888786868584
+8383828181807F7E7E7D7C7B7B7A79797877767675747373727171706F6E6E6D6C6C6B6A69696867
+67666565646362626160605F5E5E5D5C5C5B5A5959585757565555545353525151504F4F4E4D4D4C
+4B4B4A494948474746464544444342424140403F3F3E3D3D3C3C3B3A3A3939383837363635353434
+3333
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1
+B0AFAEADACABAAA9A8A7A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796959493929191908F8E8D8C8B
+8A89888786858483828180807F7E7D7C7B7A79787776757473727271706F6E6D6C6B6A6968676666
+6564636261605F5E5D5C5B5B5A59585756555453525251504F4E4D4C4B4A49494847464544434241
+41403F3E3D3C3B3A3A39383736353434333231302F2E2E2D2C2B2A2928282726252423232221201F
+1E1E1D1C1B1A1A1918171616151413121211100F0F0E0D0C0C0B0A09090807060605040403020201
+0100
+>
+4 %_Br
+[
+0.7686 0 0.0078 0 0.2 1 1 2 46.6292 0.5618 %_Bs
+0.1647 0.7804 0.9529 0.0431 0.8 0.2 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (White, Black)
+(White, Black) 0 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Azure Rings)
+(Azure Rings) 22.5 22.5 58.5 58.5 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1.75 w 4 M []0 d
0 XR
+40.5 58.5 m
+40.5 48.5586 32.4409 40.5 22.5 40.5 c
+12.5591 40.5 4.5 48.5586 4.5 58.5 c
+4.5 68.4414 12.5591 76.5 22.5 76.5 c
+32.4409 76.5 40.5 68.4414 40.5 58.5 c
+s
40.5 22.5 m
+40.5 12.5586 32.4409 4.5 22.5 4.5 c
+12.5591 4.5 4.5 12.5586 4.5 22.5 c
+4.5 32.4414 12.5591 40.5 22.5 40.5 c
+32.4409 40.5 40.5 32.4414 40.5 22.5 c
+s
40.5 40.5 m
+40.5 30.5586 32.4409 22.5 22.5 22.5 c
+12.5591 22.5 4.5 30.5586 4.5 40.5 c
+4.5 50.4414 12.5591 58.5 22.5 58.5 c
+32.4409 58.5 40.5 50.4414 40.5 40.5 c
+s
58.5 58.5 m
+58.5 48.5586 50.4409 40.5 40.5 40.5 c
+30.5591 40.5 22.5 48.5586 22.5 58.5 c
+22.5 68.4414 30.5591 76.5 40.5 76.5 c
+50.4409 76.5 58.5 68.4414 58.5 58.5 c
+s
58.5 22.5 m
+58.5 12.5586 50.4409 4.5 40.5 4.5 c
+30.5591 4.5 22.5 12.5586 22.5 22.5 c
+22.5 32.4414 30.5591 40.5 40.5 40.5 c
+50.4409 40.5 58.5 32.4414 58.5 22.5 c
+s
58.5 40.5 m
+58.5 30.5586 50.4409 22.5 40.5 22.5 c
+30.5591 22.5 22.5 30.5586 22.5 40.5 c
+22.5 50.4414 30.5591 58.5 40.5 58.5 c
+50.4409 58.5 58.5 50.4414 58.5 40.5 c
+s
76.5 58.5 m
+76.5 48.5586 68.4409 40.5 58.5 40.5 c
+48.5591 40.5 40.5 48.5586 40.5 58.5 c
+40.5 68.4414 48.5591 76.5 58.5 76.5 c
+68.4409 76.5 76.5 68.4414 76.5 58.5 c
+s
76.5 22.5 m
+76.5 12.5586 68.4409 4.5 58.5 4.5 c
+48.5591 4.5 40.5 12.5586 40.5 22.5 c
+40.5 32.4414 48.5591 40.5 58.5 40.5 c
+68.4409 40.5 76.5 32.4414 76.5 22.5 c
+s
76.5 40.5 m
+76.5 30.5586 68.4409 22.5 58.5 22.5 c
+48.5591 22.5 40.5 30.5586 40.5 40.5 c
+40.5 50.4414 48.5591 58.5 58.5 58.5 c
+68.4409 58.5 76.5 50.4414 76.5 40.5 c
+s
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Blue Tablecloth)
+(Blue Tablecloth) 0 0 12 12 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 6 m
+0 6 L
+0 12 L
+6 12 L
+6 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 6 m
+6 6 L
+6 12 L
+12 12 L
+12 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 1 Xa
+ 1 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 0 m
+6 0 L
+6 6 L
+12 6 L
+12 0 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 0 m
+0 0 L
+0 6 L
+6 6 L
+6 0 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Camouflage)
+(Camouflage) 1 1 73 73 [
+%AI3_Tile
+(0 O 0 R 0.3922 0.6039 0.1451 Xa
+ 0.3922 0.6039 0.1451 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 73 m
+1 1 L
+73 1 L
+73 73 L
+1 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4039 0.4 0.0745 Xa
+ 0.4039 0.4 0.0745 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+18.5449 73 m
+18.5449 1 L
+46.7832 1 L
+46.7832 73 L
+18.5449 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.8 0.1059 Xa
+ 0.8 0.8 0.1059 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+11.9512 1 m
+11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c
+9.2314 10.2334 4.25 10.2334 4.25 13.8735 c
+4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c
+10.0313 24.832 10.208 24.832 10.208 28.5654 c
+10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c
+5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c
+11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c
+7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c
+5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c
+4.6631 69.1636 11.9512 69.3184 11.9512 73 C
+27.9268 73 L
+27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c
+22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c
+28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c
+25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c
+28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c
+22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c
+26.3945 24.832 24.4248 24.832 24.4248 21.0991 c
+24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c
+20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c
+24.6055 2.8813 27.9268 4.7129 27.9268 1 C
+11.9512 1 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.0784 0.4157 0.1647 Xa
+ 0.0784 0.4157 0.1647 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+41.875 1 m
+41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c
+42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c
+40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c
+41.5742 24.832 43.6484 24.832 43.6484 28.5659 c
+43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c
+39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c
+39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c
+45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c
+40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c
+40.6289 69.1636 41.875 69.3184 41.875 73 C
+59.0752 73 L
+59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c
+53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c
+55.8945 55.502 61.0059 55.502 61.0059 51.7886 c
+61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c
+60.5635 40.897 59.9277 40.897 59.9277 37.2842 c
+59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c
+56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c
+61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c
+52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c
+55.7461 3.978 59.0752 4.6484 59.0752 1 C
+41.875 1 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Clown Attack)
+(Clown Attack) 5.25 11 41.25 47 [
+%AI3_Tile
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+17.5 18.25 m
+17.5 15.2119 15.0376 12.75 12 12.75 c
+8.9624 12.75 6.5 15.2119 6.5 18.25 c
+6.5 21.2881 8.9624 23.75 12 23.75 c
+15.0376 23.75 17.5 21.2881 17.5 18.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 1 Xa
+ 1 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+22.25 34.125 m
+22.25 31.2939 19.9556 29 17.125 29 c
+14.2944 29 12 31.2939 12 34.125 c
+12 36.9561 14.2944 39.25 17.125 39.25 c
+19.9556 39.25 22.25 36.9561 22.25 34.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+30 31.625 m
+30 29.4854 28.2646 27.75 26.125 27.75 c
+23.9849 27.75 22.25 29.4854 22.25 31.625 c
+22.25 33.7646 23.9849 35.5 26.125 35.5 c
+28.2646 35.5 30 33.7646 30 31.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+23.25 24.5 m
+23.25 22.4287 21.5713 20.75 19.5 20.75 c
+17.4287 20.75 15.75 22.4287 15.75 24.5 c
+15.75 26.5713 17.4287 28.25 19.5 28.25 c
+21.5713 28.25 23.25 26.5713 23.25 24.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+36 22.25 m
+36 19.0742 33.4258 16.5 30.25 16.5 c
+27.0742 16.5 24.5 19.0742 24.5 22.25 c
+24.5 25.4258 27.0742 28 30.25 28 c
+33.4258 28 36 25.4258 36 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.7922 0.2078 Xa
+ 0.8 0.7922 0.2078 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+24.25 16.5 m
+24.25 14.8438 22.9067 13.5 21.25 13.5 c
+19.5933 13.5 18.25 14.8438 18.25 16.5 c
+18.25 18.1563 19.5933 19.5 21.25 19.5 c
+22.9067 19.5 24.25 18.1563 24.25 16.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 43.875 m
+37.25 39.5264 33.7236 36 29.375 36 c
+25.0264 36 21.5 39.5264 21.5 43.875 c
+21.5 48.2236 25.0264 51.75 29.375 51.75 c
+33.7236 51.75 37.25 48.2236 37.25 43.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.8 0 Xa
+ 1 0.8 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+38.75 26.625 m
+38.75 25.7275 38.0225 25 37.125 25 c
+36.2275 25 35.5 25.7275 35.5 26.625 c
+35.5 27.5225 36.2275 28.25 37.125 28.25 c
+38.0225 28.25 38.75 27.5225 38.75 26.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.4 0 Xa
+ 1 0.4 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.875 42 m
+19.875 41.1025 19.1475 40.375 18.25 40.375 c
+17.3525 40.375 16.625 41.1025 16.625 42 c
+16.625 42.8975 17.3525 43.625 18.25 43.625 c
+19.1475 43.625 19.875 42.8975 19.875 42 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12.75 28.125 m
+12.75 26.8135 11.6865 25.75 10.375 25.75 c
+9.0635 25.75 8 26.8135 8 28.125 c
+8 29.4365 9.0635 30.5 10.375 30.5 c
+11.6865 30.5 12.75 29.4365 12.75 28.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+43.25 33 m
+43.25 30.998 41.627 29.375 39.625 29.375 c
+37.623 29.375 36 30.998 36 33 c
+36 35.002 37.623 36.625 39.625 36.625 c
+41.627 36.625 43.25 35.002 43.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 43.75 m
+13.25 40.9883 11.0117 38.75 8.25 38.75 c
+5.4883 38.75 3.25 40.9883 3.25 43.75 c
+3.25 46.5117 5.4883 48.75 8.25 48.75 c
+11.0117 48.75 13.25 46.5117 13.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6.5 22.25 m
+6.5 20.7314 5.2686 19.5 3.75 19.5 c
+2.2314 19.5 1 20.7314 1 22.25 c
+1 23.7686 2.2314 25 3.75 25 c
+5.2686 25 6.5 23.7686 6.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0.4 Xa
+ 1 1 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+34.4883 32.75 m
+34.4883 31.9277 33.8223 31.2617 33 31.2617 c
+32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c
+31.5117 33.5723 32.1777 34.2383 33 34.2383 c
+33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 43.75 m
+49.25 40.9883 47.0117 38.75 44.25 38.75 c
+41.4883 38.75 39.25 40.9883 39.25 43.75 c
+39.25 46.5117 41.4883 48.75 44.25 48.75 c
+47.0117 48.75 49.25 46.5117 49.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+42.5 22.25 m
+42.5 20.7314 41.2686 19.5 39.75 19.5 c
+38.2314 19.5 37 20.7314 37 22.25 c
+37 23.7686 38.2314 25 39.75 25 c
+41.2686 25 42.5 23.7686 42.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 7.752 m
+49.25 4.9902 47.0117 2.752 44.25 2.752 c
+41.4883 2.752 39.25 4.9902 39.25 7.752 c
+39.25 10.5137 41.4883 12.752 44.25 12.752 c
+47.0117 12.752 49.25 10.5137 49.25 7.752 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 7.875 m
+37.25 3.5264 33.7236 0 29.375 0 c
+25.0264 0 21.5 3.5264 21.5 7.875 c
+21.5 12.2236 25.0264 15.75 29.375 15.75 c
+33.7236 15.75 37.25 12.2236 37.25 7.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 7.75 m
+13.25 4.9883 11.0117 2.75 8.25 2.75 c
+5.4883 2.75 3.25 4.9883 3.25 7.75 c
+3.25 10.5117 5.4883 12.75 8.25 12.75 c
+11.0117 12.75 13.25 10.5117 13.25 7.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+7.25 33 m
+7.25 30.998 5.627 29.375 3.625 29.375 c
+1.623 29.375 0 30.998 0 33 c
+0 35.002 1.623 36.625 3.625 36.625 c
+5.627 36.625 7.25 35.002 7.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.6 1 Xa
+ 1 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+39.6533 16.0381 m
+39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c
+37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c
+36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c
+38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Pyramids)
+(Pyramids) 1 1 19.5 19.5 [
+%AI3_Tile
+(0 O 0 R 0.8 0.8 0.8 Xa
+ 0.8 0.8 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 19.5 m
+10.25 10.25 l
+19.5 19.5 l
+1 19.5 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.2 0.2 0.2 Xa
+ 0.2 0.2 0.2 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 1 m
+10.25 10.25 l
+1 1 l
+19.5 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 0.6 Xa
+ 0.6 0.6 0.6 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 1 m
+10.25 10.25 l
+1 19.5 l
+1 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4 0.4 0.4 Xa
+ 0.4 0.4 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 19.5 m
+10.25 10.25 l
+19.5 1 l
+19.5 19.5 l
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Red Stripe)
+(Red Stripe) 37 19 73 55 [
+%AI3_Tile
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 18 w 4 M []0 d
0 XR
+37 37 m
+73 37 l
+S
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+0 0 0 Xa
+([Registration]) Pc
+1 1 1 Xa
+(White) Pc
+0 0 0 Xa
+(Black) Pc
+0.6 0.6 0.6 Xa
+(Gray) Pc
+0.8 0.8 0.8 Xa
+(Light Gray) Pc
+0 1 1 Xa
+(Bright Blue) Pc
+0.6 1 1 Xa
+(Light Blue) Pc
+0.8 1 1 Xa
+(Pale Blue) Pc
+1 0 1 Xa
+(Violet) Pc
+1 0.4 1 Xa
+(Light Violet) Pc
+1 0.8 1 Xa
+(Pale Violet) Pc
+1 1 0 Xa
+(Yellow) Pc
+1 1 0.4 Xa
+(Light Yellow) Pc
+1 1 0.6 Xa
+(Pale Yellow) Pc
+0.6 0.2 0 Xa
+(Brown) Pc
+0.8 0.4 0.2078 Xa
+(Light Brown) Pc
+1 0.6 0.4 Xa
+(Pale Brown) Pc
+0 0 1 Xa
+(Blue) Pc
+0.4 0.4 1 Xa
+(Faded Blue) Pc
+0.8 0.8 1 Xa
+(Faded Pale Blue) Pc
+1 0 0 Xa
+(Red) Pc
+1 0.4 0.4 Xa
+(Light Red) Pc
+1 0.6 0.6 Xa
+(Mauve) Pc
+0 0.6 0 Xa
+(Forest Green) Pc
+0.2 0.8 0.2 Xa
+(Green) Pc
+0.6 1 0.4 Xa
+(Pale Green) Pc
+0 1 0 Xa
+(Bright Green) Pc
+0.4 1 0.4 Xa
+(Light Bright Green) Pc
+0.5922 1 0.6 Xa
+(Pale Light Green) Pc
+0.6 0 0.8 Xa
+(Purple) Pc
+0.6 0.4 0.8 Xa
+(Periwinkle) Pc
+0.8 0.6 0.8 Xa
+(Lavender) Pc
+1 0.6 0 Xa
+(Orange) Pc
+1 0.8 0.2 Xa
+(Light Orange) Pc
+1 0.8 0.6 Xa
+(Light Pale Orange) Pc
+Bb
+2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(White, Black) Pc
+Bb
+0 0 0 0 Bh
+2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Black, White Radial) Pc
+Bb
+2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Steel Bar II) Pc
+Bb
+2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(RGB Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Nova) Pc
+Bb
+2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Sunrise) Pc
+(Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Blue Tablecloth) Pc
+(Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Pyramids) Pc
+(Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Azure Rings) Pc
+(Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Red Stripe) Pc
+(Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Clown Attack) Pc
+(Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Camouflage) Pc
+PB
+%AI5_EndPalette
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 255 79 79 Lb
+(Layer 2) Ln
+0 A
+u
*u
+0 O
+1 1 1 Xa
+0 J 0 j 1 w 4 M []0 d
0 XR
+324.6348 331.335 m
+441.4766 331.335 L
+441.4766 331.8389 L
+441.9814 331.8389 L
+441.9814 454.3018 L
+441.9814 454.7969 L
+441.4766 454.7969 L
+441.4766 454.3018 L
+441.4766 454.7969 L
+364.3877 454.7969 L
+358.4785 468.4741 L
+362.9971 468.7559 L
+360.6035 469.8906 357.8506 472.0996 355.8008 474.1406 C
+364.4795 477.1089 373.7861 478.7188 383.4717 478.7188 C
+383.4717 479.2231 L
+383.4717 478.7188 L
+407.0605 478.7188 428.418 469.1611 443.8799 453.6992 C
+459.3418 438.2368 468.9004 416.8799 468.9092 393.2822 C
+468.9004 369.6836 459.3418 348.3359 443.8799 332.874 C
+428.418 317.4121 407.0605 307.8447 383.4717 307.8447 C
+360.668 307.8447 339.9551 316.7803 324.6348 331.335 C
+F
1 D
+441.4766 331.335 m
+441.9814 331.335 L
+441.9814 331.8389 L
+441.4766 331.8389 L
+441.4766 331.335 L
+F
0 D
+298.0459 391.9229 m
+322.8115 391.9229 L
+322.8115 333.1182 L
+307.7891 348.2617 298.4033 368.9883 298.0459 391.9229 C
+F
357.3711 454.7969 m
+351.333 468.9092 L
+350.042 471.9346 L
+351.7568 472.6641 353.499 473.3389 355.2695 473.957 C
+355.2793 473.6221 355.2842 473.2788 355.2842 472.9292 C
+355.2813 470.25 354.9766 467.2207 354.2666 464.9761 C
+357.5605 468.0767 L
+363.2979 454.7969 L
+357.3711 454.7969 L
+F
*U
+*u
+0 0 0 Xa
+323.1895 331.335 m
+323.3164 331.335 L
+324.6348 331.335 L
+339.9551 316.7803 360.668 307.8447 383.4717 307.8447 C
+407.0605 307.8447 428.418 317.4121 443.8799 332.874 C
+459.3418 348.3359 468.9004 369.6836 468.9092 393.2822 C
+468.9004 416.8799 459.3418 438.2368 443.8799 453.6992 C
+428.418 469.1611 407.0605 478.7188 383.4717 478.7188 C
+383.4717 479.7178 L
+431.208 479.7178 469.8994 441.0181 469.9082 393.2822 C
+469.8994 345.5459 431.208 306.8457 383.4717 306.8457 C
+383.4717 307.3496 L
+383.4717 306.8457 L
+360.0254 306.8457 338.7588 316.1816 323.1895 331.335 C
+F
383.4717 479.2231 m
+383.4717 479.7178 L
+383.4717 479.2231 L
+F
297.0469 391.9229 m
+298.0459 391.9229 L
+298.4033 368.9883 307.7891 348.2617 322.8115 333.1182 C
+322.8115 331.8389 L
+323.3164 331.8389 L
+322.8115 331.8389 L
+322.8115 331.7041 L
+307.2012 347.0859 297.4106 368.3633 297.0469 391.9229 C
+F
349.6504 472.8511 m
+350.3916 473.1665 351.1396 473.4727 351.8916 473.7681 C
+352.6289 474.043 353.5635 474.3906 354.748 474.8315 C
+363.7354 477.9971 373.4004 479.7178 383.4717 479.7178 C
+383.4717 478.7188 L
+373.7861 478.7188 364.4795 477.1089 355.8008 474.1406 C
+355.6074 474.3335 355.4189 474.5254 355.2393 474.7139 C
+355.252 474.4678 355.2627 474.2148 355.2695 473.957 C
+353.499 473.3389 351.7568 472.6641 350.042 471.9346 C
+349.6504 472.8511 L
+F
*U
+*u
+1 1 1 Xa
+323.8105 332.334 m
+323.8105 391.9229 L
+383.5166 391.9229 L
+383.5166 392.4229 L
+383.5166 391.9229 L
+384.2734 391.9229 L
+383.9756 392.6162 L
+357.7988 453.7979 L
+363.7295 453.7979 L
+386.082 402.0605 L
+381.5732 401.7871 L
+384.1826 400.5361 387.2344 398.0161 389.3223 395.8198 C
+389.292 396.3872 389.2764 396.9863 389.2764 397.605 C
+389.2793 400.2837 389.585 403.313 390.2939 405.5581 C
+387 402.4575 L
+364.8193 453.7979 L
+440.9727 453.7979 L
+440.9727 332.334 L
+323.8105 332.334 L
+F
1 D
+390.8701 430.5332 m
+390.7529 430.0562 390.6992 429.7412 390.6992 429.4258 C
+390.6992 429.1382 390.8164 428.7871 391.3467 428.7871 C
+391.8057 428.7871 392.6973 429.4351 393.291 430.3618 C
+393.1201 430.4971 L
+392.5439 429.8398 392.2646 429.5161 391.9951 429.5161 C
+391.8604 429.5161 391.7432 429.6152 391.7432 429.8218 C
+391.7432 430.0381 393.4082 435.897 394.002 438.291 C
+393.9297 438.3628 L
+393.2275 438.21 392.5352 438.1108 391.833 438.0479 C
+391.833 437.814 L
+392.5889 437.7959 392.6787 437.7241 392.6787 437.4092 C
+392.6787 437.2202 392.5889 436.8779 392.4717 436.4912 C
+391.8867 434.3042 L
+391.8604 434.2769 L
+391.8057 434.583 391.707 435.0332 390.9326 435.0332 C
+389.2949 435.0332 386.9639 432.5132 386.9639 430.4429 C
+386.9639 429.7231 387.252 428.814 388.3945 428.814 C
+389.0791 428.814 389.8525 429.0479 390.8428 430.5688 C
+390.8701 430.5332 L
+F
395.7656 432.0449 m
+397.2334 432.0449 L
+404.8203 445.7881 L
+403.3525 445.7881 L
+395.7656 432.0449 L
+F
379.0615 432.1348 m
+379.3945 432.1348 L
+379.5215 432.3691 379.6016 432.5762 379.8896 432.5762 C
+380.4844 432.5762 381.3115 432.1802 381.9326 432.1802 C
+383.085 432.1802 385.002 432.6929 385.002 434.9429 C
+385.002 436.6982 382.4824 438.5342 382.4824 439.8301 C
+382.4824 440.8472 383.1484 441.0269 383.5977 441.0269 C
+384.9395 441.0269 385.4336 439.8301 385.542 438.6602 C
+385.8662 438.6602 L
+386.2803 441.522 L
+385.9922 441.522 L
+385.8926 441.3599 385.7666 441.1528 385.416 441.1528 C
+384.7949 441.1528 384.3809 441.5039 383.4541 441.5039 C
+381.2666 441.5039 380.9785 439.8569 380.9785 439.209 C
+380.9785 437.625 383.4355 435.645 383.4355 434.2861 C
+383.4355 433.6021 383.1025 432.6118 381.9512 432.6118 C
+380.2773 432.6118 379.9531 434.5107 379.8086 435.4199 C
+379.4756 435.4199 L
+379.0615 432.1348 L
+F
409.0859 440.8652 m
+409.0859 440.2798 409.0137 439.2632 406.5566 436.644 C
+402.8672 432.7021 L
+402.8672 432.4048 L
+409.1035 432.4048 L
+409.9863 434.7271 L
+409.6895 434.853 L
+409.3828 434.2139 409.1035 433.7461 407.9434 433.7461 C
+404.6035 433.7461 L
+404.6035 433.8271 L
+407.9785 437.2021 L
+410.1572 439.3892 410.5977 440.1812 410.5977 441.3511 C
+410.5977 442.6738 409.6172 444.2939 407.7539 444.2939 C
+407.3125 444.2939 405.0088 444.2222 404.0645 441.4771 C
+404.4326 441.3511 L
+404.6758 441.792 405.3418 443.0068 406.9258 443.0068 C
+408.2764 443.0068 409.0859 441.9541 409.0859 440.8652 C
+F
0 D
+388.1611 430.4971 m
+388.1611 431.748 389.4658 434.7178 391.0049 434.7178 C
+391.6533 434.7178 391.6533 434.1152 391.6533 433.7998 C
+391.6533 432.0898 390.3027 429.48 388.998 429.48 C
+388.1611 429.48 388.1611 430.2632 388.1611 430.4971 C
+F
*U
+*u
+0 0 0 Xa
+441.4766 331.335 m
+441.4766 331.8389 L
+441.9814 331.8389 L
+441.9814 331.335 L
+441.4766 331.335 L
+F
323.3164 331.335 m
+322.8115 331.335 L
+322.8115 331.8389 L
+323.3164 331.8389 L
+322.8115 331.8389 L
+322.8115 391.9229 L
+323.8105 391.9229 L
+323.8105 332.334 L
+440.9727 332.334 L
+440.9727 453.7979 L
+364.8193 453.7979 L
+364.3877 454.7969 L
+441.4766 454.7969 L
+441.4766 454.3018 L
+441.4766 454.7969 L
+441.9814 454.7969 L
+441.9814 454.3018 L
+441.9814 331.8389 L
+441.4766 331.8389 L
+441.4766 331.335 L
+323.3164 331.335 L
+F
357.7988 453.7979 m
+357.3711 454.7969 L
+363.2979 454.7969 L
+363.7295 453.7979 L
+357.7988 453.7979 L
+F
*U
+*u
+1 1 1 Xa
+167.7378 392.9219 m
+169.2417 394.3164 170.0005 396.7065 170.1719 399.0781 C
+170.3271 401.5459 169.8667 404.0601 168.5366 405.5371 C
+348.6641 472.5972 L
+348.7266 472.4517 L
+347.29 471.8203 345.8779 471.1528 344.4834 470.4473 C
+344.2324 470.8799 L
+343.7998 470.6279 L
+343.3682 470.376 L
+343.5928 469.9897 L
+315.9229 455.5776 297.0361 426.6367 297.0361 393.2822 C
+297.0361 393.1621 297.0366 393.041 297.0371 392.9219 C
+167.7378 392.9219 L
+F
1 D
+270.9448 398.5107 m
+270.1982 398.4751 270.1982 397.6919 270.1982 397.6289 C
+270.3242 396.6841 271.1699 396.4141 271.8091 396.4141 C
+274.2212 396.4141 275.3818 399.7349 275.958 402.2461 C
+277.4429 408.8521 L
+279.6929 408.8521 L
+279.8101 409.5088 L
+277.5869 409.5088 L
+277.7671 410.562 278.3882 414.207 280.0801 414.207 C
+280.3501 414.207 280.5571 414.126 280.5571 413.9639 C
+280.5571 413.7388 280.3501 413.7388 280.3501 413.2798 C
+280.3501 413.0552 280.4761 412.4971 281.1328 412.4971 C
+281.6099 412.4971 281.979 412.9111 281.979 413.3252 C
+281.979 413.7388 281.646 414.666 280.1611 414.666 C
+277.5601 414.666 276.5342 411.2642 275.9941 409.5088 C
+274.104 409.5088 L
+273.9512 408.8521 L
+275.814 408.8521 L
+273.9961 400.1851 L
+273.834 399.3569 273.2939 396.8462 271.9712 396.8462 C
+271.728 396.8462 271.584 397.0078 271.584 397.1792 C
+271.584 397.4038 271.7729 397.4038 271.7729 397.7549 C
+271.7729 398.2446 271.2813 398.5127 270.9858 398.5127 C
+270.9717 398.5127 270.958 398.5122 270.9448 398.5107 C
+F
281.52 405.7021 m
+281.52 405.4141 279.5313 398.2319 279.5313 397.9438 C
+279.5313 397.5571 279.585 397.0889 280.188 397.0889 C
+281.043 397.0889 281.583 397.7549 282.2852 398.8081 C
+282.105 398.9341 L
+281.4302 398.0698 281.1421 397.6831 280.7998 397.6831 C
+280.5928 397.6831 280.5928 397.8721 280.5928 397.9619 C
+280.5928 398.106 280.7012 398.4839 280.728 398.6011 C
+282.8071 406.5659 L
+282.7349 406.6382 L
+282.0151 406.4668 281.3042 406.3501 280.5928 406.2598 C
+280.5928 406.0439 L
+280.6416 406.0454 280.6943 406.0464 280.749 406.0464 C
+281.0918 406.0464 281.52 406.0044 281.52 405.7021 C
+F
192.8789 409.0591 m
+191.394 408.042 190.8359 406.9712 190.6289 405.4678 C
+190.3232 403.1548 190.7368 401.7778 191.2681 400.8418 C
+191.6821 400.1489 192.2578 399.6538 193.0229 399.3027 C
+194.3818 398.7002 195.3989 398.9248 196.3438 399.2402 C
+198.1802 399.834 198.6299 401.2559 198.981 401.8589 C
+199.4761 400.5181 199.8091 399.7979 200.3042 399.3208 C
+200.6196 399.021 201.001 398.8594 201.4536 399.0996 C
+201.3569 398.9248 L
+202.8599 398.9248 L
+210.6538 413.0371 L
+209.1509 413.0371 L
+202.4741 400.9478 L
+202.5088 402.1289 L
+202.1401 402.1289 L
+202.0952 401.8589 202.0771 401.1929 201.645 400.7607 C
+201.0059 400.1221 200.4658 400.6621 200.2588 400.8418 C
+199.8721 401.2378 199.584 401.814 199.4131 402.8042 C
+201.7891 409.3472 L
+199.9712 409.3472 L
+198.6572 405.6748 L
+198.6118 405.6748 L
+198.5132 406.4761 198.2251 407.3042 197.8291 407.9609 C
+197.3521 408.7441 196.5688 409.4009 195.5972 409.5718 C
+195.4204 409.6016 195.2295 409.6152 195.0313 409.6152 C
+194.2607 409.6152 193.3877 409.4028 192.8789 409.0591 C
+F
214.8662 407.7539 m
+214.8662 407.1777 214.7939 406.1519 212.3369 403.5332 C
+208.6382 399.6001 L
+208.6382 399.3027 L
+214.8838 399.3027 L
+215.7568 401.6162 L
+215.46 401.7422 L
+215.1631 401.1118 214.8838 400.6348 213.7231 400.6348 C
+210.3838 400.6348 L
+210.3838 400.7251 L
+213.7588 404.1001 L
+215.937 406.2778 216.3779 407.0698 216.3779 408.249 C
+216.3779 409.563 215.3882 411.1831 213.5249 411.1831 C
+213.084 411.1831 210.7891 411.1108 209.835 408.3662 C
+210.2041 408.249 L
+210.4561 408.6899 211.1221 409.896 212.7061 409.896 C
+214.0562 409.896 214.8662 408.8428 214.8662 407.7539 C
+F
0 D
+134.6528 392.9219 m
+167.5083 405.1538 L
+168.7104 404.1611 169.3677 401.6553 169.1729 399.1411 C
+169.0112 396.4771 167.9219 393.8848 166.2568 393.084 C
+166.3389 392.9219 L
+134.6528 392.9219 L
+F
194.958 399.627 m
+194.4092 399.6719 194.1392 399.7979 193.6802 400.248 C
+193.1851 400.7432 192.978 401.3999 192.8789 402.0029 C
+192.6719 403.1548 192.5908 404.3071 192.7349 405.4409 C
+192.8789 406.5391 193.1221 407.4209 193.644 408.0869 C
+194.0938 408.6631 194.4629 409.0142 195.687 408.6631 C
+196.2808 408.4741 196.8389 407.9429 197.1719 407.4028 C
+197.7031 406.5391 197.9282 404.9277 198.0718 403.9019 C
+197.46 402.21 L
+197.208 401.5439 196.6499 400.5361 196.2451 400.1851 C
+195.8062 399.8149 195.3506 399.626 195.0044 399.626 C
+194.9888 399.626 194.9731 399.626 194.958 399.627 C
+F
*U
+*u
+298.0361 392.9219 m
+298.0356 393.041 298.0352 393.1621 298.0352 393.2822 C
+298.0352 416.7563 307.4932 438.0122 322.8115 453.4546 C
+322.8115 392.9219 L
+298.0361 392.9219 L
+F
324.1729 454.7969 m
+330.0635 460.4766 336.7676 465.3174 344.0938 469.1274 C
+345.3662 466.938 L
+345.7998 467.1909 L
+345.3662 466.938 L
+345.7979 467.1899 L
+345.7998 467.1909 L
+345.7998 467.1909 L
+345.7979 467.1899 L
+345.7998 467.1909 L
+346.0137 466.731 L
+350.3066 468.7378 L
+349.8838 469.647 L
+346.0029 467.8325 L
+344.9854 469.5845 L
+346.3428 470.2705 347.7217 470.9209 349.1201 471.5356 C
+350.415 468.522 L
+356.2871 454.7969 L
+324.1729 454.7969 L
+F
*U
+*u
+0 0 0 Xa
+297.0371 392.9219 m
+297.0366 393.041 297.0361 393.1621 297.0361 393.2822 C
+297.0361 426.6367 315.9229 455.5776 343.5928 469.9897 C
+344.0938 469.1274 L
+336.7676 465.3174 330.0635 460.4766 324.1729 454.7969 C
+323.3164 454.7969 L
+322.8115 454.7969 L
+322.8115 454.3018 L
+322.8115 453.4546 L
+307.4932 438.0122 298.0352 416.7563 298.0352 393.2822 C
+298.0352 393.1621 298.0356 393.041 298.0361 392.9219 C
+297.0371 392.9219 L
+F
344.4834 470.4473 m
+345.8779 471.1528 347.29 471.8203 348.7266 472.4517 C
+349.1201 471.5356 L
+347.7217 470.9209 346.3428 470.2705 344.9854 469.5845 C
+344.4834 470.4473 L
+F
*U
+1 1 1 Xa
+323.8105 392.9219 m
+323.8105 453.7979 L
+356.7148 453.7979 L
+382.7617 392.9219 L
+323.8105 392.9219 L
+F
0 0 0 Xa
+322.8115 392.9219 m
+322.8115 454.3018 L
+322.8115 454.7969 L
+323.3164 454.7969 L
+356.2871 454.7969 L
+356.7148 453.7979 L
+323.8105 453.7979 L
+323.8105 392.9219 L
+322.8115 392.9219 L
+F
*u
+383.5166 391.9229 m
+383.5166 392.4229 L
+383.5166 391.9229 L
+134.7295 391.9229 L
+132.0659 392.8945 L
+131.8936 392.4307 L
+131.7148 392.8945 L
+428.6973 503.46 L
+429.0479 502.5239 L
+389.0879 487.6289 369.1084 480.186 359.1182 476.46 C
+354.123 474.5972 351.6211 473.6699 350.3789 473.2021 C
+350.043 473.0771 349.7998 472.9858 349.6211 472.9194 C
+351.333 468.9092 L
+383.9756 392.6162 L
+384.2734 391.9229 L
+383.5166 391.9229 L
+F
1 D
+166.707 392.1934 m
+167.0835 392.3877 167.4268 392.6338 167.7378 392.9219 C
+382.7617 392.9219 L
+350.415 468.522 L
+348.6641 472.5972 L
+168.5366 405.5371 L
+168.3242 405.7729 168.0898 405.9824 167.832 406.1611 C
+167.2739 405.3242 L
+167.3545 405.2734 167.4321 405.2168 167.5083 405.1538 C
+134.6528 392.9219 L
+166.3389 392.9219 L
+166.707 392.1934 L
+F
0 D
+350.415 468.522 m
+350.874 468.7197 L
+350.415 468.522 L
+F
131.7148 392.8945 m
+131.8911 392.4248 L
+131.8315 392.2646 L
+131.7148 392.8945 L
+F
*U
+*u
+345.7998 467.1909 m
+345.7979 467.1899 L
+345.3662 466.938 L
+345.7998 467.1909 L
+F
343.3682 470.376 m
+344.2324 470.8799 L
+346.0029 467.8325 L
+345.5908 467.6401 L
+345.7998 467.1909 L
+345.3662 466.938 L
+343.3682 470.376 L
+F
*U
+1 1 1 Xa
+345.7998 467.1909 m
+345.7979 467.1899 L
+345.7998 467.1909 L
+F
0 0 0 Xa
+345.5908 467.6401 m
+349.8838 469.647 L
+350.3066 468.7378 L
+346.0137 466.731 L
+345.5908 467.6401 L
+F
379.0615 432.1348 m
+379.4756 435.4199 L
+379.8086 435.4199 L
+379.9531 434.5107 380.2773 432.6118 381.9512 432.6118 C
+383.1025 432.6118 383.4355 433.6021 383.4355 434.2861 C
+383.4355 435.645 380.9785 437.625 380.9785 439.209 C
+380.9785 439.8569 381.2666 441.5039 383.4541 441.5039 C
+384.3809 441.5039 384.7949 441.1528 385.416 441.1528 C
+385.7666 441.1528 385.8926 441.3599 385.9922 441.522 C
+386.2803 441.522 L
+385.8662 438.6602 L
+385.542 438.6602 L
+385.4336 439.8301 384.9395 441.0269 383.5977 441.0269 C
+383.1484 441.0269 382.4824 440.8472 382.4824 439.8301 C
+382.4824 438.5342 385.002 436.6982 385.002 434.9429 C
+385.002 432.6929 383.085 432.1802 381.9326 432.1802 C
+381.3115 432.1802 380.4844 432.5762 379.8896 432.5762 C
+379.6016 432.5762 379.5215 432.3691 379.3945 432.1348 C
+379.0615 432.1348 L
+F
*u
+390.6992 429.4258 m
+390.6992 429.7412 390.7529 430.0562 390.8701 430.5332 C
+390.8428 430.5688 L
+389.8525 429.0479 389.0791 428.814 388.3945 428.814 C
+387.252 428.814 386.9639 429.7231 386.9639 430.4429 C
+386.9639 432.5132 389.2949 435.0332 390.9326 435.0332 C
+391.707 435.0332 391.8057 434.583 391.8604 434.2769 C
+391.8867 434.3042 L
+392.4717 436.4912 L
+392.5889 436.8779 392.6787 437.2202 392.6787 437.4092 C
+392.6787 437.7241 392.5889 437.7959 391.833 437.814 C
+391.833 438.0479 L
+392.5352 438.1108 393.2275 438.21 393.9297 438.3628 C
+394.002 438.291 L
+393.4082 435.897 391.7432 430.0381 391.7432 429.8218 C
+391.7432 429.6152 391.8604 429.5161 391.9951 429.5161 C
+392.2646 429.5161 392.5439 429.8398 393.1201 430.4971 C
+393.291 430.3618 L
+392.6973 429.4351 391.8057 428.7871 391.3467 428.7871 C
+390.8164 428.7871 390.6992 429.1382 390.6992 429.4258 C
+F
1 D
+388.1611 430.4971 m
+388.1611 430.2632 388.1611 429.48 388.998 429.48 C
+390.3027 429.48 391.6533 432.0898 391.6533 433.7998 C
+391.6533 434.1152 391.6533 434.7178 391.0049 434.7178 C
+389.4658 434.7178 388.1611 431.748 388.1611 430.4971 C
+F
*U
+0 D
+395.7656 432.0449 m
+403.3525 445.7881 L
+404.8203 445.7881 L
+397.2334 432.0449 L
+395.7656 432.0449 L
+F
402.8672 432.4048 m
+402.8672 432.7021 L
+406.5566 436.644 L
+409.0137 439.2632 409.0859 440.2798 409.0859 440.8652 C
+409.0859 441.9541 408.2764 443.0068 406.9258 443.0068 C
+405.3418 443.0068 404.6758 441.792 404.4326 441.3511 C
+404.0645 441.4771 L
+405.0088 444.2222 407.3125 444.2939 407.7539 444.2939 C
+409.6172 444.2939 410.5977 442.6738 410.5977 441.3511 C
+410.5977 440.1812 410.1572 439.3892 407.9785 437.2021 C
+404.6035 433.8271 L
+404.6035 433.7461 L
+407.9434 433.7461 L
+409.1035 433.7461 409.3828 434.2139 409.6895 434.853 C
+409.9863 434.7271 L
+409.1035 432.4048 L
+402.8672 432.4048 L
+F
270.1982 397.6289 m
+270.1982 397.6919 270.1982 398.4751 270.9448 398.5107 C
+271.2329 398.5381 271.7729 398.2681 271.7729 397.7549 C
+271.7729 397.4038 271.584 397.4038 271.584 397.1792 C
+271.584 397.0078 271.728 396.8462 271.9712 396.8462 C
+273.2939 396.8462 273.834 399.3569 273.9961 400.1851 C
+275.814 408.8521 L
+273.9512 408.8521 L
+274.104 409.5088 L
+275.9941 409.5088 L
+276.5342 411.2642 277.5601 414.666 280.1611 414.666 C
+281.646 414.666 281.979 413.7388 281.979 413.3252 C
+281.979 412.9111 281.6099 412.4971 281.1328 412.4971 C
+280.4761 412.4971 280.3501 413.0552 280.3501 413.2798 C
+280.3501 413.7388 280.5571 413.7388 280.5571 413.9639 C
+280.5571 414.126 280.3501 414.207 280.0801 414.207 C
+278.3882 414.207 277.7671 410.562 277.5869 409.5088 C
+279.8101 409.5088 L
+279.6929 408.8521 L
+277.4429 408.8521 L
+275.958 402.2461 L
+275.3818 399.7349 274.2212 396.4141 271.8091 396.4141 C
+271.1699 396.4141 270.3242 396.6841 270.1982 397.6289 C
+F
279.5313 397.9438 m
+279.5313 398.2319 281.52 405.4141 281.52 405.7021 C
+281.52 406.0527 280.9438 406.0527 280.5928 406.0439 C
+280.5928 406.2598 L
+281.3042 406.3501 282.0151 406.4668 282.7349 406.6382 C
+282.8071 406.5659 L
+280.728 398.6011 L
+280.7012 398.4839 280.5928 398.106 280.5928 397.9619 C
+280.5928 397.8721 280.5928 397.6831 280.7998 397.6831 C
+281.1421 397.6831 281.4302 398.0698 282.105 398.9341 C
+282.2852 398.8081 L
+281.583 397.7549 281.043 397.0889 280.188 397.0889 C
+279.585 397.0889 279.5313 397.5571 279.5313 397.9438 C
+F
0.0118 0.0118 0.0118 Xa
+166.3389 392.9219 m
+166.2568 393.084 L
+167.9219 393.8848 169.0112 396.4771 169.1729 399.1411 C
+169.3677 401.6553 168.7104 404.1611 167.5083 405.1538 C
+168.5366 405.5371 L
+169.8667 404.0601 170.3271 401.5459 170.1719 399.0781 C
+170.0005 396.7065 169.2417 394.3164 167.7378 392.9219 C
+166.3389 392.9219 L
+F
*u
+0 0 0 Xa
+166.3389 392.9219 m
+167.7378 392.9219 L
+167.4268 392.6338 167.0835 392.3877 166.707 392.1934 C
+166.3389 392.9219 L
+F
167.2739 405.3242 m
+167.832 406.1611 L
+168.0898 405.9824 168.3242 405.7729 168.5366 405.5371 C
+167.5083 405.1538 L
+167.4321 405.2168 167.3545 405.2734 167.2739 405.3242 C
+F
*U
+*u
+193.0229 399.3027 m
+192.2578 399.6538 191.6821 400.1489 191.2681 400.8418 C
+190.7368 401.7778 190.3232 403.1548 190.6289 405.4678 C
+190.8359 406.9712 191.394 408.042 192.8789 409.0591 C
+193.5181 409.4912 194.7329 409.7158 195.5972 409.5718 C
+196.5688 409.4009 197.3521 408.7441 197.8291 407.9609 C
+198.2251 407.3042 198.5132 406.4761 198.6118 405.6748 C
+198.6572 405.6748 L
+199.9712 409.3472 L
+201.7891 409.3472 L
+199.4131 402.8042 L
+199.584 401.814 199.8721 401.2378 200.2588 400.8418 C
+200.4658 400.6621 201.0059 400.1221 201.645 400.7607 C
+202.0771 401.1929 202.0952 401.8589 202.1401 402.1289 C
+202.5088 402.1289 L
+202.4741 400.9478 L
+201.4536 399.0996 L
+201.001 398.8594 200.6196 399.021 200.3042 399.3208 C
+199.8091 399.7979 199.4761 400.5181 198.981 401.8589 C
+198.6299 401.2559 198.1802 399.834 196.3438 399.2402 C
+195.8311 399.0688 195.2974 398.9248 194.6987 398.9248 C
+194.1943 398.9248 193.6445 399.0273 193.0229 399.3027 C
+F
1 D
+193.644 408.0869 m
+193.1221 407.4209 192.8789 406.5391 192.7349 405.4409 C
+192.5908 404.3071 192.6719 403.1548 192.8789 402.0029 C
+192.978 401.3999 193.1851 400.7432 193.6802 400.248 C
+194.1392 399.7979 194.4092 399.6719 194.958 399.627 C
+195.3091 399.6089 195.7861 399.7979 196.2451 400.1851 C
+196.6499 400.5361 197.208 401.5439 197.46 402.21 C
+198.0718 403.9019 L
+197.9282 404.9277 197.7031 406.5391 197.1719 407.4028 C
+196.8389 407.9429 196.2808 408.4741 195.687 408.6631 C
+195.3491 408.7598 195.0767 408.8032 194.8496 408.8032 C
+194.2534 408.8032 193.9697 408.5039 193.644 408.0869 C
+F
*U
+0 D
+201.3569 398.9248 m
+209.1509 413.0371 L
+210.6538 413.0371 L
+202.8599 398.9248 L
+201.3569 398.9248 L
+F
208.6382 399.3027 m
+208.6382 399.6001 L
+212.3369 403.5332 L
+214.7939 406.1519 214.8662 407.1777 214.8662 407.7539 C
+214.8662 408.8428 214.0562 409.896 212.7061 409.896 C
+211.1221 409.896 210.4561 408.6899 210.2041 408.249 C
+209.835 408.3662 L
+210.7891 411.1108 213.084 411.1831 213.5249 411.1831 C
+215.3882 411.1831 216.3779 409.563 216.3779 408.249 C
+216.3779 407.0698 215.937 406.2778 213.7588 404.1001 C
+210.3838 400.7251 L
+210.3838 400.6348 L
+213.7231 400.6348 L
+214.8838 400.6348 215.1631 401.1118 215.46 401.7422 C
+215.7568 401.6162 L
+214.8838 399.3027 L
+208.6382 399.3027 L
+F
131.7148 391.9502 m
+132.0659 392.8945 L
+441.3604 280.0264 L
+441.0176 279.0898 L
+131.7148 391.9502 L
+F
355.2842 472.9292 m
+355.2813 470.25 354.9766 467.2207 354.2666 464.9761 C
+354.9766 467.2207 355.2813 470.25 355.2842 472.9292 C
+F
357.5605 468.0767 m
+357.9482 468.4409 L
+358.4785 468.4741 L
+387 402.4575 L
+386.6133 402.0928 L
+386.082 402.0605 L
+357.5605 468.0767 L
+F
381.5732 401.7871 m
+386.6133 402.0928 L
+390.2939 405.5581 L
+389.4209 402.7949 389.1602 398.8438 389.3223 395.8198 C
+387.2344 398.0161 384.1826 400.5361 381.5732 401.7871 C
+F
355.2393 474.7139 m
+357.3271 472.5269 360.3779 469.998 362.9971 468.7559 C
+357.9482 468.4409 L
+354.2666 464.9761 L
+355.1396 467.7388 355.4014 471.6899 355.2393 474.7139 C
+F
U
LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_pattern_AI5 /terminate get exec
+AGM_Gradient /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/doc/alphacalc.gif b/doc/alphacalc.gif
new file mode 100644
index 0000000..1229cf5
Binary files /dev/null and b/doc/alphacalc.gif differ
diff --git a/doc/bullet.bmp b/doc/bullet.bmp
new file mode 100644
index 0000000..aad8fc7
Binary files /dev/null and b/doc/bullet.bmp differ
diff --git a/doc/ctsim-algorithms.tex b/doc/ctsim-algorithms.tex
new file mode 100644
index 0000000..b9ac22f
--- /dev/null
+++ b/doc/ctsim-algorithms.tex
@@ -0,0 +1,187 @@
+\chapter{Algorithms}\label{algorihms}\index{Algorithms}
+\setheader{{\it Appendix \thechapter}}{}{}{\ctsimheadtitle}{}{{\it Appendix \thechapter}}%
+\ctsimfooter%
+
+\ctsim\ uses a number of interesting algorithms. This appendix details some
+of the techniques that \ctsim\ uses.
+
+\section{Phantom Processing}\label{phantomprocessing}
+\textbf{Key Concepts}\\
+\hspace*{1cm}\texttt{Geometric transformations}\\
+\hspace*{1cm}\texttt{Matrix algebra}\\
+
+Phantom objects are processed in two different ways: rasterization
+and projections. \ctsim\ uses optimized techniques to perform
+those procedures.
+
+The primary tool used to optimize these processes is
+\emph{Geometric transformations}. For every primitive
+\helpref{phantom element}{phantomelements}, a standardized
+configuration is defined. This standard configuration is used to
+speed the process of collecting projections.
+
+In general, to transform an object into the standard
+configuration, the following sequence of transformations occur.
+When this sequence is performed, the coordinates are termed the
+\emph{normalized phantom element} coordinates.
+
+\begin{itemize}
+\item Scaling by the inverse of its size, that is usually
+scaling by \texttt{(1/dx,1/dy)}.
+\item Translating the object to the origin, that is usually translation by
+\texttt{(-cx,-cy)}.
+\item Rotating the object by \texttt{-r}.
+\end{itemize}
+
+These steps can by combined into a single matrix multiplication
+which involves only 4 multiplications and 6 additions to transform
+both \texttt{x} and \texttt{y} coordinates. This matrix is
+precalculated and stored when the phantom is created. Similarly,
+the inverse of the matrix is precalculated and store to perform
+the inverse of this transformation.
+
+As an example of this technique, consider the problem of finding
+the length of an arbitrary line that may intersect an arbitary
+ellipse. Define the endpoints of the line by \texttt{(x1,y1)} and
+\texttt{(x2,y2)}.
+
+\begin{enumerate}
+\item First, transform the coordinates into the normalized
+phantom element coordinates. At this point, the ellipse will have
+been transformed into a unit circle centered at \texttt{(0,0)}.
+\item Translate the
+coordinates by \texttt{(-x1,-y2)}. The line now has the endpoint
+centered at the origin. The ellipse will now have its center at
+\texttt{(-x1,-y1)}.
+\item Rotate the coordinates by the negative of angle of the line
+with respect to the x-axis.
+\end{enumerate}
+
+At this point the line will now lie along the positive x-axis with
+one end at \texttt{(0,0)}. The circle will be rotated around the
+origin as well. At this point, it is fairly trivial to calculate
+the length of the intersection of the line with the unit circle.
+For example, if the \texttt{y} coordinate for the center of the
+circle is greater than \texttt{1} or less than \texttt{-1}, then
+we know that the unit circle doesn't intersect the line at all and
+stop further processing. Otherwise, the endpoints of the
+intersection of the line with the unit circle is a simple
+calculation.
+
+Those new, intersected endpoints are then inverse transformed by
+reverse of the above transformation sequence. After the inverse
+translation, the transformed endpoints will be the endpoints of
+the line that intersect the actual ellipse prior to any
+transformations.
+
+Though this sequence of events is somewhat complex, it is quite
+fast since the multiple transformations can be combined into a
+single matrix multiplication. Further, this technique is amendable
+to rapidly calculating the intersection of a line with any of the
+phantom elements that \ctsim\ supports.
+
+\section{Background Processing}\label{backgroundprocessing}\index{Background processing}
+\textbf{Key Concepts}\\
+\hspace*{1cm}\texttt{Multithreading}\\
+\hspace*{1cm}\texttt{Critical sections}\\
+\hspace*{1cm}\texttt{Message passing}\\
+\hspace*{1cm}\texttt{Re-entrant code}\\
+
+The \ctsim\ graphical shell can optionally perform background
+processing. \ctsim\ uses threads as tools to achieve this
+functionality. Using multiple threads, termed
+\emph{multithreading}, allows \ctsim\ to:
+
+\begin{itemize}
+\item Execute a lengthy calculation in the background while the graphical shell remains
+available for use.
+\item Automatically take advantage of multiple central processing units (CPU's) in a
+symmetric multiprocessing (SMP) computer.
+\end{itemize}
+
+When background processing option is turned on or when \ctsim\ is
+running on a SMP computer, and \ctsim\ is directed to perform
+reconstruction, rasterization, or projections, \ctsim\ will spawn
+a \emph{Background Supervisor} thread. This supervisor thread then
+creates a \emph{Supervisor Event Handler} (supervisor).  The
+supervisor communicates with the rest of graphical user interface
+of  \ctsim\ by using message passing to avoid issues with
+re-entrant code.
+
+The supervisor registers itself via message passing with the
+\emph{Background Manager} which will display the execution
+progress in a pop-up window. The supervisor also registers itself
+with the document being processed. This is done so that if the
+document is closed, the document can send a message to the
+supervisor directing the supervisor to cancel the calculation.
+
+After registering with \ctsim\ components, the supervisor creates
+\emph{Worker Threads}. These worker threads are the processes that
+actually perform the calculations. By default, \ctsim\ will create
+one worker thread for every CPU in the system. As the workers
+complete unit blocks, they notify the supervisor. The supervisor
+then sends progress messages to background manager which displays
+a gauge of the progress.
+
+As the worker threads directly call the supervisor, it is crucial
+to lock the class data structures with \emph{Critical Sections}.
+Critical sections lock areas of code and prevent more than one
+thread to access a section of code at a time. This is used when
+maintaining the tables of worker threads in the supervisor.
+
+After the workers have completed their tasks, they notify the
+supervisor. When all the workers have finished, the supervisor
+kills the worker threads. The supervisor then collates the work
+units from the workers and sends a message to \ctsim\ to create a
+new window to display the finished work.
+
+The supervisor then deregisters itself via messages with the
+background manager and the document. The background manager
+removes the progress gauge from its display and resizes its
+window. Finally, the background supervisor exits and background
+supervisor thread terminates.
+
+This functionality has been compartmentalized into inheritable C++
+classes \texttt{BackgroundSupervisor},
+\texttt{BackgroundWorkerThread}, and
+\texttt{BackgroundProcessingDocument}. These classes serve as base
+classes for the reconstruction, rasterization, and projection
+multithreading classes.
+
+\subsection{Advantages}
+This structure may seem more complex than is necessary, but it has
+several advantages:
+
+\begin{itemize}
+\item Since the background threads do not directly call objects in the graphical
+user interface thread, problems with re-entrant code in the
+graphical interface are eliminated.
+\item A supervisor can parallel process with any number of worker threads
+to take advantage of potentially large numbers of CPU's in SMP
+computers.
+\item Allows for continued user-interaction with \ctsim\ while lengthy calculations
+are performed in the background.
+\end{itemize}
+
+\subsection{Disadvantages}
+
+The above advantages are not free of cost. The disadvantages
+include:
+
+\begin{itemize}
+\item Increased memory usage.\\
+ The workers threads allocate memory to store their intermediate
+results. When the worker threads finish, the supervisor allocates
+memory for the final result and collates the results for the
+workers. This collation results in a doubling of the memory
+requirements. Of course, after collation the supervisor releases
+the memory used by the workers.
+\item Slower execution on single CPU systems. \\
+Creating multiple threads, sending progress messages to the
+background manager, and collation of results for worker threads
+adds overhead compared to simply calculating the result directly
+in the foreground. On single CPU systems this results in slower
+processing compared to foreground processing. On dual-CPU and
+greater SMP systems, though, the advantage of using multiple CPU's
+in parallel exceeds the overhead of background processing.
+\end{itemize}
diff --git a/doc/ctsim-concepts.tex b/doc/ctsim-concepts.tex
new file mode 100644
index 0000000..86a94bc
--- /dev/null
+++ b/doc/ctsim-concepts.tex
@@ -0,0 +1,408 @@
+\chapter{Concepts}
+\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}
+\ctsimfooter
+
+\section{Conceptual Overview}\index{Conceptual overview}
+The operation of \ctsim\ begins with the phantom object.  A
+phantom object consists of geometric elements.  A scanner is
+specified and the collection of x-ray data, or projections, is
+simulated. This projection data can be reconstructed using various
+user-controlled algorithms producing an image of the phantom
+object. These reconstructions can be visually and statistically
+compared to the original phantom object.
+
+In order to use \ctsim\ effectively, some knowledge of how
+\ctsim\ works and the approach taken is required. \ctsim\ deals with a
+variety of object, but the two primary objects that we need to be
+concerned with are the \helprefn{phantom}{conceptphantom} and the
+\helprefn{scanner}{conceptscanner}.
+
+\section{Phantoms}\label{conceptphantom}
+
+\ctsim\ uses geometrical objects to describe the object being
+scanned. A phantom is composed of one or more phantom elements.
+These elements are simple geometric shapes, specifically,
+rectangles, triangles, ellipses, sectors and segments. With these
+elements, the standard phantoms used in the CT literature can be
+constructed.  In fact, \ctsim\ provides a shortcut to load the
+published phantoms of Herman\cite{HERMAN80} and
+Shepp-Logan\cite{SHEPP74}. \ctsim\ also reads text files of
+user-defined phantoms.
+
+The types of phantom elements and their definitions are taken with
+permission from G.T. Herman's publication\cite{HERMAN80}.
+
+\subsection{Phantom File}\label{phantomfile}\index{Phantom!File syntax}
+Each line in the text file describes an element of the
+phantom.  Each line contains seven entries, in the following form:
+\begin{verbatim}
+element-type cx cy dx dy r a
+\end{verbatim}
+The first entry defines the type of the element, either
+\texttt{rectangle}, \texttt{ellipse}, \texttt{triangle},
+\texttt{sector}, or \texttt{segment}.
+
+For all phantom elements, \texttt{r} is the rotation applied to the object in degrees
+counterclockwise and \texttt{a} is the X-ray attenuation
+coefficient of the object. Where objects overlap, the attenuations
+of the overlapped objects are summed.
+
+As opposed to the \texttt{r} and \texttt{a} fields, the \texttt{cx},
+\texttt{cy}, \texttt{dx} and \texttt{dy} fields have different
+meanings depending on the element type.
+
+
+
+\subsection{Phantom Elements}\label{phantomelements}\index{Phantom!Elements}
+
+\subsubsection{ellipse}
+Ellipses use \texttt{dx} and \texttt{dy} to define the semi-major and
+semi-minor axis lengths with the center of the ellipse at \texttt{(cx,cy)}.
+Of note, the commonly used phantom described by
+Shepp and Logan\cite{SHEPP74} uses only ellipses.
+
+\subsubsection{rectangle}
+Rectangles use \texttt{(cx,cy)} to define the position of
+the center of the rectangle with respect to the origin.  \texttt{dx}
+and \texttt{dy} are the half-width and half-height of the rectangle.
+
+\subsubsection{triangle}
+Triangles are drawn with the center of the base at \texttt{(cx,cy)}
+and a base half-width of \texttt{dx} and a height of \texttt{dy}.
+Rotations are then applied about the center of the base.
+
+\subsubsection{segment}
+Segments are complex. They are the portion of an circle between a
+chord and the perimeter of the circle.  \texttt{dy} sets the
+radius of the circle. Segments start with the center of the chord
+located at \texttt{(0,0)} and the chord horizontal. The half-width
+of the chord is set by \texttt{dx}.  The portion of an circle
+lying below the chord is then added. The imaginary center of this
+circle is located at \texttt{(0,-dy)}. The segment is then rotated
+by \texttt{r} and then translated by \texttt{(cx,cy)}.
+
+\subsubsection{sector}
+Sectors are the like a ``pie slice'' from a circle. The radius of
+the circle is set by \texttt{dy}. Sectors are defined similarly to
+segments. In this case, though, a chord is not drawn.  Instead,
+the lines are drawn from the origin of the circle \texttt{(0,-dy)}
+to the points \texttt{(-dx,0)} and \texttt{(dx,0)}. The perimeter
+of the circle is then drawn between those two points and lies
+below the x-axis. The sector is then rotated and translated the
+same as a segment.
+
+\subsection{Phantom Size}\index{Phantom!Size}
+The overall dimensions of the phantom are increased by 1\% above the
+specified sizes to avoid clipping due to round-off errors from
+sampling the polygons of the phantom elements.  So, if the phantom is
+defined as a rectangle of size 0.1 by 0.1, the phantom size is
+0.101 in each direction.
+
+\section{Scanner}\label{conceptscanner}\index{Scanner!Concepts}%
+Understanding the scanning geometry is the most complicated aspect of
+using \ctsim. For real-world CT simulators, this is actually quite
+simple. The geometry is fixed by the manufacturer during the
+construction of the scanner and can not be changed. \ctsim,
+being a very flexible simulator, gives tremendous options in
+setting up the geometry for a scan.
+
+\subsection{Dimensions}
+The geometry for a scan starts with the size of
+the phantom being scanned. This is because \ctsim\ allows for
+statistical comparisons between the original phantom image and
+it's reconstructions. Since CT scanners scan a circular area, the
+first important variable is the diameter of the circle surround
+the phantom, the \emph{phantom diameter}. Remember, as mentioned
+above, the phantom dimensions are padded by 1\%.
+
+The other important geometry variables for scanning phantoms are
+the \emph{view diameter}, \emph{scan diameter}, \emph{focal
+length}, and \emph{center-detector length}. These variables are input into \ctsim\ in terms of
+ratios rather than absolute values.
+
+\subsubsection{Phantom Diameter}\index{Phantom!Diameter}
+The phantom diameter is automatically calculated by \ctsim\ from
+the phantom definition. The maximum of the phantom length and
+height is used to define the square that completely surrounds the
+phantom. Let \latexonly{$p_l$}\latexignore{\emph{Pl}} be the width
+and height of this square. The diameter of this boundary box,
+\latexonly{$p_d$,}\latexignore{\emph{Pd},} is given by the
+Pythagorean theorem and is
+\latexignore{\\\centerline{\emph{Pl x sqrt(2)}}\\}
+\latexonly{\begin{equation}p_d = p_l \sqrt{2}\end{equation}}
+CT scanners collect projections around a
+circle rather than a square. The diameter of this circle is
+the diameter of the boundary square \latexonly{$p_d$.}
+\latexignore{\emph{Pd}.}
+\latexonly{These relationships are diagrammed in figure~\ref{phantomgeomfig}.}
+\begin{figure}
+\centerline{\image{8cm;0cm}{scangeometry.eps}}
+\latexonly{\caption{\label{phantomgeomfig} Phantom Geometry}}
+\end{figure}
+
+\subsubsection{View Diameter}\index{View diameter}
+The \emph{view diameter} is the area that is being processed
+during scanning of phantoms as well as during rasterization of
+phantoms. By default, the \emph{view diameter} is set equal
+to the \emph{phantom diameter}. It may be useful, especially for
+experimental reasons, to process an area larger (and maybe even
+smaller) than the phantom. Thus, during rasterization or during
+projections, \ctsim\ will ask for a \emph{view ratio},
+\latexonly{$v_r$.}\latexignore{\rtfsp \emph{VR}.} The \emph{view
+diameter} is then calculated as
+\latexonly{\begin{equation}v_d = p_dv_r\end{equation}}
+\latexignore{\\\centerline{\emph{Vd = Pd x VR}}\\}
+
+By using a
+\latexonly{$v_r$}\latexignore{\emph{VR}}
+less than 1, \ctsim\ will allow
+for a \emph{view diameter} less than
+\emph{phantom diameter}.
+This will lead to significant artifacts. Physically, this would
+be impossible and is analogous to inserting an object into the CT
+scanner that is larger than the scanner itself!
+
+\subsubsection{Scan Diameter}\index{Scan diameter}
+By default, the entire \emph{view diameter} is scanned. For
+experimental purposes, it may be desirable to scan an area either
+larger or smaller than the \emph{view diameter}. Thus, the concept
+of \emph{scan ratio}, \latexonly{$s_r$,}\latexignore{\emph{SR},}
+arises. The scan diameter,
+\latexonly{$s_d$,}\latexignore{\emph{Sd},} is the diameter over
+which x-rays are collected and is defined as
+\latexonly{\begin{equation}s_d =v_d s_r\end{equation}}
+\latexignore{\\\centerline{\emph{Sd = Vd x SR}}\\}
+By default and
+for all ordinary scanning, the \emph{scan ratio} is to \texttt{1}.
+If the \emph{scan ratio} is less than \texttt{1}, you can expect
+significant artifacts.
+
+\subsubsection{Focal Length}\index{Focal length}
+The \emph{focal length},
+\latexonly{$f$,}\latexignore{\emph{F},}
+is the distance of the X-ray source to the center of
+the phantom. The focal length is set as a ratio,
+\latexonly{$f_r$,}\latexignore{\emph{FR},}
+of the view radius. Focal length is
+calculated as
+\latexonly{\begin{equation}f = (v_d / 2) f_r\end{equation}}
+\latexignore{\\\centerline{\emph{F = (Vd / 2) x FR}}}
+
+For parallel geometry scanning, the focal length doesn't matter.
+However, for divergent geometry scanning (equilinear and equiangular),
+the \emph{focal length ratio} should be set at \texttt{2} or more
+to avoid artifacts. Moreover, a value of less than \texttt{1} is
+physically impossible and it analagous to having the x-ray
+source inside of the \emph{view diameter}.
+
+\subsubsection{Center-Detector Length}\index{Center-Detector length}
+The \emph{center-detector length},
+\latexonly{$c$,}\latexignore{\emph{C},}
+is the distance from the center of
+the phantom to the center of the detector array. The center-detector length is set as a ratio,
+\latexonly{$c_r$,}\latexignore{\emph{CR},}
+of the view radius. The center-detector length is
+calculated as
+\latexonly{\begin{equation}f = (v_d / 2) c_r\end{equation}}
+\latexignore{\\\centerline{\emph{F = (Vd / 2) x CR}}}
+
+For parallel geometry scanning, the center-detector length doesn't matter.
+A value of less than \texttt{1} is physically impossible and it analagous to
+having the detector array inside of the \emph{view diameter}.
+
+
+\subsection{Parallel Geometry}\label{geometryparallel}\index{Parallel geometry}\index{Scanner!Parallel}
+
+The simplest geometry, parallel, was used in first generation
+scanners. As mentioned above, the focal length is not used in this simple
+geometry. The detector array is set to be the same size as the
+\emph{scan diameter}.  For optimal scanning in this geometry, the
+\emph{scan diameter} should be equal to the \emph{phantom
+diameter}. This is accomplished by using the default values of
+\texttt{1} for the \emph{view ratio} and the \emph{scan ratio}. If
+values of less than \texttt{1} are used for these two variables,
+significant distortions will occur.
+
+
+\subsection{Divergent Geometries}\label{geometrydivergent}\index{Equilinear geometry}\index{Equiangular geometry}
+\index{Scanner!Equilinear}\index{Scanner!Equiangular}
+For both equilinear (second generation) and equiangular
+(third, fourth, and fifth generation) geometries,
+the x-ray beams diverge from a single source to a detector array.
+In the equilinear mode, a single
+source produces a fan beam which is read by a linear array of detectors.  If
+the detectors occupy an arc of a circle, then the geometry is equiangular.
+\latexonly{These configurations are shown in figure~\ref{divergentfig}.}
+\begin{figure}
+\centerline{\image{10cm;0cm}{divergent.eps}}
+\latexonly{\caption{\label{divergentfig} Equilinear and equiangular geometries.}}
+\end{figure}
+
+
+\subsubsection{Fan Beam Angle}\index{Fan beam angle}
+For these divergent beam geometries, the \emph{fan beam angle}
+needs to be calculated. For real-world CT scanners, this is fixed
+at the time of manufacture. \ctsim, however, calculates the
+\emph{fan beam angle}, $\alpha$, from the \emph{scan diameter} and
+the \emph{focal length} as
+\latexignore{\centerline{\emph{alpha = 2 x asin (
+(Sd / 2) / f)}}}
+\latexonly{\begin{equation}\label{alphacalc}\alpha = 2 \sin^{-1}
+((s_d / 2) / f)\end{equation}}
+\latexonly{This is illustrated in figure~\ref{alphacalcfig}.}
+\begin{figure}
+\centerline{\image{10cm;0cm}{alphacalc.eps}}
+\latexonly{\caption{\label{alphacalcfig} Calculation of $\alpha$}}
+\end{figure}
+
+
+Empiric testing with \ctsim\ shows that for very large \emph{fan beam angles},
+greater than approximately
+\latexonly{$120^\circ$,}\latexignore{120 degrees,}
+there are significant artifacts. The primary way to manage the
+\emph{fan beam angle} is by varying the \emph{focal length} since the
+\emph{scan diameter} is usually fixed at the size of the phantom.
+
+To illustrate, the \emph{scan diameter} can be defined as
+\latexonly{\begin{equation}s_d = s_r v_r p_d\end{equation}}
+\latexignore{\\\centerline{\emph{Sd = Sr x Vr x Pd}}\\}
+
+Further, the \emph{focal length} can be defined as
+\latexonly{\begin{equation} f = f_r (v_r p_d / 2)\end{equation}}
+\latexignore{\\\centerline{\emph{F = FR x (VR x Pd)$$\\}}}
+
+Substituting these equations into \latexignore{the above
+equation,}\latexonly{equation~\ref{alphacalc},} We have,
+\latexonly{
+\begin{eqnarray}
+\alpha &=& 2\,\sin^{-1} \frac{\displaystyle s_r v_r p_d / 2}{\displaystyle f_r v_r (p_d / 2)} \nonumber \\
+&=& 2\,\sin^{-1} (s_r / f_r)
+\end{eqnarray}
+} \latexignore{\\\centerline{\emph{\alpha = 2 sin (Sr / Fr)}}\\}
+
+Since in normal scanning $s_r$ = 1, $\alpha$ depends only upon the
+\emph{focal length ratio} in normal scanning.
+
+\subsubsection{Detector Array Size}
+In general, you do not need to be concerned with the detector
+array size -- it is automatically calculated by \ctsim. For the
+particularly interested, this section explains how the detector
+array size is calculated.
+
+For parallel geometry, the detector length is simply the scan
+diameter.
+
+For divergent beam geometries, the size of the detector array also
+depends upon the \emph{focal length}: increasing the \emph{focal
+length} decreases the size of the detector array.
+
+For equiangular geometry, the detectors are equally spaced around a arc
+covering an angular distance of $\alpha$ as viewed from the source. When
+viewed from the center of the scanning, the angular distance is
+\latexonly{$$\pi + \alpha - 2 \, \cos^{-1} \Big( \frac{s_d / 2}{c} \Big)$$}
+\latexignore{\\\emph{pi + \alpha - 2 x acos ((Sd / 2) / C))}\\}
+The dotted circle
+\latexonly{in figure~\ref{equiangularfig}}
+indicates the positions of the detectors in this case.
+
+\begin{figure}
+\centerline{\image{10cm;0cm}{equiangular.eps}}
+\latexonly{\caption{\label{equiangularfig}Equiangular geometry}}
+\end{figure}
+
+For equilinear geometry, the detectors are equally spaced along a straight
+line. The detector length depends upon
+\latexonly{$\alpha$}\latexignore{\emph{alpha}} and the \emph{focal
+length}. This length,
+\latexonly{$d_l$,}\latexignore{Dl,} is calculated as
+\latexonly{\begin{equation} d_l = 2\,(f + c) \tan (\alpha / 2)\end{equation}}
+\latexignore{\\\centerline{\emph{2 x (F + C) x tan(\alpha/2)}}}
+\latexonly{This geometry is shown in figure~\ref{equilinearfig}.}
+\begin{figure}
+\centerline{\image{10cm;0cm}{equilinear.eps}}
+\latexonly{\caption{\label{equilinearfig} Equilinear geometry}}
+\end{figure}
+
+
+\section{Reconstruction}\label{conceptreconstruction}\index{Reconstruction overview}%
+
+\subsection{Direct Inverse Fourier}
+This method is not currently implemented in \ctsim; however, it is
+planned for a future release. This method does not give results as
+accurate as filtered backprojection. This is due primarily
+to interpolation occurring in the frequency domain rather than the
+spatial domain.
+
+\subsection{Filtered Backprojection}\index{Filtered backprojection}\index{Symmetric multiprocessing}\index{SMP}
+The technique is comprised of two sequential steps:
+filtering projections followed by backprojecting the filtered projections. Though
+these two steps are sequential, each view position can be processed independently.
+
+\subsubsection{Parallel Computer Processing}\index{Parallel processing}
+Since each view can be processed independently, filtered backprojection is amendable to
+parallel processing. Indeed, this has been used in commercial scanners to speed reconstruction.
+This parallelism is exploited both in the \ctsim\ graphical shell and
+in the \helpref{LAM}{ctsimtextlam} version of \ctsimtext. \ctsim\ can distribute it's workload
+amongst multiple processors working in parallel.
+
+The graphical shell will automatically take advantage of multiple CPU's when
+running on a \emph{Symmetric Multiprocessing}
+computer. Dual-CPU computers are commonly available which provide a near doubling
+in reconstruction speeds. \ctsim, though, has no limits on the number of CPU's
+that can be used in parallel. The \emph{LAM} version
+of \ctsimtext\ is designed to work in a cluster of computers.
+This has been testing with a cluster of 16 computers in a
+\urlref{Beowulf-class}{http://www.beowulf.org} cluster with excellent
+results.
+
+\subsubsection{Filter projections}
+The first step in filtered backprojection reconstructions is the filtering
+of each projection. The projections for a each view have their frequency data multipled by
+a filter of $|w|$. \ctsim\ permits four different ways to accomplish this
+filtering.
+
+Two of the methods use convolution of the projection data with the
+inverse Fourier transform of $|w|$. The other two methods perform an Fourier
+transform of the projection data and multiply that by the $|w|$ filter and
+then perform an inverse fourier transform.
+
+Though multiplying by $|w|$ gives the sharpest reconstructions, in
+practice, superior results are obtained by reducing the higher
+frequencies. This is performed by mutiplying the $|w|$ filter by
+another filter that attenuates the higher frequencies. \ctsim\ has
+multiple filters for this purpose.
+
+\subsubsection{Backprojection of filtered projections}
+Backprojection is the process of ``smearing'' the filtered
+projections over the reconstructing image. Various levels of
+interpolation can be specified.
+
+\section{Image Comparison}\label{conceptimagecompare}\index{Image!Comparison}
+Images can be compared statistically. Three measurements can be calculated
+by \ctsim. They are taken from the standard measurements used by
+Herman\cite{HERMAN80}. They are:
+
+\begin{itemize}\itemsep=0pt
+\item[]\textbf{$d$}\quad The normalized root mean squared distance measure.
+\item[]\textbf{$r$}\quad The normalized mean absolute distance measure.
+\item[]\textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.
+\end{itemize}
+
+These measurements are defined in equations \ref{dequation} through \ref{bigrequation}.
+In these equations, $p$ denotes the phantom image, $r$ denotes the reconstruction
+image, and $\bar{p}$ denotes the average pixel value of $p$. Each of the images have a
+size of $m \times n$. In equation \ref{eequation} $[n/2]$ and $[m/2]$ denote the largest
+integers less than $n/2$ and $m/2$, respectively.
+
+\latexignore{These formulas are shown in the print documentation of \ctsim.}
+%
+%Tex2RTF can not handle the any subscripts or superscripts for the inner summation unless
+% have a space character before the \sum
+\latexonly{\begin{equation}\label{dequation} d =\sqrt{\frac{\displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{(p_{i,j} - r_{i,j})^2}}}{\displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{(p_{i,j} - \bar{p})^2}}}}\end{equation}}
+\latexonly{\begin{equation}\label{requation}r = \frac{ \displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{|p_{i,j} - r_{i,j}|}}}{ \displaystyle \sum_{i=1}^{n}{ \sum_{j=1}^{m}{|p_{i,j}|}}}\end{equation}}
+\latexonly{\begin{equation}\label{eequation}e = \max_{1 \le k \le [n/2] \atop 1 \le l \le [m/2]}(|P_{k,l} - R_{k,l}|)\end{equation}}
+\latexonly{where}
+\latexonly{\begin{equation}\label{bigpequation}P_{k,l} = \textstyle \frac{1}{4} (p_{2k,2l} + p_{2k+1,2l} + p_{2k,2l+l} + p_{2k+1,2l+1})\end{equation}}
+\latexonly{\begin{equation}\label{bigrequation}R_{k,l} = \textstyle \frac{1}{4} (r_{2k,2l} + r_{2k+1,2l} + r_{2k,2l+1} + r_{2k+1,2l+1})\end{equation}}
+\begin{comment}
+\end{comment}
diff --git a/doc/ctsim-gui.tex b/doc/ctsim-gui.tex
new file mode 100644
index 0000000..9643137
--- /dev/null
+++ b/doc/ctsim-gui.tex
@@ -0,0 +1,660 @@
+\chapter{The Graphical User Interface}\label{ctsim}\index{ctsim}\index{Graphical interface}%
+\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
+\ctsimfooter%
+
+
+\ctsim\ is the graphical shell for the CTSim project. This shell uses
+the \urlref{wxWindows}{http://www.wxwindows.org} library for
+cross-platform compatibility. The graphical shell is compatible with
+Microsoft Windows, \urlref{GTK}{http://www.gtk.org}, and
+\urlref{Motif}{http://www.openmotif.org} graphical environments.
+
+\section{Starting CTSim}
+\usage \texttt{ctsim [files to open...]}
+
+You can invoke \ctsim\ by itself on the command line, or include any
+number of files that you want \ctsim\ to automatically open. \ctsim\
+can open projection files, image files, phantom files, and plot files.
+
+On Microsoft Windows platforms, the simplest way to invoke \ctsim\ is
+via the \emph{Start} menu under the \emph{Programs} sub-menu.
+
+\section{Quick Start}\label{IDH_QUICKSTART}\index{Quick Start}
+The fastest way to put \ctsim\ through it's basic operation is:
+\begin{enumerate}\itemsep=0pt
+\item \texttt{File - Create Phantom...} \\
+This creates a window with the geometric phantom. Choose the \texttt{Herman} head phantom.
+\item \texttt{Process - Rasterize...} \\
+This creates an image file of the phantom by converting it from a
+geometric definition into a rasterized image. You may use the defaults
+shown in the dialog box.
+\item \texttt{View - Auto...} \\
+Use this command on the new rasterized image window. This will optimize the intensity scale for
+viewing the soft-tissue details of the phantom. Select the \texttt{median} center and
+a standard deviation factor of \texttt{0.1}.
+\item \texttt{Process - Projections...} \\
+Use this command on the geometric phantom window. This simulates the collection of x-ray
+data. You may use the defaults shown in the dialog box. Additionally, you may wish to turn on
+\texttt{Trace - Projections} to watch to x-ray data being simulated.
+\item \texttt{Reconstruction - Filtered Backprojection...} \\
+Use this command on the projection window. This will reconstruct an image
+from the projections. Once again, you may use the defaults shown in the dialog box.
+\item \texttt{View - Auto...} \\
+Use this command on the new reconstructed image window. This will optimize the intensity scale for
+viewing the soft-tissue details of the reconstruction. Select the \texttt{median} center and
+a standard deviation factor of \texttt{0.1}.
+\item \texttt{Analyze - Compare Images...} \\
+Use this command on the rasterized phantom image window. This will bring up a dialog box
+asking for the comparison image. Select the reconstruction image that you just made and also select the "Make difference image"
+check box. You'll then see the image distance measurements and also a new window with the difference between the rasterized
+phantom and the reconstruction.
+\item \textbf{That's it!} You have just performed the basic operations with \ctsim. By varying the parameters of the rasterization,
+projection, and reconstructions you perform endless computed tomography experiments. \ctsim\ also has many other visualization
+and analysis features that you learn more about by reading the manual.
+\end{enumerate}
+
+\section{File Types}\index{File types}
+
+\subsection{Phantom}
+Besides loading phantom files from the disk, the Herman\cite{HERMAN80} and
+Shepp-Logan\cite{SHEPP74} phantoms are built-in to \ctsim. Phantom files can be
+read from and written to the disk. Phantom files are stored in a simple
+ASCII format. A text editor is required to
+create and edit these files.
+
+\subsection{Image}
+Image files contain 2-dimensional arrays that store 4-byte floating
+point values. Images files can be either real or complex-valued.
+Typically, all images are real-valued except for images that have been
+processed by Fourier transforms. As you might expect,
+complex-valued images are twice the size of real-valued images
+since both a real and imaginary component need to be stored. When
+complex-valued images are viewed on the screen, only the real
+component is displayed.
+
+Images files can    store any number of text labels. \ctsim\ uses
+these labels for recording history information regarding
+the creation and modifications of images.
+
+\subsection{Projection}
+Projection files are created from phantom files via the
+projection process. Numerous options are available for the
+creation of the these files. The files are stored in a binary
+format with cross-platform compatibility on little and big-endian
+architectures.
+
+\subsection{Plot}
+Plot files are created by \ctsim\ during analysis of image files.
+They can be read from and written to the disk. They are stored as ASCII
+files for easy cross-platform support and editing.
+
+\section{Global Menu Commands}
+These global commands are present on the menus of all windows.
+
+\subsection{File - Create Phantom}\label{IDH_DLG_PHANTOM}\index{Dialog!Create phantom}
+This command displays a dialog box showing the phantoms that are pre-programmed
+into \ctsim. After selecting one of these phantoms, the new window with that
+phantom will be generated. The pre-programmed phantoms are:
+
+\begin{twocollist}
+\twocolitem{\textbf{Herman}}{The Herman head phantom\cite{HERMAN80}}
+\twocolitem{\textbf{Shepp-Logan}}{The head phantom of Shepp \& Logan\cite{SHEPP74}}
+\twocolitem{\textbf{Unit pulse}}{A phantom that has a value of \texttt{1} for the
+center of the phantom and \texttt{0} everywhere else.}
+\end{twocollist}
+
+\subsection{File - Create Filter}\label{IDH_DLG_FILTER}\index{Dialog!Create filter}
+This command displays a dialog box showing the pre-programmed filters
+of \ctsim. This command will create a 2-dimensional image of the selected filter.
+The center of the filter is at the center of the image.
+
+These filters can be created in their natural frequency domain or in their inverse
+spatial domain.
+
+\begin{twocollist}
+\twocolitem{\textbf{Filter}}{Selects the filter to generate. The available filters are:
+
+\begin{itemize}\itemsep=0pt
+\item $|w|$ Bandlimit
+\item $|w|$ Hamming
+\item $|w|$ Hanning
+\item $|w|$ Cosine
+\item $|w|$ Sinc
+\item Shepp
+\item Bandlimit
+\item Sinc
+\item Hamming
+\item Hanning
+\item Cosine
+\item Triangle
+\end{itemize}
+}
+\twocolitem{\textbf{Domain}}{Selects either the \texttt{Frequency} or \texttt{Spatial} domain. The filters have the
+frequency domain as their natural domain. The spatial domain is obtained either analytically or performing
+an inverse Fourier transformation.}
+\twocolitem{\textbf{X Size}}{Number of columns in the output image.}
+\twocolitem{\textbf{Y Size}}{Number of rows in the output image.}
+\twocolitem{\textbf{Hamming Parameter}}{ This parameter adjusts the smoothing of the Hamming
+filter and can range from \texttt{0} to \texttt{1}.
+At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter.
+At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning
+window.}
+\twocolitem{\textbf{Bandwidth}}{Sets the bandwidth of the filter.}
+\end{twocollist}
+
+\begin{twocollist}
+\twocolitem{\textbf{Axis (input) Scale}}{Sets the scale for the filter input. By default, the input to the filter is
+the distance in pixels from the center of the image. By changing this value, one can set a scale the input to the filter.
+For example, if the output image is \texttt{101} by \texttt{101} pixels and thus the center of the image is at \texttt{(50,50)}, then a pixel
+lying at point \texttt{100,50} would be 50 units from the center of the filter. By applying an \texttt{Axis scale} of
+\texttt{0.1}, then that point would be scaled to 5 units from the center of the filter.}
+\twocolitem{\textbf{Filter (output) Scale}}{Multiplies the output of the filter by this amount. By default, the filter has a maximum
+value of \texttt{1}.}
+\end{twocollist}
+
+\subsection{File - Import}\label{IDH_DLG_IMPORT}
+This command allows the importing of non-\ctsim\ file formats into
+\ctsim.  \texttt{PPM} and \texttt{PNG} formats will be read into an
+imagefile window. Color images will be converted to grayscale. If a
+\texttt{DICOM} library was linked in with your version of \ctsim,
+then you can also import \texttt{DICOM} projection files and image
+files.
+
+\subsection{File - Preferences}\label{IDH_DLG_PREFERENCES}\index{Dialog!Preferences}
+This command displays a dialog box that allows users to control
+the behavior of \ctsim. These options are saved across \ctsim\ sessions.
+Under Microsoft Windows environments, they are stored in the registry.
+On UNIX and Linux environments, they are stored in the user's home
+directory with the filename of \texttt{.ctsim}.
+
+\begin{twocollist}
+\twocolitem{\textbf{Advanced options}}{This option is initially turned off in new installations.
+These advanced options are not required for normal simulations. When \texttt{Advanced
+Options} is set, \ctsim\ will display more options during scanning of phantoms and
+the reconstruction of projections.}
+
+\twocolitem{\textbf{Ask before closing new documents}}{This option is initially turned on in
+new installations. With this option set, \ctsim\ will ask before closing
+documents that have been modified or never saved on disk. By turning off
+this option, \ctsim\ will never ask if you want to save a file -- you'll
+be responsible for saving any files that you create.}
+
+\twocolitem{\textbf{Verbose logging}}{This option is initially turned off in
+new installations. With this option set, \ctsim\ will log more events than
+usual. There extra events are not important for viewing with typical operation of
+\ctsim.}
+
+\twocolitem{\textbf{Show startup tips}}{This option is initially turned on in
+new installations. With this option set, \ctsim\ will display
+helpful tips when \ctsim\ is started.}
+
+\twocolitem{\textbf{Run background tasks}}{This option is initially turned off in
+new installations. With this option set, \ctsim\ execute lengthy calculations in the
+background. A background window will appear when processes are running in the background
+and will disappear when no background processes are executing. This background window shows
+the status and progress of all background processes. 
+\textbf{NOTE:} Due to limitations of \texttt{wxWindows}, this function is
+only supported on Microsoft Windows.
+}
+
+\end{twocollist}
+
+\subsection{File - Open}
+This command opens a file section dialog box. Of special consideration
+is the \texttt{File Type} combo box on the bottom of the dialog. You need
+to set the this combo box to the type of file that you wish to open.
+
+\subsection{File - Save}
+This command saves the contents of the active window. If the window hasn't
+been named, a dialog box will open asking for the file name to use.
+
+\subsection{File - Close}
+As one would expect, this closes the active window. If the contents of the window have not been
+saved and the \emph{Advanced Preferences} option \texttt{Ask before closing new documents}
+is turned on, then you will be prompted if decide if you want to save the contents of the window
+prior to closing.
+
+\subsection{File - Save As}
+Allows the saving of the contents of the active window to any file name.
+
+\subsection{Help - Contents}
+This command displays the online help.
+
+\subsection{Help - Tips}
+This command displays a dialog with tips on using \ctsim.
+
+\subsection{Help - Quick Start}
+This command displays a recommend approach to helping new users learn to use \ctsim.
+
+\subsection{Help - About}
+This command shows the version number and operating environment of \ctsim.
+
+
+\section{Phantom Menus}
+
+\subsection{Properties}
+Displays the properties of a phantom which includes:
+
+\begin{itemize}\itemsep=0pt
+\item Overall dimensions of a phantom
+\item A list of all component phantom elements
+\end{itemize}
+
+\subsection{Process - Rasterize}\label{IDH_DLG_RASTERIZE}\index{Dialog!Rasterize}
+This creates an image file from a phantom. Technically, it
+converts the phantom from a vector (infinite resolution) object
+into a 2-dimension array of floating-point pixels. The parameters
+to set are:
+
+\begin{twocollist}
+\twocolitem{\textbf{X size}}{Number of columns in image file}
+\twocolitem{\textbf{Y size}}{Number of rows in image file}
+\twocolitem{\textbf{Samples per pixel}}{Numbers of samples taken
+per pixel in both the x and y directions. For example, if the
+\texttt{Samples per pixel} is set to \texttt{3}, then for every
+pixel in the image file 9 samples \latexonly{($3\times3$)}\latexignore{(3 x 3)}
+are averaged.}
+\end{twocollist}
+
+\subsection{Process - Projections}\label{IDH_DLG_PROJECTIONS}\index{Dialog!Projections}
+This command creates a projection file from a phantom. The options
+available when collecting projections are:
+
+\begin{twocollist}
+\twocolitem{\textbf{Geometry}}{Sets the scanner geometry. The available geometries are:
+  \begin{itemize}\itemsep=0pt
+    \item \texttt{Parallel}
+    \item \texttt{Equiangular}
+    \item \texttt{Equilinear}
+  \end{itemize}}
+\twocolitem{\textbf{Number of detectors}}{Sets the number of
+detectors in the detector array.}
+
+\twocolitem{\textbf{Number of views}}{Sets the number of views
+to collect.}
+
+\twocolitem{\textbf{Samples per detector}}{Sets the number of
+samples collected for each detector.}
+
+\twocolitem{\textbf{View Ratio}}{Sets the field of view as a ratio
+of the diameter of the phantom.  For normal scanning, use a value of
+\texttt{1.0}.}
+
+\twocolitem{\textbf{Scan Ratio}}{Sets the length of scanning as a
+ratio of the view diameter. For normal scanning, use a value of \texttt{1.0}.}
+
+\twocolitem{\textbf{Focal length ratio}}{Sets the distance between the
+radiation source and the center of the phantom as a
+ratio of the radius of the phantom. For parallel geometries, a value
+of \texttt{1.0} is optimal. For other
+geometries, this should be at least \texttt{2.0} to avoid artifacts.}
+\end{twocollist}
+
+\textbf{Advanced Options}
+
+These options are visible only if \emph{Advanced Options} has been
+selected in the \texttt{File - Preferences} dialog. These parameters
+default to optimal settings and don't need to be adjusted except
+by expert users.
+
+\begin{twocollist}
+\twocolitem{\textbf{Rotation Angle}}{Sets the rotation amount as a
+fraction of a circle. For parallel geometries use a rotation angle of \texttt{0.5}
+and for equilinear and equiangular geometries use a rotation angle
+of \texttt{1}. Using any other rotation angle will lead to artifacts.}
+\end{twocollist}
+
+
+
+\section{Image Menus}
+\subsection{File - Properties}
+Properties of image files include:
+\begin{itemize}\itemsep=0pt
+  \item Whether the image is real or complex-valued.
+  \item Numeric statistics (minimum, maximum, mean, median, mode, and standard deviation).
+  \item History labels (text descriptions of the processing for this image).
+\end{itemize}
+
+\subsection{File - Export}\label{IDH_DLG_EXPORT}\index{Image!Export}
+This command allows for exporting image files to a standard
+graphics file format. This is helpful when you want to take an
+image and import it into another application. The current
+\helprefn{intensity scale}{intensityscale} is used when exporting
+the file. The supported graphic formats are:
+
+\begin{twocollist}
+\twocolitem{\textbf{PNG}}{Portable Network Graphics format. This uses 8-bits or
+256 shades of gray.}
+\twocolitem{\textbf{PNG-16}}{This is a 16-bit version of PNG which allows for
+65536 shades of gray.}
+\twocolitem{\textbf{PGM}}{Portable Graymap format. This is a common format used on
+UNIX systems.}
+\twocolitem{\textbf{PGM ASCII}}{ASCII version of PGM.}
+\end{twocollist}
+
+
+\subsection{View}
+\subsubsection{Intensity Scale}\label{intensityscale}\index{Intensity scale}
+These commands are used change the intensity scale for viewing the image.
+These commands do not change the image data. When the minimum value is
+set, then the color pure black is assigned to that image value. Similarly,
+when the maximum value is set, the the color pure white is assigned to that
+image value.
+
+Changing the intensity scale is useful when examining different image features.
+In clinical medicine, the intensity scale is often changed to examine bone
+(high value) versus soft-tissue (medium value) features.
+
+\subsubsection{Set}\label{IDH_DLG_MINMAX}
+This command displays a dialog box that sets the lower
+and upper values to display.
+
+\subsubsection{Auto}\label{IDH_DLG_AUTOSCALE}\index{Auto scale}
+This command displays a dialog box that allows \ctsim\ to automatically
+make an intensity scale. The parameters that \ctsim\ needs to make this
+automatic scale are:
+
+\begin{twocollist}
+\twocolitem{\textbf{Center}}{This sets the center of the intensity scale. Currently,
+\ctsim\ allows you to use either the mean, mode, or median of the image
+as the center of the intensity scale.}
+
+\twocolitem{\textbf{Width}}{This sets the half-width of the intensity scale. The half-width
+is specified as a multiple of the standard deviation.}
+\end{twocollist}
+
+As an example, if \texttt{median} is selected as the center and
+\texttt{0.5} is selected as the width, the the minimum value will
+be \latexonly{$median - 0.5 \times standardDeviation$}\latexignore{\emph{median - 0.5 x standardDeviation}}
+and the maximum value will be \latexonly{$median + 0.5 \times standardDeviation$.}\latexignore{\emph{
+median + 0.5 x standardDeviation}.}
+
+\subsubsection{Full}
+This command resets the intensity scale to the full scale of the image.
+
+\subsection{Image}
+These commands create a new image based upon the current image,
+and for some commands, also upon a comparison image.
+
+\subsubsection{Add, Subtract, Multiply, Divide}
+These are simple arithmetic operations. \ctsim\ will display a dialog
+box showing all of the currently opened image files that are the
+same size as the active image. After the selection of a compatible image,
+\ctsim\ will perform the arithmetic operation on the two images and
+make a new result image.
+
+\subsubsection{Image Size}
+This command will generate a new image based on the current image. The new
+image can be scaled to any size. A dialog
+appears asking for the size of the new image. Bilinear interpolation
+is used when calculating the new image.
+
+\subsubsection{3-D Conversion}
+This command generates a 3-dimensional view of the current phantom. This view can be
+rotated in three dimensions. The left and right arrow control the z-axis
+rotation and the up and down arrows control the x-axis rotation. The y-axis
+rotation is controlled by the \texttt{T} and \texttt{Y} keys. Other options
+are presented on the \texttt{View} menu and include:
+
+\begin{itemize}\itemsep=0pt
+\item Surface plot versus wireframe plot.
+\item Smooth shading versus flat shading.
+\item Lighting on or off.
+\item Color scale on or off.
+\end{itemize}
+
+\subsection{Filter}\index{Image!Filter}
+These commands filter and modify the image
+
+\subsubsection{Arithmetic}
+These commands operate on the image on a pixel-by-pixel basis. The commands
+support both real and complex-valued images. The available arithmetic commards are:
+
+\begin{twocollist}
+  \twocolitem{\textbf{Invert}}{Negate pixel values.}
+  \twocolitem{\textbf{Log}}{Take natural logrithm of pixel values.}
+  \twocolitem{\textbf{Exp}}{Take natural exponent of pixel values.}
+  \twocolitem{\textbf{Square}}{Take square of pixel values.}
+  \twocolitem{\textbf{Square root}}{Take square root of pixel values.}
+\end{twocollist}
+
+
+\subsubsection{Frequency Based}
+These commands perform Fourier and inverse Fourier transformations of
+images. By default, the transformations will automatically convert
+images between Fourier to natural orders as expected. For example, \texttt{2-D FFT}
+will transform the points into natural order after the Fourier transform.
+Similarly the inverse, \texttt{2-D IFFT}, will reorder the points from
+natural order to Fourier order before applying the inverse Fourier transformation.
+
+As you would expect, images that undergo frequency filtering will be complex-valued
+after than filtering. Only the real component is shown by \ctsim. However, \ctsim\ does
+have options for converting a complex-valued image into a real-valued image via
+the \texttt{Magnitude} and \texttt{Phase} filtering commands.
+
+The available frequency-based filtering commards are:
+
+\begin{itemize}\itemsep=0pt
+\item 2-D FFT
+\item 2-D IFFT
+\item FFT Rows
+\item IFFT Rows
+\item FFT Columns
+\item IFFT Columns
+\item 2-D Fourier
+\item 2-D Inverse Fourier
+\item Shuffle Fourier to Natural Order
+\item Shuffle Natural to Fourier Order
+\item Magnitude
+\item Phase
+\end{itemize}
+
+\subsection{Analyze - Plot}
+The commands plot rows and columns of images. There are commands
+that perform FFT transformations prior to plotting. To select
+the row or column to plot, click the left mouse button over the
+desired cursor point.
+
+The available plot commands are:
+\begin{itemize}\itemsep=0pt
+\item Plot Row
+\item Plot Column
+\item Plot Histogram
+\item Plot FFT Row
+\item Plot FFT Col
+\end{itemize}
+
+\subsection{Analyze - Compare}\label{IDH_DLG_COMPARISON}\index{Image!Comparison}
+This command performs statistical comparisons between two images. An option
+also exists for generating a difference image from the two input images.
+
+The three distance measures reported are:
+\begin{itemize}\itemsep=0pt
+\item[] \textbf{$d$}\quad The normalized root mean squared distance measure.
+\item[] \textbf{$r$}\quad The normalized mean absolute distance measure.
+\item[] \textbf{$e$}\quad The worst case distance measure over a \latexonly{$2\times2$}\latexignore{\emph{2 x 2}} pixel area.
+\end{itemize}
+
+There are also commands for comparison plotting of rows and columns from two images.
+This is quite helpful when comparing a phantom to a reconstruction. As with plotting
+of rows and columns, click the left mouse button over the desired cursor point to
+choose which row and column to plot.
+
+
+\section{Projection Menus}
+
+\subsection{File - Properties}
+The displayed properties include:
+
+\begin{itemize}\itemsep=0pt
+\item Number of detectors in the projections.
+\item Number of views.
+\item The parameters used when generating the projections from the phantom.
+\end{itemize}
+
+\subsection{Process - Convert Rectangular}
+The commands takes the projection data and creates an image file using
+the projection data.
+
+\subsection{Process - Convert Polar}\label{IDH_DLG_POLAR}\index{Polar conversion}
+This command creates an image file with the polar conversion of the projection data.
+The parameters to set are:
+
+\begin{twocollist}
+\twocolitem{\textbf{X Size}}{Number of columns in output image.}
+\twocolitem{\textbf{Y Ssize}}{Number of rows in output image.}
+\twocolitem{\textbf{Interpolation}}{Selects the interpolation method.
+Currently, the \texttt{bilinear} option provides the highest
+quality interpolation.}
+\end{twocollist}
+
+\subsection{Convert - Convert FFT Polar}
+The parameters for this option are the same as the \helprefn{Convert
+Polar Dialog}{convertpolardialog}. For this command, though, the
+projections are Fourier transformed prior to conversion to polar
+image.
+
+\subsection{Convert - Interpolate to Parallel}
+This command filters divergent projection data (equiangular or
+equilinear) and interpolates (or rebins) to estimate the projection
+data if the projections had been collected with parallel geometry.
+
+\subsection{Analyze - Plot Histogram}
+Plots a histogram of projection data attenuations.
+
+\subsection{Analyze - Plot T-Theta Sampling}
+Plots a 2-dimensional scattergram showing the \texttt{T} and
+\texttt{Theta} values for each data point in the projection data.
+This is especially instructive when scanning with divergent
+geometries and the scan ratio is close to \texttt{1}.
+
+\subsubsection{Theta Range}\label{IDH_DLG_THETA_RANGE}
+This dialog box allows the constraint of Theta values for the
+T-Theta Sampling scattergram. 
+
+\subsection{Reconstruct - Filtered Backprojection}\label{IDH_DLG_RECONSTRUCTION}\index{Dialog!Reconstruction}
+This command displays a dialog to set the parameters for reconstructing an image from projections
+using the filtered backprojection technique. The parameters available are:
+
+\begin{twocollist}
+\twocolitem{\textbf{Filter}}{Selects the filter to apply to each
+projection. To properly reconstruct an image, this filter should
+consist of the the absolute value of distance from zero
+frequency optionally multiplied by a smoothing filter. The optimal
+filters to use are:
+\begin{itemize}\itemsep=0pt
+\item \texttt{abs\_bandlimit}
+\item \texttt{abs\_hamming}
+\item \texttt{abs\_hanning}
+\item \texttt{abs\_cosine}
+\end{itemize}
+} \twocolitem{\textbf{Hamming parameter}}{Sets the alpha level for
+Hamming window. This parameter adjusts the smoothing of the Hamming
+filter and can range from \texttt{0} to \texttt{1}.
+At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter.
+At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning
+window.}
+\twocolitem{\textbf{Filter Method}}{Selects the filtering method.
+For large numbers of detectors, the FFT-based filters are preferred whereas for
+smaller numbers of detectors \texttt{convolution} can be
+faster. When \emph{Advanced Options} have been turned off, this menu only shows
+the two basic choices: \texttt{convolution} and \texttt{FFT}. However, when
+\emph{Advanced Options} have been turned on, additional selections are available as
+discussed in the next section.
+}
+\twocolitem{\textbf{Interpolation}}{Interpolation technique during backprojection.
+\texttt{cubic} has optimal quality when the
+data is smooth. Smooth data is obtained by taking many projections and/or
+using a smoothing filter. In the absence of smooth data, \texttt{linear} gives better results and
+is also many times faster than cubic interpolation.
+
+\begin{itemize}\itemsep=0pt
+\item \texttt{nearest} - No interpolation, selects nearest point.
+\item \texttt{linear} - Uses fast straight line interpolation.
+\item \texttt{cubic} - Uses cubic interpolating polynomial.
+\end{itemize}
+}
+\end{twocollist}
+
+\textbf{Advanced Options}
+
+These options are visible only if \emph{Advanced Options} has been
+selected in the \texttt{File - Preferences} dialog. These parameters
+default to optimal settings and don't need to be adjusted except
+by expert users.
+
+\begin{twocollist}
+\twocolitem{\textbf{Filter Method}}{Selects the filtering method.
+The general comments about this parameter given the previous section still apply.
+With \emph{Advanced Options} on, the full set of filter methods are available:
+\begin{itemize}\itemsep=0pt
+\item \texttt{convolution}
+\item \texttt{fourier} - Uses simple Fourier transform.
+\item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions.
+\item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library.
+\item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform.
+\end{itemize}
+}
+\twocolitem{\textbf{Backprojection}}{Selects the backprojection
+technique. A setting of \texttt{idiff} is optimal.
+\begin{itemize}\itemsep=0pt
+\item \texttt{trig} - Use trigometric functions at each image point.
+\item \texttt{table} - Use precalculated trigometric tables.
+\item \texttt{diff} - Use difference method to iterate within image.
+\item \texttt{idiff} - Use integer iteration techique.
+\end{itemize}
+}
+
+\twocolitem{\textbf{Filter Generation}}{Selects the filter
+generation. With convolution, \texttt{direct} is the proper method
+to select. With any of the frequency methods,
+\texttt{inverse-fourier} is the best method.
+\begin{itemize}\itemsep=0pt
+\item \texttt{direct}
+\item \texttt{inverse-fourier}
+\end{itemize}
+}
+
+\twocolitem{\textbf{Zeropad}}{Zeropad factor when using
+frequency-based filtering. A setting of \texttt{1} is optimal whereas
+a setting of \texttt{0} disables zero padding. Settings greater than \texttt{1}
+perform larger amounts of zero padding but without any significant benefit.}
+
+\twocolitem{\textbf{ROI}}{These four settings control the
+\textit{region of interest} for the reconstruction. The default values
+match the dimensions of the entire phantom. By constraining the ROI to
+be a smaller square, the reconstruction will be magnified.}
+
+\end{twocollist}
+
+\subsection{Reconstruct - Filtered Backprojection (Rebin to Parallel)}\label{IDH_DLG_RECONSTRUCTION_REBIN}\index{Dialog!ReconstructionRebin}
+The command reconstructs the projection data via filtered backprojection
+as described above. As opposed to the above command, this command also
+rebins divergent projection data to parallel prior to reconstruction.
+This greatly speeds reconstruction of divergent geometry projections.
+
+\section{Plot Menus}
+\subsection{File - Properties}
+The displayed properties include:
+
+\begin{itemize}\itemsep=0pt
+\item the number of curves in the plot and the number of points per curve.
+\item the EZPlot commands used to format the plot are displayed.
+\item history labels from the originating image(s) and the plot function.
+\end{itemize}
+
+\subsection{View Menu}
+These commands set the scaling for the y-axis. They are analogous
+to the options used for setting the intensity scale for images.
+
+\subsubsection{Set}
+This command sets the upper and lower limits for the y-axis.
+
+\subsubsection{Auto}
+This command automatically sets the upper and lower limits for the
+y-axis. Please refer to the image file \helpref{\texttt{View - Auto}}{IDH_DLG_AUTOSCALE}
+documentation for the details.
+
+\subsubsection{Full}
+The command resets the upper and lower limits of the y-axis to the
+minimum and maximum values of the curves.
diff --git a/doc/ctsim-install.tex b/doc/ctsim-install.tex
new file mode 100644
index 0000000..756b1c4
--- /dev/null
+++ b/doc/ctsim-install.tex
@@ -0,0 +1,73 @@
+\chapter{Installation}\label{installation}\index{Installation}%
+\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
+\ctsimfooter%
+
+\section{Download}\label{download}\index{Download}%
+
+The latest version of \ctsim, both as executable programs and source code,
+ can be downloaded from the official
+ \ctsim\ \urlref{web site}{http://www.ctsim.org}. Additionally, these
+ files are also available from the \ctsim\ \urlref{FTP site}{files://files.b9.com/ctsim}.
+
+
+\section{Installing Windows Binary}
+
+Download the Windows executable file.
+Simply execute this program to begin the
+installation program. \ctsim\ will then be accessible from the
+\texttt{Start} Menu under the \texttt{Programs} submenu.
+
+\ctsim\ is compatible with Windows 98, Windows Me, Windows NT 4.0,
+and Windows 2000. Due to use of the OpenGL and htmlhelp libraries,
+\ctsim\ is not compatible with the stock Windows 95 system.
+
+\section{Installing Linux RPM}
+Download the \ctsim\ RPM file, then use
+the \texttt{rpm} manager program as follows:\\
+\hspace*{1cm}\texttt{rpm -Uvh} \emph{ctsim-*.rpm}\\
+
+\ctsim\ and \ctsimtext\ will then be installed in the \texttt{/usr/local/bin}
+directory. The online help file, \texttt{ctsim.hhp}, will be installed in
+directory \texttt{/usr/local/man}.
+
+\section{Build From Sources}\label{build}\index{Source code build}
+
+Refer to the INSTALL file included in the source distribution for
+instructions.
+
+\subsection{Optional Libraries}
+These libraries are optional and not required to build \ctsim\ from source code.
+However, they add functionality to \ctsim\ and there inclusion is recommended.
+
+  \begin{itemize}
+  \item \textbf{wxWindows 2.3}\\
+  Used for the platform-independent graphical interface. The graphical version
+  of \ctsim\ requires this library.\\
+  \urlref{Web site}{http://www.wxwindows.org}
+
+  \item \textbf{FFTW3}\\
+    Used for fast Fourier transformations of projections and images.
+    Without this library \ctsim\ will use slower, traditional Fourier transformations.\\
+    \urlref{Web site}{http://www.fftw.org}
+
+  \item \textbf{libpng}\\
+        Used for PNG file export.\\
+    \urlref{Web site}{http://www.libpng.org/pub/png/libpng.html}
+
+  \item \textbf{zlib}\\
+        Used for PNG file export.\\
+    \urlref{Web site}{http://www.info-zip.org/pub/infozip/zlib/zlib_docs.html}
+
+  \item \textbf{readline}\\
+    Used for \ctsimtext\ interactive shell.\\
+    \urlref{Web site}{http://www.gnu.org}
+
+  \item \textbf{dmalloc}\\
+    Used for debugging memory allocation.\\
+    \urlref{Web site}{http://www.dmalloc.com}
+
+  \item \textbf{ctn}\\
+    DICOM library used to support import/export of DICOM files
+    \urlref{Web site}{http://www.erl.wustl.edu/DICOM/ctn.html}
+
+\end{itemize}
diff --git a/doc/ctsim-latex.bib b/doc/ctsim-latex.bib
new file mode 100644
index 0000000..c81c309
--- /dev/null
+++ b/doc/ctsim-latex.bib
@@ -0,0 +1,43 @@
+\bibliography{ctsim}
+\bibliographystyle{plain}
+
+ at book{KAK87,
+  author = {A. Kak and M. Slaney},
+  title = {Principles of Computerized Tomographic Imaging},
+  publisher = {IEEE Press, New York},
+  year = {1987}
+}
+
+ at book{HERMAN80,
+  author = {G.T. Herman},
+  title = {Image Reconstruction from Projections: The Fundamentals of Computerized Tomography},
+  year = {1980},
+  publisher = {Academic Press, New York, 1980}
+}
+
+ at book{PRESS92,
+  author = {W.H. Press, S.A. Teukolsky, W.T. Vellerling, and B.P. Flannery},
+  title = {Numerical Recipes in C: The Art of Scientific Computing},
+  publisher = {Cambridge University Press, Cambridge},
+  edition = {Second},
+  year = {1992}
+}
+
+ at book{FOLEY82,
+  author = {J.D. Foley and A. van Dam},
+  title = {Fundamentals of Interactive Computer Graphics},
+  publisher = {Addison-Wesley},
+  year = {1982}
+}
+
+ at article{SHEPP74,
+  author = {L. Shepp and B. Logan},
+  title = {The Fourier Reconstruction of a Head Section},
+  journal = {IEEE Transactions in Nuclear Science},
+  volume = {NS-21},
+  number = {6},
+  pages = {21-43},
+  year = {1974}
+}
+
+
diff --git a/doc/ctsim-sgp.tex b/doc/ctsim-sgp.tex
new file mode 100644
index 0000000..bdb70ff
--- /dev/null
+++ b/doc/ctsim-sgp.tex
@@ -0,0 +1,129 @@
+\chapter{Simple Graphics Package}\label{sgp}\index{Simple Graphics Package}
+\setheader{{\it Appendix \thechapter}}{}{}{\ctsimheadtitle}{}{{\it Appendix \thechapter}}%
+\ctsimfooter%
+
+Simple Graphics Package was created in 1980 by Kevin Rosenberg and
+is modelled after the hypothetical graphics library described by Foley and van
+Dam\cite{FOLEY82}. It is designed to be platform-independent.
+
+\section{Transformation Sequence}
+\latexonly{
+\parbox{11cm}{
+\centerline{Master coordinate (MC) level}
+\centerline{$\downarrow$}
+\centerline{Apply \emph{Current transformation matrix}}
+\centerline{$\downarrow$}
+\centerline{World coordinate (WC) level}
+\centerline{$\downarrow$}
+\centerline{Clipping against Window}
+\centerline{$\downarrow$}
+\centerline{Convert to Normalized device coordinates (NDC)}
+\centerline{$\downarrow$}
+\centerline{Clipping against Viewport}
+\centerline{$\downarrow$}
+\centerline{Convert to Physical device coordinates (PDC)}
+}}
+\latexignore{
+\centerline{Master coordinate (MC) level}
+\centerline{Apply \emph{Current transformation matrix}}
+\centerline{World coordinate (WC) level}
+\centerline{Clipping against Window}
+\centerline{Convert to Normalized device coordinates (NDC)}
+\centerline{Clipping against Viewport}
+\centerline{Convert to Physical device coordinates (PDC)}
+}
+
+\section{Functions}%
+
+\subsection{Master coordinate functions}
+\begin{twocollist}
+\twocolitem{\texttt{setWindow(xmin,ymin,xmax,ymax)}}{Set window for world
+coordinates}
+\twocolitem{\texttt{moveAbs(x,y)}}{Move graphics cursor to absolute position}
+\twocolitem{\texttt{moveRel(dx,dy)}}{Move graphics cursor relative to current position}
+\twocolitem{\texttt{pointAbs(x,y)}}{Draw point at current position}
+\twocolitem{\texttt{pointRel(dx,dy)}}{Draw point relative to current position}
+\twocolitem{\texttt{lineAbs(x,y)}}{Draw line from current position to
+absolute position}
+\twocolitem{\texttt{lineRel(dx,dy)}}{Draw line from current position to position
+relative to current position}
+\twocolitem{\texttt{markerAbs(x,y)}}{Draw marker at current position}
+\twocolitem{\texttt{markerRel(dx,dy)}}{Draw marker relative to current position}
+\twocolitem{\texttt{polylineAbs(x[],y[],n)}}{Draw a series of lines to absolute position}
+\twocolitem{\texttt{polylineRel(dx[],dy[],n)}}{Draw series of lines relative to current position}
+\twocolitem{\texttt{drawString(str)}}{Draw text string at current positon}
+\twocolitem{\texttt{drawCircle(r)}}{Draw circle at current positon}
+\twocolitem{\texttt{drawArc(r,start,stop)}}{Draw arc with center at current positon}
+\twocolitem{\texttt{drawRect(xmin,ymin,xmax,ymax)}}{Draw rectangle}
+\end{twocollist}
+
+\subsection{Normalized coordinate functions}%
+\begin{twocollist}
+\twocolitem{\texttt{Viewport(xmin,ymin,xmax,ymax)}}{Viewport for window
+in NDC}
+\twocolitem{\texttt{stylus(x,y,beam)}}{Draw a line from current
+position if beam = 1, otherwise move stylus to new position}
+\twocolitem{\texttt{markerNDC(xndc,yndc)}}{Draw marker at NDC position}
+\end{twocollist}
+
+\subsection{Master coordinate to World coordinate transformations}%
+These transformation functions operate on the \emph{Current transformation
+matrix} (CTM).
+
+\begin{twocollist}
+\twocolitem{\texttt{clearCTM()}}{Sets the CTM to an identity matrix}
+\twocolitem{\texttt{preTranslate(x,y)}}{Apply translation to CTM}
+\twocolitem{\texttt{postTranslate(x,y)}}{Apply translation to CTM}
+\twocolitem{\texttt{preScale(x,y)}}{Apply scale to CTM}
+\twocolitem{\texttt{postScale(x,y)}}{Apply scale to CTM}
+\twocolitem{\texttt{preRotate(angle)}}{Apply rotation to CTM}
+\twocolitem{\texttt{postRotate(angle)}}{Apply rotation to CTM}
+\twocolitem{\texttt{preShear(x,y)}}{Apply shear to CTM}
+\twocolitem{\texttt{postShear(x,y)}}{Apply shear to CTM}
+\end{twocollist}
+
+\subsection{Coordinate transformation functions}%
+\begin{twocollist}
+\twocolitem{\texttt{transformMCtoNDC(\&x,\&y)}}{Convert from master
+coordinates to NDC}
+\twocolitem{\texttt{transformNDCtoMC(\&x,\&y)}}{Convert from NDC to master
+coordinates}
+\end{twocollist}
+
+\subsection{State functions}
+\begin{twocollist}
+\twocolitem{\texttt{eraseWindow()}}{Clears the screen}
+\twocolitem{\texttt{setColor(color)}}{Set current pen color}
+\twocolitem{\texttt{setLinestyle(style)}}{Set current pen style}
+\twocolitem{\texttt{setLinewidth(width)}}{Set current pen width}
+\twocolitem{\texttt{setTextColor(foreground, background)}}{Set text colors}
+\twocolitem{\texttt{setMarker(type,color)}}{Set marker attibutes}
+\twocolitem{\texttt{setRasterOp(rasterOp)}}{Set raster operator}
+\end{twocollist}
+
+\section{Coordinate Mapping}
+
+\subsection{Dimensions}
+Window (World Coordinates):  $X_{wmin}, X_{wmax}, Y_{wmin}, Y_{wmax}$ \\
+Viewport (Normalized Device Coordinates): $X_{vmin}, X_{vmax}, Y_{vmin}, Y_{vmax}$\\
+Physical (Physicial Device Coordinates): $X_{pmax}, Y_{pmax}$\\
+
+\subsection{Formulas}
+To convert from Master coordinates to World coordinates: \\
+\centerline{Apply \emph{current transformation matrix}}
+
+To convert from WC to NDC:\\
+\begin{equation}
+X_{ndc} = X_{vmin} + (X_{vmax} - X_{vmin})  (X_{wc} - X_{wmin}) / (X_{wmax} - X_{wmin})
+\end{equation}
+\begin{equation}
+Y_{ndc} = Y_{vmin} + (Y_{vmax} - Y_{vmin}) (Y_{wc} - Y_{wmin}) / (Y_{wmax} - Y_{wmin})
+\end{equation}
+
+To convert from NDC to PDC:
+\begin{equation}
+     X_{pdc} = X_{ndc} X_{pmax}
+\end{equation}
+\begin{equation}
+     Y_{pdc} = X_{ndc} Y_{pmax}
+\end{equation}
diff --git a/doc/ctsim-tex2rtf.bib b/doc/ctsim-tex2rtf.bib
new file mode 100644
index 0000000..6d005fc
--- /dev/null
+++ b/doc/ctsim-tex2rtf.bib
@@ -0,0 +1,40 @@
+ at book{KAK87,
+  author = {A. Kak and M. Slaney},
+  title = {Principles of Computerized Tomographic Imaging},
+  publisher = {IEEE Press, New York},
+  year = {1987}
+}
+
+ at book{HERMAN80,
+  author = {G.T. Herman},
+  title = {Image Reconstruction from Projections: The Fundamentals of Computerized Tomography},
+  year = {1980},
+  publisher = {Academic Press, New York, 1980}
+}
+
+ at book{PRESS92,
+  author = {W.H. Press, S.A. Teukolsky, W.T. Vellerling, and B.P. Flannery},
+  title = {Numerical Recipes in C: The Art of Scientific Computing},
+  publisher = {Cambridge University Press, Cambridge},
+  edition = {Second},
+  year = {1992}
+}
+
+ at book{FOLEY82,
+  author = {J.D. Foley and A. van Dam},
+  title = {Fundamentals of Interactive Computer Graphics},
+  publisher = {Addison-Wesley},
+  year = {1982}
+}
+
+ at article{SHEPP74,
+  author = {L. Shepp and B. Logan},
+  title = {The Fourier Reconstruction of a Head Section},
+  journal = {IEEE Transactions in Nuclear Science},
+  volume = {NS-21},
+  number = {6},
+  pages = {21-43},
+  year = {1974}
+}
+
+
diff --git a/doc/ctsim-textui.tex b/doc/ctsim-textui.tex
new file mode 100644
index 0000000..f926e02
--- /dev/null
+++ b/doc/ctsim-textui.tex
@@ -0,0 +1,319 @@
+\chapter{The Command Line Interface}\label{ctsimtext}\index{ctsimtext}\index{Command line interface}
+\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
+\ctsimfooter%
+
+\ctsimtext\ is the master shell for all of the command-line tools. The
+command-line tools can perform most of the functions of the graphical
+shell. These command-line tools are especially appropriate for use on
+systems without graphical capability or for batch processing, shell scripting,
+and parallel processing.
+
+\section{Starting ctsimtext}
+\ctsimtext\ can be invoked via three different
+methods.
+\begin{enumerate}\itemsep=3pt
+\item \ctsimtext\ can executed without any parameters. In that case,
+\ctsimtext\ offers a command-line to enter the function-names and
+their parameters. The output of the command is displayed. Further
+commands may be given to \ctsimtext. The shell is exited by the
+\texttt{quit} command. \ctsimtext\ uses the
+\urlref{readline}{http://www.gnu.org} library on UNIX and Linux platforms
+to provide command history processing.
+
+\item \ctsimtext\ can also be called to
+execute a single command. This is especially useful for batch
+files containing multiple \ctsimtext\ commands. This is invoked by
+calling\\ \texttt{ctsimtext function-name parameters...}.
+
+\item Using operating systems that support soft or hard linking of
+files (such as UNIX and Linux), the executable file \ctsimtext\ can
+be linked to the function names. This is automatically done by
+the installation program and the \texttt{rpm} manager. Thus, to use \ctsimtext\ with the
+function name \texttt{pjrec}, the below command can be executed:\\
+\hspace*{1.5cm}\texttt{pjrec parameters...} \\
+as a shortcut to the equivalent command \\
+\hspace*{1.5cm}\texttt{ctsimtext pjrec parameters...}
+
+\end{enumerate}
+
+\section{Parallel Processing}\label{ctsimtextlam}\index{Parallel processing}\index{MPI}\index{LAM}
+\ctsimtext\ can distribute it's processing over a cluster. Specifically,
+\ctsimtext\ supports the \urlref{LAM}{http://www.mpi.nd.edu/lam} version of
+the MPI environment. On platforms with LAM installed, a parallel version of
+\ctsimtext\ is created. The name of this program is \texttt{ctsimtext-lam}.
+The functions that take advantage of the parallel processing are:
+
+\begin{itemize}\itemsep=0pt
+\item \texttt{phm2if}
+\item \texttt{phm2pj}
+\item \texttt{pjrec}
+\end{itemize}
+
+This parallel processing version has been tested with excellent results on
+a 16-CPU \urlref{Beowulf}{http://www.beowulf.org} cluster.
+
+
+\section{if1}\label{if1}\index{if1}%
+Performs math functions on a single image. The commands works with
+both real and complex-valued images.
+
+\usage
+\texttt{if1 input-filename output-filename [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+  \twocolitem{\doublehyphen{invert}}{Negate pixel values.}
+  \twocolitem{\doublehyphen{log}}{Take natural logrithm of pixel values.}
+  \twocolitem{\doublehyphen{exp}}{Take natural exponent of pixel values.}
+  \twocolitem{\doublehyphen{sqr}}{Take square of pixel values.}
+  \twocolitem{\doublehyphen{sqrt}}{Take square root of pixel values.}
+\end{twocollist}
+
+\section{if2}\label{if2}\index{if2}%
+Performs math functions on a two images. The command works with both
+real and complex-valued images.
+
+\usage
+\texttt{if2 input-filename1 input-filename2 output-filename [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+  \twocolitem{\doublehyphen{add}}{Add the two images.}
+  \twocolitem{\doublehyphen{sub}}{Subtract the two images.}
+  \twocolitem{\doublehyphen{multiply}}{Multiply the two images.}
+  \twocolitem{\doublehyphen{divide}}{Divide the two images.}
+  \twocolitem{\doublehyphen{comp}}{Statistically compare the two images. The standard
+  \helpref{three distance measurements}{conceptimagecompare} are reported.}
+  \twocolitem{\doublehyphen{column-plot n}}{Plot the values of a particular column. The plot file is saved to disk.}
+  \twocolitem{\doublehyphen{row-plot n}}{Plot the values of a particular row. The plot file is saved to disk.}
+\end{twocollist}
+
+\section{ifexport}\label{ifexport}\index{ifexport}%
+Export an image file to a standard graphics file.
+
+\usage
+\texttt{ifexport input-filename output-filename [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+  \twocolitem{\doublehyphen{format}}{
+  \begin{itemize}\itemsep=0pt
+    \item \texttt{png} - Portable network graphics format. This is the default output format.
+    \item \texttt{png16} - 16-bit PNG format.
+    \item \texttt{pgm} - Portable graymap format, binary format.
+    \item \texttt{pgmasc} - ASCII PGM format.
+  \end{itemize}}
+  \twocolitem{\doublehyphen{center}}{Set center of intensity window.
+  \begin{itemize}\itemsep=0pt
+    \item \texttt{median}
+    \item \texttt{mode}
+    \item \texttt{mean}
+  \end{itemize}}
+  \twocolitem{\doublehyphen{auto}}{Set half-width of intensity window as a multiple of the standard deviation.
+  \begin{itemize}\itemsep=0pt
+     \item \texttt{full}
+     \item \texttt{std0.1}
+     \item \texttt{std0.5}
+     \item \texttt{std1}
+     \item \texttt{std2}
+     \item \texttt{std3}
+  \end{itemize}}
+  \twocolitem{\doublehyphen{scale}}{Set size of output image. A value of
+  \texttt{1} is default and creates an output image the same size as the input image. A value of \texttt{2} will double the
+  size of the output image.}
+  \twocolitem{\doublehyphen{min}}{Set the minimum intensity value.}
+  \twocolitem{\doublehyphen{max}}{Set the maximum intensity value.}
+\end{twocollist}
+
+\section{ifinfo}\label{ifinfo}\index{ifinfo}%
+
+Displays information about an image file. By default, history labels and image statistics are displayed.
+
+\usage
+\texttt{ifinfo input-filename [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+  \twocolitem{\doublehyphen{no-labels}}{Suppress history labels.}
+  \twocolitem{\doublehyphen{no-stats}}{Suppress image statistics.}
+\end{twocollist}
+
+\section{phm2pj}\label{phm2pj}\index{phm2pj}%
+Simulates collection of X-rays data (projections) around a phantom object.
+
+\usage
+\texttt{phm2pj projection-filename number-detectors number-views [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+\twocolitem{\doublehyphen{phantom}}{Select a standard phantom.
+\begin{itemize}\itemsep=0pt
+\item \texttt{herman}
+\item \texttt{shepp-logan}
+\item \texttt{unit-pulse}
+\end{itemize}
+}
+\twocolitem{\doublehyphen{phmfile}}{Reads a user-created phantom file.}
+
+\twocolitem{\doublehyphen{geometry}}{Sets the scanner geometry. Valid values are:
+  \begin{itemize}\itemsep=0pt
+    \item \texttt{parallel}
+    \item \texttt{equiangular}
+    \item \texttt{equilinear}
+  \end{itemize}
+}
+
+\twocolitem{\doublehyphen{nray}}{ Number of samples per each detector}
+
+\twocolitem{\doublehyphen{rotangle}}{The rotation angle as a fraction of a circle.
+For parallel geometries use a rotation angle of \texttt{0.5} and for equilinear and equiangular
+geometries use a rotation angle of \texttt{1}. The default is to use to
+appropriate rotation angle based on the geometry.}
+
+\twocolitem{\doublehyphen{view-ratio}}{Sets the field of view as a ratio of the diameter of the phantom.
+    For normal scanning, the default value of \texttt{1.0} is optimal.}
+
+\twocolitem{\doublehyphen{scan-ratio}}{Sets the length of scanning as a ratio of the view diameter.
+    For normal scanning, the default value of \texttt{1.0} is optimal.}
+
+\twocolitem{\doublehyphen{focal-length}}{Sets the distance between the radiation source
+ and the center of the object as a ratio of the radius of the object.
+   For parallel geometries, a value of \texttt{1.0} is optimal. For other
+    geometries, this should be at least \texttt{2.0} to avoid artifacts. The default value is \texttt{2}.}
+\end{twocollist}
+
+
+\section{phm2if}\label{phm2if}\index{phm2if}%
+Generates a raster image file based on a phantom.
+
+\usage
+\texttt{phm2if phantom-filename image-filename x-image-size y-image-size [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+  \twocolitem{\doublehyphen{nsamples}}{Number of samples in x and y directions per pixel}
+  \twocolitem{\doublehyphen{view-ratio}}{Sets the view ratio. For normal scanning,
+  the default value of \texttt{1.0} is optimal.}
+\end{twocollist}
+
+\section{pj2if}\label{pj2if}\index{pj2if}%
+Convert a projection file into an image file where each row of the
+image file contains the projection data from a single view.
+
+\usage
+\texttt{pj2if projection-filename image-filename [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+\twocolitem{\doublehyphen{dump}}{Print all projection data to the console.}
+\end{twocollist}
+
+\section{pjinfo}\label{pjinfo}\index{pjinfo}%
+Displays information about a projection file.
+
+\usage
+\texttt{pjinfo projection-filename [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+  \twocolitem{\doublehyphen{binaryheader}}{Dump the binary header to the standard output.
+  This option is only used when manually creating a composite projection file from
+  several different projection files.}
+  \twocolitem{\doublehyphen{binaryview}}{Dump binary view data to the standard output.
+  This option is only used when manually creating a composite projection file from
+  several different projection files.}
+  \twocolitem{\doublehyphen{startview}}{Sets starting view to display. Default is \texttt{0}.}
+  \twocolitem{\doublehyphen{endview}}{Sets ending view to display. Default is the last view.}
+  \twocolitem{\doublehyphen{dump}}{Print all projection data to the console.}
+\end{twocollist}
+
+\section{pjrec}\label{pjrec}\index{pjrec}%
+Reconstructs the interior of an object from a projection file.
+
+\usage
+\texttt{pjrec projection-filename image-filename image-cols image-rows [options...]}
+
+\textbf{Options}
+
+\begin{twocollist}
+\twocolitemruled{\textbf{Parameter}}{\textbf{Options}}
+\twocolitem{\doublehyphen{filter}}{Selects which filter to apply to
+each projection. To properly reconstruct an image, this filter should
+consist of the the absolute value of distance from zero
+frequency optionally multiplied by a smoothing filter. The optimal
+filters to use are:
+\begin{itemize}\itemsep=0pt
+\item \texttt{abs\_bandlimit}
+\item \texttt{abs\_cosine}
+\item \texttt{abs\_hamming}
+\item \texttt{abs\_hanning}
+\end{itemize}
+} \twocolitem{\doublehyphen{filter-parameter}}{Sets the alpha level
+for Hamming window.  This parameter adjusts the smoothing of the Hamming
+filter and can range from \texttt{0} to \texttt{1}.
+At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter.
+At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning
+window.}
+
+\twocolitem{\doublehyphen{filter-method}}{Selects the filtering
+method. For large numbers of detectors, \texttt{rfftw} is optimal.
+For smaller numbers of detectors, \texttt{convolution} might be a
+bit faster.
+\begin{itemize}\itemsep=0pt
+\item \texttt{convolution}
+\item \texttt{fourier} - Uses simple Fourier transform.
+\item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions.
+\item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library.
+\item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform.
+\end{itemize}
+}
+\end{twocollist}
+
+\begin{twocollist}
+\twocolitem{\doublehyphen{filter-generation}}{Selects the filter
+generation. With convolution, \texttt{direct} is the proper method
+to select. With any of the frequency methods,
+\texttt{inverse-fourier} is the best method.
+\begin{itemize}\itemsep=0pt
+\item \texttt{direct}
+\item \texttt{inverse-fourier}
+\end{itemize}
+}
+
+\twocolitem{\doublehyphen{interpolation}}{Interpolation technique during backprojection.
+\texttt{cubic} has optimal quality when the
+data is smooth. Smooth data is obtained by taking many projections and/or
+using a smoothing filter. In the absence of smooth data, \texttt{linear} gives better results and
+is many times faster than cubic interpolation.
+
+\begin{itemize}\itemsep=0pt
+\item \texttt{nearest} - No interpolation, selects nearest point.
+\item \texttt{linear} - Uses fast straight line interpolation.
+\item \texttt{cubic} - Uses cubic interpolating polynomial.
+\end{itemize}
+}
+
+\twocolitem{\doublehyphen{backprojection}}{Selects the
+backprojection technique. A setting of \texttt{idiff} is optimal.
+\begin{itemize}\itemsep=0pt
+\item \texttt{trig} - Use trigometric functions at each image point.
+\item \texttt{table} - Use precalculated trigometric tables.
+\item \texttt{diff} - Use difference method to iterate within image.
+\item \texttt{idiff} - Use integer iteration technique.
+\end{itemize}
+}
+
+\twocolitem{\doublehyphen{zeropad}}{Zeropad factor. A setting of
+\texttt{1} is optimal whereas a zeropad of \texttt{0} performs no zero padding.
+Settings greater than \texttt{1} perform additional zero padding, but without
+any significant output difference.}
+
+\end{twocollist}
diff --git a/doc/ctsim-web.tex b/doc/ctsim-web.tex
new file mode 100644
index 0000000..d94b0a8
--- /dev/null
+++ b/doc/ctsim-web.tex
@@ -0,0 +1,31 @@
+\chapter{The Web Interface}\label{webinterface}\index{Web interface}%
+\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
+\ctsimfooter%
+
+\section{Overview}
+\ctsim\ can also be executed via a web browser. The Perl program
+\texttt{ctsim.cgi} takes projections of a standard phantom object,
+performs reconstruction, and then compares the rasterized phantom
+object with the reconstruction. The comparison is performed both
+visually by an image subtraction as well as by statistical
+analysis.
+
+The \texttt{ctsim.cgi} program is invoked from the HTML file
+\texttt{simulate.html}.
+
+\section{Requirements}
+   \begin{itemize}\itemsep=0pt
+      \item \urlref{Apache}{http://www.apache.org} or other CGI-compatible web server
+
+      \item Perl (version 4.0 or higher)
+
+      \item A client web browser than can display PNG files. Most
+      current web browsers support PNG.
+
+      \item A knowledgable system administrator.
+\end{itemize}
+
+\section{Installation}
+Installation is rather automatic on Linux and UNIX systems. The
+\texttt{configure} script needs to be given options that specify
+the directory for web pages and for CGI programs.
diff --git a/doc/ctsim.hlp b/doc/ctsim.hlp
new file mode 100644
index 0000000..bc7c224
Binary files /dev/null and b/doc/ctsim.hlp differ
diff --git a/doc/ctsim.hpj b/doc/ctsim.hpj
new file mode 100644
index 0000000..88f6878
--- /dev/null
+++ b/doc/ctsim.hpj
@@ -0,0 +1,29 @@
+; This file is maintained by HCW. Do not modify this file directly.
+
+[OPTIONS]
+COMPRESS=12 Hall Zeck
+REVISIONS=No
+LCID=0x409 0x0 0x0 ; English (United States)
+REPORT=Yes
+CONTENTS=Introduction
+TITLE=CTSim - Computed Tomography Simulator
+CNT=ctsim.cnt
+COPYRIGHT=Copyright (c) 1983-2001 Kevin Rosenberg, M.D.
+CITATION=Copyright (c) 1983-2001 Kevin Rosenberg, M.D.
+HLP=ctsim.hlp
+
+[FILES]
+ctsim.rtf
+
+[MAP]
+#include ..\src\ctsim-map.h
+
+[WINDOWS]
+main="",(653,102,360,600),27904,(r14876671),(r12632256),f3
+
+[CONFIG]
+CreateButton("Up", "\&Up", "JumpId(`ctsim.hlp', `Contents')")             ; Buttons
+BrowseButtons()
+
+[BAGGAGE]
+ctsim.cnt
diff --git a/doc/ctsim.prj b/doc/ctsim.prj
new file mode 100644
index 0000000..33a26c6
--- /dev/null
+++ b/doc/ctsim.prj
@@ -0,0 +1,89 @@
+143 Patch Control
+
+1
+1
+1
+ctsim.tex
+21
+0
+0
+
+
+ctsim-algorithms.tex
+TeX
+268439547 0 179 17 187 1 44 44 960 631
+ctsim-concepts.tex
+TeX
+268447738 0 302 40 280 44 110 110 1187 697
+ctsim.tex
+TeX
+402665466 0 50 12 33 1 22 22 1099 609
+ctsim-install.tex
+TeX
+268447738 0 70 62 71 1 110 110 1187 697
+tex2rtf.ini
+DATA
+273777330 0 0 1 26 8 22 22 938 609
+ctsim-gui.tex
+TeX
+268447738 0 145 21 144 1 176 176 1253 763
+psbox.tex
+TeX
+268439546 0 0 1 0 1 88 88 1004 675
+ctsim-sgp.tex
+TeX
+268439546 0 1 1 0 1 44 44 960 631
+ctsim-appendix.tex
+TeX
+268447738 0 0 1 0 2 44 44 1121 631
+ctsim-textui.tex
+TeX
+12282 0 38 45 38 46 198 198 1275 785
+mytitle.sty
+DATA
+273679026 0 9 1 8 22 66 66 1143 653
+ctsim-web.tex
+TeX
+268447739 0 24 50 0 60 88 88 1165 675
+C:\Program Files\SecureCRT 3.0\download\ct.tex
+TeX
+268439546 0 3 1 600 1 132 132 1048 719
+texhelp.sty
+DATA
+273679026 0 112 14 92 1 176 176 1253 763
+makeidx.sty
+DATA
+273679026 0 0 1 0 1 110 110 1187 697
+verbatim.sty
+DATA
+273679026 0 0 1 150 2 88 88 1165 675
+mysober.sty
+DATA
+273679026 0 0 1 153 1 22 22 1099 609
+fancyhea.sty
+DATA
+273679026 0 0 1 144 1 264 264 1341 851
+ctsim-gui.aux
+DATA
+273679026 0 0 1 0 1 154 154 1231 741
+C:\Program Files\WinEdt\WinEdt.txt
+ASCII
+273688506 0 0 1 936 20 0 0 1077 587
+cut
+TeX
+268447739 0 3 1 3 1 66 66 1143 653
+
+*ctsim.tex
+>
+*psbox.tex
+>
+*psbjoin.aux
+<
+*ctsim-concepts
+*ctsim-gui
+*ctsim-textui
+*ctsim-web
+*ctsim-install
+*ctsim-algorithms
+*ctsim-sgp
+<
diff --git a/doc/ctsim.tex b/doc/ctsim.tex
new file mode 100644
index 0000000..2a5738c
--- /dev/null
+++ b/doc/ctsim.tex
@@ -0,0 +1,141 @@
+\documentclass[letterpaper,11pt]{report}
+\usepackage{graphicx}
+\usepackage{texhelp}
+\usepackage{fancyhea}
+\usepackage{mysober}
+\usepackage{mytitle}
+\usepackage{verbatim}
+\usepackage{makeidx}
+%\usepackage{times}
+\usepackage{hyperref}
+\input{psbox.tex}
+
+\latexonly{\includeonly{ctsim-concepts,ctsim-install,ctsim-gui,ctsim-textui,ctsim-web,ctsim-algorithms,ctsim-sgp}}
+\hyphenation{poly-gon-al multi-thread-ing}
+
+\newcommand{\ctsim}{\texttt{CTSim}}
+\newcommand{\ctsimtext}{\texttt{CTSimText}}
+\newcommand{\usage}{\textbf{Usage}\par}
+
+\newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}%
+\newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}%
+\newcommand{\commandpageref}[2]{\latexignore{\helprefn{{\tt $\backslash$#1}}{#2}}\latexonly{{\tt $\backslash$#1} {\it page \pageref{#2}}}\index{#1}}
+\newcommand{\indexit}[1]{#1\index{#1}}%
+\newcommand{\inioption}[1]{{\bf {\tt #1}}\index{#1}}%
+
+\newcommand{\manvernum}[0]{1.0}
+\newcommand{\manver}[0]{v\manvernum}
+\newcommand{\mandate}[0]{May 1, 2002}
+\newcommand{\ctsimfooter}{\setfooter{\thepage}{}{}{\small Manual \manver}{\small \mandate}{\thepage}}
+\newcommand{\doublehyphen}[1]{-\,-\texttt{#1}}
+\newcommand{\ctsimvernum}[0]{3.5.0}
+\newcommand{\ctsimver}[0]{CTSim \ctsimvernum}
+\newcommand{\ctsimheadtitle}{\ctsimver\ Manual}
+
+\latexignore{\newcommand{\sqrt}[2]{sqrt(#2)}}
+
+\parskip=10pt%
+\parindent=0pt%
+%\backgroundcolour{255;255;255}\textcolour{0;0;0}% Has an effect in HTML only
+\title{CTSim 3.5 User Manual}%
+\author{Kevin M. Rosenberg, M.D.}%
+\makeindex%
+
+\textheight=9in
+\textwidth=6.0in
+\evensidemargin=0in
+\oddsidemargin=0in
+
+\begin{document}
+\maketitle
+\pagestyle{fancyplain}
+\pagenumbering{roman}
+
+\chapter*{Copyright notice}%
+\setheader{{\it COPYRIGHT}}{}{}{\ctsimheadtitle}{}{{\it COPYRIGHT}}%
+\ctsimfooter
+
+Copyright (c) 1983-2002 Kevin M. Rosenberg, M.D.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose is hereby granted without fee, provided that the
+above copyright notice, author statement and this permission notice appear in
+all copies of this software and related documentation.
+
+THE SOFTWARE IS PROVIDED ``AS-IS'' AND WITHOUT WARRANTY OF ANY KIND, EXPRESS,
+IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+IN NO EVENT SHALL KEVIN M. ROSENBERG BE LIABLE FOR ANY
+SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY
+OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+\chapter*{Acknowledgements}
+\setheader{{\it COPYRIGHT}}{}{}{\ctsimheadtitle}{}{{\it COPYRIGHT}}%
+\setfooter{\thepage}{}{}{}{\manver}{\thepage}%
+
+\textbf{Ian Kay, Ph.D.}\\ Special thanks to Dr. Kay for contributing
+portions to this manual. Dr. Kay has assisted the development of
+\ctsim\ with the addition of helical scanning, bug reports, and paches.
+
+\textbf{Gabor T. Herman, Ph.D.}\\ Dr. Herman's publications on
+computed tomography inspired the initial version \ctsim\ in
+1983. Dr. Herman has graciously permitted use of his copyrighted head
+phantom for use in \ctsim.
+
+
+\setheader{{\it CONTENTS}}{}{}{\ctsimheadtitle}{}{{\it CONTENTS}}%
+\ctsimfooter
+\parskip=2pt
+\tableofcontents%
+
+\parskip=10pt
+\chapter{Introduction}\label{IDH_INTRODUCTION}
+\pagenumbering{arabic}
+\setheader{{\it CHAPTER \thechapter}}{}{}{\ctsimheadtitle}{}{{\it CHAPTER \thechapter}}%
+\ctsimfooter
+
+
+\centerline{\image{3cm;3cm}{logo.eps}}
+Computed tomography is a technique for estimating the interior of an
+object from measurements of radiation collected around the object. This
+radiation can be either projected through or emitted from the
+object. \ctsim\ simulates the process of projecting X-rays
+through a phantom object. \ctsim\ can then reconstruct the
+interior of the object from those projections. \ctsim\ integrates
+numerous visualization and analytic tools.
+
+This manual begins with an introduction into the concepts of
+\ctsim. Next, the graphical, command-line, and web shells are
+presented. Finally, the installation of \ctsim\ is discussed.
+
+I hope that you enjoy \ctsim!
+
+\include{ctsim-concepts}
+\include{ctsim-gui}
+\include{ctsim-textui}
+\include{ctsim-web}
+\include{ctsim-install}
+\appendix
+\include{ctsim-algorithms}
+\include{ctsim-sgp}
+
+\newpage
+
+\bibliographystyle{plain}
+\bibliography{ctsim}
+\addcontentsline{toc}{chapter}{Bibliography}
+\setheader{{\it REFERENCES}}{}{}{\ctsimheadtitle}{}{{\it REFERENCES}}
+\ctsimfooter
+
+\newpage
+\addcontentsline{toc}{chapter}{Index}
+\setheader{{\it INDEX}}{}{}{\ctsimheadtitle}{}{{\it INDEX}} %
+\ctsimfooter
+\printindex
+
+\end{document}
diff --git a/doc/ctsimfig1.eps b/doc/ctsimfig1.eps
new file mode 100644
index 0000000..e3c187e
--- /dev/null
+++ b/doc/ctsimfig1.eps
@@ -0,0 +1,390 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ctsimfig1.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel 
+%%CreationDate: Tue Jan 23 11:14:55 2001
+%%For: kay at fenrir.cancerboard.ab.ca (Ian Kay)
+%%BoundingBox: 0 0 547 257
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 257 moveto 0 0 lineto 547 0 lineto 547 257 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 547 0 lineto 547 257 lineto 0 257 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-27.0 275.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+	/endangle exch def
+	/startangle exch def
+	/yrad exch def
+	/xrad exch def
+	/y exch def
+	/x exch def
+	/savematrix mtrx currentmatrix def
+	x y tr xrad yrad sc 0 0 1 startangle endangle arc
+	closepath
+	savematrix setmatrix
+	} def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06299 0.06299 sc
+% Polyline
+15.000 slw
+n 984 1905 m
+ 984 3165 l gs col0 s gr 
+% Polyline
+gs  clippath
+1199 1955 m 1199 1865 l 1085 1865 l 1175 1910 l 1085 1955 l cp
+eoclip
+n 960 1910 m
+ 1184 1910 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 1085 1955 m 1175 1910 l 1085 1865 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+1199 3215 m 1199 3125 l 1085 3125 l 1175 3170 l 1085 3215 l cp
+eoclip
+n 960 3170 m
+ 1184 3170 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 1085 3215 m 1175 3170 l 1085 3125 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+1199 2630 m 1199 2540 l 1085 2540 l 1175 2585 l 1085 2630 l cp
+eoclip
+n 959 2585 m
+ 1184 2585 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 1085 2630 m 1175 2585 l 1085 2540 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+1199 2316 m 1199 2226 l 1085 2226 l 1175 2271 l 1085 2316 l cp
+eoclip
+n 960 2271 m
+ 1184 2271 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 1085 2316 m 1175 2271 l 1085 2226 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+1199 2945 m 1199 2855 l 1085 2855 l 1175 2900 l 1085 2945 l cp
+eoclip
+n 960 2900 m
+ 1184 2900 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 1085 2945 m 1175 2900 l 1085 2855 l  col0 s
+% Polyline
+gs  clippath
+849 1960 m 789 1960 l 789 2112 l 819 1992 l 849 2112 l cp
+eoclip
+n 819 3184 m
+ 819 1975 l gs col0 s gr gr
+
+% arrowhead
+n 849 2112 m 819 1992 l 789 2112 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+3209 1794 m 3149 1794 l 3149 1946 l 3179 1826 l 3209 1946 l cp
+eoclip
+n 3179 1809 m
+ 3179 3069 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 3209 1946 m 3179 1826 l 3149 1946 l  col0 s
+% Polyline
+gs  clippath
+3780 3071 m 3840 3071 l 3840 2919 l 3810 3039 l 3780 2919 l cp
+3840 1781 m 3780 1781 l 3780 1933 l 3810 1813 l 3840 1933 l cp
+eoclip
+n 3810 1796 m
+ 3810 3056 l gs col0 s gr gr
+
+% arrowhead
+n 3840 1933 m 3810 1813 l 3780 1933 l  col0 s
+% arrowhead
+n 3780 2919 m 3810 3039 l 3840 2919 l  col0 s
+% Polyline
+gs  clippath
+1014 1500 m 1015 1560 l 1167 1559 l 1047 1530 l 1166 1499 l cp
+eoclip
+n 1030 1530 m
+ 2155 1529 l gs col0 s gr gr
+
+% arrowhead
+n 1166 1499 m 1047 1530 l 1167 1559 l  col0 s
+% Polyline
+n 2155 1529 m
+ 2155 1720 l gs col0 s gr 
+% Polyline
+n 1010 1535 m
+ 1010 1656 l gs col0 s gr 
+/Palatino-Italic ff 300.00 scf sf
+755 3184 m
+gs 1 -1 sc  90.0 rot (source) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+3524 3088 m
+gs 1 -1 sc  90.0 rot (detector) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+4096 2770 m
+gs 1 -1 sc  90.0 rot (fov) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+1125 1170 m
+gs 1 -1 sc (focal length) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+1395 1440 m
+gs 1 -1 sc (\(arbitrary\)) col0 sh gr
+% Rotated Ellipse
+gs
+2151 2516 tr
+-90.000 rot
+n 0 0 90 90 0 360 DrawEllipse 90.000 rot
+gs col0 s gr
+gr
+
+% Rotated Ellipse
+gs
+2151 2786 tr
+-90.000 rot
+n 0 0 90 90 0 360 DrawEllipse 90.000 rot
+gs col0 s gr
+gr
+
+% Polyline
+n 1701 2696 m 1881 2966 l 2151 3056 l 2420 2876 l 2601 2607 l 2421 2337 l
+ 2150 2156 l 1881 2246 l 1701 2606 l
+ cp gs col0 s gr 
+% Polyline
+n 1701 2158 m 1701 3056 l 2599 3056 l 2601 2157 l
+ cp gs col0 s gr 
+% Polyline
+15.000 slw
+n 6286 1372 m
+ 5395 2263 l gs col0 s gr 
+% Polyline
+gs  clippath
+6402 1560 m 6466 1496 l 6386 1416 l 6418 1512 l 6322 1480 l cp
+eoclip
+n 6265 1359 m
+ 6424 1518 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 6322 1480 m 6418 1512 l 6386 1416 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+5511 2451 m 5575 2387 l 5495 2307 l 5527 2403 l 5431 2371 l cp
+eoclip
+n 5374 2250 m
+ 5533 2409 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5431 2371 m 5527 2403 l 5495 2307 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+5924 2037 m 5988 1973 l 5908 1893 l 5940 1989 l 5844 1957 l cp
+eoclip
+n 5787 1836 m
+ 5946 1995 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5844 1957 m 5940 1989 l 5908 1893 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+6147 1815 m 6211 1751 l 6131 1671 l 6163 1767 l 6067 1735 l cp
+eoclip
+n 6010 1614 m
+ 6169 1773 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 6067 1735 m 6163 1767 l 6131 1671 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+5702 2260 m 5766 2196 l 5686 2116 l 5718 2212 l 5622 2180 l cp
+eoclip
+n 5565 2059 m
+ 5724 2218 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5622 2180 m 5718 2212 l 5686 2116 l  col0 s
+% Ellipse
+n 6840 2610 90 90 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 6570 2610 90 90 0 360 DrawEllipse gs col0 s gr
+
+% Polyline
+n 6660 2160 m 6390 2340 l 6300 2610 l 6480 2880 l 6750 3060 l 7020 2880 l
+ 7200 2610 l 7110 2340 l 6750 2160 l
+ cp gs col0 s gr 
+% Polyline
+n 7199 2160 m 6300 2160 l 6300 3059 l 7200 3060 l
+ cp gs col0 s gr 
+% Polyline
+gs  clippath
+6151 1315 m 6109 1273 l 6001 1380 l 6108 1317 l 6044 1423 l cp
+eoclip
+n 5265 2160 m
+ 6120 1305 l gs col0 s gr gr
+
+% arrowhead
+n 6044 1423 m 6108 1317 l 6001 1380 l  col0 s
+% Polyline
+15.000 slw
+gs  clippath
+7937 2867 m 7895 2825 l 7787 2932 l 7894 2869 l 7830 2975 l cp
+eoclip
+n 7906 2857 m
+ 7015 3748 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 7830 2975 m 7894 2869 l 7787 2932 l  col0 s
+% Polyline
+gs  clippath
+7438 4174 m 7480 4216 l 7588 4109 l 7482 4173 l 7545 4066 l cp
+8392 3304 m 8350 3262 l 8242 3369 l 8349 3306 l 8285 3412 l cp
+eoclip
+n 8361 3294 m
+ 7470 4185 l gs col0 s gr gr
+
+% arrowhead
+n 8285 3412 m 8349 3306 l 8242 3369 l  col0 s
+% arrowhead
+n 7545 4066 m 7482 4173 l 7588 4109 l  col0 s
+% Polyline
+n 7380 1935 m
+ 7245 2070 l gs col0 s gr 
+% Polyline
+n 6570 1125 m
+ 6480 1215 l gs col0 s gr 
+% Polyline
+gs  clippath
+6580 1093 m 6538 1135 l 6645 1243 l 6582 1137 l 6688 1200 l cp
+eoclip
+n 6570 1125 m
+ 7380 1935 l gs col0 s gr gr
+
+% arrowhead
+n 6688 1200 m 6582 1137 l 6645 1243 l  col0 s
+/Palatino-Italic ff 300.00 scf sf
+5220 2115 m
+gs 1 -1 sc  45.0 rot (source) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+7245 4005 m
+gs 1 -1 sc  45.0 rot (detector) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+7875 4185 m
+gs 1 -1 sc  45.0 rot (fov) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+7200 1785 m
+gs 1 -1 sc (\(arbitrary\)) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+7200 1440 m
+gs 1 -1 sc (focal length) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+675 675 m
+gs 1 -1 sc (A) col0 sh gr
+/Palatino-Italic ff 300.00 scf sf
+5130 675 m
+gs 1 -1 sc (B) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/ctsimfig1.fig b/doc/ctsimfig1.fig
new file mode 100644
index 0000000..b15cad0
--- /dev/null
+++ b/doc/ctsimfig1.fig
@@ -0,0 +1,115 @@
+#FIG 3.2
+Portrait
+Center
+Metric
+Letter  
+100.00
+Single
+-2
+1200 2
+6 590 930 4156 3240
+6 590 930 4156 3240
+6 900 1845 1215 3240
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 984 1905 984 3165
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 960 1910 1184 1910
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 960 3170 1184 3170
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 959 2585 1184 2585
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 960 2271 1184 2271
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 960 2900 1184 2900
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 819 3184 819 1975
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 3179 1809 3179 3069
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+	0 0 1.00 60.00 120.00
+	0 0 1.00 60.00 120.00
+	 3810 1796 3810 3056
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 1030 1530 2155 1529
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2155 1529 2155 1720
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 1010 1535 1010 1656
+4 0 0 50 0 29 20 1.5708 4 165 930 755 3184 source\001
+4 0 0 50 0 29 20 1.5708 4 225 1140 3524 3088 detector\001
+4 0 0 50 0 29 20 1.5708 4 300 450 4096 2770 fov\001
+4 0 0 50 0 29 20 0.0000 4 300 1710 1125 1170 focal length\001
+4 0 0 50 0 29 20 0.0000 4 285 1485 1395 1440 (arbitrary)\001
+-6
+6 1665 2115 2610 3060
+1 1 0 1 0 7 50 0 -1 0.000 1 1.5708 2151 2516 90 90 2151 2516 2241 2426
+1 1 0 1 0 7 50 0 -1 0.000 1 1.5708 2151 2786 90 90 2151 2786 2241 2696
+2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 10
+	 1701 2696 1881 2966 2151 3056 2420 2876 2601 2607 2421 2337
+	 2150 2156 1881 2246 1701 2606 1701 2696
+2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1701 2158 1701 3056 2599 3056 2601 2157 1701 2158
+-6
+-6
+6 5085 1125 8910 4230
+6 5355 1305 6480 2430
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6286 1372 5395 2263
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 6265 1359 6424 1518
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 5374 2250 5533 2409
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 5787 1836 5946 1995
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 6010 1614 6169 1773
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 90.00
+	 5565 2059 5724 2218
+-6
+1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6840 2610 90 90 6840 2610 6930 2700
+1 1 0 1 0 7 50 0 -1 0.000 1 0.0000 6570 2610 90 90 6570 2610 6660 2700
+2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 10
+	 6660 2160 6390 2340 6300 2610 6480 2880 6750 3060 7020 2880
+	 7200 2610 7110 2340 6750 2160 6660 2160
+2 3 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 7199 2160 6300 2160 6300 3059 7200 3060 7199 2160
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 60.00 120.00
+	 5265 2160 6120 1305
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 7906 2857 7015 3748
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+	0 0 1.00 60.00 120.00
+	0 0 1.00 60.00 120.00
+	 8361 3294 7470 4185
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 7380 1935 7245 2070
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 6570 1125 6480 1215
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 60.00 120.00
+	 6570 1125 7380 1935
+4 0 0 50 0 29 20 0.7854 4 165 930 5220 2115 source\001
+4 0 0 50 0 29 20 0.7854 4 225 1140 7245 4005 detector\001
+4 0 0 50 0 29 20 0.7854 4 300 450 7875 4185 fov\001
+4 0 0 50 0 29 20 0.0000 4 285 1485 7200 1785 (arbitrary)\001
+4 0 0 50 0 29 20 0.0000 4 300 1710 7200 1440 focal length\001
+-6
+4 0 0 50 0 29 20 0.0000 4 225 225 675 675 A\001
+4 0 0 50 0 29 20 0.0000 4 225 180 5130 675 B\001
diff --git a/doc/ctsimfig2.fig b/doc/ctsimfig2.fig
new file mode 100644
index 0000000..e7016bc
--- /dev/null
+++ b/doc/ctsimfig2.fig
@@ -0,0 +1,120 @@
+#FIG 3.2
+Portrait
+Center
+Metric
+Letter  
+74.50
+Single
+-2
+1200 2
+6 450 450 5850 5625
+5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 3303.409 3467.045 1350 1800 2250 1125 3375 900
+	1 1 1.00 60.00 120.00
+5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 3202.500 3337.500 4500 4950 3375 5400 2250 5175
+	1 1 1.00 60.00 120.00
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 1575
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 1800
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 2025
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 2250
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 2475
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 2700
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 2925
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 3150
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 3375
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 3600
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 3825
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 4050
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 4275
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 4500
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 900 3150 5400 4725
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 0 0 2
+	 5400 1575 5400 4725
+4 0 0 45 0 29 20 0.0000 4 285 3030 450 675 Equilinear Geometry \001
+4 0 0 45 0 29 20 1.5708 4 225 1320 5850 3825 Detectors\001
+4 0 0 45 0 29 20 1.5708 4 225 1050 675 3600 Source \001
+-6
+6 6555 450 11955 5408
+5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 9307.500 3337.500 10605 4950 9480 5400 8355 5175
+	1 1 1.00 60.00 120.00
+5 1 0 1 0 7 45 0 -1 0.000 0 0 0 0 9291.818 3150.000 11010 1755 11505 3150 11010 4545
+5 1 0 1 0 7 45 0 -1 0.000 0 0 1 0 9260.625 3134.531 7455 1800 8355 1080 9480 900
+	1 1 1.00 60.00 120.00
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3150 11505 2925
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3150 11505 3150
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3150 11505 3375
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3150 11010 1755
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3155 11135 1915
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7010 3160 11235 2095
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7010 3160 11325 2285
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7010 3160 11400 2495
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7000 3160 11450 2700
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7010 3155 11450 3595
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3145 11395 3805
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3155 11325 4010
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7010 3145 11235 4205
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3150 11125 4380
+2 1 0 1 0 7 45 0 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 30.00 60.00
+	 7005 3160 11010 4550
+4 0 0 45 0 29 20 1.5708 4 225 1320 11955 3825 Detectors\001
+4 0 0 45 0 29 20 1.5708 4 225 1050 6780 3600 Source \001
+4 0 0 45 0 29 20 0.0000 4 285 3345 6555 675 Equiangular Geometry \001
+-6
diff --git a/doc/ctsimfig3.eps b/doc/ctsimfig3.eps
new file mode 100644
index 0000000..477b3af
--- /dev/null
+++ b/doc/ctsimfig3.eps
@@ -0,0 +1,239 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ctsimfig3.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel 
+%%CreationDate: Mon Jan 22 20:02:56 2001
+%%For: kay at flay.here (Ian Kay)
+%%BoundingBox: 0 0 315 400
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 400 moveto 0 0 lineto 315 0 lineto 315 400 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 315 0 lineto 315 400 lineto 0 400 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+7.0 389.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+% Arc
+7.500 slw
+n 1805.7 2587.0 189.1 -28.4 66.2 arc
+gs col0 s gr
+
+% Polyline
+ [15 45] 45 sd
+n 1545 1905 m
+ 2325 0 l gs col0 s gr  [] 0 sd
+/Symbol ff 210.00 scf sf
+2047 2767 m
+gs 1 -1 sc (a) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+3125 840 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+3223 915 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+n 2720 697 m 2810 697 l 2847 862 l 2885 592 l
+ 3110 585 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+2892 847 m
+gs 1 -1 sc (2) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+3365 877 m
+gs 1 -1 sc (/2 = f) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4212 1005 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+3380 3052 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+3478 3127 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+n 2975 2909 m 3065 2909 l 3102 3074 l 3140 2804 l
+ 3365 2797 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+3147 3059 m
+gs 1 -1 sc (2) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+3620 3089 m
+gs 1 -1 sc ( = f) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4129 3202 m
+gs 1 -1 sc (v) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+3022 2065 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+3120 2140 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+gs  clippath
+2850 2530 m 2910 2530 l 2910 2378 l 2880 2498 l 2850 2378 l cp
+2910 1300 m 2850 1300 l 2850 1452 l 2880 1332 l 2910 1452 l cp
+eoclip
+n 2880 1315 m
+ 2880 2515 l gs col0 s gr gr
+
+% arrowhead
+n 2910 1452 m 2880 1332 l 2850 1452 l  col0 s
+% arrowhead
+n 2850 2378 m 2880 2498 l 2910 2378 l  col0 s
+% Polyline
+n 2895 1750 m 2985 1855 l 2930 1840 l
+ 3030 1965 l gs col0 s gr 
+% Arc
+gs  clippath
+1510 1908 m 1569 1915 l 1588 1765 l 1544 1881 l 1529 1758 l cp
+eoclip
+n 2532.7 1963.8 992.9 -137.8 -176.1 arcn
+gs col0 s gr
+ gr
+
+% arrowhead
+n 1529 1758 m 1544 1881 l 1588 1765 l  col0 s
+% Arc
+ [15 45] 45 sd
+n 2391.1 1912.5 851.1 -134.5 135.2 arc
+gs col0 s gr
+ [] 0 sd
+% Polyline
+n 1947 1462 m 2345 990 l 2277 1162 l
+ 2577 802 l gs col0 s gr 
+% Polyline
+n 2982 1312 m
+ 1805 2497 l gs col0 s gr 
+% Polyline
+n 2135 2182 m 2720 2700 l 2540 2625 l
+ 2877 2925 l gs col0 s gr 
+% Polyline
+n 1790 1305 m
+ 2397 1905 l gs col0 s gr 
+% Polyline
+n 1665 2000 m 1205 2470 l 1370 2365 l
+ 1060 2670 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 2405 1899 m
+ 3258 1894 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3255 0 m
+ 3255 6292 l gs col0 s gr  [] 0 sd
+% Polyline
+n 1535 1908 m
+ 2388 1903 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 1545 1905 m
+ 3240 6277 l gs col0 s gr  [] 0 sd
+% Polyline
+n 4800 3975 m
+ 4800 6300 l gs col0 s gr 
+% Polyline
+gs  clippath
+4845 210 m 4755 210 l 4755 422 l 4800 242 l 4845 422 l cp
+eoclip
+n 4800 2400 m
+ 4800 225 l gs col0 s gr gr
+
+% arrowhead
+n 4845 422 m 4800 242 l 4755 422 l  col0 s
+% Polyline
+n 4650 6300 m
+ 4950 6300 l gs col0 s gr 
+% Polyline
+n 1790 1305 m 2990 1305 l 2990 2505 l 1790 2505 l
+ cp gs col0 s gr 
+/Palatino-Roman ff 210.00 scf sf
+1734 2001 m
+gs 1 -1 sc  90.0 rot ({) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+60 2812 m
+gs 1 -1 sc (dFocalPastPhm) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4875 3675 m
+gs 1 -1 sc  90.0 rot (detectors) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+755 1975 m
+gs 1 -1 sc (source) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/ctsimfig3.fig b/doc/ctsimfig3.fig
new file mode 100644
index 0000000..7aaf37d
--- /dev/null
+++ b/doc/ctsimfig3.fig
@@ -0,0 +1,83 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 60 0 4950 6300
+5 1 0 1 0 7 50 0 -1 0.000 0 1 1 0 2532.660 1963.843 1797 1297 1610 1597 1542 1897
+	0 0 1.00 60.00 120.00
+5 1 0 1 0 7 55 0 -1 4.000 0 0 0 0 1805.728 2587.000 1972 2497 1972 2677 1882 2760
+5 1 2 1 0 7 50 0 -1 3.000 0 0 0 0 2391.068 1912.477 1795 1305 3242 1897 1787 2512
+6 2720 585 4272 1005
+6 3125 615 3358 960
+4 0 0 50 0 31 20 0.0000 4 225 90 3125 840 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 3223 915 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2720 697 2810 697 2847 862 2885 592 3110 585
+4 0 0 50 0 31 20 0.0000 4 225 195 2892 847 2\001
+4 0 0 50 0 31 20 0.0000 4 300 825 3365 877 /2 = f\001
+4 0 0 50 0 31 14 0.0000 4 150 60 4212 1005 l\001
+-6
+6 2975 2797 4249 3202
+6 3380 2827 3613 3172
+4 0 0 50 0 31 20 0.0000 4 225 90 3380 3052 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 3478 3127 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 2975 2909 3065 2909 3102 3074 3140 2804 3365 2797
+4 0 0 50 0 31 20 0.0000 4 225 195 3147 3059 2\001
+4 0 0 50 0 31 20 0.0000 4 300 480 3620 3089  = f\001
+4 0 0 50 0 31 14 0.0000 4 105 120 4129 3202 v\001
+-6
+6 2850 1315 3255 2515
+6 3022 1840 3255 2185
+4 0 0 50 0 31 20 0.0000 4 225 90 3022 2065 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 3120 2140 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+	0 0 1.00 60.00 120.00
+	0 0 1.00 60.00 120.00
+	 2880 1315 2880 2515
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 2895 1750 2985 1855 2930 1840 3030 1965
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 1947 1462 2345 990 2277 1162 2577 802
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2982 1312 1805 2497
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 2135 2182 2720 2700 2540 2625 2877 2925
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 1790 1305 2397 1905
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 1665 2000 1205 2470 1370 2365 1060 2670
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 2405 1899 3258 1894
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 3255 0 3255 6292
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 1535 1908 2388 1903
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 1545 1905 3240 6277
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4800 3975 4800 6300
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 180.00
+	 4800 2400 4800 225
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4650 6300 4950 6300
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 1790 1305 2990 1305 2990 2505 1790 2505 1790 1305
+2 1 2 1 0 7 55 0 -1 3.000 0 0 -1 0 0 2
+	 1545 1905 2325 0
+4 0 0 50 0 28 14 1.5708 4 195 75 1734 2001 {\001
+4 0 0 55 0 32 14 0.0000 4 105 135 2047 2767 a\001
+4 0 0 50 0 31 14 0.0000 4 150 1605 60 2812 dFocalPastPhm\001
+4 0 0 50 0 31 14 1.5708 4 150 960 4875 3675 detectors\001
+4 0 0 50 0 31 14 0.0000 4 105 690 755 1975 source\001
+-6
diff --git a/doc/ctsimfig4.eps b/doc/ctsimfig4.eps
new file mode 100644
index 0000000..4883c00
--- /dev/null
+++ b/doc/ctsimfig4.eps
@@ -0,0 +1,253 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ctsimfig4.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel 
+%%CreationDate: Mon Jan 22 20:27:39 2001
+%%For: kay at flay.here (Ian Kay)
+%%BoundingBox: 0 0 322 250
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 250 moveto 0 0 lineto 322 0 lineto 322 250 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 322 0 lineto 322 250 lineto 0 250 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-90.0 433.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+/Symbol ff 210.00 scf sf
+3892 5907 m
+gs 1 -1 sc (a) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+5180 6292 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+5278 6367 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+7.500 slw
+n 4775 6149 m 4865 6149 l 4902 6314 l 4940 6044 l
+ 5165 6037 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+4947 6299 m
+gs 1 -1 sc (2) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+5420 6329 m
+gs 1 -1 sc ( = f) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+5929 6442 m
+gs 1 -1 sc (v) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+4822 5305 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4920 5380 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+gs  clippath
+4650 5770 m 4710 5770 l 4710 5618 l 4680 5738 l 4650 5618 l cp
+4710 4540 m 4650 4540 l 4650 4692 l 4680 4572 l 4710 4692 l cp
+eoclip
+n 4680 4555 m
+ 4680 5755 l gs col0 s gr gr
+
+% arrowhead
+n 4710 4692 m 4680 4572 l 4650 4692 l  col0 s
+% arrowhead
+n 4650 5618 m 4680 5738 l 4710 5618 l  col0 s
+% Polyline
+n 4695 4990 m 4785 5095 l 4730 5080 l
+ 4830 5205 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+4357 3600 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4455 3675 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+n 3952 3457 m 4042 3457 l 4079 3622 l 4117 3352 l
+ 4342 3345 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+4124 3607 m
+gs 1 -1 sc (2) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+4627 3578 m
+gs 1 -1 sc (=f) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4927 3720 m
+gs 1 -1 sc (l) col0 sh gr
+% Arc
+n 3797.1 4965.1 1303.4 -129.0 172.4 arcn
+gs col4 s gr
+
+% Arc
+ [15 45] 45 sd
+n 4205.7 5134.4 1696.3 -57.0 58.8 arc
+gs col4 s gr
+ [] 0 sd
+% Arc
+n 3670.5 5782.5 178.5 -12.1 33.1 arc
+gs col-1 s gr
+
+% Polyline
+n 4782 4552 m
+ 3605 5737 l gs col0 s gr 
+% Polyline
+n 3935 5422 m 4520 5940 l 4340 5865 l
+ 4677 6165 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 4205 5139 m
+ 5058 5134 l gs col0 s gr  [] 0 sd
+% Polyline
+gs  clippath
+6645 3255 m 6555 3255 l 6555 3467 l 6600 3287 l 6645 3467 l cp
+eoclip
+n 6600 4485 m
+ 6600 3270 l gs col0 s gr gr
+
+% arrowhead
+n 6645 3467 m 6600 3287 l 6555 3467 l  col0 s
+% Polyline
+n 3335 5148 m
+ 4188 5143 l gs col0 s gr 
+% Polyline
+n 2487 5148 m
+ 3340 5143 l gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 5902 3240 m
+ 5902 7035 l gs col0 s gr  [] 0 sd
+% Polyline
+n 3590 4545 m
+ 4197 5145 l gs col0 s gr 
+% Polyline
+n 3590 4545 m 4790 4545 l 4790 5745 l 3590 5745 l
+ cp gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 5053 5139 m
+ 5906 5134 l gs col0 s gr  [] 0 sd
+% Polyline
+n 2986 3949 m
+ 3593 4549 l gs col0 s gr 
+% Polyline
+n 3269 4207 m 3667 3735 l 3599 3907 l
+ 3899 3547 l gs col0 s gr 
+% Polyline
+n 2490 5205 m 2512 5302 l 3547 5302 l
+ 3570 5167 l gs col4 s gr 
+% Polyline
+n 2962 5310 m 2835 5625 l 2932 5520 l
+ 2745 5917 l gs col0 s gr 
+% Polyline
+n 4200 5400 m 4605 5872 l 4545 5685 l
+ 4777 6022 l gs col4 s gr 
+% Polyline
+ [15 45] 45 sd
+n 2497 5152 m 5902 7035 l
+ 5895 7035 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 2497 5122 m
+ 5895 3285 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 4194 4294 m 4200 5137 l
+ 4189 5986 l gs col4 s gr  [] 0 sd
+% Polyline
+gs  clippath
+6570 7050 m 6660 7050 l 6660 6838 l 6615 7018 l 6570 6838 l cp
+eoclip
+n 6615 7035 m
+ 6615 6165 l gs col0 s gr gr
+
+% arrowhead
+n 6570 6838 m 6615 7018 l 6660 6838 l  col0 s
+/Palatino-BoldItalic ff 210.00 scf sf
+1860 6052 m
+gs 1 -1 sc (dFocalPastPhm) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+1677 5216 m
+gs 1 -1 sc (source) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+6690 5835 m
+gs 1 -1 sc  90.0 rot (detectors) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/ctsimfig4.fig b/doc/ctsimfig4.fig
new file mode 100644
index 0000000..43b1556
--- /dev/null
+++ b/doc/ctsimfig4.fig
@@ -0,0 +1,94 @@
+#FIG 3.2
+Portrait
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+6 1677 3240 6690 7035
+6 1677 3240 6690 7035
+5 1 0 1 4 7 50 0 -1 3.000 0 1 0 0 3797.050 4965.138 2977 3952 2640 4365 2505 5137
+5 1 2 1 4 7 50 0 -1 3.000 0 0 0 0 4205.741 5134.375 5130 3712 5902 5145 5085 6585
+5 1 0 1 -1 7 50 0 -1 0.000 0 0 0 0 3670.500 5782.500 3845 5745 3845 5820 3820 5880
+6 4775 6037 6049 6442
+6 5180 6067 5413 6412
+4 0 0 50 0 31 20 0.0000 4 225 90 5180 6292 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 5278 6367 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 4775 6149 4865 6149 4902 6314 4940 6044 5165 6037
+4 0 0 50 0 31 20 0.0000 4 225 195 4947 6299 2\001
+4 0 0 50 0 31 20 0.0000 4 300 480 5420 6329  = f\001
+4 0 0 50 0 31 14 0.0000 4 105 120 5929 6442 v\001
+-6
+6 4650 4555 5055 5755
+6 4822 5080 5055 5425
+4 0 0 50 0 31 20 0.0000 4 225 90 4822 5305 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 4920 5380 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+	0 0 1.00 60.00 120.00
+	0 0 1.00 60.00 120.00
+	 4680 4555 4680 5755
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 4695 4990 4785 5095 4730 5080 4830 5205
+-6
+6 3952 3338 4987 3720
+6 4357 3375 4590 3720
+4 0 0 50 0 31 20 0.0000 4 225 90 4357 3600 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 4455 3675 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3952 3457 4042 3457 4079 3622 4117 3352 4342 3345
+4 0 0 50 0 31 20 0.0000 4 225 195 4124 3607 2\001
+4 0 0 50 0 31 20 0.0000 4 300 300 4627 3578 =f\001
+4 0 0 50 0 31 14 0.0000 4 150 60 4927 3720 l\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 4782 4552 3605 5737
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 3935 5422 4520 5940 4340 5865 4677 6165
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 4205 5139 5058 5134
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 90.00 180.00
+	 6600 4485 6600 3270
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3335 5148 4188 5143
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2487 5148 3340 5143
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 5902 3240 5902 7035
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3590 4545 4197 5145
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3590 4545 4790 4545 4790 5745 3590 5745 3590 4545
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 5053 5139 5906 5134
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 2986 3949 3593 4549
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 3269 4207 3667 3735 3599 3907 3899 3547
+2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 2490 5205 2512 5302 3547 5302 3570 5167
+2 1 0 1 0 7 50 0 -1 3.000 0 0 -1 0 0 4
+	 2962 5310 2835 5625 2932 5520 2745 5917
+2 1 0 1 4 7 50 0 -1 3.000 0 0 -1 0 0 4
+	 4200 5400 4605 5872 4545 5685 4777 6022
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 3
+	 2497 5152 5902 7035 5895 7035
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 2497 5122 5895 3285
+2 1 2 1 4 7 50 0 -1 3.000 0 0 -1 0 0 3
+	 4194 4294 4200 5137 4189 5986
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 90.00 180.00
+	 6615 7035 6615 6165
+4 0 0 50 0 31 14 0.0000 4 150 1605 1860 6052 dFocalPastPhm\001
+4 0 0 50 0 31 14 0.0000 4 105 690 1677 5216 source\001
+4 0 0 50 0 31 14 1.5708 4 150 960 6690 5835 detectors\001
+4 0 0 55 0 32 14 0.0000 4 105 135 3892 5907 a\001
+-6
+-6
diff --git a/doc/ctsimfig5.eps b/doc/ctsimfig5.eps
new file mode 100644
index 0000000..b3d3605
--- /dev/null
+++ b/doc/ctsimfig5.eps
@@ -0,0 +1,213 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ctsimfig5.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel 
+%%CreationDate: Mon Jan 22 20:52:35 2001
+%%For: kay at flay.here (Ian Kay)
+%%BoundingBox: 0 0 455 257
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 257 moveto 0 0 lineto 455 0 lineto 455 257 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 455 0 lineto 455 257 lineto 0 257 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-25.0 411.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06299 0.06299 sc
+/Palatino-BoldItalic ff 300.00 scf sf
+4592 5053 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4686 5124 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+7.500 slw
+gs  clippath
+4428 5496 m 4485 5496 l 4485 5349 l 4457 5464 l 4428 5349 l cp
+4485 4323 m 4428 4323 l 4428 4469 l 4457 4355 l 4485 4469 l cp
+eoclip
+n 4457 4338 m
+ 4457 5481 l gs col0 s gr gr
+
+% arrowhead
+n 4485 4469 m 4457 4355 l 4428 4469 l  col0 s
+% arrowhead
+n 4428 5349 m 4457 5464 l 4485 5349 l  col0 s
+% Polyline
+n 4471 4752 m 4557 4852 l 4505 4838 l
+ 4600 4957 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+3985 3042 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4078 3114 m
+gs 1 -1 sc (p) col0 sh gr
+% Polyline
+n 3599 2906 m 3685 2906 l 3720 3063 l 3756 2806 l
+ 3970 2800 l gs col0 s gr 
+/Palatino-BoldItalic ff 300.00 scf sf
+3763 3049 m
+gs 1 -1 sc (2) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+4242 3022 m
+gs 1 -1 sc (=f) col0 sh gr
+/Palatino-BoldItalic ff 210.00 scf sf
+4527 3157 m
+gs 1 -1 sc (l) col0 sh gr
+/Palatino-BoldItalic ff 300.00 scf sf
+3352 3041 m
+gs 1 -1 sc (2) col-1 sh gr
+% Polyline
+gs  clippath
+7420 3466 m 7351 3466 l 7351 3634 l 7386 3498 l 7420 3634 l cp
+eoclip
+n 7386 4405 m
+ 7386 3481 l gs col0 s gr gr
+
+% arrowhead
+n 7420 3634 m 7386 3498 l 7351 3634 l  col0 s
+% Polyline
+gs  clippath
+7362 6360 m 7431 6360 l 7431 6191 l 7397 6328 l 7362 6191 l cp
+eoclip
+n 7397 6345 m
+ 7397 5684 l gs col0 s gr gr
+
+% arrowhead
+n 7362 6191 m 7397 6328 l 7431 6191 l  col0 s
+/Palatino-BoldItalic ff 165.00 scf sf
+7455 5432 m
+gs 1 -1 sc  90.0 rot (detectors) col0 sh gr
+% Arc
+n 4203.3 5006.3 3447.8 -136.3 -178.3 arcn
+gs col4 s gr
+
+% Arc
+ [15 45] 45 sd
+n 4028.5 4909.6 3208.5 -25.3 24.6 arc
+gs col4 s gr
+ [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 4005 4894 m
+ 4817 4890 l gs col0 s gr  [] 0 sd
+% Polyline
+n 3419 4329 m 4562 4329 l 4562 5472 l 3419 5472 l
+ cp gs col0 s gr 
+% Polyline
+ [15 45] 45 sd
+n 4812 4894 m
+ 5625 4890 l gs col0 s gr  [] 0 sd
+% Polyline
+n 2689 3598 m 3068 3148 l 3004 3312 l
+ 3289 2969 l gs col0 s gr 
+% Polyline
+n 1710 2617 m
+ 3997 4905 l gs col-1 s gr 
+% Polyline
+n 1009 3666 m
+ 3997 4905 l gs col-1 s gr 
+% Polyline
+ [15 45] 45 sd
+n 757 4897 m
+ 7237 3480 l gs col0 s gr  [] 0 sd
+% Polyline
+n 762 4904 m
+ 3997 4905 l gs col-1 s gr 
+% Polyline
+n 3995 4897 m
+ 7230 4898 l gs col-1 s gr 
+% Polyline
+ [15 45] 45 sd
+n 7230 3480 m
+ 7230 6307 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 751 4904 m
+ 7230 6307 l gs col0 s gr  [] 0 sd
+% Polyline
+ [15 45] 45 sd
+n 3175 4905 m 3982 5718 l 4802 4905 l 3982 4091 l 3172 4901 l
+ cp gs col0 s gr  [] 0 sd
+/Palatino-BoldItalic ff 210.00 scf sf
+664 5220 m
+gs 1 -1 sc  90.0 rot (source) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/ctsimfig5.fig b/doc/ctsimfig5.fig
new file mode 100644
index 0000000..c8b27b9
--- /dev/null
+++ b/doc/ctsimfig5.fig
@@ -0,0 +1,71 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+Letter  
+100.00
+Single
+-2
+1200 2
+6 540 2610 7470 6345
+5 1 0 1 4 7 50 0 -1 3.000 0 1 0 0 4203.333 5006.338 1710 2625 1020 3682 757 4905
+5 1 2 1 4 7 50 0 -1 3.000 0 0 0 0 4028.509 4909.619 6930 3540 7237 4900 6945 6247
+6 4429 4338 4814 5481
+6 4592 4838 4814 5167
+4 0 0 50 0 31 20 0.0000 4 225 90 4592 5053 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 4686 5124 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2
+	0 0 1.00 57.15 114.30
+	0 0 1.00 57.15 114.30
+	 4457 4338 4457 5481
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 4471 4752 4557 4852 4505 4838 4600 4957
+-6
+6 3352 2782 4587 3157
+6 3985 2828 4206 3157
+4 0 0 50 0 31 20 0.0000 4 225 90 3985 3042 l\001
+4 0 0 50 0 31 14 0.0000 4 150 135 4078 3114 p\001
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3599 2906 3685 2906 3720 3063 3756 2806 3970 2800
+4 0 0 50 0 31 20 0.0000 4 225 195 3763 3049 2\001
+4 0 0 50 0 31 20 0.0000 4 300 300 4242 3022 =f\001
+4 0 0 50 0 31 14 0.0000 4 150 60 4527 3157 l\001
+4 0 -1 50 0 31 20 0.0000 4 225 195 3352 3041 2\001
+-6
+6 7335 3481 7455 6345
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+	0 0 1.00 68.46 136.93
+	 7386 4405 7386 3481
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2
+	0 0 1.00 68.46 136.93
+	 7397 6345 7397 5684
+4 0 0 50 0 31 11 1.5708 4 135 750 7455 5432 detectors\001
+-6
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 4005 4894 4817 4890
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+	 3419 4329 4562 4329 4562 5472 3419 5472 3419 4329
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 4812 4894 5625 4890
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+	 2689 3598 3068 3148 3004 3312 3289 2969
+2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 1710 2617 3997 4905
+2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 1009 3666 3997 4905
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 757 4897 7237 3480
+2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 762 4904 3997 4905
+2 1 0 1 -1 7 50 0 -1 0.000 0 0 -1 0 0 2
+	 3995 4897 7230 4898
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 7230 3480 7230 6307
+2 1 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 2
+	 751 4904 7230 6307
+2 3 2 1 0 7 50 0 -1 3.000 0 0 -1 0 0 6
+	 3175 4905 3982 5718 4802 4905 3982 4091 3172 4901 3175 4905
+4 0 0 50 0 31 14 1.5708 4 105 690 664 5220 source\001
+-6
diff --git a/doc/divergent.ai b/doc/divergent.ai
new file mode 100644
index 0000000..f854160
--- /dev/null
+++ b/doc/divergent.ai
@@ -0,0 +1,550 @@
+%PDF-1.4
%����
+1 0 obj
<< 
/Type /Catalog 
/Pages 2 0 R 
>> 
endobj
2 0 obj
<< 
/Type /Pages 
/Kids [ 3 0 R ] 
/Count 1 
>> 
endobj
3 0 obj
<< 
/Type /Page 
/MediaBox [ 0 0 612 792 ] 
/Parent 2 0 R 
/Rotate 0 
/PieceInfo << /Illustrator 26 3 R >> 
/LastModified (D:20010212121952-06'00')
/ArtBox [ -66.95996 229.06055 678.95996 562.93994 ] 
/Group 50 2 R 
/Thumb 54 2 R 
/TrimBox [ -69 146 681 646 ] 
/Contents 56 2 R 
/Resources << /ExtGState << /R1 25 3 R >> /Font << /F1 48 2 R >> /ProcSet [ /PDF /Text ] >> 
>> 
endobj
5 0 obj
<< 
/CreationDate (D:20010208005235-06'00')
/Creator (Adobe Illustrator 9.0)
/Producer (Adobe PDF library 4.800)
/Title (divergent.ai)
/ModDate (D:20010212121952-06'00')
>> 
endobj
25 3 obj
<< 
/SA false 
/OP false 
/op false 
/AIS false 
/ca 1 
/CA 1 
/BM /Normal 
/HT /Default 
>> 
endobj
26 3 obj
<< 
/Private 27 3 R 
/LastModified (D:20010212121952-06'00')
>> 
endobj
27 3 obj
<< 
/CreatorVersion 9 
/ContainerVersion 9 
/RoundtripVersion 9 
/AIMetaData 34 2 R 
/AIPrivateData1 35 2 R 
/AIPrivateData2 36 2 R 
/AIPrivateData3 38 2 R 
/AIPrivateData4 40 2 R 
/AIPrivateData5 42 2 R 
/AIPrivateData6 44 2 R 
/AIPrivateData7 46 2 R 
/NumBlock 7 
>> 
endobj
34 2 obj
<< /Length 1437 >> 
stream
+%!PS-Adobe-3.0 
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin M Rosenberg) ( )
+%%Title: (D:\\ctsim\\doc\\divergent.ai)
+%%CreationDate: 2/12/2001 12:19 PM
+%%BoundingBox: -67 229 679 563
+%%HiResBoundingBox: -66.96 229.0605 678.96 562.9399
+%%DocumentProcessColors: Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 5.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: -56 -133 530 633
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 750 500
+%AI5_RulerUnits: 2
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: -358 859 1 1345 943 26 0 1 11 68 0 0 1 1 1 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:-56 -133
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 0
+%%EndComments
+endstream
endobj
35 2 obj
<< /Length 6379 >> 
stream
+%%BoundingBox: -67 229 679 563
+%%HiResBoundingBox: -66.96 229.0605 678.96 562.9399
+%AI7_Thumbnail: 128 60 8
+%%BeginData: 5928 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD91FFA8A8FFFFFFA8A8A8FD07FFA8FD32FFA8A8FFFFFFA8FD07FF
+%A8FFFFFFA8A8FD2BFF52FFFD04A87DA87DA8FFA87DFFA8FF7DA8A8A87DA8
+%A8A87DFFA8FD27FF7DFF7DA8A8A87DFD09A8FFA87DA8FFFD05A87DA8A8A8
+%FD1FFFFD047D527D527D7D7D527D527DFFA8FD047DA87D7D527D7DFF7DFD
+%26FFFD067D527D527D527D527D527DA8FF7DA8527D7DA8FD047DA8A8A8FD
+%22FF7DFD17FFA8FD29FF7DFD06FFA8A8FD11FFA8FDACFFA8A8A85227A8FD
+%3AFFA8A8A87DA85227A8FD34FF7DA87DA8FD3CFFA8A87DA8FD39FFA8A8A8
+%FD3EFFA8A8FD3BFFA87DFD3FFFA8A8A8FD3AFFA8A8FD40FFA8FD3CFF7DA8
+%FD3FFFA8A8FD3CFFA8FD41FFA8FD3CFFA8FD27FFA8A8FD17FFA8A8FD3CFF
+%A8FD26FFA8A8527DFD17FFA8FD3CFFA8FD24FFA87DA8FFFFFFA8FD16FFA8
+%FD24FF52FD17FFA8FD23FFA8A8FD04FFA8527DFD15FFA8FD23FFA8A852A8
+%FD36FFA87DA8A8FFFFFF7DA87DFFFFA8FD36FF7DA8A8FFFFFF277DFD33FF
+%7DA8A8FFFFFFA8A8A8FD04FF7D7DFD33FFA8A8A8FFFFFF7DA8A8FFA8FD30
+%FF7DA8A8FFFFA87DA8A8FFFFFFA8A87DA87DA8FD30FF7DA8A8FFFFA87DA8
+%A8FFFFFFA85252FD2CFFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD05FFA8FD2D
+%FFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD2CFF7DA87DFFA8A87DA8FFFFA8A8
+%7DA8A8FD04FFA87DA8277DFD2AFFA8A87DFFA8A87DA8FFFFA8A87DA8A8FD
+%04FFA8277DFD25FFA8A87DFFA8A87DFFFFA87DA8A8FD04FFA87DFD04A8FF
+%FFFF7DFD27FFA8A8A8FFA8A8A8FFFFFFA8A87DFD04FFA8A8A87DA8FFFF7D
+%FD22FFA8A87DFF7DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FFA8277D
+%FD24FFA8A87DA87DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FF7D7DFD
+%1EFFFD0BA8FFFFFFFD04A8FD05FFFD07A8FFFFA8FD21FFFD07A8FFA8A8A8
+%FFFFFFFD05A8FD05FFFD06A87DA8FD1BFFA8A87D7D7DA87DA87DA8A8A87D
+%A87DA8A8FFFFA87DA87DA87DA8A8FD08FFA8FFFFA8FD1BFFA8A87DA87DA8
+%A8A87DA8A8FF7DA87DA8A8FFFFFF7DA87DA87DA8A8FD07FF7DFFFFFFA8FD
+%14FFA8A8FD047DA8A87DA8A8A87DA8FFFF7DA8A8A87DA8A8FD06FFA8A8A8
+%7DA8A8A87D527DFFFFA87DA8FD08FFA8FD0EFFA87D7DA8A87DA8A8A87DFD
+%04A8FFA8A87DA8A8A87DFD06FFA87DA8A8A87DA87D52FFFFFFA87DA8FFFF
+%FFA87DA8FD0AFFA8FD077DA87DA87DA87DA87DA87DFFFFFF7DA87DA87DA8
+%7DA87DA8FD09FFA8FFFFA87DA8FD07FFA87DA8FD0AFFA8FD057DA87DA87D
+%A8A8A87DA87DA87DFFFFFFA8A87DA87DA87DA87DA8FD08FFA8A8FFFFA87D
+%A8FD0DFFA8FD057DA87D7D7DFD0EA8FD0AFFFD08A8527DFFFFFFA8FD13FF
+%7D7D7DA87D7DA87D7DFD0EA8FD0AFFFD08A8527DFFFFFF7DFD04FFA8A8A8
+%FD04FFA8FD05527D527D527D7DA87DA87DA87DA87DA87DA87DA87DA87DA8
+%7DA87DA87DA87DA8FD09FFA8FFFFA8A8A8FD07FFA87DA8FD04FFA8525252
+%7D527D52FD047DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8
+%7DA8FD09FFA8FFFFA87DA8FFFFFFA87DFFFF27F8FD0427FD0452FD0A7DA8
+%7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A87D7DFF
+%FFA87DFD08FFA87DFFFF52F827F82727FD0452FD0A7DA8A8A87DA8A8A87D
+%A8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87D7D7DFFFFA87DFD04FFA8
+%7DA8FF7D27F8272752527D527D52A87DA87DA87DA87DA87DFD1BFF7DA8FF
+%FFA87DA8FD07FFA87DA8FF2727F82727FD04527D7DA87DA87DA87DA87DA8
+%7DFD1BFF7DA8FFFFA87DA8FFFFFFA87DFD05FFA87D525252FD067DFD1BA8
+%FD08FFA8FD0CFFA87DFD05FFA87D525252FD067DFD06A8FFFD14A8FD08FF
+%A8FD08FFA87DA8FD07FFA87D527D527D7DA8527D7DA87DA8A8A87DA87DA8
+%7DA87DA87DFD0AFFA87DA87DA87DA8277DFFFF7D7DA8FD07FFA8A8A8FD07
+%FF7D7D527D527D52A87D7D7DA87DA87DA87DA87DA87DA87DA8A8FD0AFFA8
+%7DA87DA87DA8277DFFFF7D7DA8FFFFFFA8A8FD0BFFA8A87DA87DA87D7DA8
+%A87DA8A8A87DFD04A8FFFFFF7DA8A8A87DA8A8A87DA8FD08FFA8FD0CFFA8
+%7DFD0BFF7DA87DA87DA87D7D7DA8A8A87DA8A8A87DA8A8FFFFFFA8A87DA8
+%A8A87DA8A8A8FD08FFA8FFFFFFA8FD04FF7DA8A8FD0DFF7DA852A87DA87D
+%A87DA87DA87DA8FFA87DA87DA87DA8FD07FFA87DA87DA87DA8277DFFFFA8
+%7DA8FD07FF7DA8A8FD0DFF7DA87DA87D7D7DA87DA87DA87DA8FFFF7DA87D
+%A87DA8A8FD05FFA8A87DA87DA87D7D27FFFFFFA87DA8FD16FFA8A87DFD06
+%A8FFFFFD05A8FFFFFFFD06A8FD09FFA8FFFFA8A8FD1BFFFD0AA8FFFD04A8
+%FD05FFFD06A8FD07FFA8FFFFFFA8A8FD1AFF7DA87DA87DA8A8A87DA8A8FF
+%A8A87DA87DA8FD04FFA8A87DA87DA87DA87DA8FFFF7DA87DFD1CFFA87DA8
+%A8A87DA8A8A87DA8A8FFA8A87DA87DA8FD05FFA87DA87DA87D7D7DFFFFFF
+%7D7D7DFD1CFF7DA8A8A87DA8FFFF7DA8A8A8FFFFFFA87DA8A8A8FD06FFA8
+%527DFD25FFFD07A8FFA8A87DA8FFFFFD04A87DA8FD06FF52A8FD25FF7DA8
+%A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8FFFFFFA8FD27FFA87DA8
+%A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8A8A8FD29FFA8A8FFFFA8
+%A8A8FFFFFFFD04A8FD05FFA8A8527DFD2AFFA8A8A8FFFFA8A8A8FFFFFFA8
+%A8A8FD06FF527DFD2BFFA87DA8FFFF7DA87DFFFFFFA8A87DA8A8FD04FFA8
+%FD2DFFA87DA8FFFFA8A87DFFFFFFA8A87DA8A8FFA8FD2FFFA8A8A8FFFFA8
+%A87DA8FD04FFA8A87D7DA8FD30FFA87DA8FFFFFD04A8FD04FF527DFD32FF
+%A87DA8FFFFA8A87DA8FD04FF7D7DFD33FFA87DA8FFFFA8A87DA87DA8A8FD
+%35FFA8A8FD04FFA8A8A8FFFFA8FD36FFA8A8A8FFFFFF7DA8FD38FFA8A87D
+%A8FFFFFFA8277DFD38FFA8A87D527DFD3CFFA8A87DFFFFFF7DFD3BFF52FD
+%40FFA8A8277DFDFCFFFD79FFA8FD41FFA8FD3CFF7DFD40FFA87DFD26FF7D
+%FD14FFA8A8FD2BFF7DFD14FFA8A8FD27FF7DF8A8FD0FFFA87DA8FD2DFF7D
+%27A8FD0FFFA87DA8FD2BFFFD05A8FD07FFFD05A8FD32FFA87DA8A8FD07FF
+%A8A87DA8FD32FFA87DA87DA87DA87DA8FD3AFF7DA87DA87DA87DFDFCFFFD
+%FCFFFD22FFFF
+%%EndData
+endstream
endobj
36 2 obj
<< /Filter [ /FlateDecode ] /Length 37 2 R >> 
stream
+H��Wko��
 ���0�m"�)�(
+�9M�I�<����"3�����cf�_�#Rr����<��c��^����ɇ?\ݜ��^��3�
}�5*��fA�29/˾�a���	�g�����Q�'մE]-��t���w����gr]���W��	�HN��ۢ+4�ŗ/y��/_Vu���+�T՝e��.x����r�Em�!]8�\}
tº�VE�ֿ/ȩ���O.ذ���Z�{J�L�A��6��?|炞I&�`�y�A WM�����n�	�,�u���U���b����.+�|�}��J�ޥ� ��a
�š��L�����J�
�9q�(���N����l�~�l���}����d����~t���Q���
;�7C�x�+�۬�TS�:��������m��lh
|�;�L�Ri��#��,2��]�
D���R'u���Pb
���p�_�j��˵z,tz�޿O
؅q}���ـ��ǡT�z���3g�g-|�N�I�r;���J� g|q����IN���Y��O�gJq�9WW�p5
+�&.�6

���I� �
+ުͶ�}�W���&����yRE̍�12F8Á���Ϸ�@}[���Rc����)��.y�&ܞ�zݗ������P�&M�?�+U.4�G��t+gY��Q�6�(�kU���N�~��I
W��ܪ��I�yʸO|.�~0O��P�1�!Ÿ�k�8�Ɠ[oh�0w��E��*d�ĖW�V5�*�X%�0��
4&��v�<
_���)V�P�(�͛��̟����D�p��I����РVR��
(����y���JMs�=c�
�צ��f����6��0{u��awp½a�7���>4���=�Jw���G�
1i��םjaU*"���U �=۸�Ze=�VEeVW�fM�e�m
`�Ze����`�ʋW��T�[�o���6�V�M�5ue=�E�}�ꡳ.���
�OƅXw�#����l��X�,U��vm�����JYh�Jm�a��;���Zՠm[�K�g��A�-��m��
+µ�iT�?ደ��W�
�
+G�֤o���i�٬
Ԧ��
+�
�P�"�ʪ���v�*��O
��M�a��荵�`ٷV��n{���[7J�ey�)k�c�3K��r ^{�ժ(�
�0:wh��y_�|�����
�Y�`�[�Hjp��Y7S�`�}0$`��!X�6�m
/��<�ٝ�ss��L�|��tk�B7����\�
.ML�;�
��Ŷ|�.�r��ݔН1����~6���ZC��VfΦ|��uf��vN2]�LY�Te̕񮞍�J��
+�U�bvD��Q(Ge��z=�T�
�Qeg�\

��1��I��x��͓��t1������<��ߖ�-
ڳg5[���Ty=̡YΙ�
���z�k�P5���
k�a�O3�n��;�'.����t��&IX�5�������O��S��Y	�vpY��p�g�=����ۏ�P#�H_���B�L�(�(�9<J;%�Ab-	$
Da~(�A\�C���3/t"'�$N��t(�
�RN� >�4�!�hL�"|
+���3�<�3����
8b)Rr\�2�u�+\��]�n��n�H�r�].��A�x�#
�IS�B�B�PD"A�<�q��y�y�����>�=_���)�/��
d$�<� ��4tB7�BFaшG^
�`"Q27�E�����Ke�q�
�Ec"M��#���!R]
'��4I�8��0		_^"�,����q'q
Gq���=��c7f1E��(��(��(��HF>��ҍ�u";L�$�}��G."�ȉ���A$A�\Cd,�
��
+M�e*�2!�#��:	T�E�(*g�����j�������*S���R/A�#/D$���s�
+@�"��ѯP�/<�
ݤ 
b�)O����q��
Xp��@F
����^<�?
8r\��,�"�, �#p'�?8���MS`3FC`U�
�ˁb<;�vR <�C�^�x�

7��8�0�N�#�
�
e����8
���y��������x&\�a6�c{�>��
|���P���Ͱ���q[o����wۃe�
	
kbH�����k6�$���ċ:���>��ObQ�C"��ُ��
���{ݣ��
'���z��葿!�
��|β~������^ԳMr�"�U�����˘�ayo-^D
���鰰C�߭�a���D��H�
�NF�=�kWSkC�5�ք��iM���4�~&ҚF� �/�t�L����@�A�1_���PkJ�`@��B�!��H�c
���_.=rW�
����d#��f�id�,�0l��Q�$@�~��nU����z at 2���%�g8l�����:H��${�fOD��D��
+�uChw����"��\xE��v� p!P0�
V0���Nk��Q���v1�2�Ԭ g<�ZM E�5�ԃ���ٷ� 
ꁰ
�ݐz�>��@
o�q�`�K@{����;

+�䡂L

+��W� J'.�7�
��p�� vk����`8
xSv�܄]x��
p�ּ�x �>�� v
;��푁��O�9΢��>����U�"��4�i?`:�؝G�_��Bc�B)�t�y�5H��@k^���&�
��z#��כ;��S���D�y�*�N�:�NT�Bv
+�9��P�$=V_��$�I��'	
+$J
+�$�5(�y"r
JB�J�R�Z�b�j$9�z��d��4�E�S�,�.�0�2�4�6�8�:�<�>�@�B�D�F�
�)�)*S�E	9I�L�L�z	�)�IV�T����.�bX�MڵJ�e�	�$	�Jw!@�
�4��V���ష?
K¨_�0�
�F
+
�����#,0����7D88

�v��c�&
��Q�̇g�X�n��wa����7�GH�zL��JB8ZV�p��V	��48 �p`(0
vſE����������
�
����
��y�po�mvnU
O�"�Q��1}/R\��V�z
�9����[�
�)L�wsr�=�0Cz�i�+��B������=���r��
����t��2ܣ �F_�L�&=�|�X�}.��O�{C!aoh��yCg�y5�.B�!�%C,�7>kC� �[��2���"��\[P/l��s�	�@^�6���"�`��E��H�Z�U���o��A����"�u��qRP�:9"9IG at .
+�Q��B1(C,�
Ax���O�E
g������h�HK�qT�j4��e��t.c��ܒ�Yg��.�K[ϳ��U
�:'[�m��Rw�=g[�ls����Y9.*=-�=C�
�.�!�!!a� �
 �e�:U/��Q;/O6gΧH�Ey6���y^x
�d'�Y�_T�$:'�)%G����1�M���6Il�ָ�$�q�q�q�q��
%2�1.1C�:��-�����������T���ZI�ˌ�љ�S1�Y.�^f;&j������s}(����褔�\�MS<{ʇ�
�w���N}g��c���Jƣ[���Lp�Y�����r�d:�sfy�"�1�I~��&yͨd��*S�M=l������g
{�
{�f��#���Z�`7�.�f�l�`�a�g�ee�
���(p"R7�9��:.'gQ9�8K�����
�������h��#L������)0�S�Ԍox�5�'����w?~�,���C��j,���7w��н������O���J����;������Z
�8�v�|��<i^����y��
�������ۻ_���O������W�_���]�ڟ�������?�}��?���ׯN�ɻꟖ_�Y
+�B=�S�T'5-��T�$oI��
�3F"D2@>

&U�#�ñ��h�V�
����@�b�Y�xʠ`

!!!� � ��A�� �٬�����෮:H�L���k�tM��Z

ҭ$[&
��!�rU���6�6�M�P��莮
��B
��:k�U�?i>�/���pţ��8M���F��G'�{0�i�b�8��ao�>����+�O����NWQ�x���{��;���'w�Դ��I u|:<
�NǦC�����>o�ug�@�%2����h40:
�Dǡ��Qh d3BǠCp 
�����s�9�
xu���=
+u:a.B�ד #92#�+�rc!*�&kZ���#�:�B+Yt��G�f at cR�#�2k"�l#�v�o ���#�y"��y#�v�*��
���F�ŞH˅���Ν�xC�v$�@�N�살o
�
�
+�pC
w��@FO��Bv�YܵA;��
�tn�ڰ�=�����+>p�s�y�w���&�xW
��N|Ҽ��ډp�
�a�yZ@�_
O�MmrU�����qq	����Z\_�9��R7L8ro�r�Q�:�j���X��־UP7�w�kv�Q������Cd??K|Ё, at I���Bc��A?��?�l��c���`rwMq �8�L�L+�TQȒ�-:�k�l��1���#�^G>�6����9"㊹;�~�ȸ
�6N����p�t7׀��-`mi
8��g c f��f ��A�Z���2X�
T�)��!� ex28��
K�$�VV�PԀ!��, ������q�:t�Z����.�f�1�8\��.��3�N�-?���g��o/V����y��\1�ys���y3(eZ�s�({�-1�˜>j暊&r٬s��b��s/��WNڔ��5��1�V�3عQ��b�b�TBk��]EtU�8���h�B�h; �J���r����^M�p^N�\O�\P�\Q�XR�XS�TT{�Qeu���O��},��*�
K��:���zu�/zy]c}�
c�m���$�Ʈ�Ȏ^eUd�\e�E�k��X�	����W�^��jj�;q�"L�Y.sF�
HVd�q�<��4�������ST6��V����
j�BsM�>��k�M�!
�t$��{��Q(�"�ؽ�
�F
�\�
+�
+�}���Y��)�g,�Ɵ[��R�N�Qw����y�cL<5>��+&�Jb�F�DC�̚JO���
)�<ł}�w�?��LYvN2
�eYJ2�1K���l��Dr�dV�^�$�HJ�$Tŧ��L#�ԒH��Z)�:2��F�X�
䎥N�ghy3)kZ�e̪|�t�l�d�\�T!S8��2�����d$I,GHe�%�凧�g�'Gʍsj��15�o��~
W�=H��b���EP/h�J��خ��l[��u0k`'vqa#76s�T��a[;��-g{'������	&6Q+��8ۨ�wT?X��f
~W���ժ+
j
���C���Sk�5���CP{hsc�X�Q-bT�XȂ�D��&j���]zu���X�+n�H��]t�_L�al�1�o��ѓF��Ƣ�q�mT��G�r���{Ǧ�Q�����1��Ga�("D@w��{n�r��so��9	�������;���܋����v���xy7
m��m��[�"n�i'�c؍GQ�Dڊ[�:�JR�B���$I,�1�e�$�D9�e�b�bR�|�������N<#���<�*e�Oz�T.�Y�kM��t [...]
+�I�뢯���?+���د�
�q$x7������@��{�s೏s0
�10�������LR�J����S=�*U6EFFF0�L?-��Mo����7��
+'�@
'� Y��� �u����e�
�x� ��j�n0�+ph��O���
!�R� �
���X�	�!FƆ�Q�02��*;c���!"`�8��}�ό�Sd��W�Ċ�52Z�h#�Ed��
C�ʘ11h�50*=�Fð�2nL

}�5b�ƎV�tZ����10~t@Z� ���1ǐp"��Q$9�jo0Ҡ�
#	�
+�6P�O�
[����؝����웨��J�{�����=Y����i�o<��V�Ρ��)κ�����0���
����Q�H�.
�
{�8��ՠzd�(�#�ƯR�Ҍ��!͸��P��b�f�+�m��b�^@5D1���)�K���!�
�P�P�P݈�?�
�?���(
��z��'��*
_�����7��ꋽW_����U%�x���Ǘ�=~#}��Φw�S��M����}Z+�Y�C����
vO(k=}����^n?���-��-Z|wR���E�����݆=�U�k�l�byc�n�}�^�9�%������翾~�����3>���1�����
�}?}�����7��Q�����/��:C�7aC�
�C��9�H�T�)�%o������bSE�)�"�*�"�"�*�"��EȪJc�$�Y �W	$F�-�4��C�8&iTaYQIA9\D
+!-�0BE W�_
�� z#o���7AC*Ț��
�2� _=�k�`y�$BlX��U��� 3��C^f��{��ǘc��s�Ή;'�x�ɓ�$�A���p FBD��±T
p�
+[q�=�a
+l�Qy
S��p8
���1q$3���Ax
B�������-7}��v�f�VKJ�MN[�,^:m����E��6ض8o�n�H+��fw�)޶<eF���
W�
�=� GK��$1'ʔ*-Yf��BE�WiКS�6}��y3���g�yv�gs�Ή;'��D2�A}��7�_�J>���ͻ�7>
��oʇ~�?�?|���ۻ�O�U��㌏����������>yx�n��|yL��y���
�~�����7��(.�g>7ڂ�z���c6�%�Vq[ecn�l��{n� lj�VxZ4������Ž�w��saw�q߆�����j������l�9�IӤ�YA�†�@U���l���M��� ��YÆ��
��!.5-���&���-�kC�3��f�S�;XsS8���L�I{��&��y������+󭲧�
�
R_�n]���y������k��
g�������z5DK8���H���<�]��UWt�Z\��p�'��3X�p�I<p�������,P� [...]
��
�+ᮁ�'��
���G�Fţf?�ܛ��[��fN4���hR[����l]���g�vk�3�Œ9挩�R����rR���>�ć\��Y0�&L�2�HLL���@T+4ڂ�:a����6`�:L��-�`&O��ftĬ�����
� 
����>`�GL����0���
+���Lp\���
�C�� -
F�1�gD�� ���@
�
+���Lp(�J��
�ý�p�u�!S
��G��
�����p at -�P
Z��3<����1upN
����H^+L�
�5�i�-����-�F&[��&�L��� s��|�8�fN+�`�-pZ'R��-�9�z�<�ձ����!�y�9QOVΐ�3e4���d::o�i�
j�&T4�	��G`=S0.9:���� ���
+��,ᖲK��
�)���ۄo�8�
�H�	�{-O-M�!#
*
���DᢲQ�����)�cr���Ma��S�
�*O&��n1�
+c��`m�0W�+�%�`尰Xy,LV.
����h�t-�p&�^�':��.
��"�Q������	�/��X����jw���sR�\
5U:
+��J�95��i3k;�7�i+��������f�Z�E�
��h3Sе�����c�<eng�t�&[���XG�UZ�p�pfܚ���Η�*��0e���®ƛ�6ۙk#�&���!Ct���,��棕Y�W$U�fUU
�-�.0�TU���ֆ]RM9US�&TI�8f���a�̠y!�F��q�뉊���q��Pr`F�Dg�c u1<08`<D����
�SD�BaA0hA���ۏ�|�Y�Uғ�0�;
+��vlb
��P˱�(o��-������
+���_��R�
+�A@��ZI��z4���i�b&d�F�7;��D�L�L�c��-Y�FS6Ѷ��͛Yi�k�rl%U:z�.��z�|��_B��[K^
�5a�X�Q�[��AE��1|V�g�N��t��J�G�h�
+̆Ű&�Vgزp�M�.=I�
�!zÐ1&�2�$c�A��6�q��%�����0`
=��3���\���\]t��L(-dc��^2�;�~ȣ"�`0����0�A4�*P�

<A�\	�Y��_�T,έ�{�a����$o��!aZ��V�4�k�b����nw  ��IB���@��$)R���kaYLX&�Sc��� .�eݛ��������R�q
+��ʳ�'�x�
Ol���Y�����WR;@t'�Ba�)a����19(="5+e��|x�E�4���M_�͝�6��͌VFs/lᚭ�خڪ=�sb;�l��M�\
F]�2b���%+6��n��B�
J���a9`lNH;�
V
M�Gh1Z=�
n���1vGd�Cx�1��e�Zv$���~����H6QE1H�dmd�a`�����G�}��JU�=n�'A�Š�*�"�=���"H4�R=���k
�V����=
����wq�4�U��x��ӫ����̃����!�Nl�b�ƺS%�L\Y����>�]�94�h��ȧe���k/�aŗL�8q6�9
xv�
;�̾md�&>��<�:4�J�H[�Qo<�9�����ل
�
�
��0�{�����4�rqjcJ��z�Aܚ�����\ U<������\� H�sk7ﶨ{ɿAI��m)�3K�$GZW��>m��È���S�9��:�͙�3�տ�Ž�B�ݚ-��kձ�_3��v�4+�bÁ��ˤF�F��z�\���Hˎ�
6�+�;ub R
NA
x��Q��Jڨ��
�M�ԴZ�{鞒LJaH����Ȉm��TA�`�J�
��$L.�"!��1B$
+���QG�#�	�g�2B����W3#*2�0G�"B�1�n3�BKh������
���:�*���L'�j�
}��cm�p�;m ]�t�?'BI�Ksq��\[��^�h������������'a��&����՝]���U]_~�<
+��e��kr>�Մp��P=�7h�6��W0gKw��4�O������k�����i�ïX��W���qC{�
�õ������$�+0
�K[�4������B�6��|7�#��|���_��˧���o�O?��پ���O�����}�x�Y��8���_�3����j��(el�7��bS+���{����Q����?k�a�a�OL���?�{�T������	 �
+ �p�H�4
lq k�8`�@����FC��	�/U8�x �#��EC��2m�c��
+b�(. 0��l�$4��+����� (BH��AA���	�N�"B��u[�h9Z8v��0� RȰ��8j�a�e�$��:�y��Aұ��8�$s
� 2ma$q ,�p,�[~Y���C����Qe帲hd��"5ix9���s	2e�x�9�H���Z� gS��
+#�h�武�ƪ�Vî

��J�Cu7�O
[���I=/�we�eTe�U�Y�U�Y�
Y��x��#�d��Eȫ��ُc
-�]�
u�m,�b�uv}�տ5��9���[
��g�p{XV�c
�c�:>��!8�O�w�'ux�V�}M�C�}q�}��7{إ62e
�J��>�^ҧ:k�s�2lXP��]����XY��q'�G�� ��NdMbI`M^wҺV��ZR�>l�ZU䔥tR�QQP�OO�NN� 
gg�ɒ�U.�
+eP�t*���Qd�gI�,�
	!1�
��kU��;�:���ͳ�5,g��LdlP�2�"�jX�2�SbI
+,@$=
�Mf�YP"KH���D X�ʀо���ÿ�G�E;0�c<v�!`w��1��Ҭ�d��x</��OXDŽ�d�k�
��� Ek�?�=&n�[����[z�m�hG�@�NLؓ��Yi���س����������;�7��
��c�v>�
�b™d��/�pZ
�pz��p�
O�ٮ����8����4L at E:Vl�Z<P��
%�i�2�B=
�恻 �E�0�p��O�[�X��7�	x���
|�Pe�{ ?`"&!a"&LFƄ�88��񘜀	�1I	5��f��
+�w�7��
���)L��	�7c:W��i��ڀ����y�0�3�5&800@V���r'Xo<
6|YWAHQQ�Ǡ�H(�p|s�x
���8�
�A� <^

��@�8E

�@C�A��L���aB@T�>p����f)�Wy�3�E��5���_��a��s[�NP��$e���
+|$�G"�:�%v&h�\Qk�JZ��o��|�|R�kv���n����_�i}�
���|G����
o�#H8���
+�DɃ6�>�{��s�;g��N�Os�~�=��}�7���
(�g�":��8��J����
����
e�w�s�A��PxP���tR��wJ�qJ�h0*(5�ԞF
+�
[E)t�*m�$��P���{��wSA��5��n���ެ�Ƥ�N��ћUs'�E}[;M�#Y��\,<)��e�9�|/��1p�1��w)ݦ��i����`�yj'F�]ʍR�V�Ԟ8�k��9_4bd�JL]�K�
+Cǎ�����9:٨{d�t�'3lљ��P��R2,��:�V\� �DՁ���
r@L
H��f"#�� "Z@@D?�C���
�r�MGT�433�������V0�=�
+�
+Q
+
+EZ�	��Q��Ї��QǞ8
҆Gci�+�o���m����÷���D`���'jf�4�RZ��Z��.�~c)5<�S���4��$UX!d�W'�Ѳ*,u�V�k,��4���*Yu՜jRUDM at W�N�I�c������7���
KK��,ҧ��D���UO�Mt�W��
+e�&׵`�d��\���%��q
����~��dU��{o�����5a�cm�
�%�)�Jg��6jG=��W;o9*�6vj�����Y��|'	o
6�
+����O�LT>Yz���0uf��-K�_������\�V��0��wUm�y�X�M����[�E��:a�������e���P3���3+'#		
	��)�C�3Z�9
|Cl32Ӭ`�a�f��`�ȼB��2��Dp�0	񈰈Mv� �����@��x��܅��a|����<��t4�� �#|�e:����k������������_6ߟ����-�߀���
�
1�ǔtP����"�,��4B�LV
�0g-4�A�Y0{3�~����
S�a6[Lh]�f��a���c�;�t��a� ex��SĀ
у:��}��eN#�b�T���E�5r��`����#p�h9g��4f����T��r�X9q̜9���l='O����G��1r��A���Usȴ%���E��i�Lge0T\��j�r[��5*��
+&�G��y��tc)X{h)�6P�4H†	�N
+&�� �s�\9VN
,#GK��!�L/� �d	�
+���� b 1x8
����0 A"�b��P 0
9~�Ϭ��Oo�~<x;z;|
�
	�_ @ 
�
+�G�p*�^�d�5�г|�zQ�ǟu_b�
�[�]��-�>1Vb�ض�V��Xՠ�N
�-����
'�0[�t�	�yf�^���
$��;���`�G���ZGկG�>߂���;��B��m���G��n���KsM}������𯹴�@p��O��~��FrQ�]��C�,`��M��os5
8�����`�X�Z�Jv�0�_�S��Hv����a��̐�K5�x�Փ��w��sBb�>u���u�I��Yg����z��X���.:���OA
��u�g��yw?�&
����ѻz�ia�;��~�����-�6�|�7�z˼;\�O�_�����^]]���?X�����}�|�������u�š�~�����f���f�@_�q��Dbr�?��
Yz�b�)�%G�
�dDR�:+)Iǔ�M*O
+Q��D�R�R�&B��LP�LP�55I�4e�
�����$+��
���J�"]�k�)
���-J����d:&.�%.
��h���M[p��4eA‚{qd�"I�PjN\��H�"Ī	��0��h#�*��$3=I�\�6:N:��q[k�3�Ѳ�"�1Y��,H���ȴH_].��I�R�,+��
I|����MU^���Œ�VJW�ѕ�ձU�ꌭ�����Չ�ے����J�
+�	w�@�r�ꍭ������՚���HY�@�P�p�R�0�q��2#�j�|�tՓ�	xD4lDl;Yu

�gbK���r�T�*������L’!T%\�'W
�UJV
�J�j [�:�R�b��z�	Lg:�H��N�h
K̯FR�r�y؞9����	�g����y[9�[c�=3�%-
/�_��˱�)�R�́g���ȹ�3陏��
�[gh�3�љ���6���&R����+[;];_CA�i�m���}0�.�=������#���Z��$JlQ���.~������(z'-
}yA�������'tıQ�
����-�2,
+Ⱥ�����I��m��W砜=
~"�LP�0c9��·����HQ;�%=�,'{j����]��Z�Sw�=Y��V�����2[�eme���D-8�_�_yS�
�C�aQ��PȰ�|�H2
H��uW-(_T�罞xˏ���K��Ԇ���B��W�U��
��*�P��Rl�p�(Zђt���H�Q�(����Ǟ�q /�L?Z�y����"'���-;Ro�	).$P_Z�J�g �M�Q
�{Dw����A-ѣ�M�wQ�m$�NY���J����O�vR�����Z��@�[ӯ��Y";~o2oW�_��e��i�,O�C
���H:� [�=�ܞ��&l�pgF ^�c�nGB��� �0a��y��(h�
q�0�t<
�0V
yƆ���j��v8\a�%�Gh��v�n����}$���`o �
���L�I>b���@��e�d���}����@#�Cfy'�!��r|�h!�+�o��GF8

/�G��Š�d��h>���%��p�T��
:��A	�<��D�"����I;��	������~o��f�'��ߒ&��}e����l�x��x�w�v�P��$�#�"�!� ��
�
D�ƣ1�H*1�����`y߾���Β��~��%��

�E���cA#A�9��`1����O9�s���'��=ޚ���z2?kFי����ߪ_ūxj����S}�ٗ�[�2���-B_$uD�%�?���M��Mo�}�'�
���
v�
�ے�5$���$�6ʅ�H�͓�W�?�m#WF��	a���kZ����f��hIȎd�_./�<��!�ײB��-�">���24�->&�B��U>j���C.�d�uz~�������������n^��{ۗ�g��������Տ����bY缻k���x�\g�g���5���d�sT4Č�'9"�L���}�
�=e6
"�Ƈ�Ci%Իr(e'�&˟�h'�RGV*�Ӗl�\��fJ�eH�=�;���L�9
+рZzr�dω�Nb��c��2�
��
�9�ό�d$��а�v��%�
X
6 �s:�i
T��A�O�GE�(=�!t��Q�J�U���+-~��M�+
���T�\��x��+��"�\{k�u���in������PZ�-WZ�YU�d
+���)&>�ħ������O�yNB��L�j�Gů$��Տ��$�<�����^��?�޿�⋚��_./��7����

n^����}��y�>����j�u��oi�7��ͥX���B��?j����h���͟��
�k�{�T~/S��*'�F�y���.�,Dzz�i�*u�i�DDǦ�೭��^P�͘�_1:_�ưQM����憍\��~����ՖX
�>�Im�0M2>
���/��飊����m.�*'�m�&�Yl�>"��s���Ǟ�7|�Q���`����4�x��u������[
�6��){�K�E�5T6�	���w9��
�x�jc�٦٨�5���}T��
_�-
�K�Kl���fg�ό��>d�~sG/�t�
�
�>������vK�K���n at 1�G��Uw>,ͮ�`Z�]6�G��������3_�C���u:�7׎�5K
��a�!�[��J��%BXuwg���gF��Y>�>YJA���]X���Q����%B�{X�\�We�T
H-;�x]��TE���j�>�ؘ����h7-ng�g�zw/��4���˛_���\��&��:��֋W&��۰�
���A������y�^=v��+���s�:C��~�I�ـEa¦�m��"f���[
��w�Ry��3��-etِ�o(ۛ7rX�>�S~xx��~y��˫7U�5����A!���C�8_���n��EP� �e_f�8>B�ʛ5�~f��P�w�ʢ�%�<�R�V�I
�R?dɨKF�e��]���\��-��8�ݺ�/�+�i�[�fI�
m�1�+�fB
3%N�������y�
&6�f���k�d:*(���)�
"��Ҫ�o���L$-�&"��n	�Y�k7a��)lyc�p'0u��5�Ðb
 m��>�P�M�B:��!
z�ZۼCw�xX<޺
{�u�E�m܄4

�`�[cY�#����P�=
��U'L;��m���t9
}{VMؼ��W��M�
�q_�޷S�u�˞ 2B7a�Ǐ׽?T6ϗ������3vz}�h��
�K�6���^�7�.c�	G��^9��ܙ��m[g�: r�M7 at 8b:�/�.7jh�#vq:�ֱ�~ :�D�Y�>B��&BJg���z�
c���q��E*Q��VD�S�E8M���y�#ɑ����
E�6��'mJ�u����IV�dH�LE�8 ��
kU��^�AKE� v
Y��K�ه�4�<�v^�	��UA�ƙC���%"��,P��>HI�Ո3�&:T
��}V0����h�I�
<������U�i�T�ۓ>�ҙ�0�4ד�A�3
#,�!F:ⴅji{�9��2��SR�t�gح��LJ+������{��
��B��_�>]<�I�:�EޙX�seQZ�t��|�=�Ġ]�mX4�;YF�8�̂��Iz�M
XC˙���Ճų�F=�(gbq�-�����nX��	3�BЌ����
(��"��+i���Y��2N�J������~|������7�AOCU��"$
�����  0_���͓v�7
��|�俿�AG�Ԑ�/��Z
'IQ��H
<���V�j�~�P����R�
�0*�N�cWٷqH
&����0b�5}�F=�p�)�[Ɓƅ9���P·�*>cy\����ɕ��u�ţ��y �.�|H	=j7)ˬ0ٛ��g9�g����ȣ�W.���o ѵ<2=�R��-��6�FD�]�.�.�����޺����N�--�j��;��,
6Ф�����ͳ���
�*�]$[���X�*��������b{�]I�N��f�
+Ϩ�v�i�D_HJ���]vq���"�<�=�D�偆
+���%��n���u�\%~�t	�X�#�C	G�s1!T�oc�7\��b4M#����C��a��?�tE�����/qKZk�y��uj�y��.K��yӟ�2Xϊr��]Ψ����!��֕v-�K#w�
�
ς���y�E�����O3�{B 9�XO�{�,d�񗜶��0
+��?��D�xih�R	Ϡܧ,��do�>���
�*�(�p.��i��QF9h⋰��ܙ���q��/-
� ��b�JIF]�n��O��-.{�z�Q��fn��n��@6����Q�zr
�fqԵڌp�)m��F�$/i2+T�۔��D�n�T��dr�Fc0�c�+�~a	פ�k�
'��
�ʙ!6]�n2R
+��q`N(��/{�]����E�f�	���ij�9eO@�pz�K�ӈV\J�^ֽ��ѫ&ȿ�W4�
�ͤiS� bLJ
endstream
endobj
37 2 obj
16321 
endobj
38 2 obj
<< /Filter [ /FlateDecode ] /Length 39 2 R >> 
stream
+H���]�
�
��
��07�
D��]b���11P�oR�m��0���R�f��c7v��93<E��Hj�������y�	_q	~ŧ��s�_�R�r��[����J�W!������K
Fu���

�
��
 u��X׈k�A&��
Z�H{OkTemZ�u�]g_�D4M��Zۤ/̺�u_����)m���0�Ի�խY]WN�*�n@ԧ�tD�6��&�uaLRm07-�9���k]�
��#�>�H��
�0��m‡�l�B��h-�$�
+s}�A�-�R�q�w2�n��;�q�"���uuS�a]�o�6����&���.>�P�6A.����،�NS}9�ZF���0h
x�
���G����3��� 
4"[ff��
Z��O��
8}k(�	�u��-�&
�}~�2V�)zk)�����n.��)x&��L?�
bG�{�h�L��r0�>*�͊����6�h�Ѳ
�* ���
 �q�z
q-� w��Ӻ��Ϧ�F�;ldUѧP�3u���`]�DfE�;��e"��\$x����{�qήo���{}�]�
+�b&�i"
���
+�X��ڧm)�jy��`l,�����:�^� H�
�6�m���zl[�6=�yf(�y��ݰsq.K�r�F^YS�J�P��
�JN�U�z,�>�JBIQ����!�>(��eP���J6i�T�)A 8+����̜>h߃)9�isƳ�wx����w����|����}|{����&�����o_޽~��ח�s��j:>T�{�p傕�?,���!������?��Wu����7/7]7��k
_�s��J��k�$�u����#�{���,�
�n`[�lp�
���lța�
��p�䇯,jo���6>�~�
�𑋪��~��&�l���5>����q�P��|
+���b��e������_
���c��Wˏ�޾��V�޴SY�_�Sg*Zm�
C���
1�f;0��1��*�ɘ�+Y�\%M����ߵU�X��㧜U���}}������
5yu��������ob�}������t=|r�aio(6�[`���l�u���
e�����7ǫ˅Lts��'�&���l��E��^�w�`��:���N[
�-PQ-ڢ��GB��7�Ღ�o�]����C�ɳ�a�h��f��<�������.�]j��9P*���,�9��{���k�X̗2�nv�d{&^
?J�pM�)���-�*U��E_�YF�'/�q!TN��E�~-�
C�����c#blB�7'�3SMkMAA���L
)�q������ʸ�ض�D� �v���
C�� ̚�� �
�l��0	G��@�0�U�s���6����PJi�KB?�����d3�
d'

}�S�plӫ�W����4?C����M߹�m"�
+�6!�:T;j,R����ψhf;�p
$���T�{_��l�A�	����8���
��$�<�
�}���LH�����2�聝~�ߊ�ud6����}�
ZS�Gj�v�.���`&���0�������3�08�[��'l!g��E<�ٸ��D9��ճ�ፈe(3��� |fW�<����:��m��gx5�Ǚ݈���ݨ���'taY�Tfv��(
�pB֓zdW���]�X��؅�c�����2ë�Q\��xd�����m�{8��\Ow�i[rG7�
y��gt!�Tʌ�j�=�
�C?�
{[��Ʌ,!k�ȅ\,���"��K���"��|"�z��L.�����BXJ��)#k�;�}a��nY�o����9����c:��U�o�W�a�gx5��0�
?�t�B��
/�Ĺ��Bmq������^�!qY��x��������-=�
��}�
_kq<��ڳ	_
L"3���~�r4't��l�s���$'|!��dv|���v�cRH����<�=���/�(m�oF�Į
��̇��
��_h�dyo�7g�s�1�g�_؆���8-JÄ/� z\���<�-��N�9��B����� ��\/{y�
+��.����G'|ᙖ�|e_s�BϽh�B�8��B�)��^պU��^��j��ź=y�
+F^�WPs,�m�b7���-h��?�
�*�/�RB��ԃ���_,YR�3���JÀ��^5$�iṯ唍\,_��{�0�����p���A=��m������"׍]G�a����	�MC���m���o����_�ݾ���)�Q���Z�z	u��
Dh��]�f�xEd�/�`�[]_���
N
N��8=��p
��
�U
~�K��ծ̲rf"�/��T/F;d��5V�Zbs�l
iM׏��������"��U� �F��Ԅ���ּ�M�A�)f��{Z
��
WL�iǏ�
x�g�W'�/\}�9T_�
Y���N�l�shq4pغ
+�IۍM��
�qۣZc�$�J��i�
O����6���\w�['��Y~��
�K��ǰ&w�w$M�n�
���hS�ŒHwn��w8&�0iE������VUj����&̹%]�����Mo�V޽uH&�6k�����W�l��fd�ݮH
��G!V�jS�
T�젢�փZߵ|�
��mw]��m�u�}Đ'
�FӦ[�
Ϯ;�Ě�Ù���C�|�]/�ܢۺ�#�FR�ԓ�ũz��0 
�Q���~u��P�X&�8�p��,y?����j[�+������2`�DS�]UɓM��!���!���ă�E�0��/Uu��n��DBR�Ru�}]{�m���]�{�8�T�>���Ai�f}\ڸ#J<����K�p�K*�'��G��9V�i{�L�E���0i�$}X�b�e�#7��m��ȑK��
�ΈP�Vo���l�9�B��kA4Lw���X�f4
+��c���;8F/]\�ha[$�5����x�)��sYT�N[td���Pz,�
�T�5���ل��0Z�����ߟi
�[�k��j�u2�9U��/M'�D�d%�[Z6���γ��2�a�k�S}ա{~�
+
��*��:�E᰺)|<�t8
�$g�\�W��
T����T�ф
�is�ծ�;�t'Xೄ7!]����)a����`x�EW[�f�}�y�PN��RP0C�a^���SJDt�/������I8o��9�65ϥ,f��f?��<
8�eY�-csq�#�%�c��"N���@��rg	�J�J>��X��#Z�^��⣪�	F�)ѧy87�l�`�j:���M#D-�� �&�Qd�@f��:�"�cy���!���8z36*/�a���z�%y�=Hf����sY��H���p�U�ڋNr 
&�
�V�n�;�ʤx��f�2
`�R^�kHu�a0�,i�'��
+`#
s;����d:ڬ!^�b-�yT��*��Z�y���/J����U��h
ժj'1K=U�J
�Z1�
��F�4
 !���2�:�΢�����ŜB_��^ڰ��g���#S���<`���a��d�
����Z#!��2�K����L.[��86،@YSs�
+�\U��it"�b嬝Kq�"a"dB
���$�$�$���+�� �K<�J3�OQk����@`4
+�!�
�7vE6����t��ј[
F�^�X �5�¨�a
--���sWY7<�!=��(҆��y�=�eW�
��VqFPNV�}c�|[���ţ�p3xm��ᢂ*q�-4)��A�Y(�V���6+z���$[��
>��
�o w��.�����l�`=����0
��B`Nڤ�h���4��(��~8i�4���&J�.A�Ϭ%;\�	4�N9��L4c`�Y=ľ�E��Q��VQȨ
�e
R�i�D� 
+�y��J^h�{��&����9-��ٜ{p���O��9�E�k����b�.O=� p�rV�|f
��D�tBv����
p�fR0xU$H�-N��.v����3O}Jv��*�8
��@�B=̹,����=+,f�xr$�D��*���u� �4"-����Xw6��
��)�Q2��(�+�E�k����@�YN�S��
A�F�*���x��H��E)��NXNAI�<뵑��u~����
��|ώ�B�L��Q��b��e�%^$
�L^r�j	1���,eJP�zI4��WmXa�H�o��,4�w��D;k�L��N�V�A(8���P�=0I�(S��j�3aE;�
Vy�gժa�H�1��{&yt�è e�UN���|�����}3�����"��Y'Ũ `��`���[����
+(�)�� V�qk
iZ�X<fI�L�\�&{�4S�Cix��
�8Z�û�W7��V�Q
z�浞�i���zO@��%KZ���c3{S1
���J
+D�e�bh��d%+�8[t�2M��0�P-9L�!���_�(�YE��.Ҹ%VD�f����T�]�ͨ1#W�� ���d��
���[��V5
���"��C;D���W
���
���Z��x�n�! !/�*��
W�o
|$���
W�mgY�J�CGT
��b��Hy,��w�&�{���X�������Ŋ�=�)�� ��^���U��*s	uѦw`��K1
�d������5�^�	֥S�xSd�`Q�e��A��l�.BDo@�F
���/�
��
.t��N<��U�F Ϲ�
+�)d)A����
���)��l�_��ۮ�jP�a��Uv܊*'��Z%�v�I��9
�Qꤢ��>n�3$ |����B
L]���l/VDƼ:|�����n޽���Ͽ�z}w�����D���ps�?}uss����Żg�'ny~xrp�_�|����?���~Z������p�;�y�Ҵ�U�8����tv���
�/Q����ς��7��[��
E�8h��ZC�������f�_�/�
��;o���Aۧ%��`{)}���J=��78H8���y�f�
���~��<|����w�����Ï7׷?/�Ez�<�
Ĉ|=[����������/��}{���w�|���k>�;�š�:x�VM�G޸P8.x
m�pPN���
��n��U�*��xa*7�E�$4�%�`���i��S� {�����e`?a�,Oi�m�E��٦�$�:{�#{s`7���	ξ��8��gx��rc~bv��9�j��y��Y67?��_�ϰm���u?S(]b+���1��S�6Gh(�lQ�T辝���С�w��m��{(ƨ
G�T_��&gg/~dw�����7��yl�̾~�p��O�$������ǝs�
���{�
����x'�-�I~eA�R�;�+�|?zRh�
�8��c��U�����Ms��V�ٛ��^
������o���B�ZQ!�\9Z؅V��qBH�!�b�����������j�����:�)w򽪪��6��MT��)��Ć3��?��
�|P��M�LqY{���˕��.X_r��3(ӄ?n�
+v#�e�������j�i�
��G
��� =x'�xg0�u
��:x�^����+��[��P�5b�����©�lB��6�1���I�O�
M�K]��
~���*��+�>��s��X���~�W	���93Vv�A�u�R1�Z���jXljd�*جB+mf��oLjx�ıî��f
Wt�Ek7S�7`}k�4�� AA�
�`�/���jgRD��?�aƇMwW��q&��
Q�`@D�$ㅜ�0N�����o߷w
z�Ad`HVz�W�U�D
\^wBбo���\�YE�겆�9��5����W�*D������Y0K
4z���a�㈸r��^8���
ݱ��,�+�����r��	

�xG}8s�����Q�A����1��ڧ����j10gUd!��{��8B
���[� �XY��7pD�q�k��
b��{
N�|ק6Ǧw����(
+(&1$U�J*���sS����y;v7,��e�|�tM�x�R	��"�� n֐'6��'�S���6`��[��
tT��Q�_䵈sn%�����^�u��x�!�S�LA�Y?W}L��J�9/��58���E�8�0i�

エ���u2���,�l�<��4+s�_L4$N��h1�zw�^?�$ͿQ���N�k)
��V�������J��v�O��2,)��B�d�z��*
���ː}ִd)n���V�屌K�e7
�${�g���rn!�Rѷ�O���h ���Ap��
o\���D�\-���k�a2�d��s?����W�Z,dy`���S<�z��tXb�$���HL>��9�4•+
G�r5�ٹ���E�̡[ a Zp5���+X�W\X��C����
�c�l̴Ta��+G�-2|�1��
+-�Y��z֤��f0��E%���!�DQ�&�@Lr�����1����U]��������a�����W�����N�Y��\��3zT�f�O`�J


GΘ�!�e"f&�b\��p�Ǒ`|W��h`S�6��
'b��VN$�(
���y
ꙝ����\�c���
+�kQ�?���m�}i*����Q�޺{�I���,
q�A��SR�\o@�R�4
����O^,/_~ŘX
 h�
ȖT�+�8�0^K����3E�ʢms� �
�r��=|��bI����;��
�]�+ޯW����Z��>�7a�l%�7��,�\y������8
+}5p���ķȦ^�����;����/��ڦ��:�5o�� ��
( �>"2�*�w�d�%C|��o~Q���������o��w?���g����~��_�w��7���=}x��k$���ëO�
������K����~��_]~�wy�7o��ڶl�$��҂��
+Vx�uw���[�ߞa��R28(�?��ފ���Z}��r��wM�����<c�0
;�G%x�K)���a��jlԸ�kf%vY�,�)����@µݬ����.!�o�R�Ĝ?������
�Sϑ���w���e){�u��z�.�%b������&�{K���kH�5�
4��G���Jq��`�[%���[�D�����"S�a!Vƀ[��/Z���u��Fh%�$H!3��������
��t�������z�OD4���<�嫯/o���j~!VE�yny
d9!����d�OgƖ�t�\]��-X��X�s�'

U��k�<6l���7WY۱���� 	[�Q(�l�(�>$����q�9h-V�q��]�F՗�ȁ�b0�sՁ过�W��
�b������mJк�H
+x`���IRF`�NJ�][��xӛ
T�
��M�����܏F��5��-�ka�o�ӅNMs�i�`����I���5����͹��,����N7¼���ٻ��[5�W�[ž�w;�V��l�;=|��o��͔߭ϭJ����6�|�L�}�f����L�/����gWq�O��Bp���� V=���3�d���J��;�VCtEOVuh�p��
��+��n���Ŀ�駇W��/=�<:0�e�|�iÉ�� V|h
&o�/m4���V���L� �|[@��(���%Dz���Wq%�|x\�������"Y4�v�q�Vr0�~�ĩ)WL�:�U'�ù��D*Z��.��$�?<F�س�K��J1,T����
+�
E��&yZ�ś�"*l��G{
B�
|��a�͖�.�
+#�l=�O��
+�
�v�h����b�
{>s\@��:���
�,��BM���
:"�n�-jvE�*���lad���Saa{�#]CX��3�Q���A�Y�"QЉ�o E_g���77b��S�LP�'�W
f�P�k��Ba�J�+�7e��4���l��+Ņ��	n.��pWN�t�+��tN���L��Np�<(1��3-�|(2X0lm�`-tn
�(���6_�*h�	�ݻ��E+�!
C�����X�z{
c���L8<�_�
����1A���
+�&8	߭c������:۹l��%��;CNv:]���iP��Ҳ��
+��&���uh��)p[+�9��� ��`G��Z�m�-�܃0[T>/�b���^�u\9�E<%���F u�~��"�Oݰbk%��x����AU7qDج�ZBT�]j�A�R�=�5
�N�km7~o��ݔ�c�[�F�6�
31�p,Ԙ:����P�5�;�f#��&�
��8��ھ]�忓XU�
�E8�q
lO��lM�KZ�0X+ WK��b�
��u�����ҏMݾyx%
+WtqZ�6�~�y�0��߳ŌşNY
����U�wfm��mx��4:�,g]�K��טҞ6	ʶ�L�niN��
`J��
�szŭH�4�tw��
 ���� �X�xc,84�e�G��Ib
�1ނOz����@�����Hw“��UʼSy
�ێ��츨�<����dƓKMU��SU:�h�h�l?i�� �M��.l
x���9U��.��]�-"@�PS<<����k
�y�Z�
�:
�A/)
��.bh��r��ħ�R]5�
u[2��9S�
�/�5�s7���]pL�Ew�� c�'+�����JZ3;��^���m���ai�Y$($7�ugB���&���ܩ�'9����q�[��t�Uuk�w���+�����Xu��<Aw	�
�c�bM�Yo}6<u.�i���:����;��#�V�Dz5CFxq~_�D�D� g��f��'ş_�--	k�[�`k�LȗB#���,kK���
+�����lUkd���C=���s�
�\�mL��6f�ӃK3��^�(���-�7��y��e;���mj�ٷ�:(�ln%�݇u���j�C��P����-�3LA �>m���+�Ԅߚ�y�����
6N[���xp%�LQֿ���i�+8�gby9�҈�m��qR�[e��
C3��k�b����[���÷��65��p
+'��
Ӧ����Ԇ����VܯudfM�Up���c3u&�+Ը)�e�n����:��}��9�JP1���-�ًK]Fý�4�T���\� 
�N�N�
+�K
�1��C(�71˪��$.sR0/��4�
f�rnLk���c�!�
DdA�@
�B[��9K���H��QHOG��
��,��bZ#�] �F�5��$\��$S�o�Bg���,T�l�ZT�����.����͹&�@T�f± �h�G��J�����
+-*��ǛE6)W��61
��@�� �eRoR`J�����uW�!�x����BB�
��r�������h�wj g�	���+���['�#Z��Py�Pq�p�6
Np�e�G.Є*:d�8V���a
��}OL�g)[�Ry���e�	+UA��rd�Q���S&*H$�#p׺��BE34����ʌ
�̅���#5$>�dZ�Ih^��e煼He	B��� c):>X�
���
�j,�Bֽyp���5�)$�C�PW.���c�h�Y�� �,&� YWK�(D	٢�ު�Pg�	��O㨋k�T��R�$O\ 
�̩��0L�f�>6)&C���8�yp��
/���XC�6�pH1&-&H����j��"FbH�E~K�ؒ��I�*�|*��P�&��4|�
��@@-T02�6����1o�Q3�������Q��d���zۘ�R
�v6� �9G���׍8j�2se#��7�sԂ�*�6��҄v�l�Q�
����Qil��A`�m#����F
��ZlE�!��A˓�8�]MݜO�vf2����N栀A���9$�ng����j>��p���1�%8��ʴ�|ޘ�˦���!�7�NJic�JW��W樕���9*	����
��1ɔ9�1��M���9jG�W樽�[� �9
J�waG�q���|�
`�f���ٲ�F��F��
��f�ڳ��$�ڇ���A fz:��b ?�F
�^�F

��O� <��7C���7U)���m�n�?xX�9n�AQ�2�7� ����Ƕ��6\4N�i��.�ޤ
G�k��h��m��	�7oHy�:TޠZ��
'o`�K����Es)oT
�C9y�p16�hD�o��
+90m�i
�pʐ�<�}���V
+-9X�>�8-_��6��[��y|���z�-��!"�V�G��
�+Ρ�
���
�v����Z��6�_0
I(��'(���� ���e�y�`��ڋK�F��N�����s'AҘ�N@�����A3)�E
�u�)���P��SR>�V��[���0

���.�n'A�
�)���3��k ��Kt���L�8���s�b�O3��i�s�
�3 2S�qU�C��T�� !�nvՇa����x�Fzۯ
��z���������
+3{�����K�LYt��
ׄ���őZD��|��Yyd;
z���u�
+�|����FG���ݳ>d9<���������F��[q��
ׄ���:RK a?� �
ߕr
Fk���+8�����G��׍�X}[�g}�rx>y1{���5>�F����W_���p���W�����7/���˿���?���Ǘ�;F�������W�^^>|�������w����ݗ�/�BX���	�
~��������?���>���?���E���T&�؝t�0�,��~7�W��^p����R�zK�h�C��������ϛ8	0���7��޿�����߾���v+��A=C�ꫀ�H�7&rэ����B�AR����x�]�@��4�aN��A��Ã�e-�
��{1�EprӜ`�����RY����]��c�q^5�S���
),��- W=�YB6�N�� ���i��*��巫
ɷT
��)���ثX�MvC‚o�kG~zi�8�:�]o+�u�a

�����m��+��և<�����ѓ�!�s)
�+8ܟ�7
�m��Y�&
ݸ�O�pCč��کd�z80���`zh5�
��"�\�l�W�
K���C�X�B��JL�h�eG���è��U f7z�Ū|�bXj�:!���q
J��
��a�=�O<��RS#���F�
t$�C�?�+E��	YT���������g5
���g�-�G`��!��D�x��1�5�5��@m���3��zzc�2�~�����4N�󤷙
+�q
���Y���@|
�!��NU�� w�j��s��sK��I
����Z@��Z��Ѷ��,R��U���&�ď
N^# 2}��J(�Ò����J�7L����eї��U�x撾��f}C�R%h��>-'nZ#����zK}�p�V�]o�� Hw��M�
�{��"���xpl!���R�E�g�ۍ���i�7ɛ�����M��!�$~��3”�
������w�C�E���{Be��0�e!%u~u���
k�pu�I���6Q�
f�d�Th�QO�g�g��>7-�
�X�����-��
�k�6J��b�-��Tk�8�aPJT�ʫ+VH\���g���?v��BZB���֚�uD���K��V��K�d�}h�J����cd'u�peB�}��}=��r�b�(K�̞=3kfMOBlj���2H�0�Uds}����
�y���Qpi&.0����
�����G.y�%_0��C��o���*�ǟ����V]*����C���/0� ȱ�Ƴ [...]
+�N�>�$
���㦐�|
V
+�xfZ?��0Ӯ£��Ż-5!�X`�������i�7�f�=�j{3-m.
�s��D��i�Q������[��Ñ�Q�}T�k�$_;N{n�$����ʲ2����y�}wA`��,�:�鱾ȻL*V����p�%�g=�%͂Q�8�A��͚viX��l8�ʓ
+�E6C��⁀��:
B�[��H+��)�
��.����#"��>��(P6٧尫C#�<�5b�JP�y�[�"C
Ѩ�7���P����y��ƅm�>o�b��R֚�f�v�*���(��Q1Hl���U����7`�nh GhH��
1ֽOˊ�z(�{
[[kӯ��"�s�r���C<Fa���"λ�������pJq��^��h� ;�Ya�
�7+N���F��E�{���>ɂ
1�
�xmؕ�Pzͤ�B3�goýz��������%�p�$�07�/]f�P
������%�`X�Sq
��WL0sW��Mx�W����En�S�K�
�ܪ��v�+M��~n��*�c��U�{j��P?�:L
�F�g5�7�$�ahMh�od3�8OBr������2��2��<�j��Yv]��W1m_���`��G�qVt�
q�$��۪^&�*
���ì�&5�Um�&��,�Ux�F¡�k��"M
f]8���̗�̨Qn� M6a��Y�v|���G�$�����Ĥ�S�i����k3
t���kR����ۗ�	
���'�y���B�9%��K͐�iJ$��D��KTaѦӴWM`��X��T���`R,�-0��fX�a�Gr�-�&,������"*�ZET�g��C|5q���g�B���F*�	[�4�xھ�!�i;�oV|I�ԍ��Em����v���p�xSN�r���
+���Ģ�����,m�Qڙ{����j�J��
�$�(�掽����o0�2X{��bכ�~k
+�7/QZ��
�b1b�\���uE]@@�� H�cɖVZ��G��v�ǰ�wj��x
��c��/
��>|�����k��-��Iڔ���1��j�x�yāG���Z:��Ɩ��,8H���X���V�ֿ�^L
mx�u)���\%ɔQ=���2��
~ �@����o�sf���Ǿm��4�lH��PV����?���c�
^z���I¹�A:��K��W6�Ά/bBiy����(�d�)
+�z�}
�C����'��Y��tx�n���o�{���O��>�|��㯧? Lo��^_�;�
���{y���폧'ϟ?���t��绷t���wt����{be6hZ5v���}Y�PA9�9q�
&H�P�%�i�
h�c�Wq�
u�
,�$n��\�J\O&e���MEQ��#
���엢�˾����(��Xn3��a����,f���a��Z8=�%=�9��ZnopI��Y�����^�~F��z� ���&u�h(Sml�M4�АI���;�ѡα�)�7���#fc�?�0*�� ��6|���E��
A3��_z���$z�V����Rݭ���e�.�����=Z�T�Q��E�e�Ւ��%��<j�{�u��0t,re���� ���EF�UZ��| ��z�YL{�,���J�~��T�l������j���R��ʫ�X��%�_Bz�:wp�)à3H
W�Cyi�/O���:�� �ƪA�;�
+Ukm��(:��DE�X
+}����

�M���/ς�	f� +�d
Q!l=�U�\��e�:N���\�sV<�2���t�)� �Q�/���)�^_Zp��-�w1�gI;�`����}B�VEE�zx���>��%���	��B;��{��/G����Ds%'����E�UvQ�
�)ap�
�5j�@��T(�l��X����É
��9�D9�~BuLʦ�5�b���)~!y*YiU��(�U������rJc,��%1`bp��DF�x���~�N▤��w�>Wv#?cH���j��h���:/0��e����PK�=q#�0L$[��c�2�,���T
u&dt�R�f�)T�%� �̿��K
����Gm{�l̎qG�̠� Q�bO`nSm�u#�`���W�mu� �Z�jA
��;�@��*Kc�~:J�U� \��l9]�X.´n��h-�A>�A�R� ���/!
L��{�!�C�����jL*��
7{�^O����n� u9��t��_��0���M
+��1��0���
�`��p�����K�(C�t�x��b�=Kj~���K�$q&%7�\fvSlR�����ֶ����$�jf"�F��ΎI'����}��
+�V,HDc��W��-��B>|�(��2�$�+��C-a��ݔ�b��x�5�2�
�2����60Vmp��|Px��K�IS���(�y�Z�����n3h�r2*#��"!��TN W
Jc��X�2��\Z�
+�UP�'�n��Y^��%�_���*G�,���D�
�V�&���2��	�nS�Wb!	V��	@"s�n�:v�w�Y�^Q ������%��
��
��V=۱�B	T�7��?h$&�-p����>%�OU��fV�U8�\�ݵ'�*4�VL�њ���xTD`mp��d�M��Ј��" �I(
XN�/Ƅ�JQN]�n)]�4}�/���7X�s1�s+A��V/߯t�^�r�3V��F�����ע-�
���J��
���Ȩ�
��t�4�c`� �s� V��+��� �!�n
���@��O�
%��j@�L�`����A���Cf�.}�f��
_TFdl��E4?@R�g��O-4i�1B3��Z�R\nj����
��
pq!
��hs ��m�I
bh6=0�є�Y�c�z��C�
��7/V;
+b�E��`t�xd@�}�
3h��tX�
[���Bg���_~
F��t��p�-2���}5\�<˫U�B9��2���O�(
E���^�=�a���5|@e3�\L�8pSmZ��Ĩ�0��
���</
��w=-�"�훣=���5ӵ�}���dz9��r	>�,퓾е^����_�WCM����j���,�|��>�D�}~
�~?�G�g	=w�4�O��ߕ}��M��vJtq
J],r7X�KU�Y
���lRA��+G��[,i�Þ
�
�̞9�͞~��ҧ���
����&�+�%TX
b`��*тB}?AcЋ�����ITv4� �X
��s�GP��qM<L'�����U)�
W��]W!q*��$��^��L��磇*��u��1��
k��\�����~��ֽ��lc��ws:����\�bN�ɔ<�50	�S��M�Ie
+ �
��`�n�=�x�u}�}���ᵖ����Y�e��C
�EH��
�
�-Npw���L�W뇇-��Y�
+/��-
N����_ۃ
�v)��L��S�P�!��w)ȡ���*�^���U�����Ṳx��L%��|�Ʀ��� ��M�^��u<lz���Xsmk�=,�g���[���
KUM�Ѳ�}z���V8/L�s�p��	���V��z�GE�0χ�T�G�6].��"��$�������cR�#����I��
�NRWp(�;ɧ�P�N�Gq(Xh�g�d0���wmm��1�V�s|�<
-4��
+�����l�����������m�!ؘ�(L�¿?���@1t&����]í��N��&��-��H�qAw8��
!6�h����	}�=a�9N�
�w)Nm��*uK�D�NJ�
��b�Ts$����kI��
+�1�tn�u�ErP���������s�
z�{0~Ṳj>Gn
��pI|jio�+���b�9xx��v���M�%`(
zYd���ߔc�O�4���x9�/�%�r�
/�����Q&f�׹~o��=*���w)d��d� HȎ2�F�k��hbB��=����n{.�qǤ��Y��S�
Q0Pk�u�
+�9�*�r�w�!�2�װ�,.�g)�V� � ��l2��M
�h���`���JI�
�CȒ+�{�Y���q�
���s��_}��Z���`��g�)^=
W�j�NW��MX
w��k�
	+q�Q<C�w\)�-�ݞ�C<ձ���/�#�c�
��ʘ�ӼS�<��齏1I�yLLJ�u<)�y�]�k>C��J��R���U
:֢���XKo��dꦴ;��\N��Q��kfa�@X�F��2�cF��Q����(���	ĕֻu������.^_�ۀ��
We�J�
+\X����m��,
:)G����i�bkW�h��]Ƌ}8
%��>�Ãm�`����0о�R����C�Ō+M�h���VA(��C

+�
ݼ/	N��4v���+�bg�V�]*{"iӍ).'u�P�'7��
��4��{rR��R�蟊��Z맢��c��S��1������צ�|�
+�*�; SJ�b�%2�_�Le�����1"�����eĥ�����I%����"ؙ֔ū|�+����GR��F�=
��C��z8\�GDkxE�9���ˠ
$qτSp�ok�,�#���i
}Ƅ臜H�Zsg��Yd�R�È
���r������wE�C霥
��3�f���T��h ��Dw
D�bE#�Jq+`|� �P ��Ϯ��q� 
Sھ�
WɄ��p�ՏR�Oг��k�f��,%3��aO���P�`H¤�
��ěըbXQ��m`܅�*�tv��Γo�Cl1z�*���)f��!�
v��E��KR?V*{;UcK� 1�Z�~>���
+�u�]1�[�i��$��'�GAX�<۲*�� �ҮA���:�^̦���
�Ǻ+��M�M���:�6;��Xk$�$V�:����*8��_;:SfЮM�{�E�oB
�Ճ�vg`�"��N?hM+cKP(���>���94���x_�MĨA!L�~��
4&N�w��N�x��/{�;
H�N�
��Q�s�i������_�ˣ(��+��n�����=�4��0���I�{

���H�7W��6螥��
��[R�3v�"��t⊟�)�u�Ol�ȉ�̝����	^���>��7@��N
1�����=�'��O��chM�ņO������M
+�)�{�m�E��r����Ȕ�U��Z�x1Vq5w V��{�3�a��S7@�c��
�,@�My^n��EYTY�E�]3g�!�bk�Y����ଢ�KAB-Vv©��
0����^}1���Z��kL�Ӿ�����E�{zP�2Rv �Z	hǩ��
z���ފC��I��?f�FڴR�˦�B1:� ��Igz�������Z
JP9e�7W46�!�ڽ?7��|�"} �ֵ����:�����e�^��B���� �K

����{��掞�E8�Bt#1�T@�7�
+b�q����g
����|��!l�I-

�Y�}
�1�����{�sܯ�}�
�T1����N\����*G�#�a�T�
|�VJ����'����Tw�
��D� :j��y ��S"�_Z
=yʴs%ȃ:7�M�qR�xN=�}]_�0��an�@�e��d>�~/��r�z�WGH�w�n�Ds��F^��}17@�n�^ȿ}U�E��������� -I��E�Z)�s':�̶��`�R0��u]~�̩��X�]}�CZ=3	���釥��[��@
D
�LA�ҊT�k}��OwV��-�*�ኸj(Ro*�K;�/�@���X"�d���T���j��}�Bv���L&g�WW�ws��a9q��� �����
�&g>`R�8��
21

tG �@�?q�[
�����"���	

��� Fru������G at g��Ķ�"`Pc�:�@�M��>���Y��9�X��*
3���d:Qf��_�l������hM���t*I���]X=�a�

+�e�p���e�F�(h��e��8u���G�52&'n[#N�֑ƞq�
L��Fc��>��3��%�9��o�zQ�2M�[��:�c(o#vДw�J�
9濗�F�?�(�L�V�{� ��#����y�Ğdv�� �6���n^@��T

��V���f�!�G
?���f\pF�ڝ0�+���18)�9a�=�;��
��m���
+rF'�0&���ىQ�#
,6����)����`��ʂ��"���"+��	�9���->^{�T�*��7��sO!P�ܬ�% ����`��ځ9�����m2&�Q��������������=
`T�t���K��Aӱ��ê�' /�Nj���LjL!�rK'�N�,�
�2 c�=���.2V]qB	�I�G"j�N2<G�i�m|�NGͨÆy~e|ِp��>nR��oa���&{:�A��l�~��Ĵ�����R7���F�(v��VRZ��>���T]^�J蔔���5���pR at 0�(�+�
bk�KTQ�ҹޟBʦב

�}����U]�$G��Q�5)08�����P�%8�q�D��Ξ��h�h�ρ��K��[�ޭK��HP�3�����
9���+�0³/S��҉F
�d)���(א���������
%]tT�A�#��~kϰ�g�Q9�w���8q�|W���6$�Z����)�9	�F��!�^�M���V�����:q����e]s��Ѷ�S+䷫�� [...]
+�h�NT�r
�
�L象��cC��ن�`�^�8��='�k��ž6pJU�Dž⚟��-nT�›W�j��o��I���}:��řmEQ� ����W1�w����� ��͟2G�|
+�TX��5����5�l�o��́
��S�
�!d��=64���)W ]�jK�
UII�TݗEv-�A�ڎ.
5����
;[�z=�
F��m
�8>�D(�
D���?�m�
��0�?�7`�jՋ{
������,�z�0hZov t�>���
+�&�>� �h
endstream
endobj
39 2 obj
18816 
endobj
40 2 obj
<< /Filter [ /FlateDecode ] /Length 41 2 R >> 
stream
+H�tW��-�
�/p�a��Ѓ"�x
N�/X�ن�EJ���
�%>�E�JO�Ѿz��$���_A~z�_����[f��y�b`�.HCD��t"Y7�g��
o�Ɨ�]:X�aBY���
��h��>mP�ɭu���z,3����;(�O,="<f���\�B����_W��P���~��$�66�'��.��@P�x ������6�B�i��'HO�
+�gP"����P+z��S	���X'����L�eA�[z��[I��N����TfMu#�����:K���
�SѴ;��d����y�@e
+}}/U���ý������&�O�>c�qߘ�x1�ayr�+�+��
�%n�
�o
�s�x�x�4�#�B��]Y��'gi�M�?��
��<�&
;5j�y�
�a~��B���F��~L� ��'3AeޢA��0u�Q�E�@�{�l ���*Ͱ*(��	Bn%
+�� l�����
�o̿gXS�>�(�e뾳=���>�i�Z��6|�����!J�(!`��ZʩX-�B�2m��B����c��A�PU�2t��i�&8�Y�h�
r�J�V�����AF�2�
�
�0I~ru��E
��I��v�����o���^g�Ž����(mG��J��L�9��ѪC�
r�M�(�T&e���6{
�Z<Ƽ0g��8~�U�g�3��
�n	�I6ejyh4��"~�f(�q//��I,�Wv�)?�^1������Ku�C��JbK
r\�������dF�>٘sFI
+���j�#�~�0�ճS�)Lي��
0h[��J9���W}��>
e�!cR!:�pPk��9�F�u
#,i�9��:���G���?���߿�U)�L��_���7���Y�N�c����N�r��L>儃� 
�YP���� 
��<Mݬ�x�����������(*%�2��!�J�;�`
���4=`m�:{�%3J���U��R�Aƴ18���:V\	���A�Q�-è
� ODzlh�y�|�|��fCk�F�AM���+TR�Jr3@W
��
'�c
89�*8�
��}��F��sC���p%!�zݖkxߍ��.B��
+����خ�4;/��2K��8M���,����
ugx6y��(<�'�*�y�;�oqNB����+K^S�~�7�>n[
�����T�Ki\O<�hK�hKA1����s&v6
�F~xY���+�W��[QU�����R���E��

+~�H�U$��ꁂ%ft虲=FZ��:
MgA��-���
u$�����h&$���jQ^����^78��M��Wi��%l
+Cs
+)�m�A�W)YN�Tj��Xu�y�����vG�.߯
+�:�z�K��U�'=PS��h�%����p����}1����4��hn�հ
��V�A��BC����O���p�9x�Bm����B^,![̮mSY�����W�������Z��;�R�+}0gU��Z�@f��� �]�򟰃2
�G	 ۞��u
u݈�X�a]s����(�.sN] �J���oEDT�:�ɿ�r��5F��tg5��	��	=ƚYO*1L
���Պ�	����*�K��(#@��.t�uR�\Ҿ�6|�W�vm�,��g�������>�lOP�P���s�PM�ٲ���5�Y��w�Q_Z"۹a{+p�
c�'?ܽv���c��rf
�\/����NI�vE���C�l�����|�n:�[�����s�T��*�mx��W�6Jm^��GMUH:;|�j^�9��ygߛ��
0)Tu����
�����hێ��%_����7���u+ȋj�- =��
k�"��V
n�Dz�{�m��C8�~�
��D��c\T۟�9P�b��s�L���5\8�c��}�2����>j(�I��bW�ʼ��
TdԷ���(�>����Q�������T�=�&x��Y��
-�,�yk��5F~Oi��Q��ѯ=�c
b4�w({�а�N`�[��W�j�y��z
��ОRd%���IT�QC5��u�㺭�&6�R&��n����������60�8XhnY�O�浨>�:9ƭ��u͙\�\AT�p�R��	��[���Ʃr�	�-
N�0�/>	�
>	&\��=�
k����Pׇ�`
���(H�CGK
+�j�b�\<!�&��ʿG��:ڟn�)ܩ�
S�0�o�p���8ɽ�i=�; �Q��>�}�j1
+�MH�P ���M(
+��zV.�G>�%�z�Xp�I�v�I���I�@l����g�	��jF�e����k�}5b�.`�)Ц%ˡ�������/F9���~��^��kg
�]�bp���᳅��č5�l�!� �fwr���\?�8UzU@��>@��wyh0dWº�H�� Y?�A*��]���8���^
+GW��=��SߑC����E���
7� 
��7����t��n�k�
�E^8lz
uڝo�
������귋�5�^�5p��^­��B�eʰ��1&P���
���
�TՎ��$�_��Mq�Q}���ڴI�ץ ���{�N�/��K���E��	%�P �)u�@:�)�o? �J���2�	|r���#��
Ex��ǛP��
�rDi(�
<��C(GB9�f�#��
�N��\
u�~8��khҳE�
}V���{594q���QT�r�NN}��k�x���y%��l�ͬ��?K��������B�K��'g�
|rV��'�%p�rή[�

.:9�:9n
:9�� ��m��q>Q�U'w
>�R�~��lW�ne7
��n�1$R�z[�A�
H�e�?×
�ne{�#Q9���O��z��O ��>9��O6~ے߶dwؒ
�aK����3&�c��X�){3�JnX�X�2]b]0��yhU�]+q��b��0�^��37D��ʌlOl�:�5^�˾�؇Q�P�f�C91�����=!e�x�<��m�;�1?G��
+O��������t�|�uPz���[�
�=]K�
����S����lx�u��,��GY
+O��0%��F?�1��zW���\�bk�\Q�/��(ڨ g��AT����,U돀�Q�<Z*�`��3J�>@�H.�7�xm=v(T�5Nb"[�������P<G.
n��P��OF�R�ԓ �Ѵ+���x�{*�p,�/xzl�;��K�NU�	A���Ao�rq>�>�_�C��I�H4� ȵ-<�<5�6�Q<T��
1n ��\�4���A��PV9#S��@�����.-
��0.:!y,��E�T.LD��3x�7O��m�z��ս`�s�Ցgg���^?/V��E��|APн�>��8�$0eP�毒	���Ev%
ݧ��I�V����c����d��D{�O���	����}+���S�'�`<�5��F�e���?�&_�S^�+��y~��Z���<5����b�#� O�S��Ӯ���I��<2�CqZ��2��{��2�u\9z����!MF�m�<�1���	���aa�0a)j�a9�mX �*;


+�W��[)e8�:��r,(c��,�
e܍/�x��p,���܎X�Њ۰ �V>
��F�����Vx�c�mXv�_��
~e_k��K�#[��W��2�{�E�5a�9<
�L�e���_���|���<Q�%>�=y���:��(�|�M%��V��|ʝ	�
�ϥ�iX,�E`~�iXN�(��{-?
��iX�h�a9��
ˑ��	D�1��X��'�C_k��t���9}�:�`��ݮ��iW
�A)�
+E���O�#��6.R�o�Sث�PF���A�
�
+l<mc3��.�!f��ޞ:0��8�z
#�-7���&7�E
���6K�_��O�~��X�L@�	�
��N�������?~���RL�j~̆��_�?r��N�g쌿p���?���>۰槁�T
T�+�N5��h�E\P(�ي��>L_v�k�䎚��<�T��{�A�
���y-l2�[�7�hbT���x��#��!�]wB���/�;F/#�VX�UI
���\Ka
)͜Ts��F��ho5ݪ���k�WP�(����ѽ0
3���NmP�4�5�1g1������%�`Y~�)��J/�����N�c�
�`������p�eo)p�8"�j`-m:���1�(
 F�s�T���9T]�s�g�۶0gS-,
`��bŪ*v*�%�Gr3Լ���,�v�I��������x#�=@#ۻ�~[�d�B)Ӯkȃix]k���3��[��#����jo�
0.؆oP���
	� J<*�sZ�vʯ��L�i�:�F��P�ID��G���Y6�
+��i���(�h�h%	���W�������
��J�O#�� �V�ws�
�Vϋ�����}	�غ�3�3����t�Mo��6<�6lq
�CJ�͎L�1�^ZH��V�Ǟ	�S�[ E��;Z��m]	�8�I��
�9��
sd`):V�Tg��~-�R�����
�^{�~Z� ���@D

+�k��=n
E^Z���s��#���&]c�
l�Bt�f�2c�d��o���������|=`$A�����i��t���֏�:ߩ��%���WP��Z'G"-4��6GJ�6��
��la1��I�����ZX2�mx!@Ԕf
Z(Y�����RϷ�!x��Xm�q5-e�=5K��I�@�� tF���T��\�z�O����iLc�q�kt3dq����,u̷ �إ
 �0
p�æ�,)ۚ��
�f'�`�_���J��xɼ-�
��(�?{]�Z1\�H%eGKP!ڰ`�׵��P�����1-��q��5�yl�'Li
B�_��ke�k
dN���o�v@ʼ
.Vt�-ؑ�]��<o4�U�����;��6�6;�74�1f�n5F0�f��(�������5֒�*�T���x�S����n}��VC�
�������ktŨN+9e�O݊S�󢦺�����~.ũ�$eL�����{^6(5�x�xA
����Rd�r��,�c�
t��86��b��ę�fD:xK�o�;zr��܄��t�L�R��Q�
o
�
+z6;u��6˫��5�׬"]�njŭtW��5���Y;jb*���}�@	y`2�������+�]J�dJ���
,U��I�^�����6lX�-�{�$>�l'�ɏG��0s3
+��v7����.;w]��#�Zw��������'u��`�ŭ�H��a{��3j����.��O�z��`S��Y:
�>
�is7��x㛇�t'��M�}�G���)Ʊ�B�W>ϻ��2�r�
R�@a�`�<�4�=Xɾ����E����׿�v��]oj��h�wѦ]k������I�7�j$�:Xm���
��2�H A�Tcmt5%�'�?HA�ƞ�[���db�Ř�8�끋X�����~����&�P��{\-/�E@�e��-��mՐZˣ��1���R�i���n�r�I��{R��Ç��`ʡ����k'8�=�޲�'<����8>"��ȯ�N�q�ɹ���$�)��b�s�
3"͘`�uC��
�q�!�\fH�JL�V�ڲ���\�>�O�T�g��-=u`>U���
�b���[��	���@��h������ViO�f�
<^�_�|GfҒ��;�
+X��aTp�<�*X�;��`:��-��=�0���h��
��J���-�Ԥ�g�è<�$��g�
¶d��xw&oE��g&5m�O�;�#؉���_f�%��x��0b�;���
��b	�\��_�
b�y���-��l�Ciu<
Bf�F��\ͭ�������C���&B��sL���K���\�Z)�,NzԦ��d��
9�����N �Ư�e.�㟟?���V�۔*�U����pݤ�K���M�
+`�>�����`�;�,�a�.�U�9�,<L����c̵}�E�B(����IGp�L2PS��cISC\�G�I�@ZK
o�-�A���G�(tp.y�
��l�%��{��
�fr!k��
�k�=���
pS_\�$7����}�<
����Cڡ�7r2N���+���
p���ie�h�e:�!��e�t��;�*(��]�t�Oe at V"�GFP���U
T脒ei�,��Bb��\�l�+�
h�[r��~;���7VF
�~�̨Ȳci���$�u �A��
�����B��x�LG_0*�ny
P>>��
���|��򵣼�[u=~N���:?fHAm�l"�V�R_O)`��{�
="hY�{��l��cH�������&�-j!T��쪛�����G%�Bu��N���R�7}w2Iy�B��$T>2s6=�n
+�vS�w�M�J:u^ �|�e�R��vz
o�c4-���D l_�
+<P�
�A���YX��
�ب�m�5��N�Bʦ	��tp�����9�ldzRJ�i�w�V��%mE�ש@������F
(�
r��|�� j��.��?JC�~?(��j�ʼn�=E:�?�՝�(����b���k�����C�����9F���"#�p�v}nF�Ҙ2����2����l�R��z ����S���=����q��(��:]V�b�n��Np�Y�{��Ұ���Y�)���B���K!�Uӏ���HF���^�?%y&ޢ����d~ u�$��`v��?$K9����o�!�Y� A��yÿZ<S�a�h��!����.1w��]�\��^�,�U�0�_���Z6��z�%u21�
�t�N�ݡ�{���aN?�4uwE�ũM����A�B�6u눰xq��:[u�.�<T��>D*�{�m�>3ύo_�G�߀Ųצ1�[Q�{w��\^H�ϴP^ru�BD6��G�3�̍�-%����R�ڏ�mg�
e�l
�2�V�Zu�|��C'ttu�\�L�嫶s���嘧�����3Gݾ'�����+�X;Ln�b�Ȣ%�Z��o#^�Mq�ي�ٖ�o�7��ƍw��^L���8f���:Kӻʞ�M�0nj$��!�5����Ze�_�Y�G��_2�dA��
���8�Ҋ�v�T�ɘ�v
+ϒ�Cw����d��l 6�9�W�Ŏ�T�
kb��Td}������ Z+}���
	y�P
�	��ģ
N���~�W�={�+����M�9S�8ץg}�ImP�~�
&~/	Z��K�tw��l�
�4s�Cf��\�������wȘ���~a�ز9���G����
��
���X[�*c�;�ȟ�)�wo_法<!~�C� v��ڼ
�

���D�{�A`gsU����˭���
�!�
̉$5�T�m��I��F�j���
,^s�4"�y�.˼�ayh���H`x��{?K��bn�d2��U/"�nQ�k9�L�[]�_�G�M�	�x�
�m��/{�+� G��y7��d
�A٭�;̐-
��,&�Z̢w����>��ч�iY��K"���f��Y�β���[.���¤�5��$V@�
+fϟ��ֹ�r�����rp�vYN���(K�N�q���p�Ց0�^&��ߥ(qԸ�9��8�T �0�U�����[��
��~r��S�
ƽ�=`�
�"}*)�uyW�d
�qp
�m�C20�
b��3�ϭ<m'l�{�%�
�v�z�c)OӢM���{��+�l҆�o�nn��K;�sc%��j9
�4�j��
I�,cM\b��AC���P��F�0T}�a�9�кc�ف���B�+.]��5[d
|���o
�U
e�G��>�c:(W
�-�m�����]���
��q�k��ܭ}���B��~*�n��x�*��,Jهq
�c�(���
+��>��y:J�ﺒ�l�:���_w4��n�����މͲ���=��Ԇy�al}^�ޖN ��2ݴ�_�"Q��Ԭ�5�sХ`-@�~ɓ��n ��ŖJ䯑9����!�'��M�00�BU��ykI��1 J/t��;�_��.V��n�ښL�����H�>���5����F�!�Wwe8��C�w����8@��f
�~��rum)��  �
�aI�����
 V�`���2���;TxQ��K��*�>p���{��y;�.y
�ekQ���aM��~1���Y��K�x����b����Q�o�P��/d���=[�4 .;�Xu��0(n"�� ŷր��j�G@�m�ύ烍���� dC.Q:�5������	
6��<�S7D�#��f�P���W�u;�V
+ݷ��p�ĨBC�
�
�ِ�]�/�.-�!�a��L�P�:;.���O�]`0��1�+ՀJ���
 �IH�UmTA�
��	�X�
Կ����Љ��
"�>�
 ����t�̶s-���t�,k
۬�(�J��"?���>��[�C}+�d)���t�
׭
  ��A��Ѿt����Cn��
�p�
)�ůs.$q+�K�~����J+�{&I?��)�#W�~x�h���c��ﶢ��Lߟ���Po�$��῱��\!j3�;�Nd�#0�a�CP�ծ{�l�2�J��ᔑ1��_��
ɮ
�
�;�n���bk�r�
ў̹�$ ���J�� �Ȅ�At9
wAY>WB�j����1l�K�lsx(�b�#	0�8�*g�w6X���f�w�Wr����Q�xo�./��OŁƣs�p������92S��"h��N��D�zʁ
2�u#��c�"����"k
V��[0ӯF��F�Y�zt��Ν�<��
`��+%OGn[����+�H�����-�JQ�ZȂC��D0r������������%���`����|I�3���X��&�xx�d���
~��:�K�h
��5�����%�s5-}\§�FGŸu+=��u���3�c<���r(���f�<.f
�G�,5�#p
 [...]
��m���~q<5��3|��/�B#�Ar�:A�hY9$
��T(


�ׯ�%�)Ǿh�4�=
0&��-*��~Z �H�������w��d��z���1?��ͪ�/
&+�bZ�;6v���П��jԏK?䦹|ձ4�|nH�y �dP*�D��K�L��� ы|�.�Y��ױ&��f

�=��[��>!��j�
�u�A��&S��.G��sG�C���f]k�9 ���ɴ�N4b��nu�Bpr/"�qi�����
���+/�,޾�B��(hھ��9�fh�_j���nG"]���+
���d�#�J���:�@&R�5
6H"��ٍQՔ2��*ǔ�^T���to�٤Җ�e��S=�/Y�
�Q��M���:!{,备�Շ���\���z� �$?�R��.�`}_8um��^	`�^)�* �m
�!^A�.�M�G
����BMzX���ԱsH
ݕs
�P����T��q�^�@Q�,����fu�KUh0Q9W-)
�1����
ķ[��1��!�W}�\Ӊ���[��rO��A��
LER�M��y��[�xW����;�R~d�??���
:X���;>?q����	I��R@��j�Y�b�e	�����ԦL�B/W]TB~��=t7�b��l�
C h쮢���k2���,9�e��|��[��"؅o^�>d%^�ƌ`*�rrIK���A�X��H��'KwN
��-�d��t��zIہ�^G^��Fo�̤��qTCwH�x�Ll�@���
�V�4e��
�=2��.
F��-��w[\wL"���,VA����x�7]��_?���?��Ҥ�d�G���N&��/�i��$�I�s
TL5��B��֧h0��45�Mi��H��]�A34Ådt�	�
���J��;��΂��b��1C�*�K�i%s#��v�{C��ɒ�C
L�����c��y�y E[{׏�&nKd����CI�-9Y={�eG{�&��D�B�_	3�J��"X˶�_k��j-	\3:ˀu��Ŧ�;^_��}���J�ϓ���
@��̩Q�56��z"%:���@
^��zxݹʞ�ls'1�c���}�Q�~
���ZP>]H�w?��
��+EN���M%�E<�J�!���$�x]eݧ
�v�w^_���G����sm�O��6*S�Hu�T�A[ǻ�/ m���l%�I�m��
ǦUm���t8-+���/�ͶK�0���@Cn�y˨�za%�M��d|>�k�i�+��f+]���t�l�{D����WF�����^g�B�҅k���2�d���M�;���=/���u���Zt�
��Q5���Ɍ���ms��V��5^W����:�
#%EQb:�
{��d�` �䆿G\Z����2.����4�� �
�g
l�y��
��x�����H��7�qW]�pҳiꢇ�T�R�
�sW��}~"ܷ�$g�Yn��L��6`�wZ�������5�e��
+α�h�}�1zx�3�5��	P�DZ.�D�~(�A��Ja�
m�(ic���C�تt')(:�6�7�X|� P���*�6DUU7�$0U ��\�54 �@�.b5��q���jS��z36A��;��5��NW�1ڴo�ĘN�as�
���y�@����|=-<���y���Kg�w�\Yl4�ה��ԴX����G8��s+��K
`+م��i���l��
��9v��d�]�PKy٩�H�30YC2�֌��dl��Fs,��s��:��
3�O��u�<av�Y�O'���S���=��`Y3
N�(�N"<?��0{��
������U��Z��	;,f	�'�.q��m{W�0�
K:-;��nYi�jl]��
�r^ ����,cw=�:�~;��cC��s��p��<1�ج�_�s����	`�~��Za���6��G$	�j:
��ޚj1����*U�ؗNt	����e3����N�J�U
���k$gwv
1rh�B�4b�:�y�����j}��A�5=,2��(���3��\_�
+
�
��Ȥ�q�� ,JYI�>N����j)�̬%	y(�:���B�uƓu��# K�`�u�i���y� V���Nq��� "�X�F"��#��~�~�*���t�f�˚��Z+�E>S=�U�Ah���c���}�@#�O������ϙ�s�_�1�R6�i�9���̫����Y �\�G_ �s<- Y���>�ϮX��n�;13-v h����XY9�Ŋ��g���;[8{f��.�6�wj��3�w��]'�ҟ_���F,�Jc��}�,�q�z(p9��\����E�:�jy�x�yE���M}� ~R�kwg!� ���K���7hF���4�-�E2!
��UJ�"-kk7N��hö�ϰ�i`�|A��_��G0�ߏ��8r�Í#HذYt]��
� C�meUjޑ"L��2�Zs
a��r�)��&
K���M��O	�X��ZG��#M�`v4�z�����r�N7y���^��F�:	}�
�%*}i�p���WK�^��
�?�M��tw�s [...]
<xb�u��e
�v�uX�m��oO�j�I�Ә�A��c3^�	��f�֑w��X�.*���z<W�DΦǭ�HF�{ӥi��ohdS��#๨�B�p�c�z
����zl�B�����XByP���R�g��i��g�f�O�7ۗ���S2�� ��TNQ-�r��'H{
6Q-�����Kf�����Z��&�����3Q͠[�MU�e�$�Ū:D͕�Z� XU`
+�h+�|�.�lHQ߫5y��Ӣ�Hh�J
`�ad[
�'
O�j�,�o�+�of�D����H3���6�C9���@
+)�(8
�vn _�
q���m���
��w�j����A���$�S
�4sQ%����#HQ���Eg[
jT,��,0
鋱̲��U�'��`�B�Re��������P���d��ȸf:��}r :�
4"[�p��i�l��Zq�p���wk�y�I�
��W1�Υ �r��
0�c��V�p�(���Ikb at bj�k�X�
�uȂ�.-���	����3�|z983�2/t?;�6�_K��rL!G�}Y ��V�����m �4�� �
v���
u���PXs�w���K
�"M��J]}"<�7�+ׄfM1!J}�h
�x��Ďiح�S �(�
+b��`�mi,��6
+CW�
���~��
_��I��}�b�P�<
+x�X͇��<���7��:NJ�S���U�M���>�c������[�e>"�X:�掕����yl��X��cKs9��@�v����<p��b�?��0�_w�����]�LC!���=P��
%�KQ�~�괍	1ƒ�����S{�U���$:���ȌDմsE�;���x�;��y�`Y�����cN�'�;�=��<�#��Ю
p-M�w�@���w�@��S��x�\�����U}��c�A
�M���=��:Oe��4�ٻd
J�Y��t�qy�_6C��N3h�fW�:F��� ،ԛ� �s�lo��&!��
�%! 
+�� �#�p\kEg���%���Ӹ���z��ӛwO���7�/�~���_���?|���O?�<��O��ˉ������O/���M��}z����S������-~���\�����?��#ּ�#�v©�*����
b	�=;;EyŸ�}F
1��HN��T�g&�A�/�T;�
��ώÎTÛ���k��
ڰ�G���
+�*��\,2[_����<[ ��3>��A��bX�-;H��s�2|�H�Ҩ���1���frHK���c]
h���x�
+w萶����Z�
�E��laŤ�ٽ
��8x�ײ���m�~��[���C�5�Gf_�~�
O�).fD�4|q�HQ8��4��y8�-#_lS��0]�%(Ie|g��
 �
+i�^���17X&��X\�"j�ꋩ9x���<�Y*`g��e������E�U_ޤ�L�@�g���
	c����X�#��x��W�
�!Ts-6-�����*�
+����5ϭ@Ƣ^�pP�%y�3�jW
��:�kʀ{�B�-����ϫ<l
aZq
���(��1/�*�0g���LP�欎
�6��uL�AGr�a��=�����s�(�v�2g�b���x���vC���l��
 :q��2�:�{5�S��<FV�ɋ�Z
S���������耧*�x@^
+�(�̎��ds��V�� �|^k� �E�0Zj׫)
%��w�{
̶��zX
�w��\�'������/>�	�i�-I4)ʇ$/�W�J���q9#-�Fun�4�cLj5
��1����`�q3�<����ɋ�=&���J���^�Aw�4r1,F�_
+�k��f���44�?�U�y
J+r�m�9��M���U4l�L���1H�9�(�	��=�k��d2]�&��(����s�t
掑o��/�VZp�E�
+X&���j`ߒ�=^O�2�Nbܜ
+������J�@�$b4���}|��"{u�{�׫	Hj���q`�J��nSS� ��|�\,;�\�/��=y'uV�rJ� �jX�Hէp�oJP��μ+������p��C���҉�.����|�
+vi[X�½�<�CYxPB�o"�&.����$��x���
�
�aqv�X�g���S���yp�v*��f0w�2���sQ_5Ka^�LX
���M��
+R�	��Т�Z��7�T$�{�6Dѐ���ɚ�A�X��KuE �s,����r
���r��
��Z�aWm����5� RJ
+V�4�M�*{���'�A���Pa�
�Y ���}�A %�c�
��P�&��!ܹ ��r
���4^��Ξ@���� ,��X�#� ��<_��
+�o�	@G�}�N)fyrt��\`e����-
J*�
C�
`�:�p�lf�E�ro
��ͩ�-�݆4N�
l�O�fFF���b�ٮ�)�!H!����n~~6_��Ztj���c:-��Vlû���(0��f�R��-
.$�U�
+�[sq��S���%��1ڀi4<0�h���z
���X�MVeTJ��#��f���
ԛ���z�<���F�8����ꨤ������d���
)��`�f�SZ��U9��R���=6B�u�9~�{^�H��q

j����r��jExs��
�/ƕ�6,�r>cC_,�@��;q^�W����j���wi�`�z|5]ǀ�]�y>�
+�5�B�m�nњ?�L���t1є���
�T'4/�ar�D
���{�ɡ��.��|���*9�+�a�8I�z�kg��sP�g�̥�
��'q�`k�E����2A�l�gE�1��
��
�b�T�|]=��"X�M⦶���<X��b����8�8�k�:X�ߨ3Z�m�/��K���[w(Kם�$"t���Z8S��*U$ġw��pQШ�[���~�F�l��
��U��
+=���zeh#o7RA ��ckxo�#PR�9r����av�XLZ��h�A���f�������?t�l�X�@W�C[���M�g�(µ�
��T��Q�Y�
�������2i:�S�:�K�
k�&3��ͫ@��mջ��$H����E[�;���G��`雭��.^�����N�Z�����t3���
z45(��;l����|�A at gpß�Zm������/��n͝�qɒ�
+��O�`�:�i%�<j�t���EDX֨j`���
�~���NM�*� u���3}

����v�J�,�O�r���HN��˶�.ٓA��<
�RU��|"OS�;i�0%x��u�\�5<#�\>f�w�6v�o��_a�uژ3�y|	��ÓU��X�e���*�+��?BQč}�~�����.\�avX�;#��]TNa;d�Z��Z�)�B

��u�q�L=9{V���(�Y"G��x�5(9F��3q�
2��VҾ�8)�PBfn9_�^
�ƙ�q�	=��Y[A��� �`���Lzm���ӈ���e3=׍fc�P�9X�x�u��D�3��o���V�J��kt
8J��G���a��,��r}O�ة�r쮦���b��1�]4_z����G�>n�:��?�
V R��� �Km�'��cqr`�K=�?�Gx�_&h��z��y��EM��
+�(��Ut�cګ
5��
+�c���8�����ee��� J�����D�R
{�8
����5	j��,;����~(���̭|��C��{�`����e�@
s,�q�E7�8%[�����܊�Bi�B#�?�ȳ

aUf�p;'�=���.�%Q���F���,��RX�8`LB�p
��-Dn[�X�5�+��w1
Q�.g�*��&мP���"�R"��Ýk{Xj*б���&�
���à2@t����D����E�~�j�u
��V5�G��ҧ
���;�����N�(T_�G��|<Z�k|
�|��>�h�>j��4-�T��~�lh
=�N^�}l��X�sr��vEE��O�
� mK�zt'�'��|��B��2��g;M��Q7
����"�֊&k
+7
l<��q��W��rB�y�c]L� �nKG>~�nh%
�(�8-$^��z�լg"
_d��^���ו8
�����(�Žj;��1�k��[������t%
i��8ִ
��e<�}Sq��5e
9{�JG�I�[帳���d9��^�2e�Ī}����V�
��
�N��U#>�R��h�����#^�.]�v�[3=n�p��a��q�
P��<�b
�K�q�?`���w�8I�. <
�Yr��x$	�6C����pg*�+Z-���q]�N���h|����:=�M�UOF��q#��� ;�ҷY
���_
�ձ��ӡ�{��B��`���kXy�Ϥ+��3�
+ڲ��1�?��Ri�R���F�
��2Jlk)x
�S2֢���ۮSq�g�*Jٿv(�jýeW��Z� zs
��y�A|�q�J-�]90�ܱ��&

+y�	ږ������1ڥ/}��"��%���ګ�'��
�͎�Kv�e� {S��� [IE�%� ��3��*�f�C$v,�w���\��sM�<8�c�a�
$�V��ɻ�ޓ�r6g�y3�v[���f�\��zKY f/
�,>�Q�Ϛ�����*��d��j1B�__5C.�N=i��q�~��X�y�,�����w�խ�נ�r�az�%[,Ұ�;[�� �:���2�ݚ��^q�F�� ���U����\��{
�߶f�(-����1O�{�[���������e��ePB�D�2pl�����0�Om*�
�u4#��z�
S�?�"�
�,���=5�A�7m��6�hh�i��d
�2�b@१��@̽+��L ��eJA���＀�;G�&k�D]�eԙk�4
8
�0,X�[��%
G�
O6P/ �|�e'�� ��cQG��7����4g���r
��\^ߎ����l
T4��n�m���Q�DZ?|sP�.��ua��/x�*>�w���9\��X����^8�bY#g\�/I?8���mk�ڵ8�Ρw<\��w����m3^�GK�G1��b��,�x��0}� =_ J/��-��?-��b/���aF�/�
��x���2�PזX��ވC�H�8>�ֻLW�ݔ�6t�Δ{K�;~+�\���̔,��ؓ�M;#u&`p�Pf�� �+�񱫉9OA)~ݮ�OL�{[;��̓�=j��g
]���1�Pa�������qw$zt����rˀO����6��U�s������`xC=���6
W�q�nq�R?7^
�U�}eк
�3����@��O+�|H���
+�R`��6v
�N�?�[]ķ
��;xKٚ
�s?���&p��2���>8����0l��G�d�p��][9���M�b�_Z;�&xH+���<=m"Ժ�LS��6�n�
B����߿.)�V'��TF
 ds��vD�^m�6k�A-)��2$h!�	�
�GRW�*1H��I���/�$LDv
Np
i�F֛�b�A�5�e�#��R6!}����)��%�Z�c�m�
+�o �����a�"U�y�Ӏ"@u���&�2���(��Ӟ�nS�_s��b�����8φ�����FgR���pc���w�y�P!.��#����G� �c�K�?����_���x�o��)�t,-v������j �<s\�y��3f�1�x;�g9�PȆ[��rp��rض�Z Oڼ�Ͱ4U�-�f�x��J�"s�c��2T�ۛ���
�n��f乕�zO	O�d� ;ؠm�KZ�z9̈�`S�XÍ�@�Y	.W`
ӧuy���m@ǽ�A[����
�X⮇۸k�L㛚��9�5D->�upC�E��ca��k��Md�|N<�%��Z����1�ԋ
��2��*A`�`�"��1�GHxXI��� �3\�]��=
+�;�1�� ��E��+�VG�
g�����
w����;��2�ٯ��q�Ǜ�Q�}�gu���[��1��dLy�VD
m	|�.���ñAwE0M~
������*sW��V� H����I%��x
:�$��
a+����p�ԣ�,��g�fly�^�).�j.3t�S��KƣF%]l^a���n�.&�F|Y��L��C
\Y��MI�B���ɡ��x�F����Ļ��@7[������8vvS�>�@�IC�+5f��v���� �� �`�m�T���f���\�	�N�j �a�����70�z�qJJp��njS)
)�S	r�<�w^>�G�J<��.'��_
X\�
�ҫD*B����ן<xnpXa�`&7'��^`E��R�a����
�n�n��z,_�i/m�53�Z� ޵.��0p[1�F���(TﰜmD�t�㙒�m�(��Z���G�
jN\c[COۙ
+ '�
�P�!O4�+ku��'�[�<N�	�*9�{�qaw̖�,BD
�q����G+>�TF�
LMm
�M�0��8�y�߿ئe�6���+��WG�s�S��M��BH� 熭A�E�,~�܌�L˒��+�߷��U��\�;j���K�E�
+|4�Z���ε4
�	%,H��#bH�
�
+~��r�:��
 8�
�kl'��Ѝ�y����x�����!��٧���Z��4���/���K
wO8��#p0�㨟qq^�N6��W�q��d8������C-��20D�SX�蚥��
lE�ɫ���H�F쑆���hl�NZ�+ΰ��}�`'��'��y�nKs���o!x�?,��z�+fe��e���V�����H)�kH��g�-=X� ,E|�"���pz�gv/d;�W6cE �M����R99�9��X��6��%�>�Z7H���Zz��͏����G4fC���F�
�N�h�ja�>	�p��܎Y�|����G0I4��
+�W.���F��T��6��%m��P1�%S��}I=���ܰ�
���v�v0�d@:k=)�:�4�|�F���M�z�
��/��*�i�PP��.�����m<q�N1Ț	g�+�Ls�֌��ڭ

�A�N��7���z�Y�+#��WO�k]dd�ǔ��4���-��SzV]�o��F�v9�30M�g�:X�^�,PE���wof3݅��K�Wk��.�� �\d*V��ОK��u�Š�|���y����r?����Z8�3d1��]+:�o���t��+�'����d��O�E|3�`�bCu�{�/��UM\���K8��ڐy�}�d�9�� ��	������S
ZT�z^�k練duÉ���~u쥉
eQב��z}
+�]��&������l$��:��9άH��K�e#�ۈ�lN�lYe���랁\P��F9cC�%�&*ᄈ�A[�{
+���VO����e��j���9=>�H����������:���Pg�����K�U�
+#�� �P������m:K��<
+샖�\�l�*�`��00FC��j��g�iK�̣���ToV�h�M�=Wڹ*�ݯ�ܥV�2�SŶ�� 6\�d�AQ��uU1��|+AE;� �;U�uȃj#I�
{�{�O�e9��G�X�87f!��ڵ(
~+��D���/�}����d�.�w��2
�`���k��Cxb�&�b������3�Bk�+`Ҡ�f���Epªq�*�]��k1z��1�u � cԂN[J�6���@<�w0��!�׏I�
f���Fv���}`c��w��#�
���%�[�Op�ڙ��m�lw�KQ����2�AI��씟�
9����Ɨ}n��n.�x�Q�1�0]X
��/^n��j��
�!�m�N��y���`?$�.p�����;��Lk9�wW�jDE
+�e"<�3�O�Uǹ�_��7�vyHV�7��J,%)�U�ypg��m{᠗����ɀC�p�6��3�V���?&��T�t~d������E4Q݄n�X8/����+#i���S��
+VJ� ���F��
���y�M� �(Nnδ-��w�?������C�oK��7Q���ޱ��s
�k!���$��:_Ň)��զg��ԉ]�-��qc|녩m{+��<B�K��SܵԵfNo�9?�n$��n/l,�z(�� w�m����PV&MJ>�����}L�De� �M�/�x�,Տ�G��vz��G3Oi�QsM��P���K�u���9���9��Ɛ�ҟ�'
޷��<n�ݽ}ðV�
+�5����CYE��'
�A�
 ��P[����Xn-��0�MC%窨�9u�ZȌǙ�F��@NSE`�(�̴�|sP�߬��|�X7�V�Ŀ�P�1��m[�Q�s���҇� ���-�zJ:S|Kf��V�!��)���&���c6�ER�܋����O�������WIvC1���ͺ����e�����uK
>���V�c;��1��
���?w��I�2��Ѡ�&�P�&v/�ʍ@����2����`<�
n�"��b��F�,�=��螈�y�u�b���8׸	�`��^�wit��6
&�Ѧ�v:
��ն����Ҙ��!Z��_��h���I1.��C��1�
+t�
v��%�3�Y�c��`/dN
�th^��J �^8���Ul\�Ե^�o���7W�~�-��9Ƅ�#�с�m5yU)WY�t�^sq�
'f���ePcKX��n�
�G�
+�u�P<3
�Gr/�Z�W]�/7z:��n�lE2k:��dC��|��Y�*XY�O�
L
!�����
+-b
����u ���G9�n<���B��A)c��
�b������CiEђ�)g`�s
����1cn\sl<���p��)	�zCh)."�)�C�;��'	﮲:`�^� �e��,���2*�z��=#n��#7�85���m��y(�>ݐ�h V�%
	si�
������� k�J�
endstream
endobj
41 2 obj
20555 
endobj
42 2 obj
<< /Filter [ /FlateDecode ] /Length 43 2 R >> 
stream
+H��W]�\�}��/�$�����IZ�!aM����X)�Z�"��s�����H����=�ou��S]����1e
��6y�Ø���GӬ��C�4m�<��+��#@!j��-����ύ�x�`���v�}a������V�?�,��Ź������

$�ćڗ�
nN
���H�����b�A
+�9������Owv��l��
�C����ךnw�)a`��

���
\�o�}��/j���`rҪx�~VJ��P�����N����WM�D�&��Eicr�Oi�4����@\��
&������Tgh���
@� ����}��>j���Q�(�t�[�Jf	2G��Uzfh�Q�0GP[gca����R��Y�d��P���:W.n��x�Q���ߏ�BJ:

��w\*;>y�dty8mO������p+e
��M�_?�zt�n��4+��N�q #�%�XV���#?_�ȍ�1W�i�W�%	{��u�(���٠����.V|�����1@(	i�6f���+���K[
l������c�b�7`��1֏��q� ��dq��g��=}�&.��SV!����W��t��}ϲ�UT
!ۑ�e�N�e����[��V�� e�J�Y�}aq?�P�W�s�Њv2��r�ce���x_.�u&�J`T�V
e�C�Ҙ�W�ōd���\�=2�2��AɜG�LUn;�:@�Y���/z�ų�e#��,��%u|H�ia�
��$��
⋅󪙆G��P��\�yM2��c��{ �d���"�;���)F��{ǹ�IqC���
L�<D�bfM���!׶0
�y�������@�ITcm�L��s���
▜���i�X#B2���R�
�, �n]l��.>:7�t�[��
��P�)�w��V	\\���J.��]<E�����%���<�r%l�G}���`ɢ�M�:-
�H5��M�f�l0
F�F��F�|۽�(+N4T����`��#!�0+��m��,|s��
��UL�7�?�0+k'����\+|R�4KK�����$���C�O���b�\R2���>f�.\�&�me��󙮏ּ
'8�ofU:��G�1΍��I���PF��Ա�s�~��?0�J4�b�Xu��4�[
+�y�@GI�y���������Ëě�Q�a|�H1}�[.Q��p/�U����JL��~�Ud�����bC���@s��X�r�
�ի�=��ʊ�F̺��3�ܲ���jm��l/�~����WO�8_���ͳ������퇻�G�>{�û�����ww�߿}��':j>�z����<~P��b�^���	O����o�m��g��`t�ѭ��5�I� c�-���}���k��<��9���
|-۟�:0�~3<�i�l��5�c�ҟ�a?��x}ىdT�R�3��/(�M��ťX
J�q��Y���m�J�oJ��UO�<QG�X2OK\�V��,� �l%
%Š$�l�u��尝��ⳳ�l�z����}w��ݏw�?����x���q�lO�o���û���Ϟ=������?�ֵO��������p\��p�6�i�w������0I��9!�v9c\���z|�� �5�ʖr���ˌ�^�K+[1ѧ���x�%�)L�O�n 
+jr^<��˭V#�p]'��p��!��1���d�
+��KB��hש�
�ذ
�.�

#~��Hh�r0X(��V�g���xRubYZ3�׳C��(��ۧIj٭3����41$�%��l�d��E�O�4WA��֥���h��-��� ��+@��Ҋ�љ�<Tl���Q�yT/K�{�q�$�_���m�AN���}T��dQ
)��s�&-�����φm�(;60x�[؏N+�
"�r��?h�0�ƭ���l`a`���=�J\��2���@��a at 0�����Ҿ����|
1��?W������
�b�⅋�u��A����SP��>m�Wު_?�;�"�e��@�(�R`�֤k�D�
���t at c��:
��'�
)Œ*�.R
+_Ε�IQ����V.��H������޾@�@]A�<]@�X�TJ��dxX�֨I�q,�n2XX��㜚 �iŔ�z���A��
y}�y�z��M�!ʞ*�V?��hlDWk��BA
��<�hp����� �x���g����}MmI�ZP���e�])�(M��T�pv�k�
	��
��|}G�0�a�.���}2�l��b��ay�^��`_pS;
+�,�Ӵ}ռ��S
�Y
?��;����)B/?�?η~�E�OJN~�"�Y�Q*�{ԥ�(�Ş�uI�E�#9�6�XpmEdU���<F����M�C���6�"n�|
ƈ�M���������_�M���r�1
+��
ئ���a�=�]
p
)q�bJ�1�f��k�s�{q}�<b���vQɫ�֧��P
�v#�[������pH�ݹg��F�aӁ^n5���6�1&�X$B��PC��>�5����F�P�������E��P��'+
�[�Nl���y���/����ta�K�|�sȅ��vX˨��;�U��P�^@w(�ٹ���t;.^CpÆ{�j�oy�Qk
��E��x7J�ן�
�����o�
]�¿��Ϫ�e�|
Z�
+:����R�O{��ʕ���H��e��L�/�4<0�(��HEQ'
A�3����=�e����"�%:�R�e�����Bn��B&!t��)�41��
�� �
x�O�
�y����@��gE�������[ݳ�^n�Ҕt�@x1��]l :o���X��.t
+��M(0��_G�2��<?K��5�i*�\}��R�/^� �*?�E;ι�]����9�}�
��	z��֣І�j�Q6|Ւ�6r�!p��34qJ)4�.����1�E�l�^K-�XG�����r��o�$Dg�yG=nj��.��
m��(���.k畔��3I�l��Lp���\����
?����vT�)ѦV��ؙ,&���V�)yp�%��c�S�/�^�������O�'�N_=�}y��w/
>��o|�������/����~�?}u�����%>��z~z����T
�| @�jy�3���
�OKX�[����;��^6��:��Vv��� 쒰�X�!��r�*���Wo�y������?޿}�y�5b|��P	�������X��x��z�x���Ƿt���K:���BzI<���O7���%��
��~��r��Cz�;
��V��_6�����V`�13�����W��D�XK-7o��ԡ!i�Ē���r2�oO�\X�4�i!�%�N3i�X�&��J◆���4�՗�� �|k��
D˝�r��cH�km�59��A���X
��7qT�Nș�x�yR�J�Χ�d/݇����=IVE
�7{Ȑ����7���V��*>#��q�-��1�t�Ga���N����g-��6=�1E�Ɠ����Z;,D�5�A�Ug��`Ϳ���(0���0%�αM��V��u������^m3N2�l-�3����r�S��ePz�d�,%�$u9�~2ORrI
����䫶g}
��]K[�@.b�� �,3+v������2K �6[}�*����- at x�1��MQ�,�5�s��Y�&u�J�Ũ�;դnSZ;J�
Nv.v�t��J��-�8�ŗ/�I (.�`�9�AꏳZ�5�n;

�`�����
 ��2���aABY#�R ��ń�K�u>�X3LT���uД��ͩ{lT�J���⧣�	:���ޕ">d��r���DPE�zA��B��rق�U�J�<@IfAKW+��}��MՒ�b��E�
�
,jɵ����|��"?
B�+h`��H�f��	����_O�َ�,4� 
�
лb�e ��:M8���RR
�� @�ՂL2�����B�����v�����e��c>�ś�h�\�:4�1p�/�R�s��p�u�� ��������Z�E
cW��J�m[h����DKrü��
+t.Nv
/��A��6\���,X_�ĕ��Nb�v����5����
֔ʰ��〓N]�Ŧ��9 j�ҴB�� �U�c�$���Z���}ʰ�)�e9\������X�/

l3
h��k��Q�ר/���B�,W+O_J��
`�����zCo��	�$u�<� �H4�2�d�LJ �I��ެ8
���3���x ��#����ub�ӂ&
.��m���Q
�\�0\��
����z��z���}��た�����F���5�-��+jB��G������	�c���BO�Z��d��U
h�
�v
�z� ��!���Ǒi����YS�|8Ųb�4l
��8��r����NH
N
+�r�|�s*�9�t>{#���T,N�=o{�}����8F/	�  V����=c"�g���EQPABgG(��&e	g�N�oͷ�k�z�JoKbN�Y%�Ta3��i����9K�q��W+�3�� �U��ARR�
�e����<�!�� |e2�����
X/75�&!�7
f�g�|!� �]+"
[�΂wܨ䃉a�j!�ֶ=����;�b�ϵ��"#�ԣ�̨�3٧��
+ at h�@��U��6��3����i
+0��9c��<D��-(2c䆰��0��u�v�s�L��V	:�6�㝢��&�.L6�c<R���:��ԿwN�i��Z�<�0�A��%��(�
Z��Ԃ�Y
�r1�҈�8�P�a�Z��Bq�\dQ�n������)6�<��n �Ѕ�
r8���Yu`B�O���W�U2LÎ��\	��\�����ߨ�I4Ҳ�������]�9UQ��,^Co��[�,�6����1ϹK��1�A�ɧ<,���_�c�j��}�
���g^R7��*���e�X���s޻��Gl
n��)F�0�
Z�HWV�%��FɵS#�}��r�Z�Uy4
�)NRq��-t�3)�kM�
蔶���.�)<�w��b{x6G�J�A�0��"�/�k��4��S����ƔtV�
�MB���|
+�=�
�0���D��9��x^�*�&L��!�KU���̠
��'�7�M� ��vJ$�R��H��B*����ߚ�rD<x\��ޑ�����Z53�.^���C	�>L�;w
�o�<�S��b�k����u�\�.Ǟ�u
�S
:�Z�L(A!=~S3UJ���}��:�w����y���2L���)���
ܥ��
��1���,t~�c
���d�@�>����Y�r��#�ИA4�A����Q3F�h|
1(y�^# y-��%
+�����r}�
��J���QY�� �X
��0kJ:Fmg�}��y��]mfqg/
��
�b�Z���L�e������
S���
	<�
P�Vj�L��޵����
D�u��(�E]'�
̭s�8U����;l���g
�̫�	$��ɢB&DڒZ��>����Ty��7�U�#Y��2'hh�d��������?()�R��h��5��*�,$�P	6ۀ3�9���Z�
λg����f���
����`�F�
��Jx�>�r�wj;� �Y������œ
�7u�˔�����Sd֘@�	�a��߯���X�

����Q&.�_	;��g0
��x�@��� 
,p��� �|lS��	�I�\_�Vp��*�ɚg}v��RY��m�0H��ѧ?�����>�b}�!�Y{'� ���H����#��rZ���'B�9�
⇳�X2G˛a_?V/��'a�KH����b`�1iX���L�0� �c~��RK3pn���H�X� �NP��ȟ&�(g�6M�
΂T�^���'�&�մ����)��� %�Xt��>K�����q4�:��ў�ߝ]J�|�x;��4e
���D���o�@����@�
,��H����Ex6|�~'�_b*�`>�H񾥻^6J�a��J�������{��/h&?����
��6�fzF0�g�4ne |`[�k�
+b
�0�k]'C�ֶ��;�
�?�u:�
��:[z<����\�OM�Pb<���J|�r�	��Ϗ��@���}|��c���6�3�L.�@��!�=y�{��*�G6�A3A;T/���o��٠��U�T�v�Xܟ��A��i�\��·�ڝ�B�^���_�I��z�n�h��|�]�\�?��\�}��B�m5iwv1�kx�A���$.iJҦo�TQpeg�C�6�b
+�g0��Bw�I޵皞x"(C
�
�`���Z'���l+H�5��:*3�
޹k�Ȝ�
}�o�Q-��ZY%L�Z?Ɗ����yx8l<��N٣Ԭ�����W�>��*�n
YG��ب]h�I<_	~
�V���oc'A�&�����T���@��n�Gp.2�&rjжƎ=��*A�/�j��_
��H"|��,��F?��B��`X�w��
����5S���I�/ �Ġ�>
�Z�83�Z�]��nC���c�9L���f�xl�-|�������m�F��j��'Nm�77�j2�"]����&'M���
����#r1�@@��n������|�,_�Ͻ��yY�ٛ������4��H��B�)h�S;�_/�֭�������{��QM0�c�W�@�����6�т��Fd�u�u&�$]ط����]�JY����m����Â0��w3au��
]�4�C�bܾ�l��1k�H���OI����Q*z�l[�-��-��	����imK�
i8���
�n�e�b����U��s��!�&U����ͼ�/^���X�&60�tu�a�
�����t��:��D�-F�r
m6�}�8�b4p;�cԺ��}�3s�IǙ����1}O�zU�������XO�d���N��-�
��}�I/ŝ
)�*�
+��Z��/rj���q6gL�1qQZ�GZh*�|>����E�
+�;/�5i'��b��#��}��+�ʰNW�J�IDF��
�
��(`��]7� +�=vh�@g�Jxi-��
`��Q�d��I�ɨl�
x
�Sb�s��G��`E��>v
����i�u�иI�0�f�s�FQ���8��x���pO�u�`�{�U�NO@&�V3�L�d����!��FDZ���Ow1�`
c��L*��rhT\��t�r�Q�ց_=����[/�%Q�^9-+�Gg:���SخxRl����+�p|!���VSs�2vR)��2�³��h��ox�qP)d���<~�o�yّ��-r
�f�G���l�}#8
�L�T����=O����b�}�{�#	����r�Akш����JՆ��9
+�Y��W at df����
�f?����`O2�^�ul�+�m=�D�l��`+��
��e��Lۖ
<b��_g%~�ag�g�*W-�u�2h)h���|e�
+���E��9��=�Y4��W8��0�m��bUHfɊ��Y������
��]�!��\
_�0� o
`͕��d�^�ߖ�������o�-�pIл^.�e�^�Zݯ�F�;x�����wzf��ʧcI���+Ji�¢+-��*VtO���^s���sM4�����|��)}���nw�r[$;e?>�������L��IS\)9�N�)��L�ڹM
+��,�����2����v8*��4ʰlի��iw:��p��y
�6���-y�Bi��DEI	൓�Yf�C
+�X]���Q�V��.6L��5���JM\ò_t�
�\�5��U��������_wD����n1����i�y����.��j
�ǰ��
+���bd&�3`�cq��+�uTgV���=Ѷ��07��R�8�öǃ�p��SU��+p�>o�W�%����Wk�-�J)��@W�ħX+(f��K*�!�;K�o��a���bh�3p:k\�p՘�:�
�!����Fya�\����
�<��3:n��ix��$���ǽ�'
�����c�\g5�
�n-ꆚ5f��˿n����
��2xUxR�~-E-�U�[��2G"�b"�[�&N&�HU8��g+��'�8���J4-�/Н2�eU���
V'<~`y���{�`�,��g�3�?��-3x�xS�4�h��dW�Z���g��E�`�&�ؔ�U\�٭�4�Zn֤�Θ �h�����4h��)֫�'?~Φ4�^�9wn<�K���,�����)O4������!�m"��ϯsz��k
���
+�F��&�y�PC�Э���!��©����\���,.~�KXPf�mc��
�M]�	�y�ex
�G��S?dC��	�v�Jr
x�9A H[nߢݝ��� $���]CR
+��
pN.��
ͽ1b{� N������X�u���cd�=v���ф�/N��'���
�*��k���E�:��Z�e�<#!ito�C�ΗeW$��*�����05���o�+���N)��]�s����R�3
F�w
�샽#�3F��ϰ�c��^Ov3�xpm��嶽�d������̣��x>St�K�h�����`=g@Ƒ����x���񽎰`	n[v�VX��4����J}��>H�µ=i8����K	�3rP�W~���mъ���ܙӥp��n^�&;����D���է���M<����E~"T/�wk��������h���|:�ּ��D��X�p_'�."��ݖ�?�!��p�K`�< �ecM}���{�Z[�2���5(�~�I�i�9 
���6�
�y&�ֶ��|�ֹeE&
k�	
�}u��Бu>��DȌl�����)�
'^ټ
+��,Jh.I5���V~ca5��u=h`��j��/�6��_k�$���&AUf���a�� ��iF#�u
}��&/�Ϙ���5����bm8ʅ}�\j�(��uF
�ˤ�ܺ|�8�����ݧ6��M;GQ�S��oG��!�k�@u
t�o��
7�m��c�^n8�3͘k�c]	����ۙ3
+�����N�m�������ɐ*<�횟�
�-NԺ��ɏ8(��<�u��� W$[A{��~z�
+l��m�ñ�1hcQ�K�2�b���=|��ƥxf�[������I%u��/[�K�?��2z��W����˺���{
+�J9V��?J�4/
�����
3	a�	�=��30Oz_ۡ�5hO�K!�Ś�� �
������-_<M�G��]FX��1*.�F�D_��A��
Ӣ_�}��i��̷O
�\��W�#�=�~���Y��})藞��u8O\ݵ��o��
-�U� K�
&����&���<q���~��X
�A���MYpj�M�~Gf�Y�c^
+�q�m�0�,���̈́#����3�=׋.��|nbj�f�^�P��}�>}���
o��x��OL��
)�(:&�Y	����v8�J8�tU�`��p	,ߨ������*�c�@��J/⠀P

�+%���0MlAn
�I=����e0n����j�p3�����f[Uc�
���������t�d��Ĺ�y�pP����)�˸�N��4Z���G�po

Rrh�2C81y{��.Tm�����.��i�䈏��|��G͟���
+��_'���gN��Pq�;^�Q"�x=�ݰ9����`�;��ɸ>_�I�$_��f�b2�\��a�7&��2R�%�}�|��!�[�z�BrE�S�����_ޅ�@%�JZ�@Jk`#�:�~��^N�p$���
�k����f�P��o�Eu��![��k|���wnSY��<��
.��3™�5�k�kJJ��'_�$k G
��A�D��� �gJ��s�:������X|
+c�!OO�
�b�z�xN� J�� ��0r�
o%�ꑙ`㥺sHf��s|ٻ��V�q���e��3+4z�
+�p\-������pLX�[Cc��Qwi
K�2��������<��m��3
X1uA��[������3Z���������x�p�N�L�� ������h�D���Xހ�ݎ
w���3�I���j��fnGmq�~�^=�㱕���,�����.�~��P���1Iy b�����c�>_
E�t�������f�
��u��T}�Q�C�(ƾ�`A��#���Gl�
�F5f�C��CANQ[K��1YN][��S�|P����	{Dr֣���\��	��w��`�jK�
2�6�M~��7� �`mW��~f��P��
+-��\�����I�k5�8�/7�;�7�ܠ��Y|�~�Ta�U+�I �<�TC
�ǥ�=(�7�"�z�E���.�3܎ �߫����F{ێ��Ҷi4{y�S�&���]�sn�5�P>�I��X)���0:5��3;��
+i{������m�q|͌�~���~��6L��c�j#�]4��1j�$�A/��4�|�T.�?4�
0R���$&\�T�@�Ui����K�C[����t7�E�0�p�Gt��N�2�Ln"@���-��9���s����5��5*�o��O�i��c��p
��E³8U ȕ��e�}�Ku8��)�&������(��b�d�־�
�*�8V���^Z�����r:�+��/��*�⊵�_#
Y)�EbL��Ш4�<������
,��_#
��e;b��� .�n�w�m]D��g� *G�M/	�l|K� �+� �����R�|	��Qp"��
L����Ƕej��Ų>��qr�`�$#:�غ��m�-̢H�G�PC�1
�H`�Z(��Q�p[A,�^��s�c��
��a�駂���.1�Y;�.�e� �r�0w
+�a�&�97|U�k��U3�[-c�
�Dd�O�snb�0�
i�q�^vᐬ{�Z(}"��h�q�K��6���t*
+��
�l.a�Mq�0��6��%,h�����!~*����
�hơ���k�rm7~4�0o�������
+�f�_��2��}&�x� ����
8��{(L���HV���f=T��j?s��*��
+���v�
�]�ˌ2�ϕ�ZC�:=�J�TzMHI�sl
�Ngl�^�CeË�;n%p�<'̔=�r�p���9���M�֮��V0j�{t��pƋ�cү\x��1-�g�V�é�`O�Ԏ7o�2��8�)Y�Kx�$Y��ʭ�
+��A �k
�i[�c��� �s3޳4K��������M;e
�ê�C�CL��\���^�f�*.Tj}��k�:�Rk7��#=%F0�9K~ ��� $�0�E�O�[p�3ׄk�°TR��o"�6�
0�BHp���|��~�������?�
���s����/�Ⱦ1-��?��|���u|��(|�qj��5��_p�S �B;����(n���

U����H>���ͽ�x
���v�C�e���ȶ���3GR��R�
�b-��x*(A�*�um��q̀�ܿApF��G�D��e�
+p��p���;wy�&WZ�r��Q`��
�
�h�
���G��Z
 �D��E�
����U=|��^��+�k�6{|�:M��q�����sq�������e
��-�^mO
<߳U��Og7�/S�
����sz��������^
��yZ
,
.�j0�����a˛����R���;]� U���~�:�_0��T
`q�X	�\��SʠEЊ��j�Gx*<;@�� ]�!ފ��?+���1�x�rD���"��ִQU

�Z^���䄦̳�x��q�./}��e�������L�VV�lǏ���U�8��ם�`��P�
8愁��9m� qtxƏ=�0*��ܟ� �
�q���3��:�h`�+OB����
��g��K�3m��e���t<�f)�Žh��sbd�
���(�W���-?�����	t.�b+�
N�ʱ��+���N�*�tx
?�8�	�9C���x�kl��gؼ�
l99߅�8������������͇uN5n���>
�e&hs�{#xQ|�*8��5�
+�:�ٖs������d8��N���P~�f`�M�V�\<r&X�\�Q��;\€@��4�x��+�~�#���>q^���/����?>���:?���x�
��*{6���A-��`�
b�\�*�R�����1�aӥzPn��x��z�3��ÕBiH�"<�e�6����4�8���
���ſ�xY�akud &���\���뾽�sn��\
��7&l��#
I�_�'
+�c��V1(+�ė����+�I�J�W��G�j@�L���O5c���V>r��ufÑrƐ�⧥��xrpw�����^.$�˵t�����Ъ..�n�p��:#���Ja�]�^���C)^��6|�`�O���D
����K�fR|�xQ\\�
H��
�c�� �.�z�
���a����
;
wn�~p�'�(W�Z�Wt_ݐ��pm�
�ٸ}��8]=��
{w�H_�}�>u��>E���)ߦpQg��ȯ�._���5��h^�*>���U�W����ǧ�iPК�`�U/��_�6lM�:&�/��9�̖�����+cәQ�~ڽ�#���SP� qvX�&�����-�K�d��+^ª�W�`F�P��w��
+�5F�����*�X�ꉤϝ�i:\���}�(�����6¸�X�\��7���zHi$��]���% �¸&��uyv��45h�Rʇ2c�Y+��
Yk��]Q*3wDm�z�
�uD��
aa����|��C��e[��<f��}&:��:n��=�U#:>�]x���P�f��k�-G=��&]ų�� I��O*B9e����.:%X[�W<�?���;Y����\�7���;׵�"��³]�N[F=M��uɇ���6X�|u�	
�3�./
����
J�
��j?
Z��
B1T:��
+�j�	~o�0_��
7P�1W
���+~og�
��b��W
+,
���E�n�$*��Rfx0p�郭·ak�g5�1����T�e��Fn�k�(����E
1
+N_
Z�(�Ԧ|Z#�.
��9����)�	�6	���y �����2z����˜
+���ԛak����)*��|c�zX��>�g��k>��u�>[/��E��.=Gճ����\�$+��]Wu��y������˜*Xu�F�i�
����`����rm7�W���D��\�M�W�{��I�F�jϏq�X���#_b� �ϩ6|�
���T>à�CJ�U��K��W|���|�����_#<���i%��[�{��
'	<k+�m�K

Dz����Sj+!� q�Sv�$�X��Ol-f���S��p��J�eY�y3u�iY��,�
�v�l��tB�ȏ������`jO�0�����6;�Vpa������`7-���POŊ�<�����C��-!B��]�e�|��4 ! iq~�#�r��br	�Xi=o��
�_q�
U�A�k��	����1P���*@Z�Df?��V
+����0TQ��R(v���R_���(&t�u�e��
�
+?��:4��
E35�W�5��|
*8{�N��-�ɰf���3p@�����q�m���V+��_��������0
x�vI*�닍B��BW��9��
$��r�Yi��
O܄%@���k 6�;j���U�3x��@1#�p�W����P��G�?�:�\ʅ�Tze��9w*���Qy�
��a���LbI�8"��2���0�9�i�~��O0���� �z�Ϡ�>�a�>���Y�x��)Vj�X$�[I�`�Ĩ}��\�o�=��K�@�� ۆv�
`Қ�>(8������]����1��2�w����Sl��OFo�nI�õ�d_���ߖbn9�{ñ���d��X�C�0nW懻��S�0�%,ې���%�"���Y

�?m�q9.Ɯ>
���3稈�*�g�#9��#�O�������Ң�qD����	��]�^Z&��		AA�D
�Z8vL�}N=���&��3u����N�r
j��N[c�0
.Ƥ*��T���t�'�����-2�cʸ��փ�\����5��6�ó��
�I�\�
y�%�۝Ngn�hQ^�΍'�G����Wf�nl���1SS�%e�#��n`g�r��@P
3^�RTt?���'�v	��ì�o.�2���G���k�ذ��(f	u:
��1i�B�z�n�]a{\4�B��ʯ:X6����8`�LD�E��i
W�h���uyA#UdƦ�Y4��Jdx�>���(�<xؠ�s˱�
ɭ�+���{��VA��S<oAg�h���,~b�7xy�C����$��+��-/�Gx[ғym]�Gg�,�Z/9S�fl�*�{n�=�{A\k6��>���l�G~-��\��
+�Q,ݣ�SB<��j�Y�sk�`2�V�`N�(���
鰥��Qu
+����%�Aj�}y�u�\Jt�`��&c>ލT�\k
`�V\��0����H�$H
}b2��Ƅ&����2)���M+�X�`P�RpdcD�=i�������� ��� ��v�-N	�R)��kj�(5��[��V^�^�k/Fӭ
 
�� f3\t�UCZ��~�����>���<κ�.�\�AUi�^����
+�#��=�y�#���$�q?n շ�qV
x���$G���PU�_����r\��[{��V���V{i�[����S7�
]�`�շr
+����jՊ��7�m��I&�n�(����f"օ m�H�Xk����2�a�,\hug��k��O{��[.ּ������^�k��=�%J��+���,‷)�g�['$L�ُ�4��S� ��Ӕd <g��k��i���3��o����]��l��

���ȼ���M�Ȏ�����R�
��2���p��@k5-�<1�����@�
4�Ngжw

ǀ�m��=c��:�5�布nk[80Vm^��ĶG�&������~A�\
P?/��c��
c�9��f�x�W��Pihr'�;������ڎ^
=��F��I9)�������#lg���
�B�����Y�wm��Ѳa��>�� 67]
��;��ASu<�#���h5i:U��<J��1�:�
�r�mL>��5�sV�}
+���
�|Hu>
h
l^-��
� ��Ÿ�
���0�Wp�V��ˉz�Dg�d2������Á9�Pd��YM�>��ާ�G6g�
+�(Gd��_
q�[�kO$/ i=
��%d�����nG+���G<����`�t��(�=�3�:�cj�c���͎j�5�v�
pզh��Q�d
�1�ƻ{.�6[��z%���p��æaBu����Mg����e�
��]I�p�=��
B�|��R��t��gԦ���u���n�����Æ��O�<8���V���C�Ѷv9�
+=8e
;yh�x�=_�ӼOb{��|opu��ǽ}!���Qͥ�
,��Tr��(�A�T͆�0���z�Xg�
+	m2�߶�2��KC
B����:>k���k�q�m���T����\��B�
yj�`
��3�y�f
+��pl2����۹�����
Y�b�~眖�4�!A�D�c��\�Z��o��� #�d���Sl̚]�*��1�'`���XjfH�����Jc�T��i9XI
�>�a_f+�ڋÖ�m�N���m�<�@e��|O�����F,?o1���c�"��3��Ǒ1�["��1GV]8�b��=��k��X�,�;�
m��3^�'�ց�K��MG�
{Ha$����d\��1���)��g<�����-�z�n:��o �a`)��0E���G�ta��4�I_�l]�
�)֙��qo�

���Z�R)/�I?o`��`%�	� o���G1��@�gv�$�{�ھ]
�H$
+c��S�\x����5�M�s3
f%
/��"C!�T0�B\ʬ�n����
+ez����- u�ʽV���[�c��1���Hn�֙��0'��C��|���ꬮvM6��n��'<��g�A��U�0h����.)ۋ8�%�� l�(w����I���+"�-�3�k�[z��̒tEo�U�{�
/�
�:�[ôӰ��B��ɤU����Z�/�oa=h��*
�
韏)�Ý#��N
���ݝ���
O�g��򈷴�_��	�?�篾~~�ǧ7���o�_~��ӻ�����᧟>���鍠�>��_��W����ϟ���Oo��7Oo~~J��9�����o��?���\����?��O�y��D7���ľ��z�[�h	�9�rÉ�����?�����
�A`u�d�$��������������2[����������5q�kf\�5��_�/QZe�%�wkV�"�e)�^��$�>
J��1Ƨ�d�
�]ɪ]w���
� �T���d'�P�7@S��׈P�K#���n�7}‡
5��'+���oI�}�$�K}‰cw�F�j#\|��	ywS� [...]
+��E$	ȓH`IB3�o!^�
+��^�MwT<���T��"*V��{�~�uɣ*.�Ŋ}4���!^[��5��9��R̚�3<?��
+ݰVyH�L��rܗ_Um��* ��M	
`
�����_��v��<�b�#{�D>BX�a��uY�Ĵ�?ޫeծ�~���N6$rwWuWW2��Q"0xd� A`� ���>�^��}��
�"}j׻�jq�=���nv#x�U��I��=�?ʀ�hW�90�~���[(?����x,��4��8�`�
���B����f��_z�a�	�
�������9c*�=� �tN��m�HѨ�s��I�[�]����e��]
�Ջ[����m�zL��c��(Zq(#	x��{fc�]�O�{@�y��1z��xU�qɵ1��i=�}=~�V8����[����o�@����p�o7@&8{bS}
La�l���6��'s[�Q
s �]g������M��<�.,i����EƓZ�=�E!���K�=峁����
�EW`�.�0󲺅C��r�,�N�]3�؜�.υ�}l�2'��AK�tIX�vN*�h?�s
�ZSb�1k�
̓���s>�Y���V;?�
+�l
4ʉ�m�bg-�(56��)S�vH6��<����ư�1Ų��ʠ�Nv�vN� [4U��k{�:���8#�H�W�
�eL��o
zU'-�I�`��)�@������HdL
<�藚3��Z��H�X��#�sW�ߥ�
Z�٫�	�<�Ӣ�~����
����f0�Y��!��r����dHn�6�_j��#ki=-�r�D
��B7���O�" 28
w�<}i.ii���~�����A �g#bњ�_�f:�/:�+	=�K��g&.h�`;�ͭ�>"��h�=����c6���8���/:�~��r>�؏���&�!��H\$�����_����_}���_߽����o>�t�g$��/�	N����ן>����/����o����?~zco���������`GvN�����MJ��#��.T�"
w{��o��$��q0��K��/�
���Ct���!�77��
��%��YX��l�.��`��կz+�ᗙ��?
I�7�#��A�M��/<o��\6�
�3�ۇd����%n&"f>
��~B��}|6���U9���6.
	r��'B��=��F<�b�W4y�u�;����� '�9]=dC��]%t��-��~�>p����M0=��;�"Ī�

���v�,1�_.<��s��Y�
I�S���~����6�L���� �ܯ����X��1.�(����.|�. ����P�
$h��h�(�Y��9�6Rɑ�����'{@�לΑO�jM�
6����P�X�~�Q	��d~�
'/.\	�Um����!=��'��Q��gO2j���}D
p�m=��F�Δ�E=`'�	o+#|@��х,"(�v
+
p����G~,�LcP�>
\\���wܶU1��f�s��@l
�������\E�7Z2�n��U[vc%�N�:͘
�%�'�"W�� �F͹p� J?�F^нၮ]��M�
�þF��ʹ�.�e����@��N�-1&<��˃��}���Fť��b�,��_3�;��nY1$vs��~#}�F5ޱ����+ h���[{�pɣ�&���w�_6^��yD6���?wP�8��s�y( :�#7��R�0j�H�sd D��W;��B���
�e�w
�ֱ�0r���3�a���c�I�������,9چi��E�����L�篪we�c�6|H&��,�����q��R�R�z���fh�$I��m'��w*��\�܊�qK����q�)N:�*�zKc�=��Ͻ�ve��r�%o�2ġ~Q{�]��!�����9�V<`�+q��-�q�,+���g�獅��1��L��.q;�I��F�a�'��/�/�%3�6锠N����� V��
�.�g��m
�ʯQ�� [...]
+}YH2 �YD�G}k�,lֵs]�?����J˄�/
Jڰ�.��[2�u,�?������r]\� K�ھ����h���@��9���z���l�
�g��� ���Ǔ�~��}
Kj\s��tX�1|h�AQL��\".��G�ۓ��o�4�3
<�=���/v
�[ܷ{O�����c�s
�W)�(�&*���E{���z���A�}W�����\��e��g�
*�kQ�ٮDJ�$��u(V���B��p_	�w�Q˹D3�f�ݖ8�g�P�M>��cM��#�9,�]bFL
����_���LQ
A�����(
�
d�
᥁v.f� B.��#�8�9�>z�w[/�Fȼ�.�\Gb¤��1����+�}#���
�����Q�,!�z�5�h�Y�	�л �8�_�8����m�!�����3��f�LюiY����=sTso>Y��
�k�t�����J��NR�.�I��"�3��C���@
�}����&~?ƊeB�g�;xƞ�o�m:�ky*
e�k�4�t��j�O�iՑ��R0
�5���H���.
�2]�b	F0W�[z+vU�(J���
���
W
=�a|<}U����ݜ�
p�W�x�22w[E�W�ͼ�.\�m*��-@�ȕ`oխ�rC��cMZ��M=�mt���o���S���L��!I��a��R2�uC'�,�=���z�6�{��_"%��z�k�)
@ P�B%��(-%H٢�����3�M���C�͓w<
�o�c�)+���aI��ju�dPz���b�ZQ�*���bk��e���$@�i

+����(�dS*�
x ���D�Pǵ���
+C���$̃�\-�>����#��h6��ӱ�c�m��ɞ\����Z�k��l@�|�2!2�ؖS�`���$
��d��}*�������J H��ep
ڒ�8,
�>�F;*n�I��{>�l�D�T�'\t�E�� c�v� Ni��t�נL��\�H��� M�v,�
�:紱����T�.z)cH��n%�� 
�<��I{�*GE��Zʴ��X�-S��{,�b���
�麣 E�A�9YZ�ZJ�>�^ߪ��l�^m7���_��͋j2]��s��.��9�����̖��fs؝�
k;7�h�K�*��t"qk�F�S

+G=��x�䋗���,�L�Q�
��5��.4�žEu����]+��$�=�vEڄ�ɏV���e��������G��ś�z�_/��_�?���f��
B�7���!>�������d�>�&�,�ɡ��kj|��	|���~�Ƽ7_�Zs�1W����fj^��w���%��k' ~���Y���?��T4�LR�q�x�Y�i?s��sBH��'�Q_t�(A᧨����$�"`��<���W&�
�`�Ľs
�+�3�` (+��
endstream
endobj
43 2 obj
20077 
endobj
44 2 obj
<< /Filter [ /FlateDecode ] /Length 45 2 R >> 
stream
+H��W[o۸~����	�ȼ�j��=��g� i��.�j��v
ِ���
o�[�6N���7��p8�q83LX��R&*�)����i�S�#܀

`��(�]L&,����{�T�'Ű.�eVݠ'��Go��QWEy��/��,L�rt���'豕�u�̫�Y���
FG��
��[���T"�h�#�T#� 4?o2�L���s%�s���p����\��T�'Lc�$�ZE��N���:�
+k�p*tWm
��'	�X��Z��pdž z�#���V�*v�L�4p�c�#� �L��0?Z��L���S±���O.���$�j�(�
(!
�Bhٕ�G-��@o�g��I¸
+Lz�`�XD�ИIFN�:W4�L0rf��\��f�)*�D3jt��N�
�a=�mcM$I�c�$�qG�L��4
yJiW��J���&4<
(QR��Z�^�t׆ z�#�ֳV�
+	]"'��&h�䒚��
D�:A�W�!S]-�*��:�Y�`DH�ĊG`K$%�+
�*�HWk:
<�-L`	!PG+��iׄ z���l�W�u���G�
=kT���GϬ�dhd�2��,IM�Z�eB��!I�

:����i6D2�DW���p���64L
8
{٨vR)�cC �
���p�Z�v��%����&D��)2����RK�"��(iÓ'�=������2.|
N�#�*(�'�
���V�(���_ٳ��$ђ0��hj�J����_��5n
�Ԯx��g8�I� 	�mKJS�i�K�ԝ
ak
�B^M�c���6_5�I��"����Q�!���C����@��n�hns;���_�����wͰ\V�х� �a�c
z��@iW
D�LVp�PmA��̵�Z�
�l%�FЦ8B75�
��LO�d� N5Z�����׽GG/��g�hP-�c��:�J�ޣ o_N�3��������(���˙
�n�l����w�ú��4��ˑ] ����e^��j�W�Dn�8�L��*����}5�N�H�Y��O����
 �|�N ��8��&�&8QDc�N����ʡQ��N:�.��V����A�bh��J9]Av0Y����=+�u�A�_U6��x6�[1�kU��Y9��-�B�,G�ɳ�F�s�A�崪��Ϊm/�zzU8]Ct�Uu1����NK��:��	
T�k���F�x�U�i�q�5>_�4ENW,WT 0o�v1���	:��H��Z#
�wj��&H�ú�Ϊ�?�}_��>+L��=��7�^���$_T���pR�a�ğ~�ݳ��<�!&St"� �_�ev����c�4��ԣD���Oh �c�'{����9��v?����,�����d����K#T1m����"mG��<��Ԥ��^Tc��
y�끷����4/�5t�=8�9��{�[�=�pU1�Bj7��il�|ҷ�;d�&Z,���ס���9q�ֵ)�[�2��#"��k_��B�!�|h� �Q�
2Cn����N�{`�7�Bs��>8g44��͒��[�O`�4E4:��q��7�K���Ph�㨉'�G�%\���0�{�7_�'�,
+�l�"��"�ZEviJ��˦�o`ʢ�V�������`L|ĩ��&
u��i;�e���ؔ��k�t�
�.]��&���I����(�Z����g
=�
=c�м�>��]m�V?l���U4��Ex�,�G�,��
���f�v��Cd"��A��ɦ�a�]�ن˚u��
:�����o��~-�ۖoo�n}h��¼ͪ�\�.��ݛ`�8F��U�Ӷ�Y�|�(G�wb�5��Ϯ���瓬v���ҭ
+�/硃���2,�=�H��������S��1�-�
4�������Ci��'�V|��U��h�,�� q4����O�ff۞�i>q�LQ"'��W����Ӡ
����n�� ��h����1Tt��Z�}?�d�
\w\�p
H�of�_��sR 3�2�n�po:�� ��
H�F ��C�N��P A BW��"O�Ճ���`a��ךQW���>S�grZy�U�n�o%�>���E�6	Ljs�J��(�W����.0�Fo�@����ܘ����� �C��Ѩc��S�
���)����7����;�}��l>���/�p<-G���D��Ɇ�OD�_fF�֩a
3�
!$�t�lOc��6D�d$�j����+�����<
�����$��Y��)���*�հ�l����paw�VŚ�41��
�˓l>���@��ińhx�8���l<�2�t�wpF��a���i��Ph�.=��s�����τ�5�Tż��<�<r�������r��
��]n�t���N����2֖�|
�g���ɢΛ��ʮ`F�Ū|r�²���e>��������l�#	5���p۟�@�_$��l^��q6�~x8���R�WT��ϱi%�\E�PE����'�o�f�B�Uݚ�-IY�n�Wy�N�ÚV�jҍG7gޮ����B>IΫ!
�tJy
^���q�u��KvtR'I��u:�:I�$S�E��y�m�,Mg4
��S���h�l��j:���p�t WM7��=V
�H��՜�r�
M��}1�Y5T�|H�s���ِ���E�?F�	l�[�05"$*I�K3m0�Y���T#vxJ����o}?۽�}�+��O����3
\1�?�m�
;]���¨5�DS(0�eS [...]
+�`��
��C
HJ�McAr���z�R\�lhRX�I���7�KR�(ɖ#9�%6�ݝ�>�خ�Y��`�qLk	+l˴m���l��A�7$�Hzy�S>���Z�x7���8���є?�q��ct�*�f���kp���X����a瑍a��g�GY��?�Q
�ѡ"
ղYE��w���̨��]4�j�/Dž����>
h�d��
�a	U:��%��
U�StN���#Q?���
+�`���
�]��5���%ת
�J3E�5U��巪ڡ5�*\�;M� �ԇqt䓌���04��eg���
�
'�P���|g�����
�׏�����Yh�������٘�
��,� x����� �u���Ǔ�����;�~|����H��$
ǐ'�K�
��b�:~�Q4�P/a1ei���
+	g�KlA��3��!%Pd���隖��t�^�x�Ŝ�.�� �C�/A��W{���ǹ��;HU\K��U��
����$|yz��>���#SE3�v��)zE@@���A[� ����p'�x��^��,"W��x�(�X�xmڌC�
Pڪ���Wq֦�~�)܈�n��ޞ��}�R��92���
N�WK�5-�w��h�{tɬ��4��R��7�r>)���Ud/-oF��ÍL��r�b��e��e�I�g�ک��;�Ϣ��$��
,�N�7W������d�o�u�/���(]q��=�fx�z��_w
���m�ŀ�d�M@H�x� ��д^�
"�{��_1�o�[��m���
��xL���]TT�|�+�j��
u����
t���;뵇�\���]�|���p��h��Z
���~�>.��@����39F'�bؚ&��j��T
��Vt]�����Of��b&X��)�Q��2���x��tXl�!¸�q�H�^�^�ddT�
^vC)�^vF�~�1_�q�
�ϟ��w���~�\����#�=���<����g��� ν�O�ߛ?�o�ǁg��P�h
F �Q�0���Ϥ;4���UЁا>z�Oi�p��z��'
E�G�KXLY�.�ƶB����^в��M�rH	�8#~����6H�T�W
����p�
} wA�� �;�{�# ��. UQE|M�d�̃��Q�}�~;�[9i���M��> n�f�
h������ڬ]���09˳(���\G{��M&)�Ѐd��Y��d�0��2PӀ�Ւ�7֎6)���
ji�ьr��HT�b��Z�i*g.���&Q��j�R
+�\�uvl/[�������0}(9���
`��7��j
�.�
Y�el�JE�("���/�|j{�>�کe�n�/H���j�3eY��=���
+�06���ۛ�I����
G�}RQ�@9ӵ8u�n�fS��CM��P���).,�n���8'wep
qsѸ����4�����.p��r� ��J�e�,��RB@���g�
��t]��n
�;ء��H
+�Aq��3���f���%�

��ކ� ���ᐴ{궯��{�
m�\�%,�,mC|c{5�/hY	츂UF�0O7�6�|_�^��*����~�c��GS��3��ct�*�������NtG1t�FX1T����S����	$���L�+���( ~�����t74�L�ݚ���Y݇
yQ�7�xQ.�.V+:����+Ɍ��#}F�M�����s�G�3(�w�~�p��;\1r��qGe����F��fwA�����[���z�1N,�K��4>�
Ws�	�M������M����a��Q�[
�G��,��q���^�?��՗��
�2Y��睾{�:�;,f�b��K�x�@ ��''�z�����f�F
�E�>�T�1£�۱��p̓��1/��� �h}�r��r�9S�*�	��*�i�����P-ˆ�U�	�SF�J1�8�`�5�C�_T�
x������.�覎�VK��8؍rZ��⠢`Iu�]�xa����U�"�dx�"�jsS]�"N���	$i᠅]�<�MS4�G���&!�4�Yұ!���Qî����F'��+d�dح�(�U�jA�|�хq��U��)�9D_�e�]��DZ�oU���tl�
y���e��#�jEyp]�j=�uE�9C
+� ��F=�u1״�
]amUdE��3/3	w
Sf�xQy�
�ߗT��U˦h���+�Qe���!��%&�֒�f��ŕa�0Յ��;Ր��a�B�ַ?��se����
D�H�FSާ�V�t�j�
��L�V"B����Qtk3S
W3��</�0j'�R�-Ed���L���'K1]Mk������ϕ�^��B�A�fQT�!�����X*�R~	�O�b-�*��Ȳ�ʞ 0�}>��RY�+���L�1O
��![�8T�Q�� W�x�?��9� JaƺΚ�)�I�#g�˨���R���/�8����Ht��25+G������5״
O��<�=�7(i�]����3�Q�<T�%�Y�қ�(�qY��x
GI��:��6��N
��u� E��n)�* 
��pFo��~^(���Q'˪��IESB*!�I>���V��s��HVtq� ���y?+���+��;`�
��S^_�
�M�g	zEҀ��b��I/��q�qh��>@��JS��c���%1_+�
"�b!�c>
+_�S�s4fp:����_�-�FđC��)W:�B�9�#������'����G`H��C�ȗM$:R��x�Z�‰�C���/�u�����h;�(��S����ٯ�޶�#�݀��&H�$��}?��N|o�[�i�v��,3�ZQR�ȭ����gH����"PP)	`�:�ݙ�svw���Oj��_"c��5��hr�?Y1�I�K	&����
S�lu��akp�D�NF׬�>�r�b�}�b%h{o{Œ��N
]"�Ř�8��c��&?m�Ʀ���_
1�J'ӝw�oO��7>j�q5>�8(jN�g�M�[kx3^t�������7Gi�������#z<����n��ӳ����Q=�?~{[��
����R�
�p�Ïn~���懛-tS����#
����,�do�Nֹm�A�NQw�%���e��1�'8�Yk8�췆W�����(�P����S�m�������H-�j[9Ý��1�i<�Xi75�sct��Ak���7�عb��m9g/p���� �M�y��6���CښZ���T���aIԇt��N�	S�:�]~ǐ���R�������o�I�Uf��"�

�k��I1����2�:�v��ƣ?�7k�O'��t���H��ƳŮ2�@�Ϧ�Ӱ�Cy7��t�;L�P^/�>�(��!��_*^��������d���_�ဪ$��A٠?�c�j$l�� "�Ui~
��|V�/�[��s̗�'��t��LT-=]`r���!��5cn��Sv��׌R�h�f��
P� [...]
��o����5��?8�j�ۇ�޾�I��X��{��ԭ )C�-7MF���׍�F��R��O;o�M����1��A�
+��5�hq.@��=y��Ϧ)��x6�_rķK�`GP
�6BIf�L�	�|堳�D(�h�4�69(�(@�[�ԉԡ2���Sjota�觊�ٟ)G��P�U%
+��vR#K���S��^��%��<h�o���UbW̙ą��Д��
*R�
+hSX�9Z�,Ix
�s�1�4�����?�3��ꖉ��0�$�(�1�r������#�K�Ti�`�
�>拷*��*�%F{OF8�
f:1�X�5�R���޺_�1D�6V0iC��V�������sm1��>	�8��3J&�^�����]���j���Th$��]�
��e+(�H!B{ڦ}!A��8(���ʒ/��32 ĠPl
Ҝ‰_Xrn
�,�@-�)-�5�7�R6ࢣ������5�c”a
osN	r��^Nq���mQ�"��i'�	�I/KQxA�
���R�#�����R��a�R+YZ::�����J�5G��2b1�8�9�ְ�-JQ�N1�fq�(�fb���/�e�PJյ\���R��������洌X�7j�\�q���oQ�"�iИ��1T���cUT�j� fI%YM� �T������#U�R�uG��\��,�z��5lDx�R�S��W�TE����Y��� a�b�� T��

�*�V���KG�3�*�]s=��6"�E)���&f4&xµWERl�9�J��>�r"�*
+�Y�0��Y��-m
].�ٜ���[�v]ʵgk���#h�:
+�**P�,M�c�t��Z�R� �_h�p&V���V�s;k��6��<��w�\��8[��2oQ�"�v�ً�8T�Y
�����Rk`��RTu��ݘ�͉y.��s���lDɜ�(n���CغDs��b�h��q
�h
�Z�>�b�ǔN��Z��ٜ��һ_-�s��cc��(Ep�L��2*�WR��VA
������)��7~
+/��z�F3�0'�y7�Sr
���z��5d,�%(n��M4�Ta2%l�d�A�-��թ�w�J��jn�R���>ԓ�*c=Mߢ��i�p�����2��6"�E)���&f���:q&����M�7UR���C�����
K.�BR$&Җb�;ڜ�ɭ���s��l
ޢE����I�V��Л��<i�N(������	��e=)��[t�91í5^~b.s��a#�[����b�6�2#�

�q�R��dI���51���y=S"{�&�����Ln����s��l
ޢE�m�3� �B#+1{	1{E�n��� ��P�R
�[��W�d�5jײHY�9-#\)f׵\�q���kQ�"ಔWMj-�ZjK���Sb5�Sf߄���6��=1]���{M��h �y�}i�5��oCz�]�Q�~�����
|2x��;�hv�t�<nu;m&<*@DŽM,r��Ӌ�
j~�}�*��5osdL��L�s
D������U�fp}:�
���f�o����c�����?��?���S�������b��5_�<K�~F|��2�N>z�H�)ּα�0���Sa���h;���{���I��饭!{���t<�aOY����߇x;�[�c�H#G��q�Q��$�jmO��q�
����i�}-�!��%�k+�?�O���؋��[_��%�6i
��]C�V
+�eP����8x
�:$FU�����p��<
+7�G$

!
p��W]�rN5�
U����Q��NA}•��4�p�7\P��fԦ=�73P�TV��A�e
�(�d��`m>pW�e
+��dGD�?n슱�'&�c
�@m�[
�Nh�
NM�Y��i�u����WK��8
�J���x�޶￝�d%϶�^�3��	��mJ�⧞�c� �O��
+�/AI��e
��%���ݧ��]�8X_����^$0i�0/�X+mK�r\��%�K�0i��kL��:������q>�m��K�
���
OqQ�6NէhL�E��
$�~I6~"���8[��z���b5QCJR���)�{B�z��>��f�,�)�3�JF(��������q\�	`�L�'����yn���
D7$Z
����'
�}Ӷc�}V(�j��yg���*N�*w�B�,�o��07#i^S�0XV2?��ATk4��Uw�H�P����f��)�����2�>�t� i^Nέc
Є���3��C��޷���s]��m
�,���s�o���|w5ﳼ��c�܌�x)5'(�b�U+c�];H\�Vh���
���P��C؇	�
+W�J�
�Ͳ"#�
��
R�c�-�8�[��$�/٘�6#�]J���ч����.�IC��
��ߌ'k��&[��6ld
,��뒴{�s��cN��(/*�!c�[�����3ҦM�K	��f,E�1���
���J
���J�4�I��.���� Յ�
 �z�
�)��R6��zWO����l�^2�[��,�/��17%i^K�
��$G7��u� �BJy�QkER];��]q�(�f���X�
�[�Rw�@ߐ36Ą��󈷕�)��>&�MI����3�}r��MK�%����d�3*�ЩLB}�^�*�׳I
ObP���À�}A�87aM�����|L����3qS�f��\�~
+�O0
�
+^;؛3v.�r"���$�M����oݶk<i� ǧ��}
�
w�r�26�b�b�Ŕ[�����
�f���)��V,f�Pr�](F6�0.�T$n;%���w�
0YzHy�_���J�����}��7tL��r4�%fY,(@���t�d���V
��6�S�q��U��2��fLE��
�|,f��M�U�Lj�D=0�|n��S�ח|̘��4/��a�7��2
`sk�?��v�@$-��q��8)3�� -+)�
endstream
endobj
45 2 obj
9117 
endobj
46 2 obj
<< /Filter [ /FlateDecode ] /Length 47 2 R >> 
stream
+H��V[oG~G��0/H8*��w&}�ص��8�7
U[�O�j/xY��_�3;�c�GjT)Vmy{�\��Y(J��b

�9�Lc.���Ĉ���p΃OA���:v˥[�/E�s���	t�(A�``ť�LK��f���.�ƂP�(�U�!0�s�F��opw<p�q�[���
�
��'A�u��R�H��TQB�J�!�JTD:�>� =<��'��e1�Fh��S�+B�
W(���vh��*N0�
�Q8i ���m�'��w$R' W �q*�9�I��O��U4�1S��6�g�(�Ue��!��pj��D=���,
��Ĭ��1�C�.0QJ�h5?a9�ۏ��5��	���
y
�-N86�6���P�<��R{�@��PzL�Ѐ��!H�&�`m��@)T��n��w3KF�O[bMxX&��l-�mGS�[� �PZ&S"f8�\��5`�T@�D��SK��8.k�-�
��Xe�$�܁XC
+�m�v�|/
SO~�3�W�+ݸ<�y�Bޡ8�ۊ��5��	4�Ģ�K���QJc�a ��pP�tϣ۠��vœ��U3[s�
,a�!h���"�����[C�����B]�)��F�+�+pD�1�EWH�U�j|���|;>M6���z�*_���wyfQu�_'2:����Ze)N��h�K�(z�52s�AI
��m�Ѣ:
{���Q4��0�9�QR��j�
Z�c[�i��#}��:��.Q�
wW�;��aJ�W
	��R�m�ES�}
��݃�]��bj����NњsA�~�$tL0�o�:'7�E���I\�S���,6�D��ǽ~Q
/��"�b8��%�{H���	��
�e^�h����$�<B?93����
���ڲ����g�sY۩����l�5����
��UY,��
��t�^�e쪩-v˃��^4���,�آ���>�٨��.g��֢8˜+��GhV�
�E�y~�w��@�:���0I֫���n
P��E������/v�5]��kH��!�7y���:d��Kx�
�{z>>- ���C���2��r�y�����Abom���i�O.~	Z�0 �y�
endstream
endobj
47 2 obj
1077 
endobj
48 2 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /NUKPRT+Times-Italic 
/FirstChar 0 
/LastChar 255 
/Encoding /WinAnsiEncoding 
/FontDescriptor 49 2 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 
500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 
611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 
722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 
500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 
500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 
250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 
333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 
389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 
675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 
611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 
667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 
500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 
500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] 
>> 
endobj
49 2 obj
<< 
/Type /FontDescriptor 
/FontName /NUKPRT+Times-Italic 
/FontBBox [ -169 -217 1010 883 ] 
/Flags 32 
/CapHeight 653 
/Ascent 883 
/Descent -217 
/StemV 76 
/ItalicAngle 0 
/XHeight 441 
/FontFile3 58 2 R 
>> 
endobj
50 2 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
/CS /DeviceRGB 
>> 
endobj
53 2 obj
/DeviceRGB 
endobj
54 2 obj
<< /Filter /FlateDecode /Length 55 2 R /Height 60 /Width 128 /BitsPerComponent 8 
/ColorSpace 53 2 R >> 
stream
+H��W�J;M}��P
A�O!�Xڈ ���)�>I�*��Q+�`iH+%E��U@� �<�>B��^����N6�fg�GN�lv7��9s�N�;B�P����6�����O
�7�M�[n���� BN
�(�`� 	8V*
����m��b��.��+
p?����(O�m�2����
:*m�o=�\?<<�+D�T�]≓��s"L>
�p_,���|�[�*~�L���!�GFI�C����QM�os5�GH����sss�
�z/�����T�U���H®����W�~~�0����I����
���&
)�@S5u�%�`�QB���Oc��̸f_
\�0�Uf:����럼
+�h��	��w�\���Q���Y�׽��?;;����F�w@�-�ύ������/����"��ǩX.�0[D
���œ�������G�����P�]�X���!�U0gE���e�9�D� �J��_Q���
+��yHHx$a��t{=W2�
�%m��	s�y,�NIX�0����ʊ�ɖLW�{.���d��/	�y0z.�׵.(V�%j¥
+?ύ*b�Ϭ�i��7zn1������1�Ǩ�ˋ~*
+�B�ш�0�B'�
VvÕ�<vݸ�cT!�����Vp���j�:
	����N^^^��~�IZ)&��aH*�|��bV�`1\W�ѓ�U�E����

pBG����ni@��c�~5��J�����*�=(!�3c|�������}~LW�n��ͱ�b���_��L[�_!��Q��]����AUH�e�d��Q���I��s��j`QaI�|}}}rr�#�@'���3��~ɩ��� Y��,ﱨ�|�|yy	�������׵�+����*hD�ya��8YĜ� �����aIN���[�Q�
��y8==����\�B��.m�*䌘��
�������������n���PR�W���
�Fwبbooo|||rrrfffyyy}}
*H�BrTЈЕ�����y����ڔ�\.�
��L�p(����䀡�������baaamm��g��&<fH�����
+�>s�@X����S]�m��4U����!Ma4$�B
�Y�����P�I��־�����A%�
{-
�]E [...]
+!Od��L^2���*�w!��$�r��G���8�3�9����T �N��n��Mg�W��ϿV���L��E��d����J�"ɻ�
+��Q��Eq#��@�iw�� ?	~��Zr�g(*��D��l6{qq�a_(���D(�JI��~���V�I
�&l�
��_�QE�P���ٻ�E�I������(��1B��t%�B���\S�
+Z����0��0�mc�F�ںf�TDY�U�ݦ+�WE.�[ZZt�Qc��ٚv��$A>Í}�D�M�B2�HBN��OE��#�0�� �` ��V�
endstream
endobj
55 2 obj
1640 
endobj
56 2 obj
<< /Filter /FlateDecode /Length 57 2 R >> 
stream
+H��Wێ7��� C�E/�a �8v׈7
d
?(�<V0�q4�$ޯ�S�nI=l��"v���4Y�s�X�_�.��f�j���������z��v}�ި�
ԅuN���p���xȀ}Po�<Q�/g�->���{��ݬԣ��W��w럀��+5�]��^��==��-�_�7�����r�4xx����ӳۭۛzM��+G1$�
#�w7�]�[{�]l�>,����c�!ȧ��f��.B�9(���Y5�� ����M0
��U#G�����63����zF:��Z��?����U�aݬv��Rm�xa����Ob�KH���M�
��xhGBz7�7Xެ?<߼U/^~�
+Xxf�H1�v�=l,���.EYgň炑���@N0���~��\���~�E)�ר�Q����7�G��7e�z�w?��?��7F��4+FÿU>D
L�T�щ�*6Ns6NE�1�TBv��%�-Y����#�x�D�@�
�}K��b�罜������5���_�^s��Z#~{?{����

Z
qԶ�3��;����!���f���:BX�5S	=�vNg�b�����I{VQ�}R&�21lg�� '���A�xe-"
8
��r�Y����
gl{�`]�)��s�l����f��Z
5�5�uM �%4%�����&(;2e`X���E
M�]gL(�|�[0o��u90���r.���\���i+x��dl
+�wt��C�u�����č�Tc��=
+'/^Q���d%���J��JQ���H�m���;��EiA>H�3<�c
+1"F�t^j
V�9�H��K56�ў#�)�F��i�� \��@��R�N�Y
�!���B���%v�%�A�����̍�TcS���'����bB\2��0T�˚d&9V#0C�w�Y��8�c
+5
�>5+ݜd�fn���N�r�K.vfo��s�/���[
�{�u��r)��>���B��۸
�J��J7'��c�ƦP�͸�zk��ɕ��6F�V˻㔬mo��b����W
D�&k�-{�a
+-�w��A���|Լ�pTA�ѡ5�,c"q/��:�C-w2�\�_�mtp�o�.��
���e�c)��?��qX��4#sc,��tjLVs�x�
cҮC�z������u��|L��C���c����16�X��)�����7�
�0��a����C��>h�0mJ�.�#bt��&�a��ӌT̍�Tc��Q�C�Nېz-ʈ�@����e�,������
(b-��=L!�+������IB*��8��/�D��K�۝
�In��c�'��b�g9ou�&
��u�R
��2�Cϣ>�#b4��3c_��$#5sc,��jLQz8y
9��)hN��XnB����u��aNÙ¨�)�(�8c�P�}�����̍�Tc���ʤ`�r�S������Yk�N�
��>wku��9	��⡏)Ԉx':C5��nN2R37�R�M�Fʐ �O�F�	��>����>
��)G���)Rw�>&P������}�����̍�TcS�1�� �e�՘jLN�>���
B��0�[[Y�X��Q��x��bD�h�|Vb
V�9EH��I56�ſ=��
���Ξ"�8�����fw��}�����W�m	�bW{1a̾�pUy3�q�ݭ���nqs�RO�����`���z������Y��on�כf���^�۳�������W�&
2QͿ����s�ݬ7�۲�j���"]��v��r�\P�g��0o������
��nzzՕv+JY�r�Zq���R��&�jֹ/��?����٣�_]�<Ìf�4Wog�~i�
� [...]
+��Ԝ*gU���`_���ZB�A�,�\.
Fd�EP�X�<>�

+�R���KpW]:8�u����k�� %܎0L��-��ʼn���t׌:��d�uuF*1�M�8�	
���$)��q��X�{O�`]go�ǟd�`vrƏ���Y�U�P�l����~�
>�c�1�P
~�!���1�!io�����۵�?I8�:�ô��iNf]Wg�#�'ܠ�,�0bMW�60K#��8�
�rNٲŒ��n��
N&�P��_5�m�@��?�1=D�p�_@���� *�R�`���› �
+���oHJ]-�Rz��z����7R�'�����V�R�c��j�Ɍ
���t��@W�`�`�rc��L���6ģ�Pnz<L������'��3��`���7F��kg�KmM�d�ѱ�Ή��$+
+�p��;��e�Ů�5Lb�@�kb)70�~PМP��=���q�fż%}�'�����71ם�D����E��yz[�O�Ӛz�ٌ
�;��e��]_q4�Ak6{=M9���D��!!_U���q�M�א�Mz�n�W�Q]v��Wi縠8.D��=�j-�6�"�6;�L����y��2$�Zα�`p �Eq�N�qW�0��vCm~�;�u
����%�Qw��cz•��CH�
+>'3.�n��KD���w(c��!1[sݧ���rJ�S���Ģ�C��]�Wa�C
��84�؝a"��rR8��zp���8�5���̸ȹ�M'
���YXvZ��T��<*rXiև����N�V��W�8�S��Ѯ
����]W�S2�"�69�D������Y��ɴ���RF[�.^�P2F��a�(�c�Wzv"�� �;EߞGv���HTBXl�5���͸����^&:����>,Ɔ�հe��x �Nl6��X1��g�� �8�Ժ(ƒ|w��
���M"���NɌ������bk�d����6��d��7�e�t�&XL��d:
�L���E�S�+��Z2
a|�TWk��l��mrz��`W�S�j����M.Z�k�1���
+W+�D1l��P�&$h�àUan��R̉�O�?��R�q�Ւ�FxM��d�ҝ����bW�V�P�mB�1T@��
�Q�
&�N|����p,�J�yWn-��u�,~O����A�t��󹴢�3*��N^�
̑���/_v������7on?<�_v߇�����}�yr�������
_����ç��o��۷���w��i�����n�����
v~���0 d�ۉ�
o^��i��
�
k1b��ͫ��H��!.��x�/p��K��1U��ۛ{P��L���R�DT�00]�,��4M�������&AM
+�Y��)+L���kK?�?�
���8J���
u����Y�������|���l��
�����À�ۙ�R�gڍ�� 4��璜��W� �/!�
endstream
endobj
57 2 obj
3686 
endobj
58 2 obj
<< /Filter /FlateDecode /Length 59 2 R /Length1 2621 /Subtype /Type1C >> 
stream
+H�TUyTS�^��1T��)y�^�v\G��9�
��
+*��
�E�&!!
�a�}
��0"���2��uC����N�ӎ�{̥=}a柞{�w����~��w�����
�0��o஽~�$�b�joyd�$ږ_ɐ���,�c({�c�Y��������'G
Z����E�w�
8
^�����5���LNQI%�qr����u�
n�٢�\�EO׹�a.����$G�E�*�\�(y'E'KS���rq��hkB��φ&��eb����IId�H�\#N��
%�$%�U)��^b�j뗢Ȥ���R��-��E�$1�H�D,���^�1���S�
�6b�6
��v`����0{��
�0�d�=�c)�r~�S�]����8�;��
� >ˍ�^s�r<�����E|�c�d^ujj�!�=t�=q���3
��mz�P��`Ȣ�Ӭ��Gkѹh��΀�@8ML��7����
��
+�M��oI�ލ���ƣ��f���Z[5Xn��Pj�°*�,ۑ'bz�?�D0��%&5�6�8aVN�!�����ؤ)×!F�djD���T
44����Ơ��R����U���t�
���<
r+����7���&ao�be�T��]�z��&�������&&g�fV
+�i�	���PƤ�to"Q<�G�HсCݝ7�k�쩻�n3�Ԣ��y}�!I��Eے�<I�D���_? ������x�q9]o���Y��EV���+/`�sb��c�}�˹�L]��Tf����%*YI8�f��ʝ�Y@�e�5�7a�08�s�:��/ˎ-���8�� ^�%F�L��ǻGco�����L(N�}Mo|��rFxc�z�}�w��g���2|�A�\�����
�Ā��`�R�%s�JJ-��MQ%�[��\�!� ^�=n�o� �
Z���eIE��҄��X'���\�O�
��������_�
^���G����+V��%lIJ|������M��g }n�z/��
��C�&M��l����z-���
+�5������Yw�
Q��%�eJz���{]�
5�|�̱<��	{�
�/{oN�'[��+r��CI�l� *8RHF
h��X�X�D7ᰩ�ͣ����� s=ڌ~��k˻�߽����(�
/�`��j�s��Xu)�!1E��I`V|����r5ML����Q�'��C;d=Z"�HJ��dV�(���4?a��?p`��O)v;%�1a������ί"�����㻍�Ƽ�,��B�fC�!��3M7�O������KȲ����]�:\H<ngv
<�Wy���C7�9�_�C�7g�a��V%�G�
|O����}QI�LR�[VZY�g��_�={|
��zh�<��2��Nތ��	Uƃg�/��$���
+�jk�L�
׬n��Zm̻Z����$q
��I�;D�,%��ꒊ���r��U�}}1N�:�y at w �%h;�oLU�Og�d�d�����Q�5��Z���
c/�O>�_���'�3�a� L�z8��4��D|�#h����c�?߀x۩�B���y�Zدh���
Ids�fk,d����l�w�� -���x�����o���#�����0D�WS�w�#�+������Xn�8EV��h��܂�R�Ƹ���=Tq)ΟS,
�)�w�Gt06�����dAFa
M�t���~y�W
k�5��v
�6mA�Y�?k;,K��B_' ��?��N��1�=W�
�
%*��ފ
2aRa���'N�8�z��Y��imO��.�#@KYc��e
C��a5,op�Hx�xt�B0l>x@�E#npbϷ��w
+4���k��o�>s�=C"Aґ�#�������6n���m����$Z�����_��M���hr����&#\���>y��
+�cǞiK�"|�8�e��w5)`����c*���y��
O�K��7�yDGM�%�����m� Y�c<�-������
O�(

+G ԶhU�{���

+*�*HK�&C�'�>D��p~WVSP���5;����m�D
�KD�m�k�DXE��X5I�u�w��ӭ���"�˫‘�r3E4\o��WL'����3��5G���fk�u����W�};l>�
+Ij{[S:{緄
<�������:������@;�򍓉����������oh[^jzz�o����������C���{xN|m������ؾ
~�krh\w���������������X�����w�w���=��V�a�	_hohx������������Ad uLZA�WiL-`v����������YY�Y�}���np?��__�|������
�Nt9w7y|�f������
��b�T�����w������$�����Ę`0��U��CepaZrn
ci~�{Xy~�mvzzv�a����
���f�
�w�fq�v}
]��bV<�`E
w�~�P�G~�y={� [...]
+�
����
 ԇϮ
endstream
endobj
59 2 obj
2514 
endobj
xref
0 61 
0000000004 65535 f
+0000000016 00000 n
+0000000069 00000 n
+0000000133 00000 n
+0000000006 00003 f
+0000000524 00000 n
+0000000007 00003 f
+0000000008 00003 f
+0000000009 00003 f
+0000000010 00003 f
+0000000011 00003 f
+0000000012 00003 f
+0000000013 00003 f
+0000000014 00003 f
+0000000015 00003 f
+0000000016 00003 f
+0000000017 00003 f
+0000000018 00003 f
+0000000019 00003 f
+0000000020 00003 f
+0000000021 00003 f
+0000000022 00003 f
+0000000023 00003 f
+0000000024 00003 f
+0000000028 00003 f
+0000000713 00003 n
+0000000823 00003 n
+0000000904 00003 n
+0000000029 00003 f
+0000000030 00003 f
+0000000031 00003 f
+0000000032 00003 f
+0000000033 00003 f
+0000000051 00003 f
+0000001190 00002 n
+0000002681 00002 n
+0000009114 00002 n
+0000025517 00002 n
+0000025540 00002 n
+0000044438 00002 n
+0000044461 00002 n
+0000065098 00002 n
+0000065121 00002 n
+0000085280 00002 n
+0000085303 00002 n
+0000094502 00002 n
+0000094524 00002 n
+0000095683 00002 n
+0000095705 00002 n
+0000096925 00002 n
+0000097153 00002 n
+0000000052 00003 f
+0000000060 00003 f
+0000097245 00002 n
+0000097273 00002 n
+0000099053 00002 n
+0000099075 00002 n
+0000102839 00002 n
+0000102861 00002 n
+0000105484 00002 n
+0000000000 00001 f
+trailer
<<
/Size 61
/Info 5 0 R 
/Root 1 0 R 

>>
startxref
105506
%%EOF
\ No newline at end of file
diff --git a/doc/divergent.eps b/doc/divergent.eps
new file mode 100644
index 0000000..2993015
--- /dev/null
+++ b/doc/divergent.eps
@@ -0,0 +1,5172 @@
+%!PS-Adobe-3.1 EPSF-3.0
+%%Title: divergent.eps
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
%AI9_PrintingDataBegin
%%For: Kevin Rosenberg
+%%CreationDate: 2/8/2001
+%%CropBox: 0.000000 0.000000 745.919922 333.879395
+%%BoundingBox: 0 0 746 334 
+%%HiResBoundingBox: 0.000000 0.000000 745.919922 333.879395
+%%LanguageLevel: 2 
+%%DocumentData: Clean7Bit
+%%Pages: 1 
+%%DocumentNeededResources: font Times-Italic
+%%DocumentSuppliedResources: procset Adobe_CoolType_Core 1.1 0
+%%+ procset Adobe_AGM_Core 2.0 0
+%%DocumentFonts: Times-Italic
+%%DocumentSuppliedFonts: 
+%%PageOrder: Ascend
+%%DocumentProcessColors:  Black
+%%DocumentCustomColors: 
+%%CMYKCustomColor: 
+%%RGBCustomColor: 
+
+%AI7_Thumbnail: 128 60 8
+%%BeginData: 5928 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD91FFA8A8FFFFFFA8A8A8FD07FFA8FD32FFA8A8FFFFFFA8FD07FF
+%A8FFFFFFA8A8FD2BFF52FFFD04A87DA87DA8FFA87DFFA8FF7DA8A8A87DA8
+%A8A87DFFA8FD27FF7DFF7DA8A8A87DFD09A8FFA87DA8FFFD05A87DA8A8A8
+%FD1FFFFD047D527D527D7D7D527D527DFFA8FD047DA87D7D527D7DFF7DFD
+%26FFFD067D527D527D527D527D527DA8FF7DA8527D7DA8FD047DA8A8A8FD
+%22FF7DFD17FFA8FD29FF7DFD06FFA8A8FD11FFA8FDACFFA8A8A85227A8FD
+%3AFFA8A8A87DA85227A8FD34FF7DA87DA8FD3CFFA8A87DA8FD39FFA8A8A8
+%FD3EFFA8A8FD3BFFA87DFD3FFFA8A8A8FD3AFFA8A8FD40FFA8FD3CFF7DA8
+%FD3FFFA8A8FD3CFFA8FD41FFA8FD3CFFA8FD27FFA8A8FD17FFA8A8FD3CFF
+%A8FD26FFA8A8527DFD17FFA8FD3CFFA8FD24FFA87DA8FFFFFFA8FD16FFA8
+%FD24FF52FD17FFA8FD23FFA8A8FD04FFA8527DFD15FFA8FD23FFA8A852A8
+%FD36FFA87DA8A8FFFFFF7DA87DFFFFA8FD36FF7DA8A8FFFFFF277DFD33FF
+%7DA8A8FFFFFFA8A8A8FD04FF7D7DFD33FFA8A8A8FFFFFF7DA8A8FFA8FD30
+%FF7DA8A8FFFFA87DA8A8FFFFFFA8A87DA87DA8FD30FF7DA8A8FFFFA87DA8
+%A8FFFFFFA85252FD2CFFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD05FFA8FD2D
+%FFA8A8A8FFFFA8A8A8FD04FFA8A8A8FD2CFF7DA87DFFA8A87DA8FFFFA8A8
+%7DA8A8FD04FFA87DA8277DFD2AFFA8A87DFFA8A87DA8FFFFA8A87DA8A8FD
+%04FFA8277DFD25FFA8A87DFFA8A87DFFFFA87DA8A8FD04FFA87DFD04A8FF
+%FFFF7DFD27FFA8A8A8FFA8A8A8FFFFFFA8A87DFD04FFA8A8A87DA8FFFF7D
+%FD22FFA8A87DFF7DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FFA8277D
+%FD24FFA8A87DA87DA87DFFA8A87DA8A8FFFFA87DA87DA8A8FD06FF7D7DFD
+%1EFFFD0BA8FFFFFFFD04A8FD05FFFD07A8FFFFA8FD21FFFD07A8FFA8A8A8
+%FFFFFFFD05A8FD05FFFD06A87DA8FD1BFFA8A87D7D7DA87DA87DA8A8A87D
+%A87DA8A8FFFFA87DA87DA87DA8A8FD08FFA8FFFFA8FD1BFFA8A87DA87DA8
+%A8A87DA8A8FF7DA87DA8A8FFFFFF7DA87DA87DA8A8FD07FF7DFFFFFFA8FD
+%14FFA8A8FD047DA8A87DA8A8A87DA8FFFF7DA8A8A87DA8A8FD06FFA8A8A8
+%7DA8A8A87D527DFFFFA87DA8FD08FFA8FD0EFFA87D7DA8A87DA8A8A87DFD
+%04A8FFA8A87DA8A8A87DFD06FFA87DA8A8A87DA87D52FFFFFFA87DA8FFFF
+%FFA87DA8FD0AFFA8FD077DA87DA87DA87DA87DA87DFFFFFF7DA87DA87DA8
+%7DA87DA8FD09FFA8FFFFA87DA8FD07FFA87DA8FD0AFFA8FD057DA87DA87D
+%A8A8A87DA87DA87DFFFFFFA8A87DA87DA87DA87DA8FD08FFA8A8FFFFA87D
+%A8FD0DFFA8FD057DA87D7D7DFD0EA8FD0AFFFD08A8527DFFFFFFA8FD13FF
+%7D7D7DA87D7DA87D7DFD0EA8FD0AFFFD08A8527DFFFFFF7DFD04FFA8A8A8
+%FD04FFA8FD05527D527D527D7DA87DA87DA87DA87DA87DA87DA87DA87DA8
+%7DA87DA87DA87DA8FD09FFA8FFFFA8A8A8FD07FFA87DA8FD04FFA8525252
+%7D527D52FD047DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8
+%7DA8FD09FFA8FFFFA87DA8FFFFFFA87DFFFF27F8FD0427FD0452FD0A7DA8
+%7DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A87D7DFF
+%FFA87DFD08FFA87DFFFF52F827F82727FD0452FD0A7DA8A8A87DA8A8A87D
+%A8A8A87DA8A8A87DA8A8A87DA8A8A87DA8A8A87D7D7DFFFFA87DFD04FFA8
+%7DA8FF7D27F8272752527D527D52A87DA87DA87DA87DA87DFD1BFF7DA8FF
+%FFA87DA8FD07FFA87DA8FF2727F82727FD04527D7DA87DA87DA87DA87DA8
+%7DFD1BFF7DA8FFFFA87DA8FFFFFFA87DFD05FFA87D525252FD067DFD1BA8
+%FD08FFA8FD0CFFA87DFD05FFA87D525252FD067DFD06A8FFFD14A8FD08FF
+%A8FD08FFA87DA8FD07FFA87D527D527D7DA8527D7DA87DA8A8A87DA87DA8
+%7DA87DA87DFD0AFFA87DA87DA87DA8277DFFFF7D7DA8FD07FFA8A8A8FD07
+%FF7D7D527D527D52A87D7D7DA87DA87DA87DA87DA87DA87DA8A8FD0AFFA8
+%7DA87DA87DA8277DFFFF7D7DA8FFFFFFA8A8FD0BFFA8A87DA87DA87D7DA8
+%A87DA8A8A87DFD04A8FFFFFF7DA8A8A87DA8A8A87DA8FD08FFA8FD0CFFA8
+%7DFD0BFF7DA87DA87DA87D7D7DA8A8A87DA8A8A87DA8A8FFFFFFA8A87DA8
+%A8A87DA8A8A8FD08FFA8FFFFFFA8FD04FF7DA8A8FD0DFF7DA852A87DA87D
+%A87DA87DA87DA8FFA87DA87DA87DA8FD07FFA87DA87DA87DA8277DFFFFA8
+%7DA8FD07FF7DA8A8FD0DFF7DA87DA87D7D7DA87DA87DA87DA8FFFF7DA87D
+%A87DA8A8FD05FFA8A87DA87DA87D7D27FFFFFFA87DA8FD16FFA8A87DFD06
+%A8FFFFFD05A8FFFFFFFD06A8FD09FFA8FFFFA8A8FD1BFFFD0AA8FFFD04A8
+%FD05FFFD06A8FD07FFA8FFFFFFA8A8FD1AFF7DA87DA87DA8A8A87DA8A8FF
+%A8A87DA87DA8FD04FFA8A87DA87DA87DA87DA8FFFF7DA87DFD1CFFA87DA8
+%A8A87DA8A8A87DA8A8FFA8A87DA87DA8FD05FFA87DA87DA87D7D7DFFFFFF
+%7D7D7DFD1CFF7DA8A8A87DA8FFFF7DA8A8A8FFFFFFA87DA8A8A8FD06FFA8
+%527DFD25FFFD07A8FFA8A87DA8FFFFFD04A87DA8FD06FF52A8FD25FF7DA8
+%A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8FFFFFFA8FD27FFA87DA8
+%A8A87DA8A8FFA8A87DA8A8FFFFFFA8A87DA87DA8A8A8FD29FFA8A8FFFFA8
+%A8A8FFFFFFFD04A8FD05FFA8A8527DFD2AFFA8A8A8FFFFA8A8A8FFFFFFA8
+%A8A8FD06FF527DFD2BFFA87DA8FFFF7DA87DFFFFFFA8A87DA8A8FD04FFA8
+%FD2DFFA87DA8FFFFA8A87DFFFFFFA8A87DA8A8FFA8FD2FFFA8A8A8FFFFA8
+%A87DA8FD04FFA8A87D7DA8FD30FFA87DA8FFFFFD04A8FD04FF527DFD32FF
+%A87DA8FFFFA8A87DA8FD04FF7D7DFD33FFA87DA8FFFFA8A87DA87DA8A8FD
+%35FFA8A8FD04FFA8A8A8FFFFA8FD36FFA8A8A8FFFFFF7DA8FD38FFA8A87D
+%A8FFFFFFA8277DFD38FFA8A87D527DFD3CFFA8A87DFFFFFF7DFD3BFF52FD
+%40FFA8A8277DFDFCFFFD79FFA8FD41FFA8FD3CFF7DFD40FFA87DFD26FF7D
+%FD14FFA8A8FD2BFF7DFD14FFA8A8FD27FF7DF8A8FD0FFFA87DA8FD2DFF7D
+%27A8FD0FFFA87DA8FD2BFFFD05A8FD07FFFD05A8FD32FFA87DA8A8FD07FF
+%A8A87DA8FD32FFA87DA87DA87DA87DA8FD3AFF7DA87DA87DA87DFDFCFFFD
+%FCFFFD22FFFF
+%%EndData
+%%EndComments
+%%BeginDefaults
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset Adobe_AGM_Core 2.0 0
+%%Version: 2.0 0
+%%Copyright: Copyright (C) 1997-1999 Adobe Systems, Inc.  All Rights Reserved.
+systemdict /setpacking known
+{
+	currentpacking
+	true setpacking
+} if
+userdict /Adobe_AGM_Core 233 dict dup begin put
+/nd{
+	null def
+}bind def
+/Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def
+/AGMCORE_str256 256 string def
+/AGMCORE_src256 256 string def
+/AGMCORE_dst64 64 string def
+/AGMCORE_srcLen nd
+/AGMCORE_save nd
+/AGMCORE_graphicsave nd
+/AGMCORE_imagestring0 nd
+/AGMCORE_imagestring1 nd
+/AGMCORE_imagestring2 nd
+/AGMCORE_imagestring3 nd
+/AGMCORE_imagestring4 nd
+/AGMCORE_imagestring5 nd
+/AGMCORE_c 0 def
+/AGMCORE_m 0 def
+/AGMCORE_y 0 def
+/AGMCORE_k 0 def
+/AGMCORE_mbuf () def
+/AGMCORE_ybuf () def
+/AGMCORE_kbuf () def
+/AGMCORE_gbuf () def
+/AGMCORE_bbuf () def
+/AGMCORE_cmykbuf 4 array def
+/AGMCORE_screen [currentscreen] cvx def
+/AGMCORE_tmp 0 def
+/AGMCORE_arg1 nd
+/AGMCORE_arg2 nd
+/AGMCORE_&setgray nd
+/AGMCORE_&image nd
+/AGMCORE_&colorimage nd
+/AGMCORE_&imagemask nd
+/AGMCORE_&setcolor nd
+/AGMCORE_&setcolorspace nd
+/AGMCORE_&&setcolorspace nd
+/AGMCORE_cyan_plate nd
+/AGMCORE_magenta_plate nd
+/AGMCORE_yellow_plate nd
+/AGMCORE_black_plate nd
+/AGMCORE_plate_ndx nd
+/AGMCORE_get_ink_data nd
+/AGMCORE_is_cmyk_sep nd
+/AGMCORE_in_rip_sep nd
+/AGMCORE_host_sep nd
+/AGMCORE_will_host_sep nd
+/AGMCORE_avoid_L2_sep_space nd
+/AGMCORE_composite_job nd
+/AGMCORE_producing_seps nd
+/AGMCORE_ccimage_exists nd
+/AGMCORE_ps_level -1 def
+/AGMCORE_ps_version -1 def
+/AGMCORE_environ_ok nd
+/AGMCORE_CSA_cache 0 dict def
+/AGMCORE_CSD_cache 0 dict def
+/AGMCORE_pattern_cache 0 dict def
+/AGMCORE_currentoverprint false def
+/AGMCORE_deltaX nd
+/AGMCORE_deltaY nd
+/AGMCORE_name nd
+/AGMCORE_sep_special nd
+/AGMCORE_ndx nd
+/AGMCORE_err_strings nd
+/AGMCORE_cur_err nd
+/AGMCORE_ovp nd
+/AGMCORE_CRD_cache where{
+	pop
+}{
+	/AGMCORE_CRD_cache 0 dict def
+}ifelse
+/bdf
+{
+	bind def
+} bind def
+/xdf
+{
+	exch def
+} def
+/ldf 
+{
+	load def
+} def
+/ddf
+{
+	put
+} def	
+/xddf
+{
+	3 -1 roll put
+} def	
+/xpt
+{
+	exch put
+} def
+	/bdict
+	{
+		mark
+	} def
+	
+	/edict
+	{
+		counttomark 2 idiv dup dict begin {def} repeat pop currentdict end
+	}def
+	
+/ps_level
+	/languagelevel where{
+		pop languagelevel
+	}{
+		1
+	}ifelse
+def
+/level2 
+	ps_level 2 ge
+def
+/level3 
+	ps_level 3 ge
+def
+/ps_version
+	{version cvr} stopped {
+		-1
+	}if
+def
+/ndf
+{
+	1 index where{
+		pop pop pop
+	}{
+		dup xcheck
+		{bind}if
+		def
+	}ifelse
+} def
+/skip_image
+{
+	has_color ne{
+		dup 256 idiv
+		{currentfile AGMCORE_str256 readstring pop pop}repeat
+		currentfile AGMCORE_str256 0 4 -1 roll 256 mod getinterval
+		readstring pop pop
+	}{
+		pop
+	}ifelse
+} def
+/addprocs
+{
+     2{/exec load}repeat
+     3 1 roll
+     [ 5 1 roll ] bind cvx
+} def
+/colorbuf
+{
+	0 1 2 index length 1 sub
+		{
+		dup 2 index exch get 
+		255 exch sub 
+		2 index 
+		3 1 roll 
+		put
+		} for
+} def
+/makereadonlyarray
+{
+	/packedarray where
+		{pop packedarray}
+		{array astore readonly}
+	ifelse
+} def
+/getspotfunction
+{
+	AGMCORE_screen exch pop exch pop
+	dup type /dicttype eq 
+	{
+		dup /HalftoneType get 1 eq
+			{
+			/SpotFunction get
+			}
+			{
+			dup /HalftoneType get 2 eq
+				{
+				/GraySpotFunction get
+				}
+				{
+				pop
+				{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub}
+				{dup mul exch dup mul add 1 exch sub}ifelse}bind
+				}
+			ifelse
+			}
+		ifelse
+	}
+	if
+} def
+/clp_npth
+{
+	clip newpath
+} def
+/eoclp_npth
+{
+	eoclip newpath
+} def
+/stkpath_clp_npth
+{
+	strokepath clip newpath
+} def
+/stk_n_clp_npth
+{
+	gsave stroke grestore clip newpath
+} def
+/npth_clp
+{
+	newpath clip
+} def
+/graphic_setup
+{
+	/AGMCORE_graphicsave save def
+	concat
+	0 setgray
+	0 setlinecap
+	0 setlinejoin
+	1 setlinewidth
+	[] 0 setdash
+	10 setmiterlimit
+	newpath
+	false setoverprint
+	false setstrokeadjust
+	userdict begin
+	/showpage {} def
+	mark
+} def
+/graphic_cleanup
+{
+	cleartomark
+	end
+	AGMCORE_graphicsave restore
+} def
+/compose_error_msg
+{
+	grestoreall initgraphics	
+	/Helvetica findfont 10 scalefont setfont
+	
+	/AGMCORE_deltaY 100 def
+	/AGMCORE_deltaX 310 def
+			
+	/AGMCORE_arg2 xdf
+	/AGMCORE_arg1 xdf
+	
+	clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto
+	0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto
+	0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath
+	0 AGMCORE_&setgray
+	gsave 1 AGMCORE_&setgray fill grestore 
+	1 setlinewidth gsave stroke grestore
+		
+	currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto
+	
+	/AGMCORE_deltaY 12 def
+	/AGMCORE_tmp 0 def
+	AGMCORE_err_strings exch get
+		{
+		dup 32 eq
+			{
+			pop
+			AGMCORE_str256 0 AGMCORE_tmp getinterval
+			dup (.) ne AGMCORE_arg1 0 lt and
+				{
+				pop
+				}
+				{
+				stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+					{
+					currentpoint AGMCORE_deltaY sub exch pop
+					clippath pathbbox pop pop pop 44 add exch moveto
+					} if
+				AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show
+				} ifelse
+			
+			0 1 AGMCORE_str256 length 1 sub
+				{
+				AGMCORE_str256 exch 0 put
+				}for
+			/AGMCORE_tmp 0 def
+			}
+			{
+			dup 94 eq 
+				{
+				pop
+				AGMCORE_arg1 0 ge
+					{
+					AGMCORE_arg1 AGMCORE_str256 cvs
+					dup /AGMCORE_tmp exch length def
+					AGMCORE_str256 exch 0 exch putinterval
+					AGMCORE_str256 0 AGMCORE_tmp getinterval
+					stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt
+						{
+						currentpoint AGMCORE_deltaY sub exch pop
+						clippath pathbbox pop pop pop 44 add exch moveto
+						} if
+					AGMCORE_str256 0 AGMCORE_tmp getinterval show
+					}
+					{
+					/AGMCORE_arg1 0 def
+					} ifelse
+				0 1 AGMCORE_str256 length 1 sub
+					{
+					AGMCORE_str256 exch 0 put
+					}for
+				/AGMCORE_tmp 0 def
+				AGMCORE_arg1 0 ne
+					{
+					/AGMCORE_arg1 AGMCORE_arg2 def
+					} if
+				}
+				{
+				AGMCORE_str256 exch AGMCORE_tmp exch put
+				/AGMCORE_tmp AGMCORE_tmp 1 add def
+				}ifelse
+			} ifelse
+		} forall
+} bdf
+level2{
+	/AGMCORE_map_reserved_ink_name
+	{
+		dup type /stringtype eq{
+			dup /Red eq{
+				pop (_Red_)
+			}{
+				dup /Green eq{
+					pop (_Green_)
+				}{
+					dup /Blue eq{
+						pop (_Blue_)
+					}{
+						dup /Cyan eq{
+							pop (_Cyan_)
+						}{
+							dup /Magenta eq{
+								pop (_Magenta_)
+							}{
+								dup /Yellow eq{
+									pop (_Yellow_)
+								}{
+									dup /Black eq{
+										pop (_Black_)
+									}{
+										dup / eq{
+											pop (Process)
+										}if
+									}ifelse
+								}ifelse
+							}ifelse
+						}ifelse
+					}ifelse
+				}ifelse
+			}ifelse
+		}if
+	}def
+}if
+/doc_setup{
+	Adobe_AGM_Core begin
+	
+	/AGMCORE_will_host_separate xdf
+	/AGMCORE_ps_version xdf
+	/AGMCORE_ps_level xdf
+	
+	errordict /AGM_handleerror known not
+		{
+		errordict /AGM_handleerror errordict /handleerror get put
+		errordict /handleerror
+			{
+			Adobe_AGM_Core begin
+			$error /newerror get AGMCORE_cur_err null ne and {
+				$error /newerror false put
+				AGMCORE_cur_err /AGMCORE_bad_environ eq
+					{
+					/AGMCORE_bad_environ AGMCORE_ps_level AGMCORE_ps_version
+					}
+					{
+					AGMCORE_cur_err 0 0
+					} ifelse
+				compose_error_msg
+				} if
+			$error /newerror true put
+			end
+			errordict /AGM_handleerror get exec
+			} bind put
+		}if
+	/AGMCORE_environ_ok 
+		ps_level AGMCORE_ps_level ge
+		ps_version AGMCORE_ps_version ge and 
+		AGMCORE_ps_level -1 eq or
+	def
+	
+	AGMCORE_environ_ok not
+		{/AGMCORE_cur_err /AGMCORE_bad_environ def} if
+	
+	/AGMCORE_&setgray systemdict/setgray get def
+	level2{
+		/AGMCORE_&setcolor systemdict/setcolor get def
+		/AGMCORE_&setcolorspace systemdict/setcolorspace get def
+		/AGMCORE_&&setcolorspace /setcolorspace ldf
+	}if
+	/AGMCORE_&image systemdict/image get def
+	/AGMCORE_&imagemask systemdict/imagemask get def
+	/colorimage where{
+		pop
+		/AGMCORE_&colorimage /colorimage ldf
+	}if
+	/AGMCORE_in_rip_sep
+		level2{
+			currentpagedevice/Separations 2 copy known{
+				get
+			}{
+				pop pop false
+			}ifelse
+		}{
+			false
+		}ifelse
+	def
+	level2 not{
+		/xput{
+			dup load dup length exch maxlength eq{
+				dup dup load dup
+				length dup 0 eq {pop 1} if 2 mul dict copy def
+			}if
+			load begin
+				def
+ 			end
+		}def
+	}{
+		/xput{
+			load 3 1 roll put
+		}def
+	}ifelse
+	/AGMCORE_gstate_known{
+		where{
+			/Adobe_AGM_Core_Id known
+		}{
+			false
+		}ifelse
+	}ndf
+	/AGMCORE_GSTATE AGMCORE_gstate_known not{
+		/AGMCORE_GSTATE 21 dict def
+		/AGMCORE_tmpmatrix matrix def
+		/AGMCORE_gstack 32 array def
+		/AGMCORE_gstackptr 0 def
+		/AGMCORE_gstacksaveptr 0 def
+		/AGMCORE_gstackframekeys 7 def
+		/AGMCORE_&gsave /gsave ldf
+		/AGMCORE_&grestore /grestore ldf
+		/AGMCORE_&grestoreall /grestoreall ldf
+		/AGMCORE_&save /save ldf
+		/AGMCORE_gdictcopy {
+			begin
+			{ def } forall
+			end
+		}def
+		/AGMCORE_gput {
+			AGMCORE_gstack AGMCORE_gstackptr get
+			3 1 roll
+			put
+		}def
+		/AGMCORE_gget {
+			AGMCORE_gstack AGMCORE_gstackptr get
+			exch
+			get
+		}def
+		/gsave {
+			AGMCORE_&gsave
+			AGMCORE_gstack AGMCORE_gstackptr get
+			AGMCORE_gstackptr 1 add
+			dup 32 ge {limitcheck} if
+			Adobe_AGM_Core exch
+			/AGMCORE_gstackptr exch put
+			AGMCORE_gstack AGMCORE_gstackptr get
+			AGMCORE_gdictcopy
+		}def
+		/grestore {
+			AGMCORE_&grestore
+			AGMCORE_gstackptr 1 sub
+			dup AGMCORE_gstacksaveptr lt {1 add} if
+			Adobe_AGM_Core exch
+			/AGMCORE_gstackptr exch put
+		}def
+		/grestoreall {
+			AGMCORE_&grestoreall
+			Adobe_AGM_Core
+			/AGMCORE_gstackptr AGMCORE_gstacksaveptr put 
+		}def
+		/save {
+			AGMCORE_&save
+			AGMCORE_gstack AGMCORE_gstackptr get
+			AGMCORE_gstackptr 1 add
+			dup 32 ge {limitcheck} if
+			Adobe_AGM_Core begin
+				/AGMCORE_gstackptr exch def
+				/AGMCORE_gstacksaveptr AGMCORE_gstackptr def
+			end
+			AGMCORE_gstack AGMCORE_gstackptr get
+			AGMCORE_gdictcopy
+		}def
+		0 1 AGMCORE_gstack length 1 sub {
+				AGMCORE_gstack exch AGMCORE_gstackframekeys dict put
+		} for
+	}if
+	/currentcmykcolor [0 0 0 0] AGMCORE_gput
+	/currentstrokeadjust false AGMCORE_gput
+	/currentcolorspace [/DeviceGray] AGMCORE_gput
+	/sep_tint 0 AGMCORE_gput
+	/sep_colorspace_dict null AGMCORE_gput
+	/indexed_colorspace_dict null AGMCORE_gput
+	/currentcolor_intent () AGMCORE_gput
+	end
+}def
+/page_setup
+{
+	Adobe_AGM_Core begin
+	/setcmykcolor
+	{
+		4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput
+		1 sub 4 1 roll
+		3 {
+			3 index add neg dup 0 lt {
+				pop 0
+			} if
+			3 1 roll
+		} repeat
+		setrgbcolor pop
+	}ndf
+	/AGMCORE_ccimage_exists /customcolorimage where {pop true}{false} ifelse def
+	/currentcmykcolor
+	{
+		/currentcmykcolor AGMCORE_gget aload pop
+	}ndf
+	/setoverprint
+	{
+		pop
+	}ndf
+	/currentoverprint
+	{
+		false
+	}ndf
+	/AGMCORE_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
+	/AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def
+	/AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def
+	/AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def
+	/AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def
+	/AGMCORE_plate_ndx 
+		AGMCORE_cyan_plate{ 
+			0
+		}{
+			AGMCORE_magenta_plate{
+				1
+			}{
+				AGMCORE_yellow_plate{
+					2
+				}{
+					AGMCORE_black_plate{
+						3
+					}{
+						4
+					}ifelse
+				}ifelse
+			}ifelse
+		}ifelse
+		def
+	/AGMCORE_composite_job
+		AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def
+	
+	/AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def
+	
+	/AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def
+	
+	/AGM_preserve_spots 
+		/AGM_preserve_spots where{
+			pop AGM_preserve_spots
+		}{
+			systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and AGMCORE_producing_seps or
+		}ifelse
+	def
+	
+	AGMCORE_host_sep AGMCORE_will_host_separate not and {
+		/AGMCORE_cur_err /AGMCORE_color_space_onhost_seps def
+		AGMCORE_color_space_onhost_seps
+	}if
+	/AGMCORE_avoid_L2_sep_space  
+		version cvr 2012 lt 
+		level2 and 
+		AGMCORE_producing_seps not and
+	def
+	/AGMCORE_is_cmyk_sep
+		AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or
+	def
+	/AGM_avoid_0_cmyk where{
+		pop AGM_avoid_0_cmyk
+	}{
+		AGM_preserve_spots
+	}ifelse
+	{
+		/setcmykcolor[
+			{4 copy add add add 0 eq currentoverprint and{pop 0.0005}if}/exec cvx
+			/setcmykcolor load dup type/operatortype ne{/exec cvx}if
+		]cvx def
+	}if
+	AGMCORE_host_sep{
+		/AGMCORE_get_ink_data
+			AGMCORE_cyan_plate{
+				{pop pop pop}
+			}{
+			  	AGMCORE_magenta_plate{
+			  		{4 3 roll pop pop pop}
+			  	}{
+			  		AGMCORE_yellow_plate{
+			  			{4 2 roll pop pop pop}
+			  		}{
+			  			{4 1 roll pop pop pop}
+			  		}ifelse
+			  	}ifelse
+			}ifelse
+		def
+	}if
+	AGMCORE_in_rip_sep{
+		/setcustomcolor
+		{
+			exch aload pop
+			dup 7 1 roll inRip_spot_has_ink not	{ 
+				4 {4 index mul 4 1 roll}
+				repeat
+				/DeviceCMYK setcolorspace
+				6 -2 roll pop pop
+			}{ 
+				Adobe_AGM_Core begin
+					/AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf
+				end
+				[/Separation 4 -1 roll /DeviceCMYK
+				{dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul}
+				]
+				setcolorspace
+			}ifelse
+			setcolor
+		}ndf
+		/setseparationgray
+		{
+			[/Separation (All) /DeviceGray {}] setcolorspace_opt
+			1 exch sub setcolor
+		}ndf
+	}{
+		/setseparationgray
+		{
+			AGMCORE_&setgray
+		}ndf
+	}ifelse
+	/findcmykcustomcolor
+	{
+		5 makereadonlyarray
+	}ndf
+	/setcustomcolor
+	{
+		exch aload pop pop
+		4 {4 index mul 4 1 roll} repeat
+		setcmykcolor pop
+	}ndf
+	
+	/has_color
+		/colorimage where{
+			AGMCORE_producing_seps{
+				pop true
+			}{
+				systemdict eq
+			}ifelse
+		}{
+			false
+		}ifelse
+	def
+	
+	/map_index
+	{
+		1 index mul exch getinterval {255 div} forall
+	}def
+	
+	level2{
+		/mo /moveto ldf
+		/ln /lineto ldf
+		/cv /curveto ldf
+		/knockout_unitsq
+		{
+			1 setgray
+			0 0 1 1 rectfill
+		}def
+		/level2ScreenFreq{
+			begin
+			60
+			HalftoneType 1 eq{
+				pop Frequency
+			}if
+			HalftoneType 2 eq{
+				pop GrayFrequency
+			}if
+			HalftoneType 5 eq{
+				pop Default level2ScreenFreq
+			}if
+			 end
+		}def
+		/currentScreenFreq{
+			currenthalftone level2ScreenFreq
+		}def
+		/invert_image_samples
+		{
+			Adobe_AGM_Core/AGMCORE_tmp Decode length ddf
+			/Decode [ Decode 1 get Decode 0 get] def
+		}def
+		/knockout_image_samples
+		{
+			Operator/imagemask ne{
+				/Decode [1 1] def
+			}if
+		}def
+		/get_gstate
+		{
+			AGMCORE_GSTATE begin
+			/AGMCORE_GSTATE_ctm AGMCORE_tmpmatrix currentmatrix def
+			/AGMCORE_GSTATE_clr_spc currentcolorspace def
+			/AGMCORE_GSTATE_clr_indx 0 def
+			/AGMCORE_GSTATE_clr_comps 12 array def
+			mark currentcolor counttomark
+				{AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 3 -1 roll put
+				/AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 add def} repeat pop
+			/AGMCORE_GSTATE_fnt rootfont def
+			/AGMCORE_GSTATE_lw currentlinewidth def
+			/AGMCORE_GSTATE_lc currentlinecap def
+			/AGMCORE_GSTATE_lj currentlinejoin def
+			/AGMCORE_GSTATE_ml currentmiterlimit def
+			currentdash /AGMCORE_GSTATE_do xdf /AGMCORE_GSTATE_da xdf
+			/AGMCORE_GSTATE_sa currentstrokeadjust def
+			
+			/AGMCORE_GSTATE_clr_rnd currentcolorrendering def
+			/AGMCORE_GSTATE_op currentoverprint def
+			/AGMCORE_GSTATE_bg currentblackgeneration cvlit def
+			/AGMCORE_GSTATE_ucr currentundercolorremoval cvlit def
+			currentcolortransfer 
+				cvlit /AGMCORE_GSTATE_gy_xfer xdf 
+				cvlit /AGMCORE_GSTATE_b_xfer xdf
+				cvlit /AGMCORE_GSTATE_g_xfer xdf 
+				cvlit /AGMCORE_GSTATE_r_xfer xdf
+			/AGMCORE_GSTATE_ht currenthalftone def
+			/AGMCORE_GSTATE_flt currentflat def
+			end
+		}ndf
+		
+		/set_gstate
+		{
+			AGMCORE_GSTATE begin
+			AGMCORE_GSTATE_ctm setmatrix
+			AGMCORE_GSTATE_clr_spc setcolorspace
+			AGMCORE_GSTATE_clr_indx {AGMCORE_GSTATE_clr_comps AGMCORE_GSTATE_clr_indx 1 sub get
+			/AGMCORE_GSTATE_clr_indx AGMCORE_GSTATE_clr_indx 1 sub def} repeat setcolor
+			AGMCORE_GSTATE_fnt setfont
+			AGMCORE_GSTATE_lw setlinewidth
+			AGMCORE_GSTATE_lc setlinecap
+			AGMCORE_GSTATE_lj setlinejoin
+			AGMCORE_GSTATE_ml setmiterlimit
+			AGMCORE_GSTATE_da AGMCORE_GSTATE_do setdash
+			AGMCORE_GSTATE_sa setstrokeadjust
+			
+			AGMCORE_GSTATE_clr_rnd setcolorrendering
+			AGMCORE_GSTATE_op setoverprint
+			AGMCORE_GSTATE_bg cvx setblackgeneration
+			AGMCORE_GSTATE_ucr cvx setundercolorremoval
+			AGMCORE_GSTATE_r_xfer cvx AGMCORE_GSTATE_g_xfer cvx AGMCORE_GSTATE_b_xfer cvx
+				AGMCORE_GSTATE_gy_xfer cvx setcolortransfer
+			AGMCORE_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or
+				{
+				currenthalftone /HalftoneType get AGMCORE_GSTATE_ht /HalftoneType get ne
+					{
+					  mark AGMCORE_GSTATE_ht {sethalftone} stopped cleartomark
+					} if
+				}{
+				AGMCORE_GSTATE_ht sethalftone
+				} ifelse
+			AGMCORE_GSTATE_flt setflat
+			end
+		}ndf
+		AGMCORE_producing_seps not{
+	
+			/setcolorspace where{
+				/Adobe_AGM_Core_Id known not
+			}{
+				true
+			}ifelse
+			{
+				/setcolorspace
+				{
+					dup type dup /arraytype eq exch /packedarraytype eq or{
+						dup 0 get dup /Separation eq{
+							pop
+							[ exch {} forall ]
+							dup dup 1 get AGMCORE_map_reserved_ink_name 1 exch put
+						}{
+							/DeviceN eq {
+								[ exch {} forall ]
+								dup dup 1 get [ exch {AGMCORE_map_reserved_ink_name} forall ] 1 exch put
+							}if
+						}ifelse
+					}if
+					AGMCORE_&&setcolorspace 
+				}def
+			}if
+		}if	
+	}{
+		
+		/adj
+		{
+			currentstrokeadjust{
+				transform
+				0.25 sub round 0.25 add exch
+				0.25 sub round 0.25 add exch
+				itransform
+			}if
+		}def
+		/mo{
+			adj moveto
+		}def
+		/ln{
+			adj lineto
+		}def
+		/cv{
+			6 2 roll adj
+			6 2 roll adj
+			6 2 roll adj curveto
+		}def
+		/knockout_unitsq
+		{
+			1 setgray
+			8 8 1 [8 0 0 8 0 0] {<ffffffffffffffff>} image
+		}def
+		/currentstrokeadjust{
+			/currentstrokeadjust AGMCORE_gget
+		}def
+		/setstrokeadjust{
+			/currentstrokeadjust exch AGMCORE_gput
+		}def
+		/currentScreenFreq{
+			currentscreen pop pop
+		}def
+		/invert_image_samples
+		{
+			{1 exch sub} currenttransfer addprocs settransfer
+		}def
+		/knockout_image_samples
+		{
+			{ pop 1 } currenttransfer addprocs settransfer
+		}def
+		/setcolorspace
+		{
+			/currentcolorspace exch AGMCORE_gput
+		} def
+		
+		/currentcolorspace
+		{
+			/currentcolorspace AGMCORE_gget
+		} def
+		
+		/n_color_components
+		{
+			dup type /arraytype eq{
+				0 get
+			}if
+			dup /DeviceGray eq{
+				pop 1
+			}{
+				/DeviceCMYK eq{
+					4
+				}{
+					3
+				}ifelse
+			}ifelse
+		} def
+		
+		/setcolor_devicecolor
+		{
+			dup type /arraytype eq{
+				0 get
+			}if
+			dup /DeviceGray eq{
+				pop setgray
+			}{
+				/DeviceCMYK eq{
+					setcmykcolor
+				}{
+					setrgbcolor
+				}ifelse
+			}ifelse
+		}def
+	
+		/setcolor
+		{
+			currentcolorspace 0 get
+			dup /DeviceGray ne{
+				dup /DeviceCMYK ne{
+					dup /DeviceRGB ne{
+						dup /Separation eq{
+							pop
+							currentcolorspace 3 get exec
+							currentcolorspace 2 get
+						}{
+							dup /Indexed eq{
+								pop
+								currentcolorspace 3 get dup type /stringtype eq{
+									currentcolorspace 1 get n_color_components
+									3 -1 roll map_index
+								}{
+									exec
+								}ifelse
+								currentcolorspace 1 get
+							}{
+								/AGMCORE_cur_err /AGMCORE_invalid_color_space def
+								AGMCORE_invalid_color_space
+							}ifelse
+						}ifelse
+					}if
+				}if
+			}if
+			setcolor_devicecolor
+		} def
+	}ifelse
+	
+	/op /setoverprint ldf
+	/lw /setlinewidth ldf
+	/lc /setlinecap ldf
+	/lj /setlinejoin ldf
+	/ml /setmiterlimit ldf
+	/dsh /setdash ldf
+	/sadj /setstrokeadjust ldf
+	/gry /setgray ldf
+	/rgb /setrgbcolor ldf
+	/cmyk /setcmykcolor ldf
+	/sep /setsepcolor ldf
+	/idx /setindexedcolor ldf
+	/colr /setcolor ldf
+	/csacrd /set_csa_crd ldf
+	/sepcs /setsepcolorspace ldf
+	/idxcs /setindexedcolorspace ldf
+	/cp /closepath ldf
+	/clp /clp_npth ldf
+	/eclp /eoclp_npth ldf
+	/spclp /stkpath_clp_npth ldf
+	/f /fill ldf
+	/ef /eofill ldf
+	/s /stroke ldf
+	/sclp /stk_n_clp_npth ldf
+	/nclp /npth_clp ldf
+	/img /imageormask ldf
+	/sepimg /sep_imageormask ldf
+	/idximg /indexed_imageormask ldf
+	/gset /graphic_setup ldf
+	/gcln /graphic_cleanup ldf
+	
+	currentdict{
+		dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and {
+			bind
+		}if
+		def
+	}forall
+}def
+/page_trailer
+{
+	end
+}def
+/unload{
+	systemdict/languagelevel known{
+		systemdict/languagelevel get 2 ge{
+			userdict/Adobe_AGM_Core 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+		}if
+	}if
+}def
+/doc_trailer{
+}def
+systemdict /findcolorrendering known{
+	/findcolorrendering systemdict /findcolorrendering get def
+}if
+systemdict /setcolorrendering known{
+	/setcolorrendering systemdict /setcolorrendering get def
+}if
+/test_cmyk_color_plate
+{
+	gsave
+	setcmykcolor currentgray 1 ne
+	grestore
+}def
+/inRip_spot_has_ink
+{
+	Adobe_AGM_Core/AGMCORE_name xddf
+	false
+	currentpagedevice/SeparationColorNames get{
+		AGMCORE_name eq or
+	}forall
+}def
+/current_ink
+{
+	dup length 0 eq{
+		pop true
+	}{
+		Adobe_AGM_Core/ink_result false put
+		{
+			dup /ProcessCyan eq{
+				AGMCORE_cyan_plate ink_result or Adobe_AGM_Core/ink_result xddf
+			}{
+				dup /ProcessMagenta eq{
+					AGMCORE_magenta_plate ink_result or Adobe_AGM_Core/ink_result xddf
+				}{
+					dup /ProcessYellow eq{
+						AGMCORE_yellow_plate ink_result or Adobe_AGM_Core/ink_result xddf
+					}{
+						dup /ProcessBlack eq{
+							AGMCORE_black_plate ink_result or Adobe_AGM_Core/ink_result xddf
+						}{
+							dup /sep_colorspace_dict AGMCORE_gget dup null eq{
+								pop false ink_result or Adobe_AGM_Core/ink_result xddf
+							}{
+								/Name get eq{
+									1 setsepcolor
+									currentgray 1 ne ink_result or Adobe_AGM_Core/ink_result xddf
+								}{
+									false ink_result or Adobe_AGM_Core/ink_result xddf
+								}ifelse
+							}ifelse
+						}ifelse
+					}ifelse
+				}ifelse
+			}ifelse
+			pop 
+		} forall
+		ink_result
+	}ifelse
+}def
+/map255_to_range
+{
+	1 index sub
+	3 -1 roll 255 div mul add
+}def
+/set_csa_crd
+{
+	/sep_colorspace_dict null AGMCORE_gput
+	begin
+		CSA map_csa setcolorspace_opt
+		set_crd
+	end
+}
+def
+/setsepcolor
+{ 
+	
+	/sep_colorspace_dict AGMCORE_gget begin
+		dup /sep_tint exch AGMCORE_gput
+		TintProc
+	end
+} def
+/sep_colorspace_proc
+{
+	Adobe_AGM_Core/AGMCORE_tmp xddf
+	/sep_colorspace_dict AGMCORE_gget begin
+	currentdict/Components known{
+		Components aload pop 
+		TintMethod/Lab eq{
+			2 {AGMCORE_tmp mul NComponents 1 roll} repeat
+			LMax sub AGMCORE_tmp mul LMax add  NComponents 1 roll
+		}{
+			TintMethod/Subtractive eq{
+				NComponents{
+					AGMCORE_tmp mul NComponents 1 roll
+				}repeat
+			}{
+				NComponents{
+					1 sub AGMCORE_tmp mul 1 add  NComponents 1 roll
+				} repeat
+			}ifelse
+		}ifelse
+	}{
+		ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get
+		aload pop
+	}ifelse
+	end
+} def
+/sep_colorspace_gray_proc
+{
+	Adobe_AGM_Core/AGMCORE_tmp xddf
+	/sep_colorspace_dict AGMCORE_gget begin
+	GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get
+	end
+} def
+/sep_proc_name
+{
+	dup 0 get 
+	dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{
+		pop [/DeviceGray]
+		/sep_colorspace_gray_proc
+	}{
+		/sep_colorspace_proc
+	}ifelse
+} def
+/setsepcolorspace
+{ 
+	dup /sep_colorspace_dict exch AGMCORE_gput
+	begin
+	/MappedCSA CSA map_csa def
+	Adobe_AGM_Core/AGMCORE_sep_special Name dup () eq exch (All) eq or ddf
+	
+	AGMCORE_avoid_L2_sep_space{
+		[/Indexed MappedCSA sep_proc_name 255 exch 
+			{ 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx 
+		] setcolorspace_opt
+		/TintProc {
+			255 mul setcolor
+		}bdf
+	}{
+		MappedCSA 0 get /DeviceCMYK eq 
+		currentdict/Components known and 
+		AGMCORE_sep_special not and{
+			/TintProc [
+				Components aload pop Name findcmykcustomcolor 
+				/exch cvx /setcustomcolor cvx
+			] cvx bdf
+		}{
+ 			AGMCORE_host_sep Name (All) eq and{
+ 				/TintProc { 
+					1 exch sub setseparationgray 
+				}bdf
+ 			}{
+				AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and 
+				AGMCORE_host_sep or
+				Name () eq and{
+					/TintProc [
+						MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{
+							cvx /setcmykcolor cvx
+						}{
+							cvx /setgray cvx
+						}ifelse
+					] cvx bdf
+				}{
+					AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{
+	 					/TintProc [
+							/dup cvx
+							MappedCSA sep_proc_name cvx exch
+							0 get /DeviceGray eq{
+								1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx
+							}if
+							/Name cvx /findcmykcustomcolor cvx /exch cvx
+							
+							AGMCORE_host_sep{
+								AGMCORE_is_cmyk_sep
+							}{
+								Name inRip_spot_has_ink not
+							}ifelse
+							{
+		 						/pop cvx 1
+							}if
+							/setcustomcolor cvx
+						] cvx bdf
+ 					}{ 
+						/TintProc /setcolor ldf
+						
+						[/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt
+					}ifelse
+				}ifelse
+			}ifelse
+		}ifelse
+	}ifelse
+	set_crd
+	1 setsepcolor
+	end
+} def
+/setindexedcolorspace
+{
+	dup /indexed_colorspace_dict exch AGMCORE_gput
+	begin
+		/MappedCSA CSA map_csa def
+		AGMCORE_host_sep level2 not and{
+			0 0 0 0 setcmykcolor
+		}{
+			[/Indexed MappedCSA 
+			level2 not has_color not and{
+				dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{
+					pop [/DeviceGray]
+				}if
+				HiVal GrayLookup
+			}{
+				HiVal 
+				currentdict/RangeArray known{
+					{ 
+						/indexed_colorspace_dict AGMCORE_gget begin
+						Lookup exch 
+						dup HiVal gt{
+							pop HiVal
+						}if
+						NComponents mul NComponents getinterval {} forall
+						NComponents 1 sub -1 0{
+							RangeArray exch 2 mul 2 getinterval aload pop map255_to_range
+							NComponents 1 roll
+						}for
+						end
+					} bind
+				}{
+					Lookup
+				}ifelse
+			}ifelse
+			] setcolorspace_opt
+			
+			set_crd
+		}ifelse
+	end
+}def
+/setindexedcolor
+{
+	AGMCORE_host_sep{
+		/indexed_colorspace_dict AGMCORE_gget/Lookup get 4 3 -1 roll map_index setcmykcolor
+	}{
+		setcolor
+	}ifelse
+} def
+/imageormask_sys
+{
+	begin
+		save mark
+		level2{
+			currentdict
+			Operator /imagemask eq{
+				AGMCORE_&imagemask
+			}{
+				AGMCORE_&image
+			}ifelse
+		}{
+			Width Height
+			Operator /imagemask eq{
+				Decode 0 get 1 eq Decode 1 get 0 eq	and
+				ImageMatrix /DataSource load
+				AGMCORE_&imagemask
+			}{
+				BitsPerComponent ImageMatrix /DataSource load
+				AGMCORE_&image
+			}ifelse
+		}ifelse
+		cleartomark restore
+	end
+}def
+/overprint_plate
+{
+	currentoverprint{
+		0 get
+		dup /DeviceGray eq{
+			pop AGMCORE_black_plate not
+		}{
+			/DeviceCMYK eq{
+				AGMCORE_is_cmyk_sep not
+			}if
+		}ifelse
+	}{
+		false
+	}ifelse
+}def
+/rdline {
+	currentfile AGMCORE_str256 readline pop
+} def
+/rdcmntline {
+	currentfile AGMCORE_str256 readline pop
+	(%) anchorsearch {pop} if
+} def
+/filter_cmyk
+{	
+	dup type /filetype ne{
+		0 () /SubFileDecode filter
+	}if
+	[
+	exch
+	{
+		AGMCORE_src256 readstring pop
+		dup length /AGMCORE_srcLen exch def
+		/AGMCORE_ndx 0 def
+		
+		AGMCORE_plate_ndx 4 AGMCORE_srcLen 1 sub{
+			1 index exch get
+			AGMCORE_dst64 AGMCORE_ndx 3 -1 roll put
+			/AGMCORE_ndx AGMCORE_ndx 1 add def
+		}for
+		pop
+		AGMCORE_dst64 0 AGMCORE_ndx getinterval
+	}
+	bind
+	/exec cvx
+	] cvx
+} def
+/imageormask
+{
+	begin
+		SkipImageProc not{
+			save mark
+			level2 AGMCORE_host_sep not and{
+				currentdict
+				Operator /imagemask eq{
+					imagemask
+				}{
+					AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{
+						[/Separation /Black /DeviceGray {}] setcolorspace
+						/Decode [ Decode 1 get Decode 0 get ] def
+					}if
+					image
+				}ifelse
+			}{
+				Width Height
+				Operator /imagemask eq{
+					Decode 0 get 1 eq Decode 1 get 0 eq	and
+					ImageMatrix /DataSource load
+					AGMCORE_host_sep{
+						currentgray 1 ne{
+							currentdict imageormask_sys
+						}{
+	 						currentoverprint not{
+			 					1 AGMCORE_&setgray
+	 							knockout_image_samples
+			 					currentdict imageormask_sys
+			 				}{
+			 					nulldevice currentdict imageormask_sys
+			 				}ifelse
+				 		}ifelse
+					}{
+						imagemask
+					}ifelse
+				}{
+					BitsPerComponent ImageMatrix 
+					MultipleDataSources{
+						0 1 NComponents 1 sub{
+							DataSource exch get
+						}for
+					}{
+						/DataSource load
+					}ifelse
+					Operator /colorimage eq{
+						AGMCORE_host_sep{
+							MultipleDataSources level2 or NComponents 4 eq and{
+								MultipleDataSources{
+									4 {pop} repeat
+									/DataSource [
+										DataSource 0 get /exec cvx
+										DataSource 1 get /exec cvx
+										DataSource 2 get /exec cvx
+										DataSource 3 get /exec cvx
+										/AGMCORE_get_ink_data cvx
+									] cvx def
+								}{
+									/DataSource /DataSource load filter_cmyk 0 () /SubFileDecode filter def
+								}ifelse
+	
+								/Decode [ Decode 0 get Decode 1 get ] def
+								/MultipleDataSources false def
+								/NComponents 1 def
+								/Operator /image def
+								AGMCORE_is_cmyk_sep{
+									currentoverprint InksUsed current_ink not and{
+										nulldevice
+									}{
+										invert_image_samples
+									}ifelse
+								}{
+		 							currentoverprint not{
+		 								knockout_image_samples
+				 					}{
+				 						nulldevice
+				 					}ifelse
+					 			}ifelse
+						 		1 AGMCORE_&setgray
+								currentdict imageormask_sys
+							}{
+									
+								currentcolortransfer
+								{pop 1} exch addprocs 4 1 roll				
+								{pop 1} exch addprocs 4 1 roll
+								{pop 1} exch addprocs 4 1 roll
+								{pop 1} exch addprocs 4 1 roll
+								setcolortransfer
+									
+								MultipleDataSources NComponents AGMCORE_&colorimage						
+							}ifelse
+						}{
+							true NComponents colorimage
+						}ifelse
+					}{
+						Operator /image eq{
+							AGMCORE_host_sep{
+								HostSepColorImage{
+									invert_image_samples
+								}{
+									AGMCORE_black_plate not{
+		 								currentoverprint not{
+		 									knockout_image_samples
+				 						}{
+				 							nulldevice
+				 						}ifelse
+					 				}if
+								}ifelse
+						 		1 AGMCORE_&setgray
+								currentdict imageormask_sys
+							}{
+								image
+							}ifelse
+						}{
+							Operator/knockout eq{
+								pop pop pop pop pop
+								currentoverprint InksUsed current_ink not and{
+								}{
+									currentcolorspace overprint_plate not{
+										knockout_unitsq
+									}if
+								}ifelse
+							}if
+						}ifelse
+					}ifelse
+				}ifelse
+			}ifelse
+			cleartomark restore
+		}if
+	end
+}def
+/tint_image_to_color
+{
+	begin
+		Width Height BitsPerComponent ImageMatrix 
+		/DataSource load
+	end
+	Adobe_AGM_Core begin
+		/AGMCORE_mbuf 0 string def
+		/AGMCORE_ybuf 0 string def
+		/AGMCORE_kbuf 0 string def
+		{
+			colorbuf dup length AGMCORE_mbuf length ne
+				{
+				dup length dup dup
+				/AGMCORE_mbuf exch string def
+				/AGMCORE_ybuf exch string def
+				/AGMCORE_kbuf exch string def
+				} if
+			dup AGMCORE_mbuf copy AGMCORE_ybuf copy AGMCORE_kbuf copy pop
+		}
+		addprocs
+		{AGMCORE_mbuf}{AGMCORE_ybuf}{AGMCORE_kbuf} true 4 colorimage	
+	end
+} def			
+/sep_imageormask_lev1
+{
+	begin
+		MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{
+			
+			{
+				255 mul round cvi GrayLookup exch get
+			} currenttransfer addprocs settransfer
+			currentdict imageormask
+		}{
+			/sep_colorspace_dict AGMCORE_gget/Components known{
+				MappedCSA 0 get /DeviceCMYK eq{
+					Components aload pop
+				}{
+					0 0 0 Components aload pop 1 exch sub
+				}ifelse
+				
+				Adobe_AGM_Core/AGMCORE_k xddf 
+				Adobe_AGM_Core/AGMCORE_y xddf 
+				Adobe_AGM_Core/AGMCORE_m xddf 
+				Adobe_AGM_Core/AGMCORE_c xddf 
+					
+				AGMCORE_y 0.0 eq AGMCORE_m 0.0 eq and AGMCORE_c 0.0 eq and{
+					{AGMCORE_k mul 1 exch sub} currenttransfer addprocs settransfer
+					currentdict imageormask
+				}{ 
+					
+					currentcolortransfer
+					{AGMCORE_k mul 1 exch sub} exch addprocs 4 1 roll
+					{AGMCORE_y mul 1 exch sub} exch addprocs 4 1 roll
+					{AGMCORE_m mul 1 exch sub} exch addprocs 4 1 roll
+					{AGMCORE_c mul 1 exch sub} exch addprocs 4 1 roll
+					setcolortransfer
+					currentdict tint_image_to_color
+				}ifelse
+			}{
+				
+				MappedCSA 0 get /DeviceGray eq {
+					{255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer
+					currentdict imageormask
+				}{
+					MappedCSA 0 get /DeviceCMYK eq {
+						currentcolortransfer
+						{255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll
+						{255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll
+						{255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll
+						{255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll
+						setcolortransfer 
+						currentdict tint_image_to_color
+					}{ 
+						currentcolortransfer
+						{pop 1} exch addprocs 4 1 roll
+						{255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll
+						{255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll
+						{255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll
+						setcolortransfer 
+						currentdict tint_image_to_color
+					}ifelse
+				}ifelse
+			}ifelse
+		}ifelse
+	end
+}def
+/sep_image_lev1_sep
+{
+	begin
+		/sep_colorspace_dict AGMCORE_gget/Components known{
+			Components aload pop
+			
+			Adobe_AGM_Core/AGMCORE_k xddf 
+			Adobe_AGM_Core/AGMCORE_y xddf 
+			Adobe_AGM_Core/AGMCORE_m xddf 
+			Adobe_AGM_Core/AGMCORE_c xddf 
+				
+			{AGMCORE_c mul 1 exch sub}
+			{AGMCORE_m mul 1 exch sub}
+			{AGMCORE_y mul 1 exch sub}
+			{AGMCORE_k mul 1 exch sub}
+		}{ 
+			{255 mul round cvi ColorLookup exch get 0 get 1 exch sub}
+			{255 mul round cvi ColorLookup exch get 1 get 1 exch sub}
+			{255 mul round cvi ColorLookup exch get 2 get 1 exch sub}
+			{255 mul round cvi ColorLookup exch get 3 get 1 exch sub}
+		}ifelse
+		
+		AGMCORE_get_ink_data currenttransfer addprocs settransfer
+		
+		currentdict imageormask_sys
+			
+	end
+}def
+/sep_imageormask
+{
+ 	/sep_colorspace_dict AGMCORE_gget begin
+	/MappedCSA CSA map_csa def
+	begin
+	SkipImageProc not{
+		save mark 
+	
+		AGMCORE_avoid_L2_sep_space{
+			/Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def
+		}if
+ 		AGMCORE_ccimage_exists 
+		MappedCSA 0 get /DeviceCMYK eq and
+		currentdict/Components known and 
+		Name () ne and 
+		Name (All) ne and 
+		Operator /image eq and
+		AGMCORE_producing_seps not and
+		level2 not and
+		{
+			Width Height BitsPerComponent ImageMatrix 
+			[
+			/DataSource load /exec cvx
+			{
+				0 1 2 index length 1 sub{
+					1 index exch
+					2 copy get 255 xor put
+				}for
+			} /exec cvx
+			] cvx bind
+			MappedCSA 0 get /DeviceCMYK eq{
+				Components aload pop
+			}{
+				0 0 0 Components aload pop 1 exch sub
+			}ifelse
+			Name findcmykcustomcolor
+			customcolorimage
+		}{
+			AGMCORE_producing_seps not{
+				level2{
+					AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{
+						[/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt
+						/sep_tint AGMCORE_gget setcolor
+					}if
+					currentdict imageormask
+				}{ 
+					currentdict
+					Operator /imagemask eq{
+						imageormask
+					}{
+						sep_imageormask_lev1
+					}ifelse
+				}ifelse
+ 			}{
+				AGMCORE_host_sep{
+					Operator/knockout eq{
+						currentoverprint InksUsed current_ink not and{
+						}{
+							currentdict/ImageMatrix get concat
+							knockout_unitsq
+						}ifelse
+					}{
+						currentgray 1 ne{
+ 							AGMCORE_is_cmyk_sep Name (All) ne and{
+ 								level2{
+	 								[ /Separation Name [/DeviceGray]
+	 								{ 
+	 									sep_colorspace_proc AGMCORE_get_ink_data
+										1 exch sub
+	 								} bind
+									] AGMCORE_&setcolorspace
+									/sep_tint AGMCORE_gget AGMCORE_&setcolor
+ 									currentdict imageormask_sys
+	 							}{
+	 								currentdict
+									Operator /imagemask eq{
+										imageormask_sys
+									}{
+										sep_image_lev1_sep
+									}ifelse
+	 							}ifelse
+ 							}{
+ 								Operator/imagemask ne{
+									invert_image_samples
+ 								}if
+		 						currentdict imageormask_sys
+ 							}ifelse
+ 						}{
+ 							currentoverprint not Name (All) eq or{
+ 								knockout_image_samples
+		 					}{
+		 						nulldevice 
+		 					}ifelse
+							currentdict imageormask_sys
+ 						}ifelse
+		 			}ifelse
+ 				}{
+					currentcolorspace 0 get /Separation ne{
+						[/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt
+						/sep_tint AGMCORE_gget setcolor
+					}if
+					currentoverprint 
+					MappedCSA 0 get /DeviceCMYK eq and 
+					Name inRip_spot_has_ink not and 
+					Name (All) ne and {
+						imageormask_l2_overprint
+					}{
+						currentdict imageormask
+ 					}ifelse
+				}ifelse
+			}ifelse
+		}ifelse
+		cleartomark restore
+	}if
+	end
+	end
+}def
+/modify_halftone_xfer
+{
+	currenthalftone dup length dict copy begin
+    currentdict 2 index known{
+    	1 index load dup length dict copy begin
+		currentdict/TransferFunction known{
+			/TransferFunction load
+		}{
+			currenttransfer
+		}ifelse
+	    addprocs /TransferFunction xdf 
+	    currentdict end def
+		currentdict end sethalftone
+	}{ 
+		currentdict/TransferFunction known{
+			/TransferFunction load 
+		}{
+			currenttransfer
+		}ifelse
+		addprocs /TransferFunction xdf
+		currentdict end sethalftone		
+		pop
+	}ifelse
+}def
+/read_image_file
+{
+	AGMCORE_imagefile 0 setfileposition
+	dup /DataSource {AGMCORE_imagefile AGMCORE_imbuf readstring pop} put
+	exch
+	load exec
+}def
+/write_image_file
+{
+	{ (AGMCORE_imagefile) (w+) file } stopped{
+		false
+	}{
+		Adobe_AGM_Core/AGMCORE_imagefile xddf 
+		Adobe_AGM_Core/AGMCORE_imbuf Width BitsPerComponent mul 7 add 8 idiv string ddf
+		1 1 Height { 
+			pop
+			DataSource dup type /filetype eq{
+				AGMCORE_imbuf readstring pop
+			}{
+				exec
+			} ifelse
+			AGMCORE_imagefile exch writestring
+		}for
+		true
+	}ifelse
+}def
+/imageormask_l2_overprint
+{
+	write_image_file{
+		currentcmykcolor
+		0 ne{
+			[/Separation /Black /DeviceGray {}] setcolorspace
+			gsave
+			/Black
+			[{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx]
+			cvx modify_halftone_xfer
+			Operator currentdict read_image_file
+			grestore
+		}if
+		0 ne{
+			[/Separation /Yellow /DeviceGray {}] setcolorspace
+			gsave
+			/Yellow
+			[{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx]
+			cvx modify_halftone_xfer
+			Operator currentdict read_image_file
+			grestore
+		}if
+		0 ne{
+			[/Separation /Magenta /DeviceGray {}] setcolorspace
+			gsave
+			/Magenta
+			[{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx]
+			cvx modify_halftone_xfer
+			Operator currentdict read_image_file
+			grestore
+		}if
+		0 ne{
+			[/Separation /Cyan /DeviceGray {}] setcolorspace
+			gsave
+			/Cyan 
+			[{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx]
+			cvx modify_halftone_xfer
+			Operator currentdict read_image_file
+			grestore
+		} if
+		AGMCORE_imagefile closefile (AGMCORE_imagefile) deletefile
+	}{
+		currentdict imageormask
+	}ifelse
+} def
+/indexed_imageormask
+{
+	begin
+		save mark 
+	
+ 		currentdict
+ 		AGMCORE_host_sep{
+ 			
+			Operator/knockout eq{
+				/indexed_colorspace_dict AGMCORE_gget /CSA get map_csa overprint_plate not{
+					knockout_unitsq
+				}if
+			}{
+	 			AGMCORE_is_cmyk_sep{
+					Operator /imagemask eq{
+						imageormask_sys
+					}{
+						level2{
+							indexed_image_lev2_sep
+						}{
+							indexed_image_lev1_sep
+						}ifelse
+					}ifelse
+				}{
+					currentoverprint not{
+						knockout_image_samples
+		 				imageormask_sys
+		 			}{
+		 				nulldevice currentdict imageormask_sys
+		 			}ifelse
+				}ifelse
+			}ifelse
+ 		}{
+			level2{
+				imageormask
+			}{ 
+				Operator /imagemask eq{
+					imageormask
+				}{
+					indexed_imageormask_lev1
+				}ifelse
+			}ifelse
+ 		}ifelse
+		cleartomark restore
+	end
+}def
+/indexed_imageormask_lev1
+{
+	/indexed_colorspace_dict AGMCORE_gget begin
+	begin
+		currentdict
+		MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{
+			
+			{HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer
+			imageormask
+		}{
+			
+			MappedCSA 0 get /DeviceGray eq {
+				{HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer
+				imageormask
+			}{
+				MappedCSA 0 get /DeviceCMYK eq {
+					currentcolortransfer
+					{4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
+					{4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
+					{4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
+					{4 mul HiVal mul round cvi       Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll
+					setcolortransfer 
+					tint_image_to_color
+				}{ 
+					currentcolortransfer
+					{pop 1} exch addprocs 4 1 roll
+					{3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll
+					{3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll
+					{3 mul HiVal mul round cvi 	   Lookup exch get HiVal div} exch addprocs 4 1 roll
+					setcolortransfer 
+					tint_image_to_color
+				}ifelse
+			}ifelse
+		}ifelse
+	end end
+}def
+/indexed_image_lev1_sep
+{
+	/indexed_colorspace_dict AGMCORE_gget begin
+	begin
+		{4 mul HiVal mul round cvi       Lookup exch get HiVal div 1 exch sub}
+		{4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub}
+		{4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub}
+		{4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub}
+		
+		AGMCORE_get_ink_data currenttransfer addprocs settransfer
+		
+		currentdict imageormask_sys
+			
+	end end
+}def
+/indexed_image_lev2_sep
+{
+	/indexed_colorspace_dict AGMCORE_gget begin
+	begin
+		
+		currentcolorspace 
+		dup 1 /DeviceGray put
+		dup 3 [
+			currentcolorspace 3 get 
+			{
+				exch 4 mul 4 getinterval {} forall
+				AGMCORE_get_ink_data 255 div 1 exch sub
+			} /exec cvx
+		] cvx put
+		setcolorspace
+		
+		currentdict 
+		Operator /imagemask eq{
+			AGMCORE_&imagemask
+		}{
+			AGMCORE_&image
+		}ifelse
+			
+	end end
+}def
+/add_csa
+{
+	Adobe_AGM_Core begin
+			/AGMCORE_CSA_cache xput
+	end
+}def
+/map_csa
+{
+	dup type /nametype eq{
+		Adobe_AGM_Core/AGMCORE_CSA_cache get exch get
+	}if
+}def
+/add_csd
+{
+	Adobe_AGM_Core begin
+		/AGMCORE_CSD_cache xput
+	end
+}def
+/get_csd
+{
+	dup type /nametype eq{
+		Adobe_AGM_Core/AGMCORE_CSD_cache get exch get
+	}if
+}def
+/add_pattern
+{
+	Adobe_AGM_Core begin
+		/AGMCORE_pattern_cache xput
+	end
+}def
+/get_pattern
+{
+	dup type /nametype eq{
+		Adobe_AGM_Core/AGMCORE_pattern_cache get exch get
+	}if
+}def
+/set_pattern
+{
+	dup /PatternType get 1 eq{
+		dup /PaintType get 1 eq{
+			false op [/DeviceGray] setcolorspace 0 setgray
+		}if
+	}if
+	setpattern
+}def
+/setcolorspace_opt
+{
+	dup currentcolorspace eq{
+		pop
+	}{
+		setcolorspace
+	}ifelse
+}def
+/updatecolorrendering
+{
+	
+	currentcolorrendering/Intent known{
+		currentcolorrendering/Intent get
+	}{
+		null
+	}ifelse
+	
+	Intent ne{
+		false  
+		Intent
+		AGMCORE_CRD_cache {
+			exch pop 
+			begin
+				dup Intent eq{
+					currentdict setcolorrendering_opt
+					end 
+					exch pop true exch	
+					exit
+				}if
+			end
+		} forall
+		pop
+		not{
+			systemdict /findcolorrendering known{
+				Intent findcolorrendering pop
+				/ColorRendering findresource 
+				dup length dict copy
+				setcolorrendering_opt
+			}if
+		}if
+	}if
+} def
+/add_crd
+{
+	AGMCORE_CRD_cache 3 1 roll put
+}def
+/set_crd
+{
+	AGMCORE_host_sep not level2 and{
+		currentdict/CRD known{
+			AGMCORE_CRD_cache CRD get dup null ne{
+				setcolorrendering_opt
+			}{
+				pop
+			}ifelse
+		}{
+			currentdict/Intent known{
+				updatecolorrendering
+			}if
+		}ifelse
+	}if
+}def
+/setcolorrendering_opt
+{
+	dup currentcolorrendering eq{
+		pop
+	}{
+		begin
+			/Intent Intent def
+			currentdict
+		end
+		setcolorrendering
+	}ifelse
+}def
+/OPIimage
+{
+	dup type /dicttype ne{
+		10 dict begin
+			/DataSource xdf
+			/ImageMatrix xdf
+			/BitsPerComponent xdf
+			/Height xdf
+			/Width xdf
+			/MultipleDataSources false def
+			/NComponents 1 def
+			/ImageType 1 def
+			/Decode [0 1 def]
+			/SkipImageProc {false} def
+			currentdict
+		end
+	}if
+	dup begin
+		/HostSepColorImage false def
+		currentdict/Decode known not{
+			/Decode [
+				0 
+				currentcolorspace 0 get /Indexed eq{
+					2 BitsPerComponent exp 1 sub
+				}{
+					1
+				}ifelse
+			] 
+			def
+		}if
+		currentdict/Operator known not{
+			/Operator /image def
+		}if
+	end
+	/sep_colorspace_dict AGMCORE_gget null eq{
+		imageormask
+	}{
+		gsave
+		dup begin invert_image_samples end
+		sep_imageormask
+		grestore
+	}ifelse
+}def
+/cpaint_gcomp
+{
+	AGM_preserve_spots{
+		gsave
+		nulldevice
+	}if
+}def
+/cpaint_gsep
+{
+	AGM_preserve_spots{
+		grestore
+		currentoverprint Adobe_AGM_Core/AGMCORE_ovp xddf 
+	}{	
+		gsave
+		nulldevice
+	}ifelse
+}def
+/cpaint_gend
+{
+	AGM_preserve_spots{
+		Adobe_AGM_Core/AGMCORE_ovp get setoverprint
+	}{
+		grestore
+	}ifelse
+	newpath
+}def
+/AGMCORE_ctm_stack bdict
+	/push_ctm {
+		stack length size le{
+			stack dup length 2 mul array 
+			dup /stack exch def
+			copy pop
+		}if
+		stack size 3 -1 roll put
+		/size size 1 add def
+	}
+	/pop_ctm {
+		/size size 1 sub def
+		size 0 lt{ 
+			/size 0 def
+		}if
+		stack size get
+	}
+	/stack 1 array
+	/size 0 
+edict 
+def
+/save_ctm
+{
+	matrix currentmatrix AGMCORE_ctm_stack begin 
+		push_ctm 
+	end
+}def
+/restore_ctm
+{
+	AGMCORE_ctm_stack begin
+		pop_ctm 
+	end
+	setmatrix
+}def
+/path_rez
+{
+	dup 0 ne{
+		AGMCORE_deviceDPI exch div 
+		dup 1 lt{
+			pop 1
+		}if
+		setflat
+	}{
+		pop
+	}ifelse 	
+}def
+end
+systemdict /setpacking known
+{
+	setpacking
+} if
+%%EndResource
+%%BeginResource: procset Adobe_CoolType_Core 1.1 0
+%%Copyright: Copyright 1997-1999 Adobe Systems Incorporated.  All Rights Reserved.
+%%Version: 1.1 0
+userdict/Adobe_CoolType_Core 40 dict dup begin put/Level2? systemdict
+/languagelevel known dup{pop systemdict/languagelevel get 2 ge}if def Level2?
+not{/currentglobal false def/setglobal/pop load def/gcheck{pop false}bind def
+/currentpacking false def/setpacking/pop load def}if currentpacking true
+setpacking/bdf{bind def}bind def/ldf{load def}bind def/doc_setup{
+Adobe_CoolType_Core begin/mov/moveto ldf/nfnt/newencodedfont ldf/mfnt/makefont
+ldf/sfnt/setfont ldf/ufnt/undefinefont ldf/chp/charpath ldf/awsh/awidthshow
+ldf/wsh/widthshow ldf/ash/ashow ldf/sh/show ldf end userdict
+/Adobe_CoolType_Data 2 dict dup begin/WidthShowArray 256 array def
+/GenFauxMMInst{}bind def end put}bind def/doc_trailer{currentdict
+Adobe_CoolType_Core eq{end}if Adobe_CoolType_Core/unload get exec systemdict
+/undef known{userdict/Adobe_CoolType_Data undef}if}bind def/page_setup{
+Adobe_CoolType_Core begin}bind def/page_trailer{end}bind def/unload{systemdict
+/languagelevel known{systemdict/languagelevel get 2 ge{userdict
+/Adobe_CoolType_Core 2 copy known{undef}{pop pop}ifelse}if}if}bind def/ndf{1
+index where{pop pop pop}{dup xcheck{bind}if def}ifelse}def/findfont dup
+systemdict begin userdict begin/globaldict where{/globaldict get begin}if dup
+where pop exch get/globaldict where{pop end}if end end def/systemfindfont
+/findfont load def/undefinefont{pop}ndf/copyfont{currentglobal 3 1 roll 1
+index gcheck setglobal dup null eq{0}{dup length}ifelse 2 index length add 1
+add dict begin exch{1 index/FID eq{pop pop}{def}ifelse}forall dup null eq{pop}
+{{def}forall}ifelse currentdict end exch setglobal}bdf/newencodedfont{findfont
+dup length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding exch
+def currentdict end definefont pop}bdf/scff{$SubstituteFont begin dup type
+/stringtype eq{dup length exch}{null}ifelse/$sname exch def/$slen exch def
+/$fontname 1 index dup type/stringtype eq{cvn}if def/$used false def end
+findfont $SubstituteFont begin $used{currentglobal exch dup gcheck setglobal
+null copyfont begin/FontName $fontname def/currentdistillerparams where{pop}{
+/FontInfo currentdict/FontInfo known{FontInfo null copyfont}{2 dict}ifelse dup
+begin/ItalicAngle $italicangle def/FontMatrix FontMatrix[1 0 ItalicAngle dup
+sin exch cos div 1 0 0]matrix concatmatrix readonly end 4 2 roll def def}
+ifelse FontName currentdict end definefont exch setglobal}if/$sname null def
+/$slen 0 def end}bdf/ConcatStrings{dup 0 exch{length add}forall string exch 0
+exch{3 copy putinterval length add}forall pop}bind def/BeginFauxMMFont{1 index
+findfont pop 2 array astore ConcatStrings 3 1 roll($)exch 3 array astore
+ConcatStrings exch findfont currentglobal exch dup gcheck setglobal null
+copyfont/tempfontname exch definefont pop exch 12 dict begin/FontName exch def
+/FontType 0 def/FMapType 6 def/FontMatrix matrix def/PaintType 0 def}bind def
+/EndFauxMMFont{currentdict end dup/FontName get exch definefont exch setglobal
+exch mfnt sfnt}bind def/GenFauxMMInst{Adobe_CoolType_Data/GenFauxMMInst get
+exec}bind def/DefFauxMMInst{Adobe_CoolType_Data exch/GenFauxMMInst exch bind
+put}bind def/WSALoop{4 copy 1 index add 1 sub 1 exch{3 copy put pop 1 add}for
+pop pop 3 2 roll add exch 256 add}bind def/BuildWidthShowArray{currentfont
+begin FontType 0 eq dup{pop FMapType 6 eq}if{SubsVector dup length 1 sub 1
+exch getinterval}{()}ifelse end Adobe_CoolType_Data/WidthShowArray get 0 0 4 3
+roll{WSALoop}forall 256 2 index sub WSALoop pop pop pop}bind def/wsa{
+Adobe_CoolType_Data/WidthShowArray get}bind def/?set{$SubstituteFont begin
+/$used false def/$fontname 4 index def end 3 index findfont $SubstituteFont
+begin $used{false}{dup/FontName known{dup/FontName get $fontname eq 1 index
+/DistillerFauxFont known not and}{false}ifelse}ifelse exch pop end{exch pop
+exch pop exch 2 dict dup/Found 3 index put exch findfont exch}{exch exec exch
+findfont 2 dict dup/Downloaded 6 5 roll put}ifelse dup/FontName 4 index put
+copyfont definefont pop}bind def/?str1 256 string def/?str2 256 string def
+/?add{1 index type/integertype eq{exch true 4 2}{false 3 1}ifelse roll 1 index
+findfont/Downloaded known{exec exch{exch ?str2 cvs exch findfont/Downloaded
+get 1 dict begin/Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3
+index putinterval exch length 1 add 1 index add ?str1 2 index(*)putinterval
+?str1 0 2 index getinterval cvn findfont ?str1 3 index(+)putinterval 2 dict
+dup/FontName ?str1 0 6 index getinterval cvn put dup/Downloaded Downloaded put
+end copyfont dup/FontName get exch definefont pop pop pop}{pop}ifelse}{pop
+exch{findfont dup/Found get dup length exch ?str1 cvs pop ?str1 1 index(+)
+putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0
+exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index
+exch/FontName exch put copyfont dup/FontName get exch definefont pop}{pop}
+ifelse}ifelse}bind def/?sh{currentfont/Downloaded known{exch}if pop}bind def
+/?chp{currentfont/Downloaded known{pop}{false chp}ifelse}bind def/?mv{
+currentfont/Downloaded known{moveto pop pop}{pop pop moveto}ifelse}bind def
+setpacking end userdict/$SubstituteFont 20 dict put 1 dict begin
+/SubstituteFont dup $error exch 2 copy known{get}{pop pop{pop/Courier}bind}
+ifelse def/currentdistillerparams where dup{pop pop currentdistillerparams
+/CannotEmbedFontPolicy 2 copy known{get/Error eq}{pop pop false}ifelse}if not{
+countdictstack array dictstack 0 get begin userdict begin $SubstituteFont
+begin/$str 128 string def/$fontpat 128 string def/$slen 0 def/$sname null def
+/$match false def/$fontname null def/$used false def/$fontname null def
+/$italicangle 26.5 def/$findfontByEnum{dup/$fontname exch def $sname null eq{
+$str cvs dup length $slen sub $slen getinterval}{pop $sname}ifelse $fontpat
+dup 0(fonts/*)putinterval exch 7 exch putinterval/$match false def mark{
+$fontpat 0 $slen 7 add getinterval{/$match exch def exit}$str filenameforall}
+stopped cleartomark/$slen 0 def $match false ne{$match(fonts/)anchorsearch pop
+pop cvn}{/Courier}ifelse}bind def/$ROS 1 dict dup begin/Adobe 4 dict dup begin
+/Japan1[/Ryumin-Light/HeiseiMin-W3/GothicBBB-Medium/HeiseiKakuGo-W5
+/HeiseiMaruGo-W4/Jun101-Light]def/Korea1[/HYSMyeongJo-Medium/HYGoThic-Medium]
+def/GB1[/STSong-Light/STHeiti-Regular]def/CNS1[/MKai-Medium/MHei-Medium]def
+end def end def/$cmapname null def/$buildfontname{length $str 1 index(-)
+putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname
+length add $str exch 0 exch getinterval cvn}bind def/$findfontByROS{/$fontname
+exch def $ROS Registry 2 copy known{get Ordering 2 copy known{get}{pop pop[]}
+ifelse}{pop pop[]}ifelse false exch{dup/CIDFont resourcestatus{pop pop save 1
+index/CIDFont findresource dup/WidthsOnly known{dup/WidthsOnly get}{false}
+ifelse exch pop exch restore{pop}{exch pop true exit}ifelse}{pop}ifelse}forall
+{$str cvs $buildfontname}{false(*){save exch dup/CIDFont findresource dup
+/WidthsOnly known{dup/WidthsOnly get not}{true}ifelse exch/CIDSystemInfo get
+dup/Registry get Registry eq exch/Ordering get Ordering eq and and{exch
+restore exch pop true exit}{pop restore}ifelse}$str/CIDFont resourceforall{
+$buildfontname}{$fontname $findfontByEnum}ifelse}ifelse}bind def end end
+currentdict/$error known currentdict/languagelevel known and dup{pop $error
+/SubstituteFont known}if dup{$error}{Adobe_CoolType_Core}ifelse begin{
+/SubstituteFont/CMap/Category resourcestatus{pop pop{$SubstituteFont begin
+/$used true def dup length $slen gt $sname null ne or $slen 0 gt and{$sname
+null eq{dup $str cvs dup length $slen sub $slen getinterval cvn}{$sname}ifelse
+dup/CMap resourcestatus{pop pop dup/$cmapname exch def/CMap findresource
+/CIDSystemInfo get{def}forall $findfontByROS}{pop $findfontByEnum}ifelse}{
+//SubstituteFont exec}ifelse/$slen 0 def end}}{{$SubstituteFont begin/$used
+true def dup length $slen gt $sname null ne or $slen 0 gt and{$findfontByEnum}
+{//SubstituteFont exec}ifelse end}}ifelse bind readonly def}{/findfont{
+$SubstituteFont begin dup systemfindfont dup/FontName known{dup/FontName get 2
+index ne}{true}ifelse dup{/$used true def}if{$slen 0 gt $sname null ne 3 index
+length $slen gt or and{pop dup $findfontByEnum findfont dup maxlength 1 add
+dict begin{1 index/FID eq{pop pop}{def}ifelse}forall currentdict end
+definefont}{exch pop}ifelse}{exch pop}ifelse end}bind def}ifelse end end}if
+end
+%%EndResource
+%%EndProlog
+%%BeginSetup
+Adobe_AGM_Core/AGMCORE_err_strings 3 dict dup begin
+/AGMCORE_bad_environ (Environment not satisfactory for this job, which requests at least
+PostScript Level ^	and at least PostScript version ^. Ensure that the PPD is correct or that
+the PostScript  level requested is supported by this printer. ) def
+/AGMCORE_color_space_onhost_seps (This job contains colors that will not separate
+with on-host methods. ) def
+/AGMCORE_invalid_color_space (This job contains an invalid color space. ) def
+end put
+2 2010 true Adobe_AGM_Core/doc_setup get exec
+Adobe_CoolType_Core/doc_setup get exec
+%%EndSetup
+%%Page: name:1 1
+%%EndPageComments
+%%BeginPageSetup
+Adobe_AGM_Core/page_setup get exec
+Adobe_CoolType_Core/page_setup get exec
+%%EndPageSetup
+Adobe_AGM_Core/AGMCORE_save save ddf
+mark
+/0 
+[/DeviceGray] add_csa
+/CSA /0 
+/1 
+[/DeviceCMYK] add_csa
+/CSA /1 
+/2 
+[/DeviceRGB] add_csa
+/CSA /2 
+cleartomark
+800 path_rez
+1 -1 scale 0 -333.879 translate
+gsave
+[1 0 0 1 0 0 ] concat
+gsave
+0 0 mo
+0 333.879 ln
+745.92 333.879 ln
+745.92 0 ln
+clp
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+0 334 mo
+746 334 ln
+746 0 ln
+0 0 ln
+0 334 ln
+false op
+0 0 0 0 cmyk
+f
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+195.473 40.5806 mo
+195.536 36.8013 ln
+186.024 36.7383 ln
+193.583 38.6909 ln
+185.961 40.4546 ln
+195.473 40.5806 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+67.0791 95.3325 mo
+97.812 59.3496 142.76 38.6279 190.081 38.6279 cv
+191.587 38.6279 193.093 38.6489 194.598 38.6909 cv
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+185.961 40.4546 mo
+193.583 38.6909 ln
+186.024 36.7383 ln
+185.961 40.4546 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+185.961 40.4546 mo
+193.583 38.6909 ln
+186.024 36.7383 ln
+185.961 40.4546 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+123.665 305.833 mo
+122.027 309.233 ln
+130.656 313.391 ln
+124.672 308.415 ln
+132.294 309.989 ln
+123.665 305.833 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+265.416 293.833 mo
+242.26 312.45 213.438 322.6 183.726 322.6 cv
+162.844 322.6 142.268 317.584 123.729 307.973 cv
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+132.294 309.989 mo
+124.672 308.415 ln
+130.656 313.391 ln
+132.294 309.989 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+132.294 309.989 mo
+124.672 308.415 ln
+130.656 313.391 ln
+132.294 309.989 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.343 81.7764 mo
+322.713 79.9492 ln
+317.296 81.8394 ln
+321.201 81.5244 ln
+317.926 83.603 ln
+323.343 81.7764 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 81.209 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.926 83.603 mo
+321.201 81.5244 ln
+317.296 81.8394 ln
+317.926 83.603 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.926 83.603 mo
+321.201 81.5244 ln
+317.296 81.8394 ln
+317.926 83.603 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.28 96.0117 mo
+322.776 94.1851 ln
+317.233 95.8228 ln
+321.138 95.6968 ln
+317.737 97.6494 ln
+323.28 96.0117 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 95.3818 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.737 97.6494 mo
+321.138 95.6968 ln
+317.233 95.8228 ln
+317.737 97.6494 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.737 97.6494 mo
+321.138 95.6968 ln
+317.233 95.8228 ln
+317.737 97.6494 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.28 110.185 mo
+322.776 108.358 ln
+317.233 109.807 ln
+321.138 109.807 ln
+317.674 111.633 ln
+323.28 110.185 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 109.555 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.674 111.633 mo
+321.138 109.807 ln
+317.233 109.807 ln
+317.674 111.633 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.674 111.633 mo
+321.138 109.807 ln
+317.233 109.807 ln
+317.674 111.633 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.217 124.42 mo
+322.839 122.594 ln
+317.233 123.728 ln
+321.138 123.917 ln
+317.611 125.554 ln
+323.217 124.42 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 123.728 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.611 125.554 mo
+321.138 123.917 ln
+317.233 123.728 ln
+317.611 125.554 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.611 125.554 mo
+321.138 123.917 ln
+317.233 123.728 ln
+317.611 125.554 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.217 138.656 mo
+322.902 136.767 ln
+317.233 137.648 ln
+321.138 138.026 ln
+317.485 139.475 ln
+323.217 138.656 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 137.9 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.485 139.475 mo
+321.138 138.026 ln
+317.233 137.648 ln
+317.485 139.475 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.485 139.475 mo
+321.138 138.026 ln
+317.233 137.648 ln
+317.485 139.475 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.154 152.892 mo
+322.965 151.002 ln
+317.233 151.632 ln
+321.138 152.199 ln
+317.422 153.459 ln
+323.154 152.892 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 152.073 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.422 153.459 mo
+321.138 152.199 ln
+317.233 151.632 ln
+317.422 153.459 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.422 153.459 mo
+321.138 152.199 ln
+317.233 151.632 ln
+317.422 153.459 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.091 167.127 mo
+323.028 165.238 ln
+317.296 165.553 ln
+321.138 166.309 ln
+317.359 167.379 ln
+323.091 167.127 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 166.246 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.359 167.379 mo
+321.138 166.309 ln
+317.296 165.553 ln
+317.359 167.379 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.359 167.379 mo
+321.138 166.309 ln
+317.296 165.553 ln
+317.359 167.379 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.091 181.364 mo
+323.091 179.473 ln
+317.359 179.473 ln
+321.138 180.418 ln
+317.359 181.364 ln
+323.091 181.364 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 180.418 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.359 181.364 mo
+321.138 180.418 ln
+317.359 179.473 ln
+317.359 181.364 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.359 181.364 mo
+321.138 180.418 ln
+317.359 179.473 ln
+317.359 181.364 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+323.028 195.536 mo
+323.091 193.647 ln
+317.359 193.395 ln
+321.138 194.528 ln
+317.296 195.221 ln
+323.028 195.536 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 194.59 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.296 195.221 mo
+321.138 194.528 ln
+317.359 193.395 ln
+317.296 195.221 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.296 195.221 mo
+321.138 194.528 ln
+317.359 193.395 ln
+317.296 195.221 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+322.965 209.772 mo
+323.154 207.881 ln
+317.422 207.315 ln
+321.138 208.637 ln
+317.233 209.141 ln
+322.965 209.772 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 208.764 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.233 209.141 mo
+321.138 208.637 ln
+317.422 207.315 ln
+317.233 209.141 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.233 209.141 mo
+321.138 208.637 ln
+317.422 207.315 ln
+317.233 209.141 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+322.902 224.008 mo
+323.217 222.118 ln
+317.485 221.299 ln
+321.138 222.811 ln
+317.233 223.125 ln
+322.902 224.008 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 222.936 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.233 223.125 mo
+321.138 222.811 ln
+317.485 221.299 ln
+317.233 223.125 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.233 223.125 mo
+321.138 222.811 ln
+317.485 221.299 ln
+317.233 223.125 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+322.839 238.18 mo
+323.217 236.354 ln
+317.611 235.219 ln
+321.138 236.92 ln
+317.233 237.047 ln
+322.839 238.18 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 237.11 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.233 237.047 mo
+321.138 236.92 ln
+317.611 235.219 ln
+317.233 237.047 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.233 237.047 mo
+321.138 236.92 ln
+317.611 235.219 ln
+317.233 237.047 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+322.776 252.417 mo
+323.28 250.59 ln
+317.674 249.141 ln
+321.138 251.03 ln
+317.233 250.967 ln
+322.776 252.417 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 251.282 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.233 250.967 mo
+321.138 251.03 ln
+317.674 249.141 ln
+317.233 250.967 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.233 250.967 mo
+321.138 251.03 ln
+317.674 249.141 ln
+317.233 250.967 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+322.776 266.588 mo
+323.28 264.762 ln
+317.737 263.124 ln
+321.138 265.139 ln
+317.233 264.952 ln
+322.776 266.588 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 265.456 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.233 264.952 mo
+321.138 265.139 ln
+317.737 263.124 ln
+317.233 264.952 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.233 264.952 mo
+321.138 265.139 ln
+317.737 263.124 ln
+317.233 264.952 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+322.713 280.825 mo
+323.343 278.999 ln
+317.926 277.17 ln
+321.201 279.313 ln
+317.296 278.934 ln
+322.713 280.825 ln
+eclp
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+38.6909 180.418 mo
+322.146 279.627 ln
+false op
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+317.296 278.934 mo
+321.201 279.313 ln
+317.926 277.17 ln
+317.296 278.934 ln
+false op
+0 0 0 1 cmyk
+ef
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+317.296 278.934 mo
+321.201 279.313 ln
+317.926 277.17 ln
+317.296 278.934 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+0.4724 lw
+0 lc
+0 lj
+10 ml
+[] 0 dsh
+true sadj
+322.146 81.209 mo
+322.146 279.627 ln
+false op
+0 0 0 1 cmyk
+s
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+grestore
+save_ctm
+restore_ctm
+save_ctm
+%%IncludeResource: font Times-Italic
+/Times-Italic*1 
+[
+32{/.notdef}repeat /space 36{/.notdef}repeat /E /.notdef /G 25{/.notdef}repeat /a 
+3{/.notdef}repeat /e 3{/.notdef}repeat /i 2{/.notdef}repeat /l /m /n 
+/o /.notdef /q /r /.notdef /t /u 3{/.notdef}repeat 
+/y 134{/.notdef}repeat
+] /Times-Italic nfnt
+/Times-Italic*1 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt
+BuildWidthShowArray
+95.8916 23.5181 mov
+0.000244141 0 wsa 121 get (Equilinear Geometry ) wsh
+restore_ctm
+save_ctm
+%%IncludeResource: font Times-Italic
+/Times-Italic*2 
+[
+68{/.notdef}repeat /D 30{/.notdef}repeat /c 15{/.notdef}repeat /s 140{/.notdef}repeat
+] /Times-Italic nfnt
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+350.492 222.936 mov
+(D) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+350.492 209.293 mov
+(ete) sh
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+350.492 187.259 mov
+(c) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+350.492 178.869 mov
+(tor) sh
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+350.492 156.817 mov
+(s) sh
+restore_ctm
+%%IncludeResource: font Times-Italic
+/Times-Italic*3 
+[
+83{/.notdef}repeat /S 172{/.notdef}repeat
+] /Times-Italic nfnt
+/Times-Italic*3 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+24.5181 208.764 mov
+(S) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+24.5181 199.316 mov
+(our) sh
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+24.5181 173.068 mov
+(c) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+24.5181 164.678 mov
+(e ) sh
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+508.219 305.833 mo
+506.581 309.233 ln
+515.21 313.391 ln
+509.227 308.415 ln
+516.848 309.989 ln
+508.219 305.833 ln
+eclp
+649.97 293.833 mo
+626.813 312.45 597.992 322.6 568.279 322.6 cv
+547.398 322.6 526.822 317.584 508.283 307.973 cv
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+516.848 309.989 mo
+509.227 308.415 ln
+515.21 313.391 ln
+516.848 309.989 ln
+0 0 0 1 cmyk
+ef
+516.848 309.989 mo
+509.227 308.415 ln
+515.21 313.391 ln
+516.848 309.989 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+675.479 92.4961 mo
+695.675 117.348 706.7 148.395 706.7 180.418 cv
+706.7 212.442 695.675 243.489 675.479 268.34 cv
+s
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+579.901 40.6436 mo
+580.216 36.8643 ln
+570.705 36.1714 ln
+578.138 38.6279 ln
+570.453 39.8877 ln
+579.901 40.6436 ln
+eclp
+451.635 95.3154 mo
+478.306 59.272 520.487 38.0107 565.325 38.0107 cv
+569.934 38.0107 574.54 38.2358 579.127 38.6855 cv
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+570.453 39.8877 mo
+578.138 38.6279 ln
+570.705 36.1714 ln
+570.453 39.8877 ln
+0 0 0 1 cmyk
+ef
+570.453 39.8877 mo
+578.138 38.6279 ln
+570.705 36.1714 ln
+570.453 39.8877 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+707.645 167.127 mo
+707.582 165.238 ln
+701.85 165.553 ln
+705.692 166.309 ln
+701.913 167.379 ln
+707.645 167.127 ln
+eclp
+423.245 180.418 mo
+706.7 166.246 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+701.913 167.379 mo
+705.692 166.309 ln
+701.85 165.553 ln
+701.913 167.379 ln
+0 0 0 1 cmyk
+ef
+701.913 167.379 mo
+705.692 166.309 ln
+701.85 165.553 ln
+701.913 167.379 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+707.645 181.364 mo
+707.645 179.473 ln
+701.913 179.473 ln
+705.692 180.418 ln
+701.913 181.364 ln
+707.645 181.364 ln
+eclp
+423.245 180.418 mo
+706.7 180.418 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+701.913 181.364 mo
+705.692 180.418 ln
+701.913 179.473 ln
+701.913 181.364 ln
+0 0 0 1 cmyk
+ef
+701.913 181.364 mo
+705.692 180.418 ln
+701.913 179.473 ln
+701.913 181.364 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+707.582 195.536 mo
+707.645 193.647 ln
+701.913 193.395 ln
+705.692 194.528 ln
+701.85 195.221 ln
+707.582 195.536 ln
+eclp
+423.245 180.418 mo
+706.7 194.59 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+701.85 195.221 mo
+705.692 194.528 ln
+701.913 193.395 ln
+701.85 195.221 ln
+0 0 0 1 cmyk
+ef
+701.85 195.221 mo
+705.692 194.528 ln
+701.913 193.395 ln
+701.85 195.221 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+676.717 93.1143 mo
+676.087 91.2876 ln
+670.67 93.1772 ln
+674.575 92.8623 ln
+671.3 94.9409 ln
+676.717 93.1143 ln
+eclp
+423.245 180.418 mo
+675.52 92.5474 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+671.3 94.9409 mo
+674.575 92.8623 ln
+670.67 93.1772 ln
+671.3 94.9409 ln
+0 0 0 1 cmyk
+ef
+671.3 94.9409 mo
+674.575 92.8623 ln
+670.67 93.1772 ln
+671.3 94.9409 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+684.527 103.256 mo
+684.023 101.429 ln
+678.48 103.067 ln
+682.386 102.941 ln
+678.984 104.894 ln
+684.527 103.256 ln
+eclp
+423.245 180.733 mo
+683.394 102.626 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+678.984 104.894 mo
+682.386 102.941 ln
+678.48 103.067 ln
+678.984 104.894 ln
+0 0 0 1 cmyk
+ef
+678.984 104.894 mo
+682.386 102.941 ln
+678.48 103.067 ln
+678.984 104.894 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+690.826 114.594 mo
+690.322 112.767 ln
+684.779 114.216 ln
+688.685 114.216 ln
+685.221 116.042 ln
+690.826 114.594 ln
+eclp
+423.56 181.049 mo
+689.692 113.964 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+685.221 116.042 mo
+688.685 114.216 ln
+684.779 114.216 ln
+685.221 116.042 ln
+0 0 0 1 cmyk
+ef
+685.221 116.042 mo
+688.685 114.216 ln
+684.779 114.216 ln
+685.221 116.042 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+696.433 126.625 mo
+696.055 124.798 ln
+690.448 125.932 ln
+694.354 126.121 ln
+690.826 127.759 ln
+696.433 126.625 ln
+eclp
+423.56 181.049 mo
+695.361 125.932 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+690.826 127.759 mo
+694.354 126.121 ln
+690.448 125.932 ln
+690.826 127.759 ln
+0 0 0 1 cmyk
+ef
+690.826 127.759 mo
+694.354 126.121 ln
+690.448 125.932 ln
+690.826 127.759 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+701.157 139.916 mo
+700.842 138.026 ln
+695.173 138.908 ln
+699.078 139.286 ln
+695.425 140.735 ln
+701.157 139.916 ln
+eclp
+423.56 181.049 mo
+700.086 139.16 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+695.425 140.735 mo
+699.078 139.286 ln
+695.173 138.908 ln
+695.425 140.735 ln
+0 0 0 1 cmyk
+ef
+695.425 140.735 mo
+699.078 139.286 ln
+695.173 138.908 ln
+695.425 140.735 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+704.243 152.892 mo
+704.055 151.002 ln
+698.322 151.632 ln
+702.228 152.199 ln
+698.512 153.522 ln
+704.243 152.892 ln
+eclp
+422.93 181.049 mo
+703.235 152.073 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+698.512 153.522 mo
+702.228 152.199 ln
+698.322 151.632 ln
+698.512 153.522 ln
+0 0 0 1 cmyk
+ef
+698.512 153.522 mo
+702.228 152.199 ln
+698.322 151.632 ln
+698.512 153.522 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+704.055 209.458 mo
+704.243 207.567 ln
+698.512 207 ln
+702.228 208.323 ln
+698.322 208.889 ln
+704.055 209.458 ln
+eclp
+423.56 180.733 mo
+703.235 208.45 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+698.322 208.889 mo
+702.228 208.323 ln
+698.512 207 ln
+698.322 208.889 ln
+0 0 0 1 cmyk
+ef
+698.322 208.889 mo
+702.228 208.323 ln
+698.512 207 ln
+698.322 208.889 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+700.527 222.749 mo
+700.842 220.858 ln
+695.109 220.04 ln
+698.764 221.551 ln
+694.857 221.866 ln
+700.527 222.749 ln
+eclp
+423.245 180.104 mo
+699.771 221.676 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+694.857 221.866 mo
+698.764 221.551 ln
+695.109 220.04 ln
+694.857 221.866 ln
+0 0 0 1 cmyk
+ef
+694.857 221.866 mo
+698.764 221.551 ln
+695.109 220.04 ln
+694.857 221.866 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+696.055 235.661 mo
+696.433 233.834 ln
+690.826 232.7 ln
+694.354 234.401 ln
+690.448 234.59 ln
+696.055 235.661 ln
+eclp
+423.245 180.733 mo
+695.361 234.59 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+690.448 234.59 mo
+694.354 234.401 ln
+690.826 232.7 ln
+690.448 234.59 ln
+0 0 0 1 cmyk
+ef
+690.448 234.59 mo
+694.354 234.401 ln
+690.826 232.7 ln
+690.448 234.59 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+690.322 248.006 mo
+690.826 246.18 ln
+685.221 244.731 ln
+688.685 246.622 ln
+684.779 246.557 ln
+690.322 248.006 ln
+eclp
+423.56 180.104 mo
+689.692 246.874 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+684.779 246.557 mo
+688.685 246.622 ln
+685.221 244.731 ln
+684.779 246.557 ln
+0 0 0 1 cmyk
+ef
+684.779 246.557 mo
+688.685 246.622 ln
+685.221 244.731 ln
+684.779 246.557 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+683.394 259.03 mo
+683.897 257.204 ln
+678.354 255.565 ln
+681.756 257.581 ln
+677.851 257.393 ln
+683.394 259.03 ln
+eclp
+423.245 180.418 mo
+682.764 257.897 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+677.851 257.393 mo
+681.756 257.581 ln
+678.354 255.565 ln
+677.851 257.393 ln
+0 0 0 1 cmyk
+ef
+677.851 257.393 mo
+681.756 257.581 ln
+678.354 255.565 ln
+677.851 257.393 ln
+cp
+0 0 0 1 cmyk
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+cp
+676.087 269.801 mo
+676.717 267.975 ln
+671.3 266.147 ln
+674.575 268.29 ln
+670.67 267.911 ln
+676.087 269.801 ln
+eclp
+423.245 181.049 mo
+675.52 268.604 ln
+s
+grestore
+gsave
+0 0 mo
+745.92 0 ln
+745.92 333.879 ln
+0 333.879 ln
+0 0 ln
+clp
+670.67 267.911 mo
+674.575 268.29 ln
+671.3 266.147 ln
+670.67 267.911 ln
+0 0 0 1 cmyk
+ef
+670.67 267.911 mo
+674.575 268.29 ln
+671.3 266.147 ln
+670.67 267.911 ln
+cp
+0 0 0 1 cmyk
+s
+save_ctm
+restore_ctm
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+735.045 222.936 mov
+(D) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+735.045 209.293 mov
+(ete) sh
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+735.045 187.259 mov
+(c) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+735.045 178.869 mov
+(tor) sh
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+735.045 156.817 mov
+(s) sh
+grestore
+save_ctm
+restore_ctm
+save_ctm
+/Times-Italic*3 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+409.072 208.764 mov
+(S) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+409.072 199.316 mov
+(our) sh
+/Times-Italic*2 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+409.072 173.068 mov
+(c) sh
+/Times-Italic*1 findfont [0 -18.897 -18.897 0 0 0 ]mfnt sfnt
+BuildWidthShowArray
+409.072 164.678 mov
+(e ) sh
+restore_ctm
+/Times-Italic*1 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt
+BuildWidthShowArray
+480.899 20.5181 mov
+(Equian) sh
+%%IncludeResource: font Times-Italic
+/Times-Italic*4 
+[
+103{/.notdef}repeat /g 152{/.notdef}repeat
+] /Times-Italic nfnt
+/Times-Italic*4 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt
+BuildWidthShowArray
+535.493 20.5181 mov
+(g) sh
+/Times-Italic*1 findfont [18.897 0 0 -18.897 0 0 ]mfnt sfnt
+BuildWidthShowArray
+544.941 20.5181 mov
+(ular Geometry ) sh
+grestore
+grestore
+Adobe_AGM_Core/AGMCORE_save get restore
+%%PageTrailer
+Adobe_CoolType_Core/page_trailer get exec
+Adobe_AGM_Core/page_trailer get exec
+%%Trailer
+Adobe_CoolType_Core/doc_trailer get exec
+Adobe_AGM_Core/doc_trailer get exec
+%%EOF
+gsave userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse grestore showpage
%AI9_PrintingDataEnd
+
+userdict /AI9_read_buffer 256 string put
+userdict begin
+/ai9_skip_data
+{
+	mark
+	{
+		currentfile AI9_read_buffer { readline } stopped
+		{
+		}
+		{
+			not
+			{
+				exit
+			} if
+			(%AI9_PrivateDataEnd) eq
+			{
+				exit
+			} if
+		} ifelse
+	} loop
+	cleartomark
+} def
+end
+userdict /ai9_skip_data get exec
+%AI9_PrivateDataBegin
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (divergent.eps)
+%%CreationDate: 2/8/2001 1:38 AM
+%AI9_DataStream
+%Gb"-6CNCcAOWaFiB)Nh:Mp/!/Blq?VOuKg]<<Zc2HPfUL8iO(8[RPnr&D9//DJh\7jo5,JB7rce()m.uMK8utRR0%Z,9nEqr9YQ?
+%qUOQtqcD*N]_^UVqL<t-H^`.'qg"OO]Lt7Iq<D%rqTgh/]m[M+PgAKNmEVRk-"pQR5%T4%LO$mpc<oJAIsLqVh='76^:A[hpA"LP
+%op`EtmgaQn2uddqIeiij4+R at i`QR#F:Oi90qX2=^rU]JqDkGoNs$3 at JhZ*5sh2C%N0[//;hn\QlhYdS\I=(j/[t"DR:Uf6=h>ZO0
+%c@<V/D;)NV^RO`Os)ZTMh9S=!ro),p:I"h0mA?FY[/6bNrr/PH>X*]=YGApOp-W3`gR$MVgd44Cg4ep;^V.7+s7Y9<lZ]Pia9td#
+%r9=(6]A#9Jg8HnKh7W^Voj;nar`lr3r:\0H>Wh5F[Q^A!mk8&'h-RgEoCDb6/tF^Nn/)#m/UYCd48N7@^O:6Gp\t!UmpQN at T@4Uj
+%V8&8`l/oV4GOOH10_mPDa++)ls0l;3YBLXcDYNIHqtB`=(\I)J?GH>T^VSJT<W(_BDL]7[5<s_F't2/.4MUjdp%u at F4J5tu"i%eK
+%c&TR7S"C8_QCc7k.fQ>!VQ2V*?;DU at Y;]\cL;3UkfL:88msfhIn*o*T:V3"PcX%Z3Wu'^eCDnHniu`/GrcEA_mZr#oR.=D6KfS+A
+%qsW5QQA:p>JH&:6]IRQZ5P?+ at qj/,.J,O]fT5Up*hnG5<h7n70h2D::/!umbQ.ZQ?g\5p$DuTOs"`>]BbrkIpr;-6V*A<sGIX--3
+%MePA4r[TT"E;epSgNU0hmb[!2J%_nHrp=pu?X@%<I/E'.FuY!ObtkgPrp]daTn,B:WU=MiEB+*Eh&O>Xo7B!3bLJ/1p5"di_qJtD
+%Q2!LMh)B7Yr:&^rf/,dP8E'I'?iP6Fk1eX[G@*Q<GX4q+1\\78ph(F*5P.qSdGGM#s67ddk8fbEhc9XdIJR)(s(;3W?O66,)tfJh
+%s2D&%a4DtaI;kDJl2V\$$F[k.lQ>2krJ(:UmsP/aPHXuQa]Do"p-7EKIWtZ)L2_ at KS+AEY97OL++\q/1J%C)Uqs;Y5E%bNPo_G*r
+%G'eH-ihs7=i2t=s?iTW5m2Pjcq"qCe(N0:drd8qe5G,b#^&.?mqmY1\Sj3,?k5*?g=3l>?s5K(8^:X at 8]4^#+ls*6>2ZfX:qAn_q
+%a*6p9e5UA]:Od[$d!*fR?Tl/Qqr>$;Qh5dr?JI]YI0NpTq<cAk2o#Hc]j8:8++AY8m.oskG<dukls-!OrE#Z#Dr?Q2m[h,j$0Vk8
+%m.fr0rL5aTYASfDS,DVKDdNJ at mAiHW"6-ptT5"182m7`-=o*O;r6Mi*?bC^T$6Cl"),0pcS*R[fYMVM?n`QNn]RBJ>%FHDFnG0DW
+%f/GZ?Qr[=YB0QEVL*tlnIJ3*4YM['L8UL"(c*MUY^:CpoGLneBhq^JCq&W("GXeq#2mDYu)\C..GB_Zce*C*6#oM%4laJhAmq>+s
+%iZJ3 at qs-31%0$+`p"c89*<LW#F0gA)-T$@VpADqD=j9+Un%O5K*^AT9ro2U.L at FP]*e/?!%mqudk4+B'gi'aRDtt-_2/Rfsg0D;f
+%n_*BpL!\('r4k8h^c1D,Dg4t5[-(`srI4:ch9XE]H$b<+nONPN5Ou^A1_9Vk4nW1XO+6rpoc(]4>MrMb!7fpi]B0o:lh=YRVm#pH
+%f<(6PRZ?^gB/_jl\,?"QpO:j=L9>FKF"b&R$Z>XS]])@qEspIeMI6.IS%mN/]f$D6Q6u"0k:ci*!WbD$n+kB*r205+Gi#oBIc`l0
+%UWN:6_,%fA_ZeN2oO#?4_cu%+?giFKLa7q2kf^rGS(B%iI(fF6MGXbLlJJ0BIsj43AZGZ`s7Zim$7&=BA0KtD5Q>gUe=,7h4Ug<D
+%0^nID/,]s6gUoV\Z7T%CqKhmOOph:upFebFG^$ds(;SOG+;\jGM&.8*'<ResJ,]fSrO<qno(%/oO++Tj\`.QSF(Mn>>a;H00BdDI
+%p2V2;3l6#7f*,EGGgRZ/a28YMMCu`1i at 8eH2oE%YlMrd1i/[4FXp]GF_fXc4!*Ag7B4'SsIeJ,<n4.ur0Dm+)ha)l+ at RqYt&o*fO
+%4rhEoS-Qj)E!`/tU5pJ;Qsu(%ei:]u4N?u;&MN)fI0qF#S4Wi8Sdt"PcI4(e[*KnnS9)qr53-4fJ-c3n=@,R_FG-qQa)YK=.o=BW
+%C8l8;eFRtmT*&!;>iu!4S1e8j_ERA1I_S,80+[I^&*5JeNebfQ5GhpNm[nk1':-rT0P0dK?6!D%r+3ObQfW8%4C"Ib?9\2M57pXq
+%?=$sRr=P]LpfiFfq(b7j!)L,Jl/M9nio9mqG]C7G?d-ku\]>QnH4:\i_HfjuQff1JkNBnW_tj:Z4pTd;]YL#cGruW#*i=?H?61b[
+%kJuWQE82Pu at tjGa(hGf6(p,kpLWdTSi>b=:3:,TS.XXlQ,l"6UnF1:F])0\L`Vpjko`/>]mjid2L@:0W$Q^(/RP3i^q&F#/!:r"m
+%($6s_Cdj^I%l6/pbBa2qG_EW__i2GL@:h=>DhM9e0\976//L#/a)Z\FQsh!BX@=ZOf#7_X:&-POjE"G,6f,`'eQcJk;i\)N*fplO
+%QnHhkXRQnRH4MN4 at HDQ&J-,gk_5/Se!bRr)L)^1hB#'`7G`r,W!oT3!;n*5PJ6b[\Z9;S7N"PP3"9(a)6P&rOq+JNJF260*i9C_1
+%>6'!`?uZ0oG(+IuJDo[AlNb6&)>6=Hh2l#W"P=sE+VfOhKREu%%_E+G"nj#$VQ`.UF4aC>,>LA\`$8#>il$Ig,49pQrS\4/(k_e&
+%mh4Km?bZ\?k53Cf*o?0\C($\!5i7L_<e&+:&*G,]JV9j4dKuo;GH_$eNFEP!5P,^j/jaQVM?(NQ8<QbR$8Ga/bLVrPa5.@$1^Z`m
+%e_fU4l*&U3p:%\0M,PdKP9/0XY5EgtR6Jks5NKs/mN6a[N7t at p?<]4+C5,X`l=H$KI*#H.?Or]c at C4DA6b[:3$<n>=\:QChDf_W3
+%pFHA)$elIAA?0qq8[N*7RY5DgW*,W;@J\)I,YWDJR`+DUO<-jTI2Adt_DI/!+A;lcf`MNpJXSuA#6Zd`WQ]Ih@(dB(qAb;@MV!jk
+%li7/)L$V-8p'dblOF^pBBtbk2E^6].&FDkPG6'H/S,`ikJV7t">TePm5jmTPJFH':!72=^JdP0P\-fHq,HqL<&_P&KBJ$0"G[M^\
+%YCW6TljT9)$qt7DXQBd>k8Y>b-##4H=:op!Yb_cpWBb[[C_&')\/qlYF'rDm+Om1Sj++DN1]`MecNIhb!sH%;>lk,HT-LR-OR[lV
+%?GaRqU&^sA8HkCdP6/ra++ZQT/"NALBFN,X**=c]E71X(Y[%e+2o>1fcN88pi1k7q0F7%?*.KSkEF5I&"\d\P.gMm]=F'teNYbAN
+%Yka5V"t[Ljj.A!uEZO at q(P5c)(]I\)FZJ[i_M)clDc^%HnGu_.$[PM,7 at 6<1bq9^YL>D##2&g!6#W6`lXLV-23 at 3C8E!+<Z`#B>,
+%QK$.U^fcIQUQ?^0cBGG"d'9;T#Wj6q(h(I at 4'ge/,**'oW4o:iUS<eV5:ZZ2!!FJW#s]sAW=[!WO:"<>:Il=3EC^6W(5Z-A@^1^m
+%,8Q803"kb;"XFkG:e4J=M$9_De-LaS'UMp06BR+Y-5;qOE'hsOP'J1.!#<Uli(8lZY=>Ba_UJaW(QKb=*Jd&-,Zn&%7aPe3Gp8E5
+%'o8m\%n]ce,]:F%Lj;a)f9&J)K:"sG0HruLV7_sl*'g>0ZB7D5Cp7V<]FVUGp5d-;Qru13?qUna"1Ge>]qnq:Eao?\YQJJC`"H`m
+%XGt2&=dV at VV8Y1rAeT!#5t8\lU=/&g at I]Fb*,&3qBn7poD'7kX[.o4)LGBFJaKRhiJf"_r at b;035th=kXP%",M'4!'5ZTQX$]HI]
+%O(<`9"<U4K-PDL$SOko,Fh`\QM5W3r7q)s]]TI.[hFtA7?oP3Fa\sIJ'8Z""+bYdj8hTf"gg%nm"iOPnmj.YEOBX':8ked2RB/aE
+%_/KGJ!(*V#6@`5P;9Udj*MXM6C5h1$=(@LM*Z!@Vo9r`^?!T-R at R,5OCis=&FRE at oQ=9H+*ou_`,dKHRpW*\mfHY1%J]oA)oWV\b
+%XWE;K,0Ps26]dt5_ce:c0#51G@)7M$'elBqaUYPYO\d,"PE7m3f\oA_%tJLFCd]Pb5ZfZ?(QfY9+Lt%Z-MRR+->8QuUeX0GTfXBh
+%&P4<#lFCSh1D.c'4/.j.Zs>QkGp!/kM(gDVF at 8KX*9%IqKWl+U,(Hup8Fg/,!X1hULBJ)Y)j<,/*\1)%,MN0qd1UlU[ep/anj9/q
+%EI;=l^<_\LBgXec%DL#C]>p-/j4qT04oO!X'sigTAdc\, at hL#-8AZ at 20do[S(IkVf%%pesCJ_^3$$<Rr27&@0SA1[BB8-(%`r%.V
+%Dg>>bC&F'U]rbu"e^Zf:rRu0pLXgNP?0D/!Z%dJZG[2r*%;4/d#?28g.J=+L/*^^.SnGUW4%85$r<MC(<I_'j4/;ko-n^r$bVUIq
+%BS(PqNXLQn)bEQ]S3=tSX;%^=XGX:ZRFK\BMfR&,nV*p^::s?',boMjGY^s&;GCalfo)T+WcAhS)?!Ir`%!E32I^fs'kX+!/!ZNf
+%k0'%<$u5CV;KrBZ&9mVnDU(>pa2Bll2SN#6?oG^+*^92sZ7&$i7tE%5WjZoR+I7-3 at DQgT%t'!+#I+nG9ccgc9>^^u!lDSM9?#;q
+%8u)o[jsN at mOZ(O(s66cbpA2b/5J@%HRQg*j#%JMYW9DH at 9fj1Xc\d'D0Pt9k(&4kDVo"o1A%==VOc9V[BadD_#;Zl)WgJ&ClO_(P
+%CkJ-F+OLPL"Z$Nu(!%e.'=%7*aF[P!<cCX3!>ttq"_%eT&<n1`1Jh,fN.BT30EGV_5lP2Um>:`snOM$RKHG>:2W'_g?;1*0\7]*3
+%9_Mr"B46^Wojgi+buh_;f;l_o:%hUu3&eG//B7RpD0i<;qBcu]L%ip)*n96K5F:C64V%01UY9P;Oo0td8 at 0&Y`g)=[R&e at eDdIt'
+%X?ML3PZs4/Na(qSBsG:/=p8:3ks((DCj*;LbUmF$XT_X9TZfSu1DM=u]P&)@V7h+b/_7]F_"*Nn]JpdPdHnfU';rhSe&k:!D8b!l
+%]Pf at iEj-#UUB>[@#MZI<3OK6q<L at X?C(Fol0\_34'$POWM]'M_<oD?+^pR<qcc,V$AqMLdK.<aN,9%07f'C<#Ru]6m&@'p.HXmMf
+%=EfDMG1j$V2VfT^FNL!;ablS/H<WrM5*4IU!d>JiKr5rT#kKR7"qG</7KhEVBYVX7-hMXE9PLkbIBi)Sg#GDA=G:@8p@[Ac#q+M9
+%>==Tp5X9<;aMl[/S@$B_Bp=#4gVrnW6!POa"7kU:E_q<s'K6Y-DFED*OeZ4AdU78gU+L>7(L.U,8(!)4&Bf.[HYN?F(N1LF?<ePu
+%UU=`O=g"j&8hEl;XC0hYCeP[O0H1Y6, at 312R4.q/L$8!]`hrIF`X8)e%ZVBA)'%OQc<J$]YjF]X#K#PPA?=J>K$"!t8B,t6N10Bn
+%)ne8)]<85omK-Kq!;9HD[2je">lmY,iqaA0k6;Sebmmkn1,)MJX4aCZZ5p0Me1B*>@8kCGO@:=F6M?)Va\/EP1+$U+SLJ]I1m>oT
+%Jlkl`p1e,'@]]jc_i0B(%P]!N0g)]\[T"KX\KjWX.Aj<VK0f4JbXH`aALu-nM(Ei'-'!0glhNl_puRXg^IO?7g\pU`UrPu at j^[*!
+%B&)&f?u.j><j&8F>J5e<'?O-R;/00;>[_dN;]#(Nno$oGmu+(,DCK#NKAO&fH?D=5L<qO"m4[8s at mhNn'Innj7Bq:^71A4TOC_Zf
+%B\EUR'?7_oG2QM=O>k%E'a at YHUu3+u10%d6pr_trrDI7E<9&o9gs`$U;(>\R7!9+JBs.^A at gjLULeJ:EW0mEYmF(MmSYBY21`Ih\
+%`r*`TQ'*jB6Rq5e2mS5e&rgILnjGs?:hV1;MNKHaM%"?ab[X%rcod$skQ7[nd[ids85GgJUc5WI`4A5CkmLB*CCES1!]1)SDC1g(
+%'Le!i<W%nm$:>/PoL&S:83<2Z.,>`>`k=4(LHPJi[+/MMO8ffFTYGc5b"Nic>E=N at V.%P:7r<t#DT>.J&#!CN0+Kr/a,Kn8 at gb(6
+%J/="VJ/]Sg(P3A(:6^bLJ/_]0@<"W=ihBY(R\6CLM at m9bA/W9d#E<j3T=urmh0SFiM+icPhh1,Wp at pT2E>;2+?5qJ.,uuT!Ur>fY
+%(:lfM+'i"rfX\Pl::[5ISe#Ml at CV>Ul[7_r[M^^]n_V$1n63L9H5,u;k4N:3pJ:__E0$b<nn>a^1g^[RMcKQFAn]eQ@)if?1#8=e
+%Pj`0fgBMX:>^7Nom(k\hb7(S8l06)G at q-V8?Zp?@[YL00AQedh-h,#6G:bdqOcQp<V%-qmh/tK-L21nHQCTCa/h`3h!NIjm$nUL:
+%]()Vq`[B/m$7kmC1ue_X5^EH1 at nADBAo(D)e+A5?#1<mP)EiGCdu7$V*_J(hQu=cf**^XI#5L/>gr`lj*`^c]Q.;n9dk]3h.MU6s
+%r2bb)%!,WmM%==F&Wh(V'Z0(s30\lE7b.3WIlm)!!bU[=3=`?kLhGJorU"-#(boa*YgK*'0VhWA,^/go5Z;@[*upQgN?8pu3djCI
+%l:4?rIeW:(p25)aI^Aq=D_VrJ\;0LhA!N_-.RB+qJf`I0a,2R33:Ve<O#ZYgWtJqHN(XR&4IDe\#nWg4&koOr)1()UU*^`1,qL9&
+%XW8r2\u\OtSOJ<VTpuT?)'&t)k9+t+V9PaHRe&KuMaQ=NPpVuaB.mhZFc(Hr;3npQ3?0-2h at EC7kZ;=d$?`Is^q!.FXW1_I6Vl2?
+%O9N-*Yt&R6*1C92.=A2'd?U86=b5_"qdSs6=C7\65(D'p+8+<Hgk&%dGf5G/S9Vu/%u4o,15)8t:iN1!@@YVP]!$o52`O[UnD:X'
+%]G]o2X#D]ghNA%4IU+5ip(Z<$20tQGgLKk'>@4[\P,[^S?`E.P>fn"o_b.Ci at f$>G715\]pKV\QDQDa(D at n4A"PmIEKe*iHMRl-I
+%ib!KsF%tf3m^uQ=ki1>@"u/``PB3bY;5hVD)t-;]=63d<,"Yh=NED6;s7rM29:.t*<=TcJ9FbPbZ7/k\PVEu[j=g1i^O2)0Eg/GR
+%=u0krHOL_0DY?F`%P>D7YqV&=Z`"tgAY`o\AJ6MJ['?<h9r31lPoc_Lc;Ac4"dd)fJ at A*B at Q;[u5n'_ib(4Ph$oY+$?\o#/\I:*c
+%_^310E5kcK0SdhY8eI%SMM?+*%4WBq1\_NAqD%ot<-eC,OP<.u.FA&!E7Bs-V\HoG6&tfHI\\%`fTGLPWhbS.O<5]bI at e6.`W$u'
+%DXCHZJo=)*%MJf/V:#\$3B>t`%hQ36$:-k7*`'NH3!?c.4g;;k't:-?-eSJ^nNGr`AO);/E(qZZUF0hRr8S at e36%kQ"L3c3Zp>]j
+%$t<LDLiGucXfb+3+Z3GN\-eAtZZV)f+8!'CM.fb1#h`0%LQ':M0=64L&Sm<l?bb%S\(%S9Y0npKVc[;B-?IL>G)ZD^/kBb*Y-ahn
+%*uU0)aO3<*>Pc6ac8Y=+rECs5M^"9nolG+!1Ec at Td<['Jen$);Sg5VHQdQ,5+&<]**MlVO167X?T=l/:NE"]YW`^+j=9m0f$>u0>
+%=d>!fU+'q!AZq"?nWOS]\W16+a"*/f6Hc=M(6?"`Vqd0Ngl at BljB0B^rHVfCj6%cDr'HQ7mdk3YTLcq3=mgX>NGuOoA\h=BpS$NW
+%m;Td^kh7rVmc*=V@[alHM[FC9Q<Wso5Pg-VrBp>U$nm8dG5C&O-@:I%('<.r,P=)6Xk[#OiD$3-R&p?tP>!jQ['m?i7!2dfi"K9$
+%@&/HU(F3c:WKd6cYRBuZ0ar''Qh4l`]-Oh?fQO'Bm<bi=$]"g5!9.:]_X<PD]R.X_.V?[;LcEIX\>LP@>4A#d0iAa7:HB at e0Zod$
+%EmFnJHNEV."mHUhHPpcu)Vmdi:.p-_`qFH2MRU8IGbEc>=r<cL\/,D-;aisiA]3_;,$^"Y,ComWm#mNLZqu!#'e[JB[oAIdibC\$
+%b'+RL]SuF[kSW2)p6:R`5sH7I43":LI\\G.O5)DdO]'X%e)F?'biVqlg/E!ks!YGBDBik,ARoTYQ5/@Z-"KD_>83VL.\r'CVgJ7(
+%F[Z9C7ZFph/gd]%'4I at io)W4]_h=Bj_T+#17*DJm:?40B]2(@sChp%90=OXnTBmDF-2Tel7]W[gRU(S.*%OF9'e:j<EJA`Y-),kg
+%J^Y\.'1&!;(_K/3H<>tFo-f&)iF?bYSOpC"*]Bb,XMg,oXHtds081fuJKl!=FY8q3%kYJ%kn?uD>BJX-)jWtHLl'h0lBP6VB/0b;
+%lDHBW>;>^E`2O0H$tFtgV5VTV=)foA1+7Pi,:bms<S5b;>$M6"'@q.<<^89CR'A#,Zks=e0%tHY^5Uq,](K$eqR$LWg/5nkR&c[6
+%k74q`fN?\HWchEYD*;e at 8pWKgASU$N,/]!ijMMpgSFj^qNDhp]JWFm1X3*<C[;XY_Xs<JBUD-$YQNJ>jcj)"X4:R'1E/A+P"@PHY
+%U9KCgLquc_LS3mnNJH\#4B]rGR`'+(adC-c(K4(Ll;6H6b&kn1ZndtL5*18\YB)/#bh&\U>h7*NKuSfKRDA!i\>$\9T#E7h2;ls[
+%CGNqJD'+!\lBg)I\#_)Dee12M6/2lgW#'oW9"7h*?eOg9gYHPX.uV1791_`$>@Am0CVk,>!k*F%emVa;CfM^c0#P+]S83R\OOaLb
+%++N=4MpLnoXMQStF'l:!_Len>IW+/`4cU_D[GQ-CD0Z5lquI1d!(^6CVpRi^>"W""hAR[mP.<hc@&_=q#eJgA-*Q`+lLJ#C^f1N=
+%FF;Ws0kdk[2]dUJ!&^"<C:7 at _p:2ZK4^1B-VJ=.NHf9(4s)nU at cS6$6N'oAeH5`,-&q.hpFH<+$j><&*3LG]4N($t5U4pDh36B<V
+%[*UUqAg;(N)RW;&k?s4Q6t`pQN=8Bg7-\B[DFiK*kmb_LLSA5?6!dK(m8Uc?FsL4]<6:mJ_eB^Ir/\8pWmN';0=K$$,*#Gs*gT`8
+%e9p0D'\s2Ci97bFCY(JGY+\9T(:pDWX(1+E]dX at Jet&Qi)^a8Q2k?c"f2d$A:DeC1Ktemr\sNCOGXse""L2%K0+q9E7DKK#p8nUf
+%7TEg&W+s8S5R.s.[#4X78[+6]M\(O7)\LS7Y@)."X[LI_c_h$3D>T5_[FsOQT,^N)g\N/-`QQtiPf-]R]o]#0c@!qj*0W>MCF.)b
+%0O+<2cKN2F-=W_#;;7sg#!4-bCrloHo<@l/Pg6S8+-Al=%nQ/:=9_Ss4=+KtcM(:7i#OD;1S85$1%m1 at pRie/69Frm%&rE\Ad\Hg
+%3Ul]XJd&Ign;ueD'%l?JE%:/&Q>DfoqLOAC)+"&<=0Jc6hEKiq+J>85(eqLDVK[E:>3P.L)^"\C1%)]hf,,TVI-gC.8,3ajs-!rO
+%rLhLJ,6+Z$lA9"q(P;Z9d2tnrZ9D_Brbimu]0;7!Ta$$*W2b at r"&0e4cS;I&j0?8W_7]JThEBDA=674=d-KBZei[k at F%!2pUphGp
+%.gPa1Qan3hX2jo,"+.YL8em0Pd,#-jMt0Cc[lp=7-O/R&AiW#D;Ul+4(@*]hWaP$f^ATbC=cCDWI,#8*%:YRg7c]$.n$tI:=-X@\
+%k-pbC5qU2f>`HX`^W*)(N4Nb9f&M7@`o*r?Ho"3;WTi*iOA`P*[A/;bjiBCXQ#a$>kG"\*ejsZF8OjGd at H6J3Q$(4$R$sN;<3`BW
+%<&u#c:ogT,+1+UfLeU*m<./5OaWjf2UahF)jcQRu7o`ThAj%6[f2]uFif=VN#.1>OoRPMbWsJPr4j]rBBG8T2Wt[b%VoL9 at O&ZN/
+%Wt[`u.=B at jIW0J`@r;1bgA6l<ocJP9B^o2/s09$3ZGg<jrPrHC#M.IU4<<q]FMPrG!?Y)BHorG=,C4a91%g_tMuP$opinjXUClMe
+%VZWC_Bmu8a:!7Z60WiVYp[.7iPLq5SBLeKFg$,&5>D>;.;3bFFO=sctYhB*En66FmJkHDXAMMk89fEM1[7kcM.[B0c_h&r3cub>Y
+%e:LiD^t4k&7Y2Okp,NsiT6\t^HDt9d@`H'!>?=5b44`ni at adc>?=h'hJT[^de+:oqB;S5n<H>+Q^.@(<LQUe;E]rRGS8sj13Aroe
+%])Z"MJ;tA;@0`H4QU&.acn2C-K at O?^2Q5/t'"6)B;L,!778>nZGZtDp$)s)ZEH'=N3+/3n;Bho(8;4^HEDXaJN:^c+7Y[/j#cKVg
+%'+ZR`H#QLo0r?[!@@4b?Fa<Nm:`#oZL$/kAPtRi"CAhU6Jol[FM!f(P6(HUARFHen_Js(40O`/Z.E)8F(ulFrnSc#]re'k<=:sZB
+%LiLRn at 0DOoLt1e]jt_8^:a*[+6o^&uA1In]CY]B5XJh>?</OSJ8:h\u#Y!r&aMb$qL_NVHTK#h%cO"G<Ta^%f90IcoLI,Yu893A,
+%?G@'4W$W0H<DLbBh\/VX61*0L'LW'j"$luX!FGb3&lq/o[-SpRj21,f0,Ir]52Md61fQo/L^74IADuT_k4%sqHTe=JqgTBiA/;q7
+%gt]:pb2Vi46+0(h1+%9njl%]O>+4`sX&=ebHFYXL2t"3;m[=p'bL at T,1<cBeZa at _JK.ZQQX=XR67of4Z<F&\Ms5,B]XF>U)6Kd7@
+%a88L5IY$h&4`2SaIeaWas&Nb]If:4G?hD:Y06e,lhr_;kc\W#=AMZ"S^c"IikR3Zh92]d1WL[@LrfqZ!>*1pH4b=B<E at jSM,tAfX
+%PfqgjEd<@ZR5pbi;]PG+aHJ#LNhQ$SL!"28r'`,q[oF1sR=KQ7MKdH7k)XVaP_RD'25NjC]p,(+!p4KaZfFU=(*l,Pn9?O,a(c"%
+%KVPcl.a+E`an3r(%=T\DAJOtm at IH?<IhD6(61;&$>Msi9Ib+SpMcO%P_r*Bd?Gk`;X3jnR'Fi"rNa_H at 1qnacgCX0e_l3m`+'YE9
+%Sner:JiHd1=]=c3Z*>2Z>GPfSJ]$'o,c,+IP`MeS6K:DXHDDt at E6;(HC%e3f8C]"<YKW8rP#P,T;Bb9I<KJh;eKZSQWJoAcTj1,G
+%,;2q1S).=?FK%C at k-re"/![7=8QV;m5NW#W1hJ^CBT]5IA>OsB"7;A3-<2?:<?6fj2)WX0p-_!M;LPmbPWCfP\V_[`2Uj$&O]dMJ
+%W-!/Wd5;amk_Y0>21_Hb(0VV'/IeE0"KI022!j^NU7cprU-M]U#FHiUpV"Yj8$:f.8BXS>Dk32\UKpfuf%=Qr8ZGnO5?m'CbKa;&
+%TM*U7Ru1e at .eT_M?':MjpF8u5Z8YqgIjU0N+L8CIf.(,0"bH[qM]AsSID0-OX`Oj9OcH,H9Sas$X)q(U=Xf$ml!R],rYKZAX`"Et
+%9'^n=6&N8!7AT."'YR#GFq?*kMqFsA7ZFg<g`ILn0e_N4/lqB@\3R at nQf/`PPO at o0PdJ!Fgt9nO0SQ*la1aLVmP+NJ4AK%3F'4i/
+%D6iUA:Nc3e7pSEDV#&W*V5VP/WN=_#V0^+qI[]9OlH"nf]G??%;RYn_<%4"^[8)t?8=&8HJaIu]cmn);<XE\^Q1'a8dbUb!D:`RW
+%Bf.uKp6bPs0XTfUe?JO3mCM)Qf$1<th,.j=<i;]rFKPOIUr5DJON!Gn00DQM7Agl\,TR>6:*fiRjrNI"@GUiP_)YI[9B_/+*4[26
+%KR!n at dpe;b:BcT96rcd!Y=Lsh[$Dq^/Vk1'*%-q4=,Ge<5(B4>a`HH+>&K6UHV]5g'OI#[)\pfmPpZ/:>j(1G]PQA[ku8em^N1hV
+%b!it#$?Is#3XX2"ZD2e?bB.n+e`Gp[N[QO62,fWOl2nKMnT\<K%(ao\]+)@3?leWW1:dg`c?cG?`dq=,(q*._mI#XB$=L25!N>Qc
+%jn)qc$gLtnpHl'[F`*(BgVd061VbKNk%_C[-*C72cV9Ssc0:m=LSH;6XX1)X^UM]o2l+//`54VIBs4Cqod]3+;I3f3oV>P_H.BK1
+%4l$k/'6?fh9gel]T&rYN^?kB<X/i8KI^IX*>@MB7kH,H%<OkY8-T^no/B at dQmO-X[lWS)c,99U5$OYI5X4#_o!@QB22\a?)bFC2)
+%6uBK/[[^2FG8..Uam?0igof$VAK=^o2$Md[H7?FXC*VJKaRu!kUT.BpUN?mLLoh>#c]D^of`\Dk;RVC=+\@Zikq%gZTH=":)bV/i
+%67e*qVqA'nB2]4P#-%7aAiB$H4nb$#PCNDu`OjlSfH'C_DuLdE-Gr">qtUtl5%n)(g&Feh/TP4<W[Z(_(%oS at XM#V>Gc"_![;%#*
+%/;G;2l#?qh4mj`=)Q?d(V7LY]#7u<:cN,HJ.Bc)lpr459H5fsRdNFcBqU!G)0M40$r%jK7b8S\QkrO[nS-*Ib)Kp^YblpcNl8+,N
+%):W.?KpWj2hg5\^fjjM'd)?)\=Tg4#KLtK0":mbK0-A(4*lA":_Z:fuiXmOZET.QX5(jT!X)kL at QSj%Z*D1j0s1?mdIfJQLX*64'
+%rUBHYQ(RDMSp^4CTBL3Es7Z?UGOKG,]E6Jqs1dF*\_VZAD;M!tAT)eLT-aJ4Wq%5Ol2)hf>5%qi]79dI8,lrSp\t`M^[C+LT6L>/
+%hko4NCA4phino)a0AA($HA/i1HZMhSY/Y,=p(_`Im=!j+J)0^`F;9%Zm]<5??fC6/l0E":F;s0sJXd_X=cChB,9X[aI_29`i&8i?
+%+jiCd[6JD\GI^%!0(/@oP-mCJNS<Wt#XWt);gj2Gn?%_]:E\IkkB>'daK#m\:nMDQgOQ761Z5D(+6J=WUJLR6j+-AYIDB80#M`Ch
+%5H=m"+/0:b at 4X7sdl?KM2gt,d<<V9+S]mIJLH+FVLG'Sfl5J,]_oJ7'R9#Lu:G#%'\%9`Y<+#Zc)u;IEd.@*5+6,?INZ3)@/)>s9
+%7_K_I5-0er(5..cKc[sM0akl-d3/(\5/;0^*Bgq.1lf,A?[l)]cj-OG/Wc61IN!uYYb3V(h'Z6qlE/gFqg-VnH0JkABn_<12s=FH
+%o;8m)*6h"ZWkf6]dkO8J7M,EW51Nku_sS at .\%:@3fPT-=60jmWq&%^o,R*m7(UGg>&.Lsul2r$HgbFJO:ZIi>p+iDBQ at N)CZbY1T
+%)H;>4M`mqUlRSW(oeEm`s7+3bE*D2F_Ip>\n)<^5mHtM:J%E8*\U4;C7qBA-&G%[gs8,d8M]KGEDWmL>;Le)cM1;#e(M9l.grj$-
+%\(E44MS:NTTDG-qIZm"q);h3C_o"=_<nWtCHh0ng1$Q)/Qqr*cm<=Yg>#1 at U1bH_qTC*B`Yjpg=]kntbUA&K9HoQElY@#"ms6%#[
+%+)VZHbT2+2#s17>jjT:m4*\l^5X.(`lEC0OA2a(H!@_sl**7HQ1?r?apl#5ZfHd"S'mf8ji=5a^AgDeL]Gcn__$;kNMN&3T)>TOp
+%$gGit_g[SbmOscNGu;duV$=]ID(k?RRj#:FnV)u7ibY2!R5nP&@cjca7tA_n*"3MN<(8">nZ4\er-[W]37"5Il at Rjn8HDP@$&X6Q
+%Ht<RKUs=?kgk<";6Bd6;;U3YFLX"2M\%;>%Cmoq%Z*:(?GXaK?#85PJ*R$lGYs!Uk+PU<S5V:<FT at 3!_T1on'#I at K_c"CVYYhT^P
+%(-ZY^*s4'0QBs#$S4tHq*IL.BXtec7%0gZI-;%\Y:a$#[#_nqQDC]f?]oJ"Yfs,rfT&gsIl8HK>9l51o2P3"VE-JmZE$&>Em2kcY
+%8-2<_\d at Cqr6]k.&,^,C<OVSPmd3(T:rWZs0oT'"LJM\Nq0\g[>Y8FQDeDmt3m5lAKe9sO2[cH9>tc*;"!r;BD\8]E"_i>g_ at b8^
+%I_`Q"ACQ;4Ma#_BXi5,\l3?`C3"W,kpN?p%TPQCI,Yokkmd2?$Qu$8<BA)<klPM-55qk]<p'uqZB/24eiRAN,i;Y9i[E*hB0+3u0
+%#eL5\Y##nE_j;QaJ at Vbln;qCs[A-c),:=VQb]2ZlTJ-_;3J=l=!bf'U*u:ROH*I@#Eia8'9?SnHU-Q_TN!SMPm-iK<7B?\=m%[#r
+%`V$p`i!'iGNsTE0cE$hNX#-L9Var'tXmbYS<+)IT^aOW%fCoBh;4u8A=_/m&EiTm%c%%CFF"k:_k0Z8`It>3a0U*H@=RU;pb7;P:
+%FA[T1A&U6q'2ro6/aoBS^fPqTJO&TMO5Dc;%p[u.Vq*=RY<WZ3?,TN,-Y,d6HdFt3,k#G44;FaO(hR-tnhu^g?Q5P;?iU3L=B>Pr
+%P-\NOq\a'M at p03Br$n,L?q+J4]E`fm8u!(+JjZ]F`KLP<J/ii[T0Qf,nk]G"Zf%NiR'I at 2>MU)\KUgb4'.fZuV=&Gj,B"I5'me?-
+%`2?/!GH_&CC:A]e:>E"i4YTkS2Bnhb2Y!c`W:ohgh#N#:P-M4YS:!o62l"[(bY^>CK9e;s)DCq5ha=lgS7maG5tqGuL88J?0/WS!
+%CsG3O,b'R0l]BKp[8Iht:uIm,j+DHo^TapeYEHX8o9:-P9kP4\km:')!ITR?+eC^O/Zf;0*bS0QJBa1+p;*NN3B$G[nIC5m3C`k'
+%n*Rf3-FPq1\=aPQfVCYA:_l*s&`7P+GnYg@'_:TE9)E1tdpMnA_Ls/WqJC0Z]+u4oE=WJf7W&U?#htTXXgD5cfpuoKp$X_fp8h"d
+%p0HrM#cn=).F3`jf".a9<<f0V'*JOg:\D!H00Ge`,7>?%A5THMEpnR0f7Jg@$AoZ6iQ@,>R5uZ0BuPQrntcJQ]5AH\1/HD,H]i?-
+%qsA(KhF\n.OZ[?tCHh>RZN3_1D$`#4DF3jn-8'UD<5d.9,AG^]=>st_&:0m2k/Df&7SEK4qpNN4PodWCE.&W'+h-TND!"r$iF<J%
+%NnRfJNL*C[P6Hn^i%N><a>u$e^R1om65=G1`4tT'!V%]pKX\WY-[0Dgj;qDLYesanE:1Eb`X^.pS9a8 at F(VN9K5GXpZ(E.;-0ZN)
+%aib0F%A&ZN+l7R55b(1Q:C;"6VHFJF_nW^frWM%JLCMXms*N(-6;JnJgIRZYUFSn(@uuXESfPh^-CqC<>Vf^Q,X=pcZc^;O</)R#
+%@F3-tGEYNbU3AZtN<b^,jb<_tcHHqg2B"#P!75o81m+E)("Fr6k%jGG^[kS"=Zb2cNY6V/nsPJtdb04]Q^Co]nA>+aeq&e&f]-Ea
+%0ahWbYt],#e=[&U2;fXba5p>IY]bpk)Y"/`2 at rtO&,da,gSKH2<??''rts%tg_qNE0h-_)OST$8?Qb$nU62l#MVa.4L=C0seFm"p
+%/m0qPQ4fi0Bcb?/cCK[W7[/*#0rZsTdrWD\/OA3YBjtI6,q:%p60jpqZ0Y-<MDIu'gtg'>bs%N..M(NW5qs:?G6/(W)@'S?kq*aj
+%PLg+37`*K[6%04aF@!,tM2_M.ENK8.$^SHH%PV*S9KNh*0k>OSoZCN3pHS_`1O1PF5%F%[hoHp!4Qr*e%^okJkLF`L`("R`NH)XJ
+%\%km\C-\L]SWIN.BY9pnUmM8si7\:Y1+l)6,ajG+^aQnk2F5j+BDGOHkE1nL9)1_Q#i8rlQO-3>d*!i$mFtMrODC:doq(T"`^T4.
+%Wf,FCCo;c,4K\!r^$d_$!s,GRT&.au!(RFllHju[B#-j]^ZuI(q;Ehf##XEn5Z at ai_P&!D,AN/F9SI=n;0 at +?bY)K;/^imYdI_8E
+%<F7;,*Zn\]r%NMXIRI;P(Bd.nXJ>,Ei[fI`8(pen6hkFe34oo(e-EY[Aa#)I0#(^60Ot"TeO,nC&$#r"&1NsiTr5Zs'_Ce2i\;k6
+%-\L[8X<"NsKS.W!SaG+`Y3!p^@!m:Rq#f]dZ4bn]WGPO&0T at jB,U/_?fZHNgK/!i;S#@+XSa.h+?c=-/Kg'8Wq=/9q/@i^?,^cBM
+%I<VU'F?B at nn#u<fReP)L>jp!@"nZA80c1sRMdGl6l,Bt#@Q8ZP)#B,^43PnsI;!ASG>`nV#$/ItjN01J at edGCCs<roj;#b(cOKJ2
+%9Lu+JA6?o&#+c#m+=eW;<Y=XA8;.^c_OOI2P^AZqVL[Bm2?KS_<7?]\bF=q_/jN*:gU0c`*rBd1,kjp1<(Q+?r>W81`Ab3HGdpc@
+%pHQF'Ieht`L"j#mfi:2A?MhiAG/g^YI9igU\[oK#^Y:SOeD=&sn,0s#46>+kmWf5)H7RJ4DB-`gBm\IZ.182e*6eGfs22<q9n@#m
+%O7f"#0BSPn*TB0SB_7pYplKT]F(qe*r$UsCmfiDHljMfH',EPJ-Eo/D1Bi^(TDaQVc.M1FI2pO\Hi&3bh7GU!I\KpGF,)=!OcMSP
+%1=gF]_HW\*k/K?p6A)>qFreVKT)uJBbZQBZ1Z5t_=rHg2R[ij7S"*7\S#uUt_jgC=Ir'Q3qKKDuh8pZkS)7V(09#T&PB!\Ye&R[H
+%ZrFhYbg"+FJ at ipq9kAJV\lsW]Lu(BEE-cI*`"0S.K&cW<)6SpC#7WumS&3N"^E1I#F>NWB+puQaEX4DiK3-7Yk]39-^jGhC.koK^
+%)_ at K,ON1[%;`fg.Qi[3L-\$M!msb5)h7rs4PHXu\KU)t2G?h'O/YFbh[X][%1Fsu,_j+UfT$(k7<uk6JhjF^.5j#n0QP(BsTI/VB
+%^`@2?r;)S-;pCS>1!hHQX8okVU%4.D#FlHYQ2)U(dC)c.&AT%Z_lbaS#+)T3bnq]K^^2kG!6u2ca1[ce*R#Y'_ at M9_9@uP$J<+.f
+%*K=fo!Cot;NRsQY'9\gupJ?Fp`JH[:TJ4Ub2F*Y9*"`Cr2at2k1TaGQ5c3f[O3pH_,QO-T<`*l[@$qoeKKM&pcEiJBArt&S_T(g5
+%/NcS2ULkEi at _3fp*'Q/$bb)^(.FJ7`(R\q"TV<YCkJNj!`WNpaKnr@:JjN#(#t9]g8IrI30ehDQ4N!$lchg$5cHB#O;4;&T4.Udf
+%$WhR^JGmD9NC/Y2GFT&Q&a*PbVODiB_+.drR^=Ym^3KuEq;!A%hOMC*45@'X?XV`&`2t?2-ID^4?6F+Mn*ERQ^g'cC@;S>fIS(j9
+%@Unl^LpcHTpS"b:(>p<?V at dZR^i=OH6sIH_WN_G05[/c&,L<)9XCnPSD0QG*J0`\\o"s-SS_]+7$.^lW,OPUa`p20c$`\^fI`1(/
+%q-+*bc0buRf[n3&j?8L4RjnSl%B,amd[nkoF^\gk\9Z"ugaS$e"7F#O'\oZ\gdQGtA].lEYsL6VE&V3%7nP;e"h4r6Nl[,\kL+5]
+%':650n29WGeDbm]i at Y<`0Y'!LS(fGTl=N9l+4gWSUUjaJLq3S.H(IOU`EnIc*J:qkehE&]Mt%*I0K\Cu/3=?k)))lbPpoDI>ZbV5
+%QI7H'?8Bd%X=tG[)FBi^bQVAT%=:KK!7'f(=JB[c5W'GR46dTC$VSPKe=FoNh@;'cc%;GfmcM_Z49P/k>N*33$@-VJIOZT5ifXNb
+%K0`h2#@DT`%IsQ_TH/MI?3!#njq2m4gNeZbKtOoVe`RNiE=COH]1lO8@^!Z#fNTWnF+q<6;E]ZGV8'@30*$hh0%%.Q(=*3W`Q#(3
+%&UfQnm,"Bg^d0r"$hTu/iU$>tThN#"d'l]mE%Lk&JnEurKYGe;9C]+1[p\iB/gL502hbAVLqWkb#iR*+((cl21b[4"AuFI8^+bs0
+%.GZfDMg5Jdl!?m;![o`Wjm;1=CD='PItPHh2H\J95[W.qL^aI_(,R%tH%is<cWrqHoYjBPV2XUG^mK^XTl7bD_Y-#Vh_MI1C_I\Q
+%kc=1^oW<WQP?X_6b`#@^K>+b.Z_K/RK3+ped'lb\!?86Z?p9o>@P at H/\A#pgQu>K2cX8E==,Eikh?kjDd'j)&@8b_((V[nE*'3rA
+%+RZ)16=1R0"AUqNDk/jODa<3;nS0QJ)"`M`P-&Lbh[8sU#TF3Kf!W;O"3H!81fTR(PL,PK\a]H at 6f%u#`AS3^MlRl2?Qed\&ZdM$
+%7BpFp$cL$Gaa&HI1KcV;GRM\mk-2X*N)0*STg>r&Ksq,uqcjS1.`?cJgB(&sNV%cr/+4VQ6,\IX^':QR!Ag2=Dt*_(QC_M*s.0G3
+%q&a.YS'^G#MC5_Og;(Z+!5"5d18`1tn3M/.N)ioLMN0`K\Ir&Lnfe]JN1+mC"]?Pr8*s[b^J_RV(54=#%&6685o$cM/AUJ^gPPD`
+%L#2>$hE(A3!NM_\9tc_kf4jAr='p>Cgd"AsUsP2LZ3Dl#K,-h7rm!W[=R*?>h.e3PmO2V6/1d&(74m`'0=.f..kV2P/?sRINe[3P
+%N'QI[Nk5T4*h#s3GtUdqEr6j&3rS,5%jV!Ef,Hn-11,(Tko(1SB6ra@^d-WIN,!4l4/d:W7I:r1pE[YaH^L05im<Se[9g6#TNmJf
+%MGE at KnR_ff,"1%Z2IB*rl^*PF7'kEk!'p<QP2FV2.gk2M;Ja2hZB=k#R)QWW+eTJON%(;c at RN*e.b[?d<3'`bCt;Lr$0qRKA@'bY
+%;F)G4fsr_,>8TD@>Z)$q%6pCq]M(BFF!;f('CO[(9t4=^N2)MarENlU7 at II*#0og%Up>i#*\o+3+j".;+!"#hHURB'FCNThTB9Qk
+%-H&6'Q,(L^#kn6@\F"6\FB9a,P6k2<hEG&jku79uD<+jnELC#QJ`\1c]X\RIOb[dW;F*KdR<rn(GB%7GWS4&JiA*5,Of5V:GI!EH
+%q*:2Q60X[tN[dMeF!'$9Ib!"_MB\1L4=N]mkW(#$n\q?\E]"eBd&)o9Ai"E#?I4Y;s!#(7>auNZefWOH0+`7%6ju0m70:1a]>Ps<
+%ee/+QB]l*dm?A_ETl!6)A(;\[FWH#VHPXS4VDAEgk,a3<(=O],MOti#HTt3P'%D5YAWY1#7HLG4+L[4Z+XXIT>u!co1]T4%UcIiY
+%W"XHHS(NL*fVcht46,"n:%%fo.EmELcU)a7Nu).6g.A">?]AHS(<dUWOcs*H_+cklmdpC-L,AEYXrPjY;W4;DMePAb7+4f[E`tGE
+%85."krkaX\#6<lqE,q_[Z4"IY,QT5#$>>E),2k%?p:9e\U1[j8=V(9R2bqGj8;Ia$l-i[)8=55^7[,:Zj/'$@A0DlJ'GCq.8/WAG
+%LG=ue=e-A%%FKX"r#9beOHLfI6'"S_S=g\7Yr[OBc)T?5N;o-NTWM!U]Ohl&bJ:u!*lDFhCjB`":_E?t.5%iHfRZ=dITthh'5,3V
+%\&:$B!(!EPH%tnV>@Scg1MK;ZjTI>\+g<^8$B>c^V=Dd<7t=ATr6N1:82nIHOtc2'AeYi_A)%0KR<h=9 at 4E$is.YB]@V6ir?j:Wk
+%<3us,ZmHj4+#H>WA'`g at 1^j^`^JhXTeIRD:rYdPj&UJ^tm;.1V3-!k1_a%8I%%K+-F(pR/!=?jKc/[#`Z6TAR_<+^C;jL2'U at rIZ
+%WH%`_9W:ESKjfK`As&o=.`-a,<M_#2;R?H9$oMp>MIBC?nB@,b-Qp;XOueLTPQR^5D!?msUO3=BW.G'<"9`NoEuQ]gT1P>#,BZD;
+%ku9je<![l1)l'o/P-"A.0U+41is7[jUt_:N6>1AggG],SVU3=*49FQ%k(tI[_T,B9WJ?CK-Y?>Z-J?\@9M&h_KH(CR`^h+a%-%a?
+%U<l4;1BANW3gDm>:[a4_kepj<bJeW1bU,cp7OH!WbDo&n at Wk'%D=T2&CU46+0$f[U3kQC+('4Td1.>MG&O=G#fd)H40Mk7I\^bh$
+%r'dH<`#9[DZc'_?!@J4k6O[RLZ&L_O;:gqN'TAC<[PI;g&331qFk'Ro34[_8[BtWhcg3L-UgJ;fP.e8J"r9%f[;#5R;P.U)ZV3eu
+%%"cK?N+"^]L--8G1Lgu1U!g5pZWUl?c<e3'\4cgqU6D&\I:gk[:nC9V64 at 7P\rkA5#F#lL#]2i_!.gk!iC!]eV2Z_[%ct(&Hnpm2
+%%/_`0]\Z^A$JVOp^d[2">Rm%leF>)gN.['<$U+\nnH*-86f1]j8]VaF`R_^'8GSq%9p at Bn:FT(NW=fr"D!7JeCeF"0Gg;i-Wbk?h
+%\OcC%4b\9-^.]_6 at qt2n),haOPIiqDNkHn.2MIC1YR.fDPj+"VTbN<nq@^Ak at 3r79K&3b#Jh[>.3$C/OJrVofC3iFlodLHH;P\:I
+%TNONRH7rD`O2).6ETLp=jJXA9SK"=Xe(hu`@Y8M_/?REH7[&iFML^`[/=*"j9$d8P/,@)M.C!he]EBo:@_r0%S*[>QYZb`JCC_>g
+%XHm?''TgJ^i_"$g_iq_f$PkI+GZ6d/1kir30LL=:oc%t2d>0sfBjl<l`u>?`n7"lWV1hamL[-dAZ<Z`E>!dKiB%ReN0c2`bBoB84
+%I76!lm;1dD4=4T3A!&=!99B)_JJc,;_ukLYgF,HR at ehr.Z%#\]+H\.:';_h81E$G<M,j'%'++ at pC9!N65dB%)A3)/G))r81+Dp_O
+%TaDNWSCVl/[IQ/$=(q,TJV3A>??p);g,KuQUonFt(cNQ'jjbIRgUt$J4PErJ at p/%S7C>QcLjKGZ0EJK/=OgOm at g90!q71e-d)Ws,
+%O,-AcNK?-LKkH69;AB4bE9GXNMfd#WMbBNgL*gWEa?CDsNR91u at 0fS"dWDWX8.4dDgq+l1,:sS[#Mgt_YZ4oJJ?mj$8-W,.QLVs[
+%_JI*#'`HM1V<g`H at i0##E>"Img=hiq?/nQVq_Xt=MRJF$i5Cp*=FT8):WYUa6CjKZF6a]Rk",J:c%bsFQM-\J;'(h$cPf^Bb$<\0
+%N(Xo2<&'&2)Ir&lPJ*;p<l$NR/[:B[qh#h`Q1K)':>uui at 3[./VANPoc0bB.Gmak?F;j-c2+$QG[p_sHbX][nmTYXhG:=BaQF84%
+%'$BD"-?eT%,-8Xr(o\sD%WrUDS"\2tR4Pj[a+VIJ$KflD(_Z39Rpm(Y*'(*20%ss-[@XUsN]9;d/r*4fI=dek>/_'_5Z]=i3$I=;
+%1kl0GV%L4\/tP4g5X6;6CuqT8C$a4/03atM&ahsOl):/'i89mI1EQ_UX*.#6(5Y'Q6q+)^9nm:^%(c75ag*0ogipf!JB=9D*Q0<d
+%mhYY1YgMXaAjV-]@r1`Mer(_[A<U2lD,a"t%9T"q?e at V*ZpT!S#Z#2CS,_;r4el6'P>g*fG]YC#p'"_S62=P0fNMDQbNG:fVGHmg
+%Srn(ro$Z3PS]*[[3B(=GHDHmMDU(ImHkWH>A!j8#WjY`Qp0u::=VajhBVG?7O.lXDKp`:^cGA,Bh1'pkgLlP7m,<dG,['!!8kgl$
+%_O_)#C`VG*_ESppqnYh'!+O"^Y5JJ#:JZH4rNlHlGNUVshS"14lMAcO]<<rnr7=`l21Rp+ffd4aqH#oJIXO3BDf4FHr:]fqCM`p<
+%h*5;rrsSjZ;^&+ENh%\\DSuQS\>XrV5;CUZ;2)g%Fj$u.MHIA(GJ%n$g4$!3d2WnX"8?a[lcINA^[Ob&8psYEU2VT=kOa,GK(/)e
+%74t,g.*6jQW%@p!Q["mNmB>71rsO=Y-C%C3*cc5&h_k(['(`L\9q[J>/?a,Y;Lf;(26OZ7r;Ot0=nMWG^[Rroq5G2P-40[$fem at 5
+%fhI?kB\l(^M.g;<(%9Z3)-taJ_,Bp[L0f?94#EXk`?mcW1G@:_l6m2KX52\d\@ZsE(MgJ4nJD2[%qJ[X0#GfN,/hX(gsq6)?`cN[
+%l3-B)iOX08[cuDL\J"9U>`$*2#XpZJZl4"^!dr^D5d[R*drG&)U`\nk0UiL,+D=*P]+5]:0l42Z08b$B*7SVV7."7S6s0e40UuL'
+%IeCQ8:ilaRA:gE"hh#9q=,WtP_+b`L:/,%\l8MfE?lU=MkmZVA)F*=C+o,2BDF-.$f_tILYGV)-BL'E.9e:7Z_'Q;)hne2uZ/KJ_
+%L#\U`>$c`?C3W at 2&W?rtNjXF2TNI"#2.dV\Zt8a_&e(eDb?<42"3>5i#7cuLdXU\N1N<J6qY=T!o]c5qITCPuiXgLD"YqC[2EFu$
+%K)@H1]=;&=HJ]J<l+ at 5Ii#]T98@(9]rb`]lAF6^Wk)dul_ljjFnKZD6b\kOdE&9>*Gs*#mi9%_&r_bQCJ%T-po?+W=>bo>WbR6I\
+%B&-gnW^_sDBk at GrEfJ"<N69lS&kLRFD]4OJn.Ib*MJ>t"dEO'H97Z at Ta(hIpC>^i#/nZO?)@tt1[rima0EqR0j@<UO*9j5YJ/j(H
+%D4B)%r+-^MaJK<OB304mbad%1_!4iQ5RE6i/;T7Eh,t)Tohi?-f)j(keTt%OHuW_=.0,nU at V:]cPqg2g$rD8;cL at Lc<T>bLR2[ef
+%J-\PYGlQX/5%:KLNR?89SW'7;To;7.a#4"!jJu+&<LfkY#.:5VNU;anA:R([4YLcs&kMj&hJ&]RT%Q[j]Us`A$P\W`o;Xs0W>1u.
+%-s4ZMeS9Xo\nc@\C!enJYQ2RGOcN<UIRD:l+Kp3U<!cG]T5p0KB#0S742<s0Hnfn@!_32*qnb*'6_S51^BTN4TPU5)CKTZGm)Pt:
+%(M$qaR+WL1',>*[C3>DB/!Q?^AG.U(J+S!e*1+HY4G$oliE1de.Ac8(0iT3A>X\M\S.0d51<.5P\J4]%,g;sT7tK,(%59Nf[2qA6
+%EQN<liKGW06ftlrF;6#JC\&4lg53orI\)hUE7?oEMJ%dYBk4RVWOb)U?LPTRRK"LqHIeN4;K%@Cq'IF7oud>?;N!7DJrIPLUaQ;1
+%OZ3WR7[pUj1kT:7._:Y-?6_&&AA8;@U`P\KR;koOdK.c.:93W=EP$0ZL$=o?8#0S]=H3CtR5P2.2FrLsf3O!c`JM4j%Atlt!VYGL
+%$R],&Vsk6W7PQc]+bcU;H(/1Ymc5L3P<47DP9uf!9NgO49dC9DIqfL[1I0N:gY=3E.^O/fZ_[HAS6jA,T;/k\)1Y54eZs25+B7Ti
+%4Hg1I5)I+Eb"(@Q'R7aP&NG!(!_%oAJ:kdNFs,/K)U0*5*]8k_"Ecro;N at e3Y-3P+cKV0di38uJ+[dD,Q!f-j6fa=c7^3L]QdkmV
+%j-%'8!G7*PRGqX0?Hek!!_ee'=/-t0(!BP!0-(s(N[&+<0fql&O at Zq`R*cJm`mE[N!_f7kXqH`BUD?9`_hR441BC)Yk`MD+U2a5K
+%1Nog-6l)0MCjJp&Cj@\rPKf-O1WbL:m3=ZZ[cLMYi7ZG7m@#l5[%bH55?Q@>!#Ac?1CYNDh5[e4B at 7W>]75D2\_1lc5!,#E8^k2R
+%jcRT[!Ek*YHo`jmfd<t2RZp$%Kdd_sV>Ab7eI:tb(70J<$F'RAR4aY4Ym-ndMF?K>q>+%Z5)(^K0+ZZDA.66jCslDl;sN;,83qh3
+%K5n%'Hp/"JR2?Qk[fHO2Nfr:$ZZ?K1LA&S59a)'$f"a)l'UYEum0m(`ea_9m=tQs)h4^=r^m0k^<pr-OVP/BGr4$ss?uEBXL,jGM
+%[_mkR4(Z#XE9ZQN70!;aOWQUQ*(6JH=o5$n4JLd;T,MPh]=93:f at kBO$5jg&KH4MYl.(XY^Z6bk\oB6Cj4;8>\"p<mWQ'Su at Wtui
+%2O0m;f4H>o24?A, at _6sHn@356c-e at e!#NeA-)r"]*XT8qKLs^0kLrPPL+fB.Ztb=$JS<@@C.,F4AS/@1;Qrk3T+VC7j>3c1J at rFM
+%m3WM^+Z5]uk"*,X\-.oQGKmJ.$[rgjD[N>[Osd[T39IhC`@qT<VJ'D;Y^l8`76WWM8]/OsrLIdCVEdZq(D%+:oD&ua-J%ejU;(Fl
+%e!)[DWhce-9[X]'$<j1"bZ45U2;](j\BaZITkDq*Qk78^/>qLm-?qe//']Y,I5o*"I1tf<^HC?,,?k'G$a"Nm=+mNi^IU55S]bAr
+%WhR=CB)?l<]M_##*Ng1MGE]&@J$Ps(;G1.6X1&%R$d?^4pJ^JVp)YDsA75ot&C-9Q at P1HAaRWAqX+I))>%Jr0)c=A:J4#0#]2<!@
+%@OKPn-%TUj. at AXn3bM0D<tc_-'5j*):rgmk_:.R?D/Lq!FUjjc9C?c-aLRU6Ng25/259qM;f">7Hq&NX',)WY)R6uA\a/_+("k^K
+%k87p9EoDgF`dEZDVTD'Fbh at cm=`M$+("/V(O(9oQe9r<rAfG/)-]VEOh924alUAK!144\)&&Wmr"CgCI[jL1sltoMjes`+4^TGK3
+%_MXNo["W at dBR'Z72\CL[CMZcAan==jan;q][qX#kV\J![#1lNen_JMBf-L"s:tP:&e.mb?]B/,U7('\7Q7/t`Ft&u:G=lOq[H-g@
+%V93rqfLu']q;T?Ld,eJ,_6ooc5Weni:XIPWG39B9M];qr4/nW:<I8&TiBcafH9RLU>mQjHJeYQ97COJ=5"[[Z`tbQ+D)8GT`D%8Y
+%<dZ^B at N]mA.Ug>7Mp]u4N\ZS%QGjGS:_eQ%!$gVZ[Si&)T!Xq4`R%,(*RH,&9OQY#k'1T&*2m!J%6Ute,Ql=\\kS@/j"RQf4_b%7
+%o-!;1[^!kVUZ+mcZ,RN?QD4%K-WW[B(03b0R([s&k;!GJOGpHH#7=T]\CMG6=>,]W6E85:Sa70rGbaKLiDPo'EX&7;g7SO&j]1oJ
+%I\.Sh3b4TUWc?8*(pq)E_r>h*L(g6P0Ich(NMko96>T5B"XK%D4`pF^b:Ok=[Z\S(;gt9rU!<kn5!k(-D;08gI'EZ%R<TP>(n*6Y
+%i)a]=T%V)?5jpQQ-[X+/QoKX)J,tR2Zk]#3V$e"uG^J5bQ%Q3)^tEn(i0cG:I[_/6n\huA$r!2iLWg7gq:`lO+(T1-JYc%hd;9*u
+%6a5K,gaGI5p:I&"(Ka?tOS%XS_PkE7Eb[\_Y#!P6,E)5OR,3uBMi@=;"uKb]34h]1aj!Clg1II[AJ)3M8*mYQL?^0;kU(2:,&'Hd
+%@L"3e;2pQF9QdTp0n\1?o=:uYM1mkB(^,FqbCVWSTUk#:RB;e?oI=j84scK>7TsE>NUA+;-aFGlO'j62(>`_CC8A[BC#jZ\!i6.?
+%UD+K'CQl:iV_Go;X^M-s=:mV*E\.O4E%;#1=IXkc5)AHA7C.W2 at lat'S6,%l;.hA:[RjD?/^oF\X4=C6I,>T,*9^V:b7,5!=/'V"
+%JR:"fBSE"AA5KEHN?[[pl"d8r0aX/k)D%RW/B"e=Ps*61^OV#=_pa-Aa/3C3%@:;IUeIHrpuiC/nc?>p at o>oKOp'q%Pa3"3PV`ca
+%l>/e=S4mG=cF:&_ch)-5#,_d2B"V4QA6sXbK8if;^hpN+QY'F5?sm'OF&DIIYr[q%bM%N!"32'q.JXQM/4WEHg7#+h`C\:T;*9QP
+%YNr9`BA?3q2/ASo(?T&RaH&R]ERkP;R'm$uo@?"jdmc4FHsTJcN`?._qR#3O$('o*Aq7e+Tgq0=ERkn5fp)7a;0;^',tGG!<LKsa
+%hG+Db0Q[>r#^VK^;@8!g5ms!a5o?^`J8'td?Rcq;,%c?-`A@!Y*jH.*1bT+`<i0FS at j&?'g^,ggS<I?]:<Khhi#L<i+(f/C]E(^d
+%^65%X$p[2M-tpGVHjZqCEJ5RRd0?9&IY_CZ0/t8(%-o%[N'eF!n,QO-9f35E)>Q>-X2Sin+eXue2_H"q/J;Q(MsAu?]G*c\R*qej
+%f%=tfO[6]!J4:A2n1H^um''j<@lO[q4>R=T\1<9TR)XPQF>4:.DNZbp4-P('%^P'o=+M$[@qHIe<A_\!Y3K%cCmE-ZK?2fVE#4Kc
+%CpoB4ZjYYkgPkHX):?)hp5TaD#GSf&\7BSe>-AGoMah5MF71*".s8]1c%nloHlN2fKkdqZ^ntr at .78?Ogo)\G0QH;M?\f:bX*2u6
+%<.>PU*Q,"n,q+=0dHMV<'KkJ%U_TUISBEM:[Y[pu/c&YD`Usfq)hWGO*,/W5L6-dcm^GLf,VE&/"A1DD^5W`'Pqq`u`t-I<nr(L^
+%HKh59"SUZ'n2egh\Ue(R['>_!65:oGPnde^$_bLVB0TNg30(h<h[qKJRc]02E#VY-_nA1%[3UBAQdpQ>H&;c/r_r%A&uG3DWX@<]
+%8Y^jZ^b#LAi5R:P9+Bp!>a7e$&IegM`Xc'Xfeg\^>tZ1t43`sC3\(Ee^!L9o]6RDd(h%RgqW>*s^P+TaLY`e>*2FaiKO&PkrQ%EL
+%]8T2"jg=<R#\,*`95YO5/08N7.M!^scY9VX,E8"!>e6Fsho21J/s.&-3XG['jL#TX#n=IAa^+;?7\rpmOVY0#,Y&tVFs:FlZD;MM
+%nVcP]<MSp!S?@XgcC,7$YYrJ>o$GTUKink)a,j6nNK`P:bBL5U+gjD+VaddCI\#M20h[5m+Cl7-C6 at kM``r[BTrq25jUiCEa^s$S
+%K?/N*,&*?%lI>*R_mqf[,WIZ?X/M<RFNke+<od*#)kFuPZWcN=Vc=D.U:-quC8sR6,e<&<?l<6,>_<Ojb9C(F"j[t:;4OlB.V&'L
+%KOJI++$4J"$,KR1>/IDni)^):63NI-W9!(V5?Ca"LOr4+`hmLu&9fJs$]*nb=:En-;EMmkW!O?t=4.r5CD(J`79lp-`i,-h3<E=2
+%X<0DHdm`AuP2o%G3Dp9DZ#S,Q3N:^Vi/'h<Q`pHHqo#]Ck`eJ[-R72 at .P)neA<(9`%RP&J3L137W[!]C/M[^oWD9&EC_-9k)NN%,
+%3/Z9sBXj6,a=19u$pmf9V[,fuYY",])*S^P#-=EUWmH?&=TcN=@E".)TH?R"nUU&+2.=k6n<D(pBY[Vb!U$/'NNgc&2Nsd\Yt7_Y
+%6=@l;aG5Lm!&/G-3i!6f4KnF>RPG;!<uY(\%&SJ;Eg;rd2LdhZ":55VA&-H.[ie!+AKf at Y1aT]$V]g%&4!%\WcCs5QBUW*OVfL/F
+%(*T;Q'NZA[]plfqa$Tj:*\%h-8Uda)<`PfjW\TMACcam:c)u\j`994;6kRZ/)(8BR3DRhZMHSt79aW9g(F9eW at jhaSFZ1%!)5Zmi
+%F$dVA;fj/_h?9jEBiORe'j3 at VlX\6\DY2_NWcVt5)g"24dPGQiEtljiEMX)e<YAO>ouNfG3=6et2QNC*3Cgn;SFdX=));8kaXnB#
+%8\TK:)ri=qo0L?]E>5Lo1hjp[c8eL7Ffmdg-qL$ZT*NY=W-2[AQ^jfnfku6pi>`,neYXmV"6W<rDdXQ=@_1&=/W><Dn=&fNK>8bW
+%E*sZ>&n;ZQKKe?]csSot^cCUKl?(<KW*8as#L:.a4,oc*?km<,SMkEsKMu"_b;g-$>BlR+`J%sg8NAZO3='KSak/TY,?PjD#9HO5
+%fr`-u1_c;=PN<d<C7XX0;o1QaYa[+gZfN0\ZItM+$0N]RTq(D`3.R^-(:<!>=M>*m<'?[$0[@5".,-c&KY`2FC at 7X69TIC^ZA`;a
+%R_ at AL"s3L`%YTCO9R%O_bQHb<dR6FU3o>Ia<XpqTNA;km;k7om\Oh"9E?K5[KU%+.i#J])\M4SoCXiJYKQ.QbCQ&a^"6"XC7HYTq
+%'Dk/[)d&UUPd"[;+FC/:BB[[3>$+L/)`S4^WUmn`&C-PO%GRPd<TC<hN@?8O*n^b7,q-(*%6?CKV*ef5'.+B.I at es?+_,-84R`eL
+%09m$$D]gZaKWCu#`]"5BN'\Q[7aXa;b;Td*T8=Z0ndU8Q&>M'!j&roLBkJA(bi+:D]KR1h,$GC)3O:FE.GVqnS;P4hE9ZQN7/mo"
+%qgbU\qf(U'];raOWkuFf_[3R>Z5Qo%J&I!P8b-aVVNV$N,=nD4NlAduI[\VqLg'1\8<F"I=+`IAVg_[!lYrjj9KYSrRadNLZ5ns+
+%0?FT?V26oq=X5,#-sR<gJPC^;C;+D!$hlOPg4;#4f"hE:[t\Z)g&AFqq9J$A"=P;bcS1 at G7'p9%ZZEICSN\m5lKg?d]Z<C403*I$
+%G\lYMR$rmJgJN<BN'T#2!(@$/fsdh5!7fZR]/;hk6gJ.]^K\Ut+#(FS[rWh>fE<VNH2eH)fM7-D]:PXajo"bUOiWLCR$/R$dkPrt
+%bCUlkEGapR[&'Z4%![<lmUS89JN^P4[hdWd?itkeKJu$&YA65:Nm6u5q]VhV2+M>gDHHFNZ^r7sUWC;fT'?qY8%:)e1/QM.gX79B
+%:@8tg!2Osd0'>[`U/ed@[hdWd?itkeKJu<.YA7 at ZNm6u6q]VhVs('UGC4:'Oo@%^OMhKg8cV.l2\nGT6(o;&W!-G at 0E!!1J>ci@$
+%BW/%]MaRWSbZ6<",k.i<I!e!kG*hbfVr3+6+g8W>"PgZaUI0+%(Hj4Ti(7-)BnQoEibiO#ATZ\#]<.@\;;b:#Aq1]&&n9+HU(NhC
+%[Xp_Y]:^>Z2`cOO:[2di=bG!W[T>B3&kM1O+*@^,I#c)4)S@*XS##I+k2!I"3K63f>HLu5-ioePfQ3I1gXp9C.aF'?8a4#_p<D/S
+%#HR3`7>e;86(;t$Ec.HMRi+4TFYT?)@90/!PYt#==/3;T$AGAq8>M5ZglBFmq9<ISUM4NhOQmSgQa[-8/4[SAq;h`PrTOf^1ckj7
+%bc\83-H=$Z"k\ReiG,XGUVDYB,Y?U\UVEic^`2*K9o*S%d8-*5r.\Ro$E'*C1cp*Tq?:mt-Dp(-&4ihZ!/mohan#t#^:'^!0q&]5
+%.3q?1&Xfsd'\IgG&p7S#4"W*P^:%?3/#\db#&eHGGCgh72/_2cCH6O1=U)5,"Fdb3-dIk5:8H#?3nmO_"/H;B\2[V]Y:*S\.H2'h
+%SXq%a2$5N8j(D5nle']JFY0<iX'ZSnW"_sgM2;a'(2)COl8M:`9\%#f3Xs>#WGYJXen'(DC>H%tLhog1b`e8MD.Wp<?R[X8EuR2d
+%F>ZY(:@6RXn_%P[]L,B%-lXk:*Qs4/Y`Aj^#<?[EC`HF?Yhc#WE0b_0DV"6P)f`ZuV6*@G(4KHY<+X>j,a]p<%cDj\9m>m<OoRCo
+%o?62o1jiG?V26P$@$5jo.blUl/Ou?eaVgN1N\441J>/u4T]^^&2E;+7qa]!q.uBh:@^VmM5:+l*"ZA#=<)]g*,tk)$$:%`)$`Y*[
+%LS8[\<Lm%rH&"1PS4sjT-&#>[$j2Qj)1fX<T-;<A%dUAWWqnablT;oDjE5XYb0)1u5sBiONXBSC3'NYXP`rrkGc=]+d6_^dBSTD%
+%l,W<p%K+(P2O_K`5W7"n;V`0N[%5qB**IjF&Xjl9_+`N2$hij\Xr>r*92W+&V[Dd^:oB*9[`1Q at Eg@&%b#^/GUN"UCg'[<!Gl#JS
+%]jR]KPm))`Jou=A]M+$uC***u;CaqWPYVLHY73pN,^[!2P<<`9:Z<`T<*s4h\<plqS__P=B#Ml0)Ik4AYCocu$Hhb'9;S at AgVe5n
+%FEi>GheMN)D^Y4=W_T&nUZ7a/**S2k22FZ;@/+ at f9!\uq at sFXqc9@2g[TA^dXZ2BW>Q#_Ic81h=]b]eaKM!G$K=:V=S)>8H:20BH
+%Vr2uVA<^OM.qH9U.UbGn'\D<, at oj\PfP5O^Vc at h6J5IjjK3mg1"c)XkHS*j*CrL=%/)kI)_h_'eZj&/]>b1*Y,L?V)goLh0`9!G4
+%U=F'lntAWtRVZM9=Q*<*`j\'p^us$LS`p'2eP>Ut2*$&id35]Q%_[%Hj)SJ(iS)9!k`A$Gk[<81L0D]OdD==)mRDt>CE/g at SUd2Y
+%fSK#^*-$T&,l4se,Y7Xp@^8U9<h>WP0Aj')jZntU at 2VAeCFqn(dHA">HAW,IcWa,;Wq^=.MHS:'[-C0E*e)I9R+:,-Bg>X;\W3o<
+%K0&;h>,G<XGADGegUu(S<4;ORdalT(L-`_8>0=eKK!PZ#Bq58*hQ1p9CKs[V<D2m6ibJe=6%&(h`+<,_>H8<nb)j#a0.P:2d at u1h
+%cOO-AVCU`D[Bi<6nrCLD#o]%C)Z.>t+JgRd?pMd;6i8bg")":78k<5-$UeU_;9YCgg3Kd>-K<3X"9NBfArSD0i)Q`[9kG8'c8V,H
+%Ng-$:#2pM<V&V?1L:ht%NBS1eMl;j[0\\Ps`[Ob0/?h][#!2 at tN3[&A.bN5XEE'(r>K5)X6&U0G`noG4ntaHBNHopbg\)<MeI&D@
+%)Bs"KK[WNZI]+JdR`B9NX:R"h86%0$S%X_,c'h\K\^qcYE&<kM,o/Xs7aGpg1mH2eSV/RdCQi*q\LQ=5Jd]DpR/*t<eJ::"\r<CP
+%BYd.\lua0NM/WnN6)b8DdbP;^ie3e.q at LJXc%]RXiQ5+21nsdP36C-]e>AYC;t*((fT74F[3;&@)`C-B04#70]?cS,qId"0HZM5W
+%M\\>S+/PlXrsom=bc:p[WfYgXX@/us+%7J3ZkMq)'VS4 at ZN#9GBs5!&[6-/N"WOCt!=gAgJ1J=-HG[!(cX=VEa^>_p2A!\s1"@Mb
+%Us(X>`t?I/@75d0qRC("#e21<aoS8l^=UBI3[:<)3[LJSCL at Y/Zu#&1^DT"n!?.gm5aB)]\tEhQ:!<o`!$SJt-7'j2IaL,3%oVT1
+%[7 at 2+S@_B;bd)4`qDo>s#,#CP;DiWZ2"5?*CM[BOR]Ln$clg"1@$PhKO(@Z6OVtqW5Rh[t[V?J\]3&+I(-3=$3(f,%Ml'EG^Zoj5
+%!KJo\k2iIo\63$LLCm4\#qrP]CkislG at hUK#fi0LS>$%m=U_1gf<!YuA5sZRF=K"Ob"A*]S"Yc>B&e%\@0##(BU_f5<ss!!<@ITg
+%P)3#3`iS3n!S*bCe(#b_0WE"?or8&FFYEo@(7V[4B2c\/OQ01GXA,`M.V"J*kbk:^)Bp_slK/4d[6diLboAPG;&qh-9?b=55ZUA6
+%8R+hdS4U/RON,:En52[7+LniG1r,+?[/Rpt#Z#4gr,N)cKV[V^OTm2kUQAI($.-hXZ6_RHVr?@)i7-^q5iYb4q!sT3rs[#K8$q$&
+%SJpQAH0+F/-9`+$'\jK!m(H_Fn]h@\:Zq7M?ZSWkH8I;P>AG9MoA,T at Sg$Z;FcbZ;ndP7;mfJu6"Fdb/(YQZ,9)Z:Uh'm=('8INI
+%LuNOa5/*;BqbF'*j%Cg2?6de*iPSmsS=Y>mCF?Qme!tkpd>%>0X:L7g?Xf59WR"Lii!X at Vn@@;IMURp+kN)c*JKr/%n4<_u\%p_@
+%eVW-IDJuWM`A"%:^/tn;4_ji]n")5!<:@`iRl_Udbd.5(%Xu4-_fKNi8ZT=n<CG..)!5ShIL/Nb>A+]j)-FuQ4uf,Hf?2"j^=G*d
+%[_QuI:GIUhb-a3(_9'W\bBf=H^i>UU5l[^niU]fnD"nO0as<KN5G`ob3+nh<o2%A2*S\&M="b.dfshs:gFqcESVR2?*CYlD.]5$d
+%pcO0&+"H<3CTj^#F,S**L!_EKc9EViELJ_JWQ""tQB+3=fuXpZU99,(WCoD(f]%[!bo+kZ at LlB"<.![5V(,@&(>T!@SR^2 at UV_'"
+%8t8AI5Sc.kfsVY_JRYmJ4^V+:j3L+&`c?U3<-\T3iAe+R.gL,IiL$nt>/I at R-&L4@=r$&Y<8ZJPm_i$462%"t%mO:Yrc7lVcO8HA
+%kLGm6n'A>H=IYM*YCL2)&",\2heKoKpm7J(VrUj?d#j;@4Y\'@r9!TVj2s8\SO1.=Wc$hf.HKCA. at Y\Le-=^^X]sP+""R1+mh3ao
+%]A^8%K#K?F/^5);r%H<:nri84:LH3aI4eYHIWunB.)[D6=@90?7AN&fZ0=FtPd>Vhe%lHC[&fE+P$cK9 at Xq8T/-nKR7u.jH/SR_B
+%(6o%ccYUUZPNJs%FQN\G*F\maY+u*6kZdBe<kI>=+]r$cYq7diX$oSO2O57,'j"cP;4XJ`q;)h/`%S_Rc+H*O+87/O?o(n?p85fA
+%@6gJE1N6;\An;K`aN]0&ei&Dc$^gJLRN[l=3gQFrg!kn#,[j.N$<(/&ihKE29];2HR)uTJkh+KG3Bdh2+0/Z+-on_H0JIN-4j40j
+%7^&IFAdLrmW`if,r)<0>8.:\cr;pbH2s8V`WRKQRfI%4H!<UD86Pnn?9u%A_O>%q.C0?#]!qZeVg!8j8-^_N+3RC8R?;?Lh/eJcH
+%q/arJbDGgESZmk6KU2tkLt:*mbMdDB$s%L!mEA/lb_NaZJS?tJ"a3jo/r$`@UMu=m11;t%A-l0;O;BtuSHQhL):0Y^ZXtIt2bps^
+%8A,?,il%P)!t<?Sbq8*F_.^[M`lJY0?a:)*%rB<,ilXNcmS(13eL"N*XcEQ6J.oAe``J*E%=1:;Q<E-Be/"'!2+McsRNNEKPRc.?
+%ldZ,u93ceY6$G]=Z,R3:2*gc-Cu>=R2m-c.Y&/@2X5g"cE<oZ14cCFnanPKAdG@(rJG?gq*!iX"H5=e0ktQ/,jk*!acmS)37P;hO
+%0C#O16'$]=%2b;kQY<=gDmagDLG\i;PCRmcU5m.3HdcNFYC.bTid-@\Ue,A"R*eCY#g!OJ7>95JE4aEr;E62+@[m)]l`A+%KnmYo
+%Lg#&X//Q/_f#]JE!Ep`c^r<Z4P%rO)\+B\pp71>1>4d7hl(EHji;>82_`iUm&h8`bVQt[SVcE"`<=6N3(f8;R[C&XT>H-5h`3L/k
+%'*6ao\*hNO$T9W;JX(+X/\mS\&u5au6S-)"/j3_j9&:uk;MGA at ObfbTNLQ=`V+IXXVhK-AWk8Ek`HbnTb!8\+bT??YdmN^k6kj=%
+%C]IZKR62<g`GfS;)'ks#kp",EZb%G]/UdesOi+X.-KeEhN$]655K5A>VQ_2.kQ<T?-m4P at 5W76O%Ud='OqB>'im9/QFlnP2L0Bq7
+%cNZ#12mc9 at Bk?*Gld,lrHp/f=?,HpO+\Aea,<].r&McZcV_IQ/f\aZJ7-rn2!!F!T/Dm7h,QZqlqBN4l;.M,W=s_U)Q^X3ak#(]+
+%.2/J44;WSbTYSX7)LVj3h2F at Us+,o!rF0?*.FU0`Qt=i(Qn^@GY0oUrdMU0lq.Sk]O>P>>ARPH64Gd^b\&;`+[E`9K1WD`+H1h.S
+%$].Ve*%[AKa^t7I\S)R[J][N6]M+eqc;3PG0onbrS1fn<KVp<-%\h0J<cO+L1W>A_ at 5'-b2up!"JV$04bH>ta=FM`%8i%sD(BG/n
+%Bg#"P`R&?IiAXS.9;ihTa=tXEdST14O8QNK,nN&4R0T4+rt/)K,>NEPPL(I&0J<M.RCOZ,_*Dq"Z=7j?$d+/HVZdV7;AV^hTu0e]
+%g-`$=(e$QUO)%b?5u0;7*Kk2."NP/PTOo<XWGoWd$aLnk="[GY^r"XFW.8Y^R4!q`-16mL.Q",MJrZ(h4[SO?/<:J7S3*?&:DSJ$
+%hDLVl`722mEkmM5N>R2dP9_3U at jCD?.;)EoMNLlB-#g.Ro)VV$4dC'WXSL,>MJ2C(0.VebdZ&]Z8p!Hi5eb(>$[D6#?o4I<`=aAd
+%m?@)BFV$%qa99_kba#.oD<Z'@9GCA;`0>><cV"ZWU3U at fLd3T?dl2p`Ra!X?AY[pbgQjZ at YhRci[dA57=il&W9Rn9.3.[aqa.Xf\
+%#r at lBOm)]KYF9ec?Z`^[VcItE#O??KcF0m8 at hl_JN&&_?qoJ(b1r]C8lk`sEkX/OeSgsFknujSIZQA6kHrF^p<l=*UaOP\T9lhd>
+%-=%8F7RbQ.F<XoST[k6S^Q67anD%Ld'l["R!<ur>,>`>L(=R&oSid,kQn7p;j)$)8l+?ja5'[W1>4-t"j?u_,L*h2tUka0teEE^*
+%jX`:f!&j#eC;pr105RPRplp#+7(-?0=eNPK30i3nNN%Se8)WU44%\D(R[$q^3/XllT$O2$`:^L/o!'lDO(9D/a_7`h=;7?r4QJ7*
+%\#dRb:24ipTQMdM-l_&*p$!"H4+NlYLuW?-GVA4d2)WsKpb&uRN#E)nUcGHT`?L8_WDQ7l?rp_EfJQl"n'nbA1]q^Jim\3+&U1>M
+%pWr,N=eC72KnJ'A+R\)#VR>mo77Jk^eUhpI/$V at dKsqqR'54jG.:"a#(g at e;m*s<_1+`OEVc:Yg-]DLFC%_I>i`&c:=;!\BX0IR>
+%-<"b.!%!RaL,q63(^W.dY[#G5j%$3]Mf9/qlT-S^oS[;1 at 4fj!^^)R+X`S;Mn+?]`*S-1Xl`fNXRLX+F^hs4RaB)BL<?2jU-&TUL
+%l*/W)'Q:Mi-O^r_-2E4/,VuZCDF0j*.$WYg4`nj*>?W7DjcZ`$Lcd*(90LKoQ;H9O=#:ODp=#[@+K&1mR?\H5(D7O8 at mr4b-Q5Lt
+%@1YDs+CD)u at 23uu2DgdeM2>1J3"Qr%XHGm/5e(A(GDQEQ;bh=?+r4k2o`:S/><.)6Z`uh6R,X:ldEk9nBabW*igMW[fMZ at o)%,Ch
+%$QK4PRaM"o[7F7%9-lTO<HWP:F=U?69'f&L at nGG'NaYJ#7P'6]btMCN^4HmWaAJ18XJ@=0#(c=)Ga^H2N*r(i2,%BuOrUh]QIO4#
+%BZ-W&0<jFOCF"."Gi^^V<*k?"<?`S'aL"eGRM\U7'X9g..Z#/So?LD(6DZeJj]\fn6<1gk*cD'$ftOLFk9KE>aiT<p"eBfklT$E&
+%g at 9@,j*J(r=G/XZW?=9!OVIHgoo\;\2;AOQ8sjJ!7h.!X)h=L9)/uL5BscRI(D"HmO4$ker]-O&pFdVe4^^mkcY?AiZc+NJ3=(rB
+%O\o;*KB7pBZI2kh(<l/X:b<Sji7jJL2g/9$4M]=*c:(P#fH[9Rc#I=!/LW#epq%CnHD$aM=2'NcMVO*Bi at 8k"jPCSYh$P_H"9R\T
+%W'T2e,j(=Ja<h%Sd5E/f!q#7`@)Wi/CD3K0&?Nra`nSEfo3GX^1NP5m5>5/N@?_:B at S>/I!KeW87^o;(ru/d*PT1U2X+^pG;a at Wh
+%lsjJT^b!+`?ud;`HAZ\I!te:+2E at eV&XXI?*:mPcY.RM!>?<k/<'C<qR at 752.)nK-?6N<Fbg_SVX\GQFfC\n,At?XoUC!kPUp1a/
+%-+@]m!sc8H_2To:?Ft't$t1iCRGi=iRJF),f$#+993g at KVJ/A,O?Pk;4kdU-`Y=6F(JZQ0C,a*-++.O72_\]7Wp6>7&r at p8pk/e!
+%Z;oP^?)#tOlK\=NU="b4 at YMkU`SmkJ(34<7nGR>BYAJ1pgMqTps5F)MSh6NI1?C at 7#*C/Z)G=U;QNVi68$5e"()f`FOAf)6c1;U)
+%b+Vi+CgbKT80SV$:E%FMkJ6c[6)*:RR##n<>%Pb(B+elE(/C!e,(4/,Km7He.5QackU"$;2k?3YiMJt`*<Rf*Fki[ne at mh='G\)u
+%AK,9G#B8R5-H[?`,U.u>7$4\jMfVOJ!p`lTYB!6C4O,P7%EB2$2t>4"*(Bsb_g\MibSgIQ8ogp;bP_juZS*]4CD.?'AQ(E87N%H5
+%8a)(@#7-(<[c4=V;J,WI&BQ11JZa)-S'r-Ngt2[9,)q1fKGu/WKOX-\iD.C_"Wo%\+Rk1BB"r<4,kB%gpTm,4Od<L5n16DO]-XGF
+%!i.T<G/Q*<c/f:l3+Z(>I$/I(M/3(j3asK at 0tO#OfjQ0eQ3r6&he:aU8Z+H=BM_TVkp3 at RUZAFm78OJ:T`[%o)/Bjq7B_a#6gX%[
+%a8n7oJVAHRN,F!%\LC:%"DCE"]m`9i/eXAba&hp%$;FFe;\6$,5C'BGfU?DMCn6s^1@'Q3BOD-?SuYo8dLU`9KR:R5KL#u9^6+3t
+%QWUG[-;A;D(M2!7BK/8"Us+483WbKpVh%VXit#\.>sP^6(o?://Wk?Ln]#1DligW1d$`C'4Rst:3[VoM=O=)=@&rd)n!TZfG%)Y0
+%JAW:L3$&7^Qso`,Z)AP`(4?H&,a]%0b'6Q\L&6YUG#Ul!!WgCO[`RedqlJ4#&+_n9!M+_6V'+$/iE2X%@Tur,/1/bR!t0!m6<ar%
+%JnV$s&d][Lp`u\ZSApd*OAG^qln;PXg+FG>cErfg-h^W&n"7h'H3j7me,e"ks,XU4gU1ihY/B*"oKUi`!7GhOB&7UO:ZSr+/8RTR
+%"WAWhJKQiWR0K\q[$qj'pKf'g7RZ<@HP`m&62. at 9P:L9P,NCgOf,$iIaXsRp,kL"7c$k[HBP#*/FL%.PA=V)$dFcV2??$&pY#Fp^
+%7,7/C-/Ji5)eD^L'9L[6p1n3`[ejlt(k]04#HPTmY"*kd<.tb*_h at laPsJk?NsFHZb)_rXrR9huUZk[S3Yo%sUD[2%1%m>)*<n1b
+%X^>FL1GqGfTS\PB5>Perb at Hsqd_=cBo(1Cf\V"TB/5[j/?YhgKp/-n('2 at G_k4?*s`4e\$Om6XZ+rlp%1G#D2,&Ep?OX(pJfG*a/
+%<"K?t##XJ^KPt2/T/6\9Z:%3ETl)`bFX8eX@<Cp%,Fg\6P$u6H%X3<XA9iJNL=n at N+gPTTL^g(`6rnZ<7+:$\g"3g at d1doLcf)WV
+%ad&D/jTic+<:9f>nXGf0>1(@a&(M;j3O(AWR+]l9n)UL7,3r/4Ke&p<0iLDL)>ttVJ_!+[!p:*q%^Rp4&V!CE"LY-dB1D9de.VN!
+%]^bl"(5(&#W\WO-GGk2".[BiEF]]cEZ%Pap3g\QB5pPP37;hQ5)2a93"0Q7l51g!LU,\&L?k8^V8pq6sJAjO3Tp=VjZsBc<eL:Z!
+%-RG'efmfdMn#mF,)bhp7(UU3s-i3PDO`iZVJZ^;_7e+"rpU!_!XO'6 at EuN,#78.0DXeh9tKM869F8=%c(LPZWs7o%NTi\r:I``36
+%T]3"J4VMIq6tBTH*E:iXHOh7hfof#2Pfa=XR!2J8$$W3d*fm$(+UnSYB+jb$khW?!)(fLm0V_AT9_(Y#4g^R5*'E^oc4<Fs[U*pC
+%Wp+&+L7$mZMG;etMU7pP0.Ou8Y\d=,raOFI5#'FoY\e(aq.%ERFZ$"gZA9LQO;=7TNnZ5r1[Ld*8d3<:elID?qD=EV7!pGYLM=J)
+%8q&Ak-7(JRoD7^AXR[!_8la6R-^$B0=b5\]Lg3#C&(E+N)GI(bMGHt,RrTcA9Yac1?[k0B$ub76"@nIiC8n1+<I at u!:n,?2[j2B`
+%ALc!%@6cet[`bmPHLrKX$/o(4EM80CfEpiCh-5^d$>`MV2XAITd_fYiEGiM/"#BIlP`*H_T3mE.%QY!;X_>A(g&Y;UPmN%#1t]bO
+%5Vah6G]mjH:N>^T;#NQ9R=a(g.6Cg&a_b#+V9)3*#SHq<$RtV:%2&+A'jR+7Tcsf6<NV[eKPD.jZZBg<$Q=pq+2Uh%%B\:]#bY<h
+%g9;'Z7$m!jg&21CZqtU`-HMP/4rqoO);.`FYW3@^[&`46EmV8G^Wb8N8LSS'BJs-'=e75;&q-Gg8Ifh at OE[ath?6Pg\.9qfXBii,
+%Z8Ve;X4^TQe!hORl>sJ;n/T5WFM+Ht%aQAXBu,7sin1L;KCu at -Q>P'rDsd`_<uKjoFshf(Zm8tf'0romUi7\l at Qjo"R0NpapKEtH
+%5sD+K*Y*CG%W,G;$"`cbLZO%W at R?B[HMMc73X8oNPPGgabei7OiP/bNqC$ns/cnI182Kr^8g?tt8gW0p(6kL/i`*q[4TrHu at KBrZ
+%g07m[+mbMVOL<mr%Ddrq)8cO'!,oG`o1EMd6.d/LjXL[jkmP5:q<t.\jE8.t+)a&ik)m#<VWUANV"XoY[LuNP?;[$-G\-Gpf3SDa
+%#LbS at 0PXn/EmtaM/"m2'&J7$.;\,ZW^HJOtpOh4-&i_O)QFGJ%?$*q#im-$0".J%<+l at D9%nY&lM+LTu%/RI";GAfF&C/rPBh/XP
+%$#*<$/?MOa$C[;1Dt/2&i^O)//g"aFFe>i$FC"aUdhr+"Va"&@HCk3uP52'p9*\8/;))Y+Ru3G#VF!J#D(4#1FI]>48oZh15en.o
+%PH!Ob^=s#oPq'%O!fk(+?$ebXGuI!j^Q2ruh3k:A:'.b at q,8GF#=Gd#04,F:q,26-AC:ss[?AQ$l at IZ]()f$;j.%-)>,0LCk;dL=
+%9l&jK&ma'p?etl.\,+gc^NS;nlc_HH,C,P$gdCIC3S11sq8[!.khIR'j0*5?4,W6Nk'k;+hi7;n;Th0NmrCb>J)1!K0u5.Ve2onp
+%-KQFfX^>e=<:7=/`kPKm'7!Qr_<^gCZ&M$I+RVZKd2J1Y0oM;q2KcmEN:OKgG;WnIn^rGLYSuJqAtK4.Ha\/j!t4\BaBFuqaKn/`
+%]345=F6G_mA1^MkhK5*W&LO[0LhIP4pS%?.8T-Lb`']S"[Gjh;2%._*V(CZO$ngS,+L\\WdtIFCD6FZ9$r_u6aY46/fG&u'@VG2X
+%`R+P]/;C%<L)?@kQ-Kg$TC3bCr1P at -V[FI0f>*CiG3.:#QfH:R53)<(r.%S"#euE+cA<+\l[EH5%jBoJa7hceNl9Z(B3j<BErZq]
+%bNI828Mr[JTS_%#Slai9hR9Z!l$[WXlkP*V7/44gA:\XO6h.mA=SmN(Tp^.r(A/gA\>3G:%*_/\@V?[`MkOik+bupP3,V#4Sk&!A
+%/Qc+*M<.#TZO1e'D]rUoYW#bG,XP["Mn<g\/X_uY=qVj!Pfh-KR9j%W0#!)47!0]n^gMGgEOn+70p:5PqIC2eU2fR7@<,%7>/Z52
+%8ZV55/SSjXR$P+=&^un$4CVJL0u^MiA;b0D^!:Qu`=R&`9-3NB#D!OuUde[CCncj"'MWT3/rp:KrJ"Lqr=Ms`l[s=b[rjBMSL'ij
+%aSL.cDjVK8K3H&b%]XN>kEM1N3l7onP$WpQj7/s%5m0mL]#kVbU2T%>5;0fPO]Ji1;`rU2HDls\!9:=+*W[Rl=n]#Y/X/a43kNBA
+%5hO]rbp!`Tca9P%=>#sXI9[\81@?ZD.GRoci@:1MR8fDAg,Xp&=I164LQ?-LL^;Tr[hcU]D)88-=:j->P at Oe:D\N*^oW,:U6Ii`0
+%LFg7a>=?ZVl%[8Zg`pmrdm_:@:dA5FMFqniTP<B=$E4Z1p/Yt at NN4a<#q]0/#.q4W\P;!gKi_l?`d.I4@"bCr\[;lrlua02](F;,
+%Nsr;tI`HKrp#^(QSAP[r6<9ih/8+7ha%C:#"BsEU!nn#5gJrjt9W_W]1so;E:uZ0]0R/4>s%BYWA#G[EP"JFrX^8Qan\`D>^HWFd
+%k8`eYLbh4FADPJ:!kL&r:2D5u\6um'Ycqjh3C5!*]A$Wl'8C+=@Y$UY(:7_BHB@*,/S9'ql86H0N,kl=TQfjJ5<X54+r<j,/9f]o
+%aF'Ts+$XcWaOP_rc-Ya;4l*rHk^t;r+I_o+UWSJ9M1Z"/pmZYc%jAgClcm#'+r63$_TGP[5A2Yaf:.$jCl7:`cbH[K'7CG:=tTM+
+%b?60Pa0!Z:rMLg?pHgZ(-411UHBJ!CNYHs,=.bl=JJc7reQ;sK/IdHH'^GoDMu+(\(%5c+#Z"#:\uf2ZCBZ0`[3q\AbSD1[)ILt%
+%+#hD+(>#5#%6L- at e]\E(*Y"&n\E120b>TP9lhU>&7!A3H<rsJ\l_R)<=m:p.!!X2l)hRLSFX4?i4)aoIbPNXfD&ojmC-=`N.l,oo
+%/Gau>YGU_9:U'%RU_srW&G[(>L'4t;TYM0k3mrT/:#oFjO'B^Cadc`nY!I8 at C-(25k6Vob7Z:G5&hH9Y]Oo?k(sn&HAR/Eri8Ys.
+%SWko]')>)'aE5b55ej1c7udaB5Vl`lYlJ&sTL(*HFSecGYfU^BX6oTH1P6<s,Ni5ZD-[:u-\o:uk>j\J4KU!5</AlgO\?-=?;SO"
+%P.D(b8G`>E*/VKYk=EfHloVHPLFMF*"u)BI+t&!A&fO9CRfbe^.BllUc.9,1Pia83gcSMi?2MO$;d?h*/KLi:F]f)ZXn2E)JIME>
+%a''jK)T8H:VPJ3*^M\OGEmknD+L@"nm86?&RSiB_(jWEt<e"VCFZ'j'#rp!g/?.6?NMI^;Y)sQ>\40q6aYsiJE86"*(deiq.2MVs
+%*Xs+0PgWEua3S:uFB$'.Cnfsg=pe_DDGs1a0rq.-IO&-.\n>6gk6>?'/DEM2FrQ<),[4XtXV5NfOtA at t'+lGA,-=U at 9[cUg@[`V<
+%("9NQLLQ_G1)/3El_0\X at T#lqZ72Z]='&)e&@,c6LHG'@i5AmR8o'O\Z?2d<e"4u#DSN%1PWeY*>j8\h5R)3%lVduk\4""cR">4M
+%V6gLd/WAj`I9r'es+3>-DcJs.BKUk;bTO_(C2o/Wrr$.SL#u,,>oEGRfbT!',O1T(&D7hDm6dVSCl9PT7(U>b6:@,mqs>HY,N0iq
+%R;pUd?>CZWSoHJmd+6RD,NE6<Z(.,"nIW>A-.,.c]G?t#R>#$OaEp%W>^Vk^hZDQZ*/,m5/O0hC5g-W-_EfGPA7Eio8G".g,1A^<
+%!hV9V-?:^mi2pYaaLT+I)#<Df(Eu#eAW=0iS`q#i.Hpo7fM-OJVM4^',3].jA'V-FFWnAq%tA+qV!X2LMbhX<7g)D-5Wt*r#_r\M
+%e!#EBU*7#bonJIk0Nr2N@$&&:$I+u)Jm@`&';RHHHBDao)kK22mc&,kMb*2s at h#/$JH^PI`5E`nnqaa at eT7h@#]bfF*j)>Bk at oo4
+%/Zq?N&'^`<BK>iU"iKSU@!6Le/p]R\@E-H9G70W+]FL.m.Z%a%mt$M.qq2V.dQ#Kp*?8WF(GC1Y@=[k\fO,9rdE4KL!RoNrS;RS,
+%j7mXnM]\!-#=JYf45M at 3XmTLXAjVGn[9YeK4-/=m\4Egr4s"#N_G+hiJ#.;#eF3'!ch$_*5HdAe"UN#5%)b#-G@&p+_\YT1!\]/l
+%_XCh?>SFKl`=7`q3=[NPB#&n+#;fB)#ib'sF5ahU+)ZU&YDVfN,(f)@r;^'O1_ at nf8q*KJM/\6g:F<.>-$Fm-H->a$$TYm%D6O]K
+%853%hFtt'IpZ*\-d'lj%i$Yk@?k<Pg&bBElaQ+_JfAJ#j#R<^gisga+-8s;j\n?uAKpqs?hEW($h4?S5U(QiqH0<RfU@\6!32gH+
+%i"HC?.9Ws^hg;?Xe20k!d3hm2%AGfei!@M?YkoS+/Fk'U'sR_\M^&44b@!;u)GkJ6-kE%.Ur6(@GG)bXM4oG:qeE``&9f22lZl(8
+%#"+4Z*;h(Af(hn+<Uc3Z!r3`sjM:/qL\sP,4NKS-bLWAsC81XbOm<(?D)n[S0L6`PlYTtB9KY:,cjrC?9R"H.^(qVp)VLf:VJ1^$
+%R3inWBNgq-Z)33`m5D)VX22&$LW5iB1=YWsje7L&6s&(ufbOG?X.'1=#dW,+%5r#2Bj,D581Teh(?mHJVS$tY$;(!`Ya_H3*(H69
+%leNJC(dp:;,[QY&3n$ZK#)>5E&F:s-2Y^V&.Tkc:!5VBjVT*es(7'4;@5pmg4fiIVonP[_'D!)$a?2,T=#UBH+_9>9)K-H2e&:#c
+%RF^<+#6(V,+B3Z9*=s\`e`T)SG<HM2Oou>P:mm]q2Mj'-3+gc:ZH*jCPG'7J0GGAdb<?dN;LIU7cpnmJ5W]&r]#7:'e#J[d[ppRK
+%cqF9^,f8Ie+[)D*,t-"r:dQR)#NR#I at 7oTg-m9?RL(Z96a\bC_:)kQ,(:PR?i4)T,n#*$8^SXXB>/Y]]6fgkjhc5kJ';<>a*!HuC
+%4Mj*I0663o*^bcF5MlU$m:iZKbf8-06]!ne+8XjAe.fg=:gAi>q+3!)M4]H9ReTGujs+i,=0uPB_,"MC#<Rdi-?^$N$?d%4E86%A
+%q at c("o0Df/0I<7`YXr0"`tKpe6,&[mDXruZ4SVLp:UMIq6S4/@-+2gab[IZi"s:@A,MAY7h at OtjTJIo1Jf$@C;ud*(WQ-O4WXWk<
+%H at i^dKK^q:\onp[]XdW&rGOs2Z+'oQX;`kQXI]_En?sk=KsS#?UdAt&B at GfVn>XaqOV5\7p1>dI)D*.Ab,MPN]+EBV=Fg];4r-ip
+%[`;Kb6e%&=mN:FLkZ/-P`,uX9!tjPh8_c%P+M5-97+6!X>aJ5 at ff$ck+]mC+Pl8[:blZna]$+13bUfp+qsmu_8&`KZDY$"N.^gn:
+%VCijef[q0&'c8>WB[*T@(asPSAl.iXDP5W)RR'/'Z/nnf&,?4E#$nnFJVfBFW\ZOUYsG^_nUSPqpHkC#Qln.0G)-+.2`<$G,fmHS
+%bn73&_tm4fQmNBL6*r.c+C]t at or/$*)oPsO<.TjrM&?p&U`1L9Lm(7B$kQVIgUGkB*>5uB6%#-pArt[Do&A5O:t[MJ at QX3E3.'1-
+%)s31(;s'7R"2Lpk at s+/#"I@'f*mNJ[<Te(i^*[;iFUp7Xim_`lctNc@[[kDWRX(@S8/(#%A8V at O?@f],VPlWN"HV*lhB>Na`WcF?
+%HU0)a-4iZ6VA0d%J=(]VB*R&jCZ at kiCKdn`cTJ`?E9/nQWF4gMRq at 2m>gH:K]m>"]1&ngfmceE=(s0loJ]Fp4SW^Mim_*AT%[s95
+%ji;BP1h%KDS\Is at S<i at qC`O at C]!5"?7h!sc*AXO5n4oPRHk-+'n>D&O_\ak\\J8[%BLOcL#9m;4;8E;I]*!kWEe$GbbPmKE at a@4r
+%R2>IF`9om;f*'>#&j+K:KdG,6@=])-&73s&QH+P&?K!%V'd.Vb-OU2ha_H=2J<\@;_F%?+.//-QBe3glq$`7Z+N".)NZDZm[=lBu
+%i]Wkig4L6jC*JGMP'RRk,t;k;.l#\PYJde7#`f][jRlDR)_3dob[pN))Pi;?Objn;j7/Yh$Vk468n]C+O.YVdf4-rK/LZi#O:KR.
+%>FuA'=3W,XhetG!gi=kq+u]*-&fd(%]lJB!5b=FXF#4o`$4D[g<FGp=4Y&'+en9[_'@ROQaXc)RB8%Xk+=f!W[%X_"Bt;*D<Zk`N
+%#\_J8[nL4EW;*'0"6qC=BrgWFgqq+#)l,m#/"jl32K^;ZZau=`#9YoME_Df_,T[6\L5lj>W<lscR;WNF]:g.;4WYIO>?$Eu-l9e=
+%L9b5frBf:iZGK.e/>k\Q>sgAQg^mb(XAdmcX[lCW%WMSSPi`p=ZlufWT/C=<0h^d:H).m4^i9"!IA3p%-C5'nrgf:0Qcb`sk(BZ)
+%E?W$$AjJC.0FJ6qCmN+S]s;6+K_3<0.kAUaY*fG87-1hF;ftoB=AA+A(!Z+ZU)5:hC+*CH(D0aW+Nh)/f5-]5,eS?=;R?-,el63u
+%bkl&ZgZ^&43BKWSf2h(Xf,kr4*4h.t76!4H(7`k%P$X[VS,QU6LRD0e.'?0ikQt9rWbedoLne*0q!)jb[T<_7LrWPm at Z/A*]9JGj
+%[+pfEp2m&I$k%ZLM\jrdEn;:'V&;07n>'tQ9aO=h./:T<?='<7hlk4LO at j(B=G7#G!&5k/>&h[iVa!#=.CXXdMq(@@P:5[eq at VrS
+%pA:tkP"KXk943(N(guY$a^UZ=\d62DFM;V-,,.0s_c(?:Xl4Cc*^@9'G$@i$f0Xo(Li6e5'\Pk'WN4f:6:FP]FKMD9?)gV&FV^b:
+%#_82>,pnRe2(U&gAY)'W+'.C"-ig<>?U=!T*UP=6c?2"oaiZC>jIg>i8Im7iS@#Ge%r_BVOp)tLHY#o!Do#4G;A9hM,)(hsf"hH<
+%VaO+s_)bnS`QrRu!RN:SEo4:WjtM?3Pr[_q1qmd1-SQf!\iKQ7<V\gC%QZ8c"R,2/+[KSNN+hlIROSEc`0#N:`0FM0T3[Xkc2g%f
+%g at -jmBri`M1>)bBofR6onq1;J9Q*Y<a;]`^N+^A7Y_^kUYd[7]KS2Ou2?qfh(6ekT\>'hg0q/)j6sZ!i>(+Vocc^BUNra?RlFG6g
+%iWe4UqNLuXV%kV1f"ge/<`n4I`0e)]0OS"*P%1I5oOc14YqL.]'luQ^n0"TH#I-bAk#G1uN*njZ!4V;e"5mjnQL[5;<1ddI6a"eJ
+%-6.mV_NqE,o1)o^-<-)n/==n<)Zb>%"[#7)[Pr2ACHG+2^\.J!-9$1!,!QiO(,'O(-P#r9pEGa=O+9X+d]fli1D$lq.FV!D&M+E*
+%Gk6CHOXN6$an^NY at ZV(ob7:UKUl;]<!@HT`jso?Lb!T78 at GuL_a/^/HkBAN<BR%qdLRjukO<TgWcd)j[Ks.5*8P9pn7<nlMHa,,-
+%(W"R\!T;XGHiT/$+s$&c9YVH7ME_"76pBpBO*3,RPco(B5,%$$7RgKeja?6R'"6OD&-VB^*KXhj'Nrr4?L20j9T*CBXGj(/KbUJ_
+%(?;l-IUXTDm!rPOLdY%%j."TBKNqpI?d5CQHC5T.2iRZ?la]iB2E$6"R\P2uR57!*\s\0ol%L-#ad3d\W[&EU8!*)h"=K+N8CCiC
+%m-hZU?$(N8Wi-*Ca%0'QZ&Nfo\(=>4Rf.^1a)]Wh)-:QkV\DhQPZ-ckH`lR?e#Hp[R++ba\&,9DpG9)9!<d[Sbr\aSY at pt+<LB-_
+%Hmu[a&ZE9p'[+W/(.7&L_WG?/Kb6;60WJ5*o2NS'Ijr&$?!28O&fS-]c0`T@^t>_p=9jX1SWt<$`(#Sbo+:+slOlUU)(u,Uk_<lL
+%7'l-%2/(^Ab\q)9B&8*l4Fn/N)`o1(kYrX\cHOL6!eo=@;!-e5C@(o+nd`f!&Xog>Y0qccTIYD$Q^YNiC@$Dn<0=j!+?\a<(;F/R
+%Gj/XA;p1=d*]G$BC)gWk:$+Qoo(mSAU]]g\bA'VRZteRlocXXp^ui#eA.cca</]Rt"AUHR\a29`ii1J"S?u#PP65jYN3+qI#3"[m
+%N1A@=0fUH`P=P*+FYZf0R*(q0!#tH;m$QU`PNXsg,hjoo^&!/9&KFk2"rl/V:!38tRX\oiW'Nr2JN#0:#GKl+]_L`57n^'=<5qj6
+%0A%6okWS!&k4&_V?Aq\'MKfT^LH"QfDG(uo.>DiXl.a`s at a[NrjfW*c:b08OH1"QQnpE7_^bO,VqgJP/d=S6X[8ZL<9uD;\+k[bm
+%_heQ:=W9$4f_pFb;d8S<q5+Roo)(N&9Z)"]WRLD_Xc-2Fi8sT4=pr/)]7-^\<HD+.\uf'Z?uW)J?GfEH_Obn>?a8.^E=:;$LdL5s
+%<U%P)gQaT*U]Z,j?MuTLGJ1FdaE0Ir<QMa)oW?Jb8t7E];&/=llufj&HFX03D!f39Kn:<C?#"1F"YO-W,,Ll*G.6Gu<%Ns:%8\)]
+%O[Oo1\3'Od8:_p at T(LFiGeZiA3/E%816KS,kd(($VU,!Q3(bF_)FnblBfo*O?1MT at TA$(s$7mWN!$<rUqsd,UJAdQ76?P]AOpWD,
+%@p[(BXUf:@$:)mM=^YI:8!iPUJ%4&JT1=0Ho45gB<B*mNb?D?[rk%;pG&1WQk!L!id>CdAascJ4k&P$4M!E.oAb77FD[3PEQ6%2]
+%b%Mh]<^u[o>oCmcW_]t(;0&1E'j!l0KN"FuY)I*5oC@:@5e[sO:,#E1C-.V3D->1Q]AYZ"4)kB(kI1ebSeusu0G);7"t$j>'XQ:$
+%6a+7)pr0)WQN8::#d7>jFY=o, at p+ep6C1Qj&5,hZ`f'HqQ\^EHlN%)+^En]H$iqP^.'aBbqCKhu1Ech<i?c_s;BNiE_*K]QmCpa5
+%36A'L>9Ual.g8WBZR:rMjjZP%e?=q"d[0 at AD<Z(=6Ls;272/:VZ\o(h/\N_Q$rr-CCNBQ-Tm at _:8;E)G2jCLu[a^]lR*[lVj9DRo
+%5Y:h4@:1b!iLkGsUhaY_8-`0`bVZcHIQnQ>>3M\EI[A2QAflPg([/!Y[2r at G;C-4:':7eRZKS,`[mF>6Qg88>g"rf,)8PI)4_45/
+%FTM7XrU.=`>'!KHrFUQaeDt#dTZ)dUHADZiiAXu)\bd&TOQ$oFq^1G\kWh[t#W+to8M'0MNq@*7Y1/V^Pl*:bra;mCXMKbBKV%@s
+%:'$?Q>Z`NTSmDW^[+a`(B*@=.pA'N<#T\nOI%!m5c;5hY.jgPKY'm_mhp"-m"GX(EZT::b*dk\dI?#'!7'jYnh\Ql7I*PBZ_g625
+%[UG@"5W"/<6X5_iJ+koj$d`dp[q.>98PG`d,#:UKklO]\Hkr%==A>s at drG16:RfBD?Hu9L%qiXO'7$nE[fDCllAM$c,,A-R4Ch%q
+%H"B_D%+=[%OXbgllK'QgD5qg4B at Ib($U`;c:)K/r_21UgXZ-HcntDLa at 1_=520$>%q/d7pLWYr:R8dX`_t"FEEa!1)qiXAqp,P?:
+%R@#%q9_N,=3t:4K%,`sA`F+m0/#JTg.:7YD;AN=\2/O8FHs#8O_hP1*1=`)X_d`6fm<ZY:YH5cr%hs49a0-)'HQ!5g:9!Z(FuZqM
+%mlZ)*hOO+H-j8&04p3U<a#c8`niV8`.oA6>ZkP;W.ta5PGr>=3M6Y#G("g7.k#h'Z24^?4%cF"*O=13Yj?f/_!As8GU_3MeW2M'k
+%EM,s`aiuA6f;5>>!9UIm>O]+,c-'5c1;^2qG>ei/:%Q*aC;]>Mk\Q&dp$ukFE:T-B:q3pWlp0AJ7_4H9le?Ge%/kU19J_S.LeG;0
+%5"J'"dnfK624%^I4N.E`54)+%@ng"DRWd4Y)+tL9+BGU$-`[L`\$/HpA'iacgCG?t:0_"ug$btn3ugt'mZ[$.lBI,f;Q at s:\5"ur
+%Cn<iIGYu(nJ)>N=ank'PI!eu0'%QAL4HL\Xk4L5*nl<qK^NDZ;'Ot]Vi?D.W[@g7QlX"9Pkf.59f;;F_hE=H(`XiP.$)4^]Ua_1e
+%.^DdD:qoZ2]j[#2EYP26>$N*"#8RQPjD,F%mkjk_V`df*Z]ah*dCa(fQ]bKWmC[c.%*K!!kuM%QLjA!:54DO?m-WWGG at rs4MudPX
+%`ZUX*?qHH^>.)dkeL5+Ogfm>1=J9<:][dWEabX#V*W:*C5E:nlK:#c2hTmQ1&0DY`pS$;EAfps%WXkfWTd;>`WVL[#5'(DQ\S+;b
+%:g-Pn]EDs*VPa_ at 7^MJN$)IH7=pD%P84N*N2(R;=gg*r0oPo7,j<B&]kl&'A7]8_5dukZG*&394(+8t,_fKpXfG5u)ksI^:C+'oR
+%hAnXn9FSelo,8H?Iilkq:"-\J:D?G]2?<m[8?-NYn(=Y/06M1.d[6P#cbW+$>$5bZl9lO<Phr%.%kWt at TNfX+&@El"cr?OY7'iQj
+%V,:jHh)0?(S_n<7Y]pBWE[b0[,<GL(7[#IZ73B*;oV\qhNcHuBL`<fi6rk08:e<OKnG-9BYFD_L<onsbUSoZD7EqhH=PE2s68cBq
+%_qq0-A"3=CG(Lns[68r at isa4R$k/RClQaO8#K5T0c:K3MZJKkiGe2FJN>7qaT_@;71QN7hYZ2#toL?<%^0B(KOD1H-qTi[Kf?L0n
+%Mc[3]$]07'qbmabhaXHp>1p?O<FVaae"5O;+>'m!Lo+Bb$)NH.g(`%H5:,_n8`@PiPoI7JE9t29.+A;P#]Uhf9$_4Mbm<!,^E;O=
+%.IZ_$A?5B9T/%to9/.]7W)rREk=/dTVk>c*FD=N)e0A>4*S^Z'h.NJ8P&<6Qn"]-3P,kIhc.6#EcN<,,Hor6fJ9#H:l+e-me-6(r
+%rGXqU<P(s^ZNT"N8J\@hQ$s[n*S\`0/a*<>Y]s(LSQ*YDQ'c,YOf5hk>>(!Q-UJ<h-r5n\<;nG->;!XlrMFMF.Jpn<]f'pagp)eG
+%D$?Z-!,0F]W]<81Ps+hF`<EAu-kgH<?1hGF-ppEhA:!#0[G/teNq29X)R"0ae;3mmSEh^8Y*'&(/SG/*6[>0VojK[Ud>_bQ?RZPO
+%9a/AL,$_9b9Q+oF0`X-M8PuuAld(HljH.sDic#B2=M0<'iN^A]HU'sdPV/V3[H0ao0noe7KC;RS1KT5$=T$f7h4-S:Yhk3Ih<'^?
+%B;0dcNF<d<7i%/V#K.V3BD4#<oi;9RV5_,)(<bmH(UDB[0Ou>Di;Kc\RR76Y$f>ZVJe_6j=)+(gk/Hqn0oSX6[S98c/*33*$<+26
+%`@7o1%\a4kSe^oI/LVPbs'(DK9D'qIpqKg1PM2%#R2$V^/>;e7)kb8Hn#_8qJ!]G^G/Uio;.SCEG&YE)@"q;<P;8DCGKApH/m']*
+%qmmJ9'\cG_U\f873*Em$]`cN,QZA9kD$D95[q#?>_I+m)I at .r&KsPG-'5O!kUSZQ.h%[]Rp7VC=qd@'*gT at C&+1M2#<"lJT]<.P[
+%DQ?sU2oMf7o%(7]0I1ruU(iWiSX/%d=DH8$L_O at 1=RTZQIg<,j46o8_)Y=KD4dYY!VTN/=P%\bup'JYJp0[q%;IH6(DPaj^<!!=D
+%*j^45#`NTX47=PBCAA;bR8J.I=b83%)ur:;LjlU;24"e)r6dtnN=X#=g=r'L^5rdj1c,L_$'7MKO5E0cFJ%AF"22%bPAiL8l'D>9
+%jY`MkBLK[Z$gpT.Cu at uld?6 at 2h5Ci.'nC,MQXOSOj"TbN=KJ1LYeN-i;UN93Pq8,g<\!MQHD/SMVQcce,u at b>(!j*ei"ZoC*eD`T
+%o[&5f5=\CKammiQ9h%q>5$a(0^CPnAPl;LN8e9V_l/.9JjRh=i_D>D4X6].BI=\WP,)V.Q*tGf]1R-[rqLSm#g%LilH-f%YfP*GZ
+%kg1"%bbd&3lc#['KCTpK559;)oVHdV;6<u`U,a2eiEIb at oN$%8k[E%2273'_;W.!LfKX?(ZF+qq`F?#%E-r3C47nuh"6j%7(J6OV
+%B<)3;1d+q2#"2loa4XU+6;mM\]sQ.7K4n[Ni\G=a&Zk16l9,bNIsU*i,&UjE,7SLPMhr(>O>_??0#_LqgQC0e).06&TLOK?Yh3]]
+%".gUj#FOm9W`t8d<[!A4'crno,p]7 at S)NYF+o#:i_NP\#;^1PO'odUG*gZDZfQMLO-R7cuM(VC?iQ54rZMu%dQ*mhB%EG at X4h3Df
+%^bP`.+JChKQ?;8;3/G4,#E^r]HL>7RMDJYkO*cea(d_))o%B)>*;l at 1\c-/1BsB!80amOlS,fT:I5%VaE2e\`U&HIrZGuRq65c2g
+%5 at 9uC<`7D_3]O[n8N`O7qsYEPiXA]m'];ka>6n*#^Is:&a"a&/hCPLE0a5eB7b_"GRJd"kYL"[,BqHuSQ#=dY(acZ<ihrf-Sk[h>
+%7s>1$QG0l3lY*T,qXVT?6!#ugj`0!-k/6t71r^l<Fb:6MF#28h"3onUhW2Al<FY9U>J0OUW4tjQVH+3d33#?bW7WIK]N/.n(]]_O
+%q$cj_hXP.Bhj6P6'T!AIX$IUr,t4jC3>i59K1T-#gpMsU,gt-&'b+/qPKZ+Tqle``CmG_*?)l<i^6dD4P=dB,BUna(S@$L>oDVG@
+%A at bZfZ9'h+3_8b&Ha=u=]3M3b?ID#H4f%j],N'`)O8sF6bSJBERXl[V:"ScU'<\T&=\MVV9:@McniX>*p`>64l4nETG7mFD4GYLk
+%7^efnL3Wc%0[-;7_(\[LH.Mt+9tFpEi"]oT7iX95Yu=u=*X_c9<_p7;e_,9+LTlOXDLJ[#[YL#a<ZO2h$D>L)fcH$lE<hO*eB, at e
+%1tW/-b_S9s>N7i`FH#3MNGR#JAO(SuV"EJNTO^/=TKi5B3aO$Bf6'QQ*jkQNVt!$J%UCd4?dFmD*i_edGr at 8nk#q;'"$U:%BCN&T
+%iOtXEVuALa$T5q[og!6:[[L4cYZMDbn/%F7RPhjX)]nMjM%3/^UsJdJ3c_p`8f=6gd'WZ+ at VF+G+ATsKctU9-Dg%nC0L at tkda*Wh
+%+WkD1,NL($[YK7+NB'<hdOn#57r3C&HlTN%?4KF-I,lnCiZimOM"jMNNJNWP.h?/]$ZK4`in?fL.cQ3]h!\<WC=*W7JXbC@,=)Z`
+%LibE\j8_!?aMek`!Obi-SOXWN]b#pc*GWjVQdd]O'+_)29ObmAeXpG,&);V/EKHp;M_IJFL54gFTkoETP!EF at Sh.:_r&Yn&lHt=)
+%7pYI*0m"=uQ^2>ZZs/`N6FouSZkjJ#OY3QS52<KNhC`(^EN'T0ie='@O4tt&\D8ek'i at UYRA"!B0L@$KlKq0Y&]O),6B@>,8moNb
+%lifpO6]q7RlEfL*h,SD+qbh;#3L_Io_GIs><QA:BPU`\i6uH0fG1!<r3\o at b%!JuTY]?",D4SGF79=]D55j]Eq<fC#9/WEICIqrY
+%c('Hh<::eH+%t#1J6i9Ho8O[%9t*]599`j07fT4_)oOcDd36e[lL/=0(1"a6I:fo]%4qdh1Ga^hA]\(TLNKga96.&k$$sMO"a<k"
+%NR2+sa"*AOnj%a36So:FP50`XqJS2!=k-TVQBc`#/4P6d1=H<Z9XUIL\d&sVbVlQ0bKE"7MdpV)U@("nYi`@[!Mf=h?!7muWNOA@
+%<NSh9L,CX(Mg=dOW9sqMdqU9S at Tr[)6q@$;"q/\S;q%ick'*dD4%H];TBR"V>sMo!h)L5tHDT^'/<RJ!aX-AO=gd)t<?NYF`Q(pg
+%,Dr.<-=i"sd^eEo?UJs[A;K%I\28\_+qE]nca*G\,2HKb^)3WjGQmTtWWi>RpDfmj\-?St)"4AYmP6X6V9s?77<te4W\M<u>[;bG
+%,^rR=D[P0])oIUXJi*o$Ql?%EkZ!9P.t@*KNeLI>&](>nKQInj9^;:qI'C+*,-AGE\dO(:^l]'sG;N</bfhoV@\Pc1kI!L#q7O4I
+%<KH9@$:1P9&co6'M^C8K&qM1A?]7eM*.iVUVThRC5tAqQ'k/Gh!@";u)lFq_Xm4O4dBHJ>N[+Z?[^'A%3JTlb3N;ir3<UHC*c9sL
+%8<'OlQC^O,a@@:;VL'WjLjC-eO[+d]RQ2rI&kFIp8sZ9aV+fH7D^M3PC_@*hE_Mfi^K#&Hba9"o$1Mf(=OU)aajNgK[00 at Mj+\at
+%cpmrcBe.oB_f.T2Y9+701t6J(V"m-t31U*S5dUaOZ1Z"XED;J\0QUJ7<-Qt_8n"FR0V4pAgT-a=\Cd*N!]oApK2HNi^Nb,JfSt5?
+%NO:Yg6L'5#Tl<qK[bjeC.G=iK-hUFgV/4s)Y?&gRhR-.U&k!3`N1gJ2I6*2PJVlY/iK+7_GT>.Fl#DOTKZ>61RqMW'12RR7?F<BV
+%Tk--;<]THaEb:)1$+ch;LK]PZM;)c[AL;#s1=;.NJkYo<!dq/L'G7;I+A*Kh;^qepZ7ff!==SmOFgMD2;[LmpAA'`61"=@Qeui&N
+%I6#g"[#(JWVX4l,ng(eUH'1n.be:T"R>,ZoQ>*k&=iS*@?]#T>W`?VjW at 9q`=]HDmK3FYHODa[^U1pb5Nm_2O2.^bM[s=k#!rKC#
+%-?qnW!6lF6m-r.4Dpm8!h)Y.8Yd.0Qkre#2iW?!FpH&HmC/`V\^'nr4dg5FQ)m&dr7aNGP@@C?;dKn:m*f1#la9!GRNCJ,4*m"PA
+%mcak!kXVK1BB]OI2ech[O)tF;pp8NCF94Q/Q;C-r<D!=RDhfkolY'_ at hJD\`M.?Z!%1MAi-BNh7lfL@]A:jHp7lip_k(J=;5ie/]
+%9_Y=aOVIF)7oBB-AnWS_;LunIWc(@)!MlAo4!Q@`1?t'+]]o/,d9jPc/@AYS,H3s%79.U&<?QXeO*P7Nj?qjN"eV<DO'JB`&TJoT
+%2?](DKuQ_Q#TQss]qpHN at Es\670"m.jI=hs5WKA<Mi1;Tn2u^L`*O;Z(V.>5n#XLF,8XGnSpN\#XA5KCnOY@\QG%SsE#QTU$_53U
+%\\MogET^g@%ee9Ic&&<Y"h2N$3)5gE*ZEFX4/(@r,Lf7m#AtP+a6VPSHR@=rEK>H,g(=u_FbeIT00#%WNG.'e1.E^His>,IHWVL2
+%'<u$3&m]b.kGG`+cJ(.-&hpBtRGT8=%J04 at FbqO/NcI>o at dO([k"1\1T at 3FT"S9UhX2Ad;5N6B\n_0le3,S^Qa3"ZP1JYuri`\2k
+%mXh)Kj3^kGe8, at JnQQPRWK9GEn7FBCbQa>GAoiH3#;e'iN/)X_>/Jm=8j'3KR1><9X&k#).Ah%W]!O5&VcT%/6miQI"Gr0^(sc`t
+%i$4<Agfh&X>fGH4R0=NI2hcn&7PL=Nd,;i3:kEmOI_2is&5='6LEdJ]6-A8Og3Oc2ZB6!@a[TaPM2h;Cdf&YM33En:HT_`SLlJW:
+%YAl]I8hu7D<JH at Hl+H`rG^#N64\)RPn:I#+ at q:&U,^+U&P&7RTVZ(,KY92XS/#8<qR]</e#LK0qF.+Rnc:)/9[N#V%T6pd\ku])T
+%\-P4q$Fu>Pa<#%c\K;']jmTsUPgjKQ&J!`0+pib:R7PON0bL&WEVb77DYti+LaF:uoeBP#6O%uF'Ghj3pR?:k?G>d7dOYOjMn%C(
+%NQ]7mN<K2F+Nee-i6pdTeOsC6oYNGI:a4AQ6f!^OTi.<p0pL:sg=1+j>7P4(m9jVQBs3`BjWM:/MU:+!T<@.nkHclcO4,ZcGt-tN
+%f`#$g2V,b6<nK.T76HMMl.1TC,i*>sV$%aY7[M%HU1H$Ee7ETmoD?A0dU7^:m3`[Z'E>J_EDOeCXAt,K*i?'XVS`n0(j`KT*Q2%1
+%T+49S1Q6Hj!/G,=NRl@)Bh%c0c90nP5R.![H:f3*-p>3*c&+G at d"g%b*p>tZQn9qI%Wpf$8KhW%0?>N%8G(gP&8]o8A,s1(daA0Z
+%6icI5=l"]]6DB0lULotqi)5pq at n:Bl7tb"-4<c&dP=pS=R(,NiQMF?fii<?R\:i&5M+N@/I'SS?QkPr[PBmkWj3"m%Y"`0b9K+Wc
+%rpuSiNf^ENCD(X[6fg;;"Oa0i$*F^`-5[B-%#sHJI*6bCXr^l?,6"BUmA0)'7JBC(9PbpF]TZ'C;OH*)W/ld0*5koI1S'?OB<[4L
+%J:gRld0?(2;lWX"joH!H4Rn8)h1JLVRX\Ws5VT+g467-s4Gc^HHm0.54q[EcF\).$*TD-3Fa,c0I'@p+Ab[,HC9*q.C&A6f)FVI?
+%;GmWLMM/K9fiCJ>\[*SgjDOOuS\$4EAq*\$V>,o!j"'J)1Cf_&Z4pHSBije2A#hF#gDf/-m!^G\.-SOhKB)9E0J=X[FY>E2j`B.3
+%g#)Pqm%oA1?dDFu?mJ-T.@$[LDhh. at eT0A'Kk`356e.WPEY)Fr6'+g>(?.H]5(uHg\IbdKL<i'-lS8Q2NXhad$3Q]rR\X[L(/+Nb
+%8Fg8>XCr7ia]N=/5'_Z(K74F3h(Y"s?WR(`0Tn4H at jG]u at jH[t%tfK[bGQ%@irDXTh(6^/Okc=i[M)+cLpUZ&N+>m9>$a]Z0Tu=P
+%kWO\:I#o=S`:8sUZmsm_NsqahXTKU^26Ns6e2]QFBMH0/JW>*j"!'DN*?A95B at 1Uui5ca#=6-rONnhT;bq1krjF.gbjFB/<)I)l;
+%'5MQdQ=T#QOp0iu*<JVI6F%W+#nkBCm1;T at 7MZg!+NC6<aLko[f=6\mK_+'?Ggdu5H%g\f.r_HH#R8XhrRA2iG57if?^_Q'C^DLk
+%W_c9n!<S>J_)5):Xj$X[2,Ur%YB at 3V59.M1h8.S8R5M;TDK1UKn@\Wdb<fK"/ngigPRHR at UZp?EJ(ZkF2!aeQPWYo]B=mbW6Un at X
+%B4A/YBC_"ilno1`15,J?2:Hff'S1NA9UV1P=b7H#Gn`cUU<We%N%0XCpu7$iN'/Rt$?V)7<4ol9&<^T8$Scc4ZP4-1GqCg?15b7#
+%RUp_/,U`GfHmF"d*tP*&?qL6?SCiUMg0_dnCD0W0Bchk4\+#$s5)RtjFlBE$g2E2KJb/<`A*"FB/6AF-O&@4qc]o#?*?Fg;1c'!e
+%O.Abb,BXj'7st6]4OPoNo10N5:NK9Tr5tJK at prMD0Z883q`J:J]b-6b=4.`nY[mtGWDElLHdt8U$$_\3cDKXBE:X:ep>^k:Y8>^k
+%AJ"amVs5E<KLTltQa<'*n3LKWoZ3biK%J>;#DA$4'?pXOrN(9p\=PR=P;qRblWNi#ICeR'#EUg(4Bg?!ns&E"C!$o6NbIB;Y'==T
+%<NgV[6crQd<oo5CqG\1&co\Hdl+WJV9[%fQU*&U?;V=k[LCOncWZ.DU^c at C=2I)Pt@,T*;mO^E^!(Rf9i26+p^l_JIE#J#S9+]H2
+%/6Lhl+J=\;-P6EraQ at UU&H_5lUBH`JL^2bYb9dg1<E?It,/cc@;on#4D68J8]M+r2?6;sc&HDA]s8%fUci"[[a)D"CO+6nJs6p!d
+%+91p+^]3WWrUr2M8uR7;fDkM^IXBNCi(nk"gV<[^f73IqrS_\oeb/<j:eC3GIWKofh_+`fci+0js6fETs5u]Fn)*uNJ,en#s-N'+
+%?Tm- at fq2[I)o30+n/?bIP\%j'`Q!BilqM7gI78>srS6Rgnlm!\J&"nMNt4uY38t*a/R"#?rZlo;`OBVsOXUi!V[c*FV$*LoF@`f6
+%(7^SK8Mr&Kd.Fhu33;tlb6Zs(=3bm!Zl$_WcC#!'(Q8!]RoWQ;Z/*/9)_m+#2,J(l#!.G7X)TY^%)E1(^nG0PKaP%/?T>+=,]sJ&
+%GGPB0Ug%Z&'MC6V,/b\7H8dJ?;pX]t9/GOg&HFr(fW<)#1dP.3Dr-B8.<R*6%f0*gn+HqCd:rFi\1aA_q?>5][i@)!7[.T%8)W:6
+%QKCM,Zer,3Sdb-\a8X1IfMV.K`\8L]a%_rY[Ye*LH\a%!8;#Q;_14H*8Jqu2Z#B!F!&K^QTtF46AOX&Y(5Ygsi0*ihO%N=r+rq]j
+%O+TIMKu&+6029\9dX5c"\=<.g5h$,VYPn$MaEADJEs,L]lDgS]@Pu%?9<Ou`lg:MKY%ns'J7PL&nb2fc'<sZX%q`;ZRt6Z!&,"B`
+%E,<FMYlh`'TqZV3!225$V;ec,?>"/E/H-c1`D7&6@[dW+O?=GRFSlop at l[cqY-=N.p+j$"V%GSe?qgeD1ZB`Ye4i.JAk3$;BJC>8
+%/$"`;:Q+=%T?r5I at K:[Y4O5E1l at +r$n-OLUN'Jpm,VjbY/(0^r9un)UpPg1IPoJI:=9,@>cU^KdQPO^1+.ZE:a7]R_:IF_RhGeFo
+%U($Li/b<Q_1("o.V3c-/p7=B8;Xi%HR`MnJg<8Bd"&6[=Sa^1\2(NFo'oCr!+WO#1)SFt>j>5`G^=R9VD9M<:^`+JK,dpOCWJ#.&
+%.9>'oWREL;%%W_RJUuJ>[Fi!;19 at MP+$$K)DSkoFOIe8`b+R^rn\3.L)+_CndOb'ZpV?U,nR`&Pc0"^BlGJIu<[-[;!.QXH=p0EZ
+%ZaAQ;MUaW">B4gN.u!n&l34nI#G%nZabJ$@/7lK-E8qa^W(,+"ei^<p&11n^NiF9'Wd;"_qP]ThOI1HTFW0<Ipq:OnV547[@g[dA
+%*d[_Wkl<\"4GANR=LALGbB;jB+($,o?!<.ao2>"uLr5'Q2sn"_ISqp%=e,*o3=0fV<6PMW7!l>QZ?n$g]_ODYajY\9S>V'DLYBWu
+%o at p/FGU"uoG:BnH.6&(qp2ZQ&!dV!C&4j19'!8_WoFNV4K_btO=Ws96HECi(l=M4^/4o<+Mu9F\$6!*pe\o._V-Qa at 9t<PS$K83j
+%G:2r(_V:C)!tsTCUZ96AHuS[K]=lSAnnOoWF.9_>>Dg9.)i+bp:0/h6:k3qT-B7<],MN>mLa:B+]aE*nLEY>_n"cERDj_V>pZte6
+%79PSdh'HPP\U$(NF5c26[>m0X[P;^>`s/frq7`qF+R4Qj`[_YCeh?<u(4/H=JcKT*nB6X#KHTQ>>mB0R4bs:b8Xn<Q[l(SoDo"Qa
+%U:DDH2anS>:*nZ(RR>XMC>W>=- at p&oCFlq+8>QA@)Ct#LL76%9g^qC]-5Poe?`a(+9QF8s\c9An;?T%ZQ04MaLX6JW=rJ?K+>jsl
+%3O5pHL%F$":+>qLHdR,H--PFE&g&TUm?lgNGmCa^L_C/An%r9%-m5>=h0Y%qYI%Ua+c311RrZCRPhW;fl:ENrZsYA_.c5UF&8YMc
+%i19Kgs!EN;)Cl<ap:)jh!J$st`T$)EDe at 0qh)"OVZdh(3-&?YgRi1(4s5;5#(G8W<2K?j?`nWI/;!$?F"FkKYIrb+)$B2KuANa.4
+%,>.OXm%PUO:+G^u!G)Veke59XP3N_lG9^(s"CU'PfQ'jZh&Y8>kZE8NkR.\MhQn#0Z[;d.5'35#-2mdh[RbN96gUsEIE]('L*[.B
+%REF!p$>"j8!O;_1.6)G,]Milt_c1o at AW>NGbD9GoA7O=!BT$MAHf7LT1h#6jGIg;ILlPu`b9BqCeW`36aIhtH(n-#*"ilnQ2OY`j
+%)!tp;fc'DP!)`@j;HVThY'#*N"eaQ=ZGqcY?#F0/Ao-+R3B5ZeAd>dV;]&_$YM@$'a/dkS^Bc*C`X5WeN$e%+n;]Q1, at FZ,P2e4T
+%bsFA!RADnSX`j%^Z9mCK1L<#bBQ5Y"--/nRrJBNZC]mT8EGe6R%J;0&=:OK.\VP.l=_/kDm&Tl^DB=bh`.O#6ho?.^kuftih'u56
+%E);@E(lH4G_h3MAlLSJ!pDs`,7-;-BL(sEZG.TV3Y/&A?/Z)DHeOD9aR0[f]%Us1n;K-'<$%T5ZhD"0f75T-1c;"d=ZZY3N2^kQ'
+%SGA0(NkNMBESo9O\%8;O&h/\>*nbK/U'DF"\SH&&aDfnj&s5(P5[.P2<32Meqoe]1-uXL25Y&oEWj(Y5&IpQu0iT'2djPm+eE)>4
+%$u[b/G:uFJJp0\*n?9+Gmg8'#WB4;FeB&@OfZ2lL?Iia1#KBirT=:hWkt8SD9Q6E-DH1=L<b'B9Qu3EjTdn]6e!$iN9+aX4$fWb$
+%J6STI6*%>G'dO!PVQ0#9N%UE0rdtHTUc?ElZ"<:3&5a-26'F:3ZnC+o`J^nTD7/a'pAd at h(+3ojc+Hc``F-0T><koiNN$)5dQ6%F
+%HjZ$eG/-B$iaUU5lI at _BHOmJ%J4o/BSXWBtMtrL.=k!Ep"MKFCL+2&UWsKF^Rl at H=>lbX)1kf:;EMjk\S'ShprOmR(*nrbK=mTZ4
+%MM0F/N)FsZ="+ at YBk,K])k_sXJ`ee at rUdrL!fZ,OG:n at hWoCY'PA\[G?+hkmPR6=$<ZRAln)4b*3?:@+NMl.V1,<RfBIX>jYIUu@
+%0JWJ':l.M/Hnk:,FK6rAJuRT8KIaOdG1=<?2kUF0>*o.TFlL\s_/`YKH'_u^-q9tGrUK#FQR;s3S]1rX>X14f%&5^o&g;-:fA's<
+%"MLXnA-l_q`WfEpHAfo]W.*/sYYq8`n%i<j4QVQ"e9a7K($;3O9-BP:@oepOIT0mO"UPMl4"bD061UF99h98pc,FO2,O![ndkB6@
+%]a#bIQj<p at MIY!hZu0GpLkAce"LdJ#>OS+h[F/"eGnB!GM5$b5iY+9F(Kh9eFgkg:T\Y;Z'T8AKVo/KjI at C*.B'tD`X!$_T"GEqq
+%nphR_S&"QL+gt?k3/Hr$::f]Z&<Nnuq;F%ZiiY3jlD*H0q=,qP*-a:ub[44`"u#<K]2I/t#M'4SUj70->Rcn2WkRL\[V>fS=J@`8
+%e`:o?A[3<Mnaa2Njb:8q at 6nI:f)[G+6jb=jG]K]'3i*==7oNIoH_n8\9Y]1Z_><'Qs'Y3'RI$4&CJ-g3$jRA_H3UL(5tGXiXY!VP
+%^+T=c9lNATBb[YPa4Y#/h0"9 at 3$[ZR^$]q@<(7d],SFhoH<BgWh=`lR%j3RP\.;jg=m]8$g+\6`DV_H=%'.OHVo&qu82m8q8iViT
+%5hATtRf],PS)!Kk[8>#[nle]BGi+;_g7UMG)kj*rKkCj at U96sp2Q./,K*QGOi^,gm at US3OSo#p;_D54+D.,Ra59uSb51$gdWC'E=
+%RNoR0:@:8D%jJ=3NS7pKB[94$IEn,!9XLZ#H^%'*G5ICleqge6i/dSL069lG^$m.FLMUhQNrd"-o!Oml^#R;L:kG$E4c=^Q.`l3K
+%_t=W%(=;Vj::T+Di0r. at Ee\<d*,sGC):(,O.fAI_G--'VPt:dLAW].f++J='gUa-bH53H#3U_Oue`K$%]/hG at 8FFOOaYKYELc1Qo
+%V2)/+[JJ<uAZeY0^"ZiOKIj\O,pt>68l8uM"uf06%94"C[aZOB1QkmJ?bQ3UX1sVZaReD/E4WZM#)kQjH[?[]dC;9PlrI]``P;Dl
+%%`W)c;Kg5FNm4o/;>H[V]8IA&;OTmpdc'T=e[nXUDN!WZOSttWPne./3Kfhq'WL/:ggON<ETVSfXB0g1=-[6"5!'5;!qGiea:cg4
+%*A<$3D1`[),./(IqFZYQ>?<f"d6X[8Zrc;.eoVp6O)U_oV]2"[G at 6,YA0#,8#"qr&hmc1Nh\6?N<m!blXSkuO:Al<D:=q<VjkCSK
+%@:qY8f%6u6U(a8@\#"cVOKY'+gGb.$El^)\,I&@B0dcik6W]gFM#b6:^1'Z!+BlU,)E!cseJ,4O$4_(t+qVQ"Q]rGGG?SR&jAFQO
+%S!migL[I<ma%hIZT56_/?I7ZeUf;l;8FN3O(,en<15o\P9NtLr7cUc?TG>'?;AY/E[^j0UH=q=oD717:I]"Z$ZpNM:K#Dc14="Kc
+%bsAkBi#GY`cU*rq,)5cu-uT8$<N*"V)Ep2MGY^j-Z65"`Bm`A0UQjCh`@HcPYRW9egFWTP5#uR8,UUa/OIJo?P2GCb:cO$RSUcS:
+%JaUgrXP,.[Q:2pt<KB3+Z<]*1Fp_?-L`Fp?]/e4+39]*`'0s1!9Ab1<:cQnUHdR(0+.0Ts,Z\0hcdtp6C/fbd3abWAdTRN\"Q%uN
+%H\cS<OGJeY4nS#K!BGK at EBleAc&KKU.s/<R$:mnC[%jrZ,Qp9oo*]$oVAGDY>,a[gMouh_P$V7lq*hQ5BItbd,bo7["9f4F_J`!_
+%,#thTXO8F6Rlq:m*#E1BDIQG+,$f at U](7[fTc0.Yl?kDB8XaR`C6Z'+`'T$gfmJ8]T[E.5!Amb//4NhM;f"=oA at T7>[5H3Q0e@/b
+%%9-%,#W8qe"q:II^lJcI=D;Y/\c+-:=ea_U1Hg`&*"i<C91]i1gs(g<(n-j">>K0k05i5pZrhlb-:"9rb1B,*+DKlTN--%SR\PdN
+%B$feEK-&u">,q^QmTlF^T+Br8<(b.$s5=(<i`^'F/ZGtDFlP+CFh3<m]HW=m&--$!e-"H_QZK]Bj%)&A/8N6, at W#PV93(RrU-0-^
+%>m)Gg,HQm?j-X^"0EH$;[&Q7o(mS]9/?<7G^Xk/K\7*T7"SCbuR>NmsR0.p/@+qgFick^a at pmP)d4W[00Ud\nJp<cs3dEs;JZds0
+%PI/S,AZrKN?[#05ZfUkmSc(AMc]`rZ&J0n_gtQqkgE(11nM]16X8roU7jrLh9?=?O)XYTQ9s&7="05g'9&l6 at UXqR]d0okIMe4-<
+%ag`arFu.idfa8)PpRb[g-2\`B*&]P$ok?;g>'m<G+HTW_oMlH'M^WR658KujCLX^0%9$^XKO*5:6N)kq.THr=W!cuWbJi6p&>u#M
+%VotJ=nq5O(Y)M[(W0]]hC5Rdu=ZnFK:WcQhgs/Wd at 1#<\RpdJp=>P8'IZ=;/2hu1KYLk"1Nuk$Efqm'K6C\fV at Wd4+4V<KV,AIS?
+%2L*M9;19lU7Sth1Beq([gdJJmKie%<Oh. at 6/#H at uOZ8TEo3@,QDtYj22WJ at pW*o"%1)Kf;qP2sV->d.*Qa(o at M/At22]&]ejR[5*
+%/E(I7UmkPI4'^U<+FLX0'gQ?Qen at U,06B)b/WTm<doOm)@H"iAMDZ at C^225aF*Q4:&`J?BKQnVsa!@)I6(T+bk(=37M.&O0b/WfR
+%]bCO at 0S0X=gX^P;P(P3*o%,S!5CO]PK^htmimtOgC8d8o2O>^#Gs'RliXPMhNHT/F/RqM at Z5;1O,.?[mH%[;_>Q!_BD\rUQ$Yc%N
+%]o3G#qS`GlLV5PO'<o!W4`AL$<id0ob_1t)q6`[UAk`>uRBL/I2,7HL#_mk$G+HaBC*nJ7+'TQ8`T#Q`34]gYYY?Kp7V,iEnB-+A
+%^GcOuKRgUEYC!\ZqX&0hKBCXa\bI+rXI0:Ph=h1?,a`AC1I;,$dj'3hF6*jO*U6^EC`-g[7-2(/9BW0]BB$)D[91pGH%D99\[Z+X
+%r2_\R#26Eg&Khq+`$&go=ooS8p!%E5cts&I&aoGSAW_\Q]0^Gh.^G[qe54L[bu+t9IOC[[#+aPPF=rR4d!kDPdJ;o77H!7?(iI+^
+%c"1\\`<R&_SB3p-5-jB0"sOs_*<<A_G7+1Z$4hkF[IHu3#`''!rY!7gjMDJOU$6qI;VIS^[%E2u.o]0k\6iK\js`$N`bh7_m8mEI
+%Q"&/$@1Z)T46a4-"G>&*il?=lY3l$F?fc8%25kD2[;$<3#%Q#QD?9k4 at CdTcL@<FIQkWP.SA)LB[jH-QM;=b\R6Bfu_8OXX$ADGR
+%k at SV//i?\G6u6^B"lQpgN&>$N at 3b6T_?S-KoZ[qB.feVGd7dbsZbk]a]BU?o`4.c2$-H;CjN?g/rX at e$2Qp;j05(!p%OSkrp,I6'
+%P\Ib+eSgQ\&lD/4Wua"B3W*Rs)oum'aN^YhK.hrC$?SYqF$L?-jQm]bh/$/l(;O3jqE=d=E9C:`ot&0:+[WbcVrl/k!7Qg)[MT#t
+%ok%\i$fWE8mECIY%ZmT(f*#p-*MsU'L2^mcc4<u-^1Lf'TB=9E]rI)F&`>,bO):gFQl@^.B(8V-Hi2YU$A::mSn&10\%PNB?uZ.m
+%p'dspBA8o^B$Sms7O;pc"hW>\s"<0r[]48Ca5"oiSPp&S.:/VOd8A/%k0 at 75qU'`jHkqIVXEZ^VV$kHJ/VYJuiWEt7I$]'^(:"r!
+%+7R8[bbMe_m(*fKEs56.7Grcp4QBlpr:uNtFDYW"WT_k<dk+E;G+oO>l_;C at A2f>m;t4ffK%c)A<,$X2cDR!G;'9Hgl2G:hVRT(-
+%&+qq4OaItSfUi:7]\(bbf2rht\2Q:.!Tlq6jbb0b'L/S`=KEA.V"7u<Q/t.'BANOkF_+g6]$`:Xeaul:/qI@<ddK2CDI'-NabW*[
+%G85k,JG2HJo7 at j5W>j=7E_nULD?oPhbC"?QAXWk8+pD8QMk'UsTW<uT<cg('Y$IUMf)3"\Bes[iX=)"@?"l\17'`CY*F[5<h,>@J
+%+<X^*!4'fS[0G%-0XD&SFjH1I_e;(>O6gU8ki6Bm1)6hr"O4fXH([O?/*7_Q/L9iM&a^%oR-Iqk<]0Q'K$s4gLc-+`"9Ds"A6h#2
+%(r^7U5u"O*1;WZqCi?:BJZup^/$PBCI4MCR_`!He?a,>18<0%gI[Ek[B`<)[MrF at W3F$r?7Qq^R?;"R/8ksjCR0rfD^OOo=/0H4T
+%(A3lXT.*@\T.(=W8=YkeE/$%Lq6#&?]sP2F;V]YQSXN:AFTfuQ$rITVgMENj*L!e%WAme#M>E=DUV$[E3Zi5_T6S:4hgnq]QUB,(
+%aIlCLUs$(hKhNqa!U"\>XVda?*\#L,(r at 4rMA9>Hk-lpo)f]HSWYad-H*;"E[#j.\nE$@%&mqso:Cil'>tCGTa:E:V=Q9;rO8?Bk
+%Diq=e?0`'La&@.qj$@#%m87P9<"r[''e7'n57+<>cf=%p!fG&4o,mOTfe+=^U/>@IPZ9Fih$afBDJr.05+n8,SA[P<GLDBe7#1hq
+%X8$Kt7a9&eb<#u!imBtDPMcL+*d!:=0YUj]76iu3"uAk1G4[;K*sBo`Oa&bX_<d^<(b7lr)%Y=kU62#=Xd at 2p]L+*r4^)U(:(%m_
+%LDgRU4Be^BV5'BVE0:JXE1VJbrfBDf=2-\;VCr,\Ld?D=J;+t+6(AG=EQoIOcrl3^3CA3AY8"CX5$=acLuIuqSsm.ka^MdT-IV?h
+%B9D at iak9luh4M&):nGBGJ7NB]Q`W1/6)$C)-(D`Gd(:Sb_aZjD`ecAOIsD#n?]JHs%^Q41>.!i6R6cEpkXG'Co.hk(T;T65k;OE0
+%D'!n(.A-J/AB"*NMo4%R5&e%=[PnKclo*"#CpOA@^rj*9?h@%3\,;`t.X9`dL[,A5GoH;Ef#(g+`gimocVMu5UZFp`*'Ih`Ariqj
+%&L1>FQOWHJPFg[a6hcepH=,(kFrQ9n;74IHV'5W_NqI'<2[_2P`Vo()ZmWFN"M1)DBL,mCTjXS)-97op_l'+)RuKk!`'JA"Z%//<
+%&,Q!m&W?8ojK-Y2'.Trr-Z"7%@4S=2B;4)7_c5rf_3Z<aE31I?@(AHJKR-1\\4$TZP#`FB#5W9Td;(soZ!]iS%SVh:q^9?i>+]``
+%8`*)uZm>1F\]"3qcZ/Of?-suD)i>lk#`^e<[8f:'@eFYTeL6F'T]\FK_SOU%DJi/$;S+5mK,g9P#nK3#IuA!%js[i.?OTQc7c,9B
+%qhlUoYJ2<:i+A(JA-X`IbJNj^>S.`j/+SpF^<tTciY]MU$KjZl\?jp'*E6?/pTA<COM!^,*75ns#eG3i\*9I0gI!XB*`eG.//h=$
+%7W+g&ePeHL at g_X%p8Am^+.#u`:n.&1p`qE;$guO4lPMfh1[-fAlA=-B'<#Im]`Wk:jK0]IeYbc*>d\q<k,!OPT;7rX#Mrn/fl[KV
+%>qUbe?\'B(_C-TBXn`AEgR;n]gp/8pFan^T[4lk2'GkYrb2@('-+tPIm].L5Z978W1#qJ`=^_H0H<g[:REjIg@`DJ^:iMZCpmM9Z
+%mY`*BOQ<+%iDTuq7Z]ch8ZYOm*hD7WMc"K?j#Al?_/!Y5'OlfFPdC-57t_`i:DnmOXd>]Qh#s.^?6WtXP>ipi]onES=YE?VDleC8
+%6!g+C&AmNler?%/W$"8A29621#sS*ff=>s%q.At_Y;`6)bp=s`!$3P;pINrJ;H,ZO"!UVPT50D at RcZsUO[4]jP!.82-;UA'm?M at M
+%UG6=LPp9&8fX6C at k8d+l@O5AiT^XuoK(37E)U4sQ&c,l>l^%c=NlkH1;*h;H5=oLBPJV$e9mer]5d+M+3Hc:;_.q2(!d=/_airEf
+%0%<+A>#8D>TQOl<NZcb#_HWo?<m/<2bT:?jf_'k7DU73)emNW[kd7:gb5lsYk8%@VqRJ^`!CJ]p/p>4gcM=W$l,3dSK7RA^*5gFM
+%cY[G7lXq-rl`^jo%IL8-S#6P7%PqWUit`I+m`hjm"35`fU7:nm0oC"c at PRTfGk`NB*`l,)&dUiNG#)HMo7,fhTDC\R->!YNc,WKK
+%POqDXT3,i`AI1V]FhkCIotuUmQkV>=`M)[+ at +(?LXVe;S.Z>E;Gq5tK3>7iJM(E^8AX)qVd>YFD#]pMOctY2W#bSC!:^K.85W2,&
+%YcpVh!M)-umd:Vqp+pGKp$BsoL%/@sF)n9rAHX-Z>/_:KfbF%3=()UB#-O+PmqZ;P*<DsVS/XiFOVmN_lS[bH=L;ND2f/9B>n1sr
+%mNN`e@>W80#1:MX=$+>@>E1J$69X_qD4e_B9'dKY0Sjq`UuA\:67bR1`/NmnO`Z6%7ck_8:]!(P)Ut%kGD:r[&:JhZ-%<[[cT;QV
+%7DhgQl=?&H(Y3+q=Nhf-W(WUTB1CS/&017^=ZepeiPOU3!c])fn?d:P,LVru#SQE9POP[IjJ(>-C`6Z#>Rs>n&j`13*H!2HG%L2N
+%0+Cc&MFn+C`&?jDfU\<3^J%[4GM8PFAY[hq))/2UnfZH.p,9FgS>8Rc,8a2*f!9f4coON:RHBK)<tFV?n%B!lgI$0T_T"$iO0k=H
+%[_k^/:pfeeVbs"gil)9XHL7GU]U7%h;:$-<*LIRj\Jt6.1s#iYZ$WA'\i^SX^_PYFB=QY>Ri.OJjmYKc,J8oO>[4;@=jOU,<#t21
+%5S'E!<jXHl:@?er7/!Vei8N'n:Q-&0Ru"2-nJM\UE0M=6T'c<l'-]!7:0_td7I^5hkKcANCmNFoRP at +3ZknVa</I(h\X6R2<'X;i
+%?tkS]W39$(q0TiY=%&f7VXS)dOeM%\d,oWN)+38)A&L;><7#L@:5OTHL2]/E=mPZ!K at hVBrHfm]f\O["nVhL7e$nM9]rpC8#2j=$
+%`/7@:aA`]u22'q.E7B`A#SHW$Cq%U&FQ3ioE%Do`_damP*HXX'0)lhDNYo?c$aiBe>N&6Z\[]%r(F"oV_s?'7;Ij-4e1l6MSE1(P
+%M072DpQcl7bZaSnYZDZb0@*/dhW!L5]"92e(r0QfC]@iHo-T,2EG=P^iltXJF++Zh^l:'J!YN9Pl%gfoLS_CNSUU!\$c-0<Lk00X
+%"f9_*og?7/_;\&uObr\ifo-Q.)=P_P-VSo1)L)G+U[e0ER:EEF34QeXKp]nL+S"e8d8"Q8"9DPs:%gJfGYZ"V>L=eQ+`#bK3925u
+%ccOBJa[R]F_]ms'RSB#[WA8DpN9Jgm\^E6;(M8Jn/4>(,'1*?r'S^$dNjuO[2>)DmC)%7djkNNn'[qNm@%UKcj3XbBdobGq7DN7N
+%L&h_!lYE`'6S0WW$jUeWDt:34&nuTsEV&s%Z#W!WrnQU>j0#jY1qNrdhf;f*d<F#M46;ql]KdA3p at t``0=mMAs1eI\aqSf/]M(p\
+%eBLQa\E`Ucb6)tm"j7tS02Tsr^7uX)T.FNHJk4\*Qg_P-H[<!IJI+R=YTeG&&5H[Hj^L.rI/t*mG)/b-5p?K3qHD^=:Hn4L)kI':
+%R%E'+oY#X8TSkWrGhuJ_eJ]Cs$QP>A&L5pLal1om/KbUZ_cad!jU0&oaN3gJ[SKbs`1`^Wa at 8NtQ'\$k>e(-d/D^d[ZImNjNJSWY
+%e8G!E&@eCSTim#f>%C"Ri.1(7PUtfq+L-ZhN!tWDYi&G`>F2Mug(oHSW0<2Ch^PJnS4!(-PoC2V+=P+ at Eb;%X9'(7il_7Ks"aIa&
+%h9t at a*Jh7`*lKJ`d9+3DAIS!&/'5d]SgAGF("tW9'e7G*1ZsO,-kFW$kA2-K`h%^.L!;sW`c_MP`ch:j?Qp!WZ4dA0K8p\D<5&e6
+%,FjA!F'Ol9mS:SVG9pNX-.R)(0+[s]Yq`GfKP$8TG^a=MC":$V/n`qB,=i;;X0X$dk55etU6G:1`quJ7XT>C(\8@/&GcP08KA4iq
+%,)1[K+OYd].ItJ[UU.sk%;@f>(pN1j5'Goap?=-`o5RWd(T<D^&HnG-LrT!\+<!@m=Fl^)$1T4g$(2n"5(fd>ZJY,H>N-A/5Z=De
+%,;>BRGCLO#O1IBB<m_892JQcDe$<CAFXZc>C$+E],7Or3,,aAD4"+F:TPjLl]R5g2(!/_4)C+bR2O*A=,gRK?;VcF371_D_TrHh[
+%Af8:eLSk[Z:g/1c<f/fN,Je"]Hj(SL5ShopQDI$T at -:.c4o7uFg42D!dt<RSqO=%5[DJIkgr%Z;(YM_G5,mdK1f]b>,'p4%GY,3D
+%4V/oY56OI4rE)ko\AHf:9s,P3G4np=HJYaVC28!N=bAGdM9J?&!cWbAHk:u!r/4=)f+GZLSg$M7rg2`#UEis0VUla0/"$#5q4(.]
+%kS,/3a9I=sI-LIoV,5c.^LgQn27q$(puCg.prCqQWZ%fB!,9[,""i#96h:+GQL\N;_/ig6?dVe2;9K=jqN%l_\9ECSX7%39U/9H/
+%)?d5!j+h#>%q4Zg[bbQ*YEqP"0X4_\+0oH<n3AYO'c$Qh:ufMK.ET:XjU'8fc'C0K$RnCq:]d*gb*XahmcrJCB at aqc!2%]C'PLks
+%pk\,fHRd4Xg,p!-8tMLlRt(AQs5oAkp\Y!hDa&XM2ui9SJ,-_Vna53t%`_rS!FTgeH=m&lDu\rarVh"jo at s<Am193kO8nG(j6qHr
+%aaa3d?_Zp0If!L"npeRW at DO&.',J5'/du[^`7dgs*)*XGs6Ut$FT*dBGjY*6`A-1q=f#-Xnk"Ro,R7!H*Va^D:6;UCg+:J-`h,rG
+%Hel]N?QD:k'bZ[O&k)n9iTP]\`Q,a[g4C7M)"*r\\.&:Nks8Zlie4L`q:`P()<^LmkNfI,puS3_o<Gc$9F9;d at 2YIr:gX0l2VP<[
+%'R!r4&hH[6i`XrAT(%6778,fU'$C`e+K<u0c[L!3?fBEbO**DMGIV\*gah$ZMO2"1Ns9E*L3+YhEH,:bGSioE%se:6L'SR53Jl:)
+%&)T5$MA##9iVPT<p at G;OV2s`QE]"gT(nkKq?<k=`j<]M8C>WVA'oOcUW%P?<m\7)9EulE.QKcKfDBpYL.^Ud3;8Abrk0+obdPF^o
+%_-3I_W*EFM6.YbAAi%scSU.VpATbD(GISNq57nNg#R]&IEbYV/UQX%WYY66;MDqt!4*J#S=HEJU>8:%OHk,m!9]B6.Gugg?,AMb;
+%8$'9O%o*(793@%?[LADa]1*b'\QY>f%pi#(g;TQs#e-(o.h"<Vh*t<EQEdu*[lcho1QEq;_ITn\2O;sYl^m=lA,c:XpgiS\[OaZp
+%=D9UhZII28)#`9-aHpME^N&X_>B,nmjaO4EL*=C\etDWr;)WL+Aa"8NCf)-X:jDn!(DZ:FK#,I<5(D at Rojt3GP@A>=-_XRMbd1PZ
+%-1o0C#K:\=QISS&Y.h69V[(13gok at 0[J8t0-MQ9M at mrPIDHp^<Rk*:Sf_0#!Vj>?@]5u9_OF^gRVeuMQ>h;W70,=pU%84&\`)/tQ
+%ibV#EQB_!S52VYjk7W6LLS&GW-c>kbDQ59(%OlcB8M^Vg/k-B!_@#7\i]p8BZ`s&lpV%`QTDnZ0'3pnmJAlG\EE>)Cl)KB7qfIs+
+%qPW7EC;E;>Fue`_Yu3LS-><D-TnpKB<S<.Y2+CuC7YEj&J>J59378^Tg8+S*&>Rgai;]hG*'[p:e4H&'OW]'Z(+_o6?Q/3gAD,/^
+%IR)\e.V;cM,.(Xd?A_jeiL6@]Lp4`.8=,76L81`;`'ZpE.o/M"RKoLclAkMtd2dN)*8*Q at 7jIV24aKqBZ1Djh2G=4hkOb.GZ0A0;
+%`+DQa879m068X_(BR<=4*.eI/&$!#5-=]'E+YMP6MX_pMk>*=LqhH6gYNGK!=$@SJQQr+r2sZ:!\=%MRahL`lp0p4pH$fpimHXW"
+%`VB[:%Sh+[WimI'S<a,t]aX0I`\\;Fa34,3=i4$_6=A$3<SiO&^V6tA1hH3\:@Vh,[1%Tl/VE;4 at X&M0o=O'-G3^<*W6OR0hMC$3
+%ZO'ONLP$4uab7u9M,-:eb'//"QPX1$C+3YP]f*oh\.qc^J$ukp'ern9,:`+JW)tVDmH+1nnHKo38E#I7RX#I&6A5;eT=pS>I)7O$
+%-2tSOZo]ZRGg1Xao)BC>jF4sq#VUM_3Bt8BnB03+TLeK"_q4st/LDnuU!$ANa;b2iR=:h5*d[%h':`!t8_U-tBu[Bk0$bIGJkm at L
+%Ej-6k71.IHp;/!Vfsi"uTR.E>I_/,1]B#GVNE>DgrRM%u/h.(2-FZ)-SlY7G&1&8F5pT=uhuli^E_c,G&q%,g?``R+HgpiCIE(;s
+%`VNnCV6e+7<Da<pJ$I#0/DX(4BViHV%mH7)Sct. at 48&<.^/IhYd=7l^FC^U!r[4+%0:2;"CjFfaclJ04$9;gfjXZ2&IfH-D0noU"
+%=eEG,$2=cpIXg0Ij9I at 6ZcAL?Hp[`(hg]\U#l<NLP4bl#h,0r^5LDKB^\qVN&,LePC17>ZnUk>3J*>+jX/]pM7SRrLIfA=7s*2H;
+%(6&sB-]Km4nq+o>eSkKU2d[$QT]<_ at 6M@]5?d\C/52N*.0*U7<rdV>3rsZ6f5P\X1I'<N(pZWh0\tR3(Ru%:0Y!nc)r],hElg3s,
+%-+GL-&f7/IJKi)b#rltg(1UrH52p6?\(0M$SQeng,km]5<@R[Pjq0)"A_`lhocIDtO&!NWeg=6BI#am1"8@>'D+jZ07/JI]TGH55
+%LoHg>3Le0#,Dn3u8#I9Cd6kKHf>N#>8qq[lYso>YDJO%p1FLT8JA(TZ'u^2BF"V[\5$lA%19dZFp]q,0mEK-i<tola@(LruK5M/(
+%&9kUmN2UA3.ZcE#ru>GDdBb3q(HVGJ+Z%eD<,]<F#F8AKNgVt9/51/!4kWW/^r]/[MC:pbcCl2?*i!3,mA1^Ho"A7;`\L,/9eiA%
+%CEhf7HOn):/1%<inr"ErO,d5)PMfRsE;_UM&)c^]Ldp1X#WSN1?G$7soK]_pr.7*P+7uu at pK0&cP"0f7Lg,sGibAZocW;j&%C:qp
+%r^t--E4`+n>>j3QUA:'C=fLM:QpAaEXbf&!L:ae3[i'>uJ,=?m4:72"oIs"Wn*lQ;dK+A#\V8:#!hs'F,L at BL&YS%k$I/jKME''H
+%'g8k>Y&d&AT#SDbZt9'3Q[u\kI50si`lsto1eT>JY/mt0Ld[n*d&eWXOQbpTXP"ZIfFi;,2VJEI!cdh%M]9of:n\Xl at ku9VZkarC
+%+6-oFS/uDSlWFf.UPn:TF>a)]m`t=$N]PN=^`+=;Sb=ar!%"'h1N)lP]Wh^bE.E)\!q)kOOhLq,kPRpeCjF,nr9uEhqSCj;+j&bc
+%`j7W(*f*',3H&W/b7)RSs)_+#%.RrZoL-44p+XFS_5s;6 at P?ZM2'$hJ#i>16\S84O2tinU7hOt44i+3,*dgn42%Y":A>(lm`s8jn
+%Y0$RS;um^V7FfS36\!j("YiAY;bu7d\[F6.m?cPHS!WJ*)CON at 1Z<t2LLimCbdX\Vdr83o;4bF<5J1%^-75EfAQj3t,oW/B'[p$V
+%F1k^I#!HeK:VlU8U)nZi`qO%SW1Efq!Wc[N,F^7OE6lWJ8,K>_#?LTZE4;e4TM\X>&a;/_cr^<$6/TT=g7>b)k/KWV5/5*k!2/=C
+%G9KgmghnFi-rd?u:seR-8q*aWO^TEGnb6WrT3%i(]#6tcd-p7'<c&\lkpaAFd-OM7HRH at k&)U8t[:9StT&HDjSXN at NZ3nO_iND/Y
+%:u&Q$^h>g634Y.`2(%sP7:l<(oQnHtC-o,^[1/-lU\W;mV9L2<:a=UP"CKFm+1,Q"8VLZXOqdlJgce'5ISpaHHVHMa^kamX*UGQ'
+%a=M\j$ca3nSC&*dk;#/Br3_&.iQ:0&;P,)n3>S)TW_E-?hW_Dhgm[IDF>HnQ%X3;DhPqq]SiusLhMJ1]/@uLsZ>RWM-2C<b/e=BW
+%hO,^`Kl?n"#pa$DW<fT(g&j9bLmQ`I4MUPG/rk1&-EqGaLF80?X4t-%$_S^lbA#]eYIpE6T14^&VYAC(`Sm^2+aG9gGQ"TJX&FCn
+%D40&4U:fs<'RXqbd+HgIVYkOG^<0(^L`4H8HH[]V,uu:rWK:K2ShP#nL;ec/"9N0,OA_j.K'AK_XrmbFH>[P--2cPrZUj\gAm%oc
+%H>nG&UN/@a`Gf69jnK9t$W[YjL6h(_iIS='?W.(ne]fu#!>m7$8(V2%l$+PDQk=*9g at P`nU>YNC7jaVj7%V6D!i1OTljE6I88*#t
+%=X+m1jhb_G#9[@Nq<5p,jQ'<N#\n#WdH^$=+50T=,u*Cm&<f(Hr7Yd>n>QjDA`53_h8(:j?c;)L!p3n7r^gr#btA`Wc=h$4A%M5`
+%F\Zp<.r"7nYEcA!eYY,)gKaeem9=\%]hH9<-fTGGk*+FC&,3%9Ah7N9!ubV=Xcq%#U7],pHqRBH`4``\gku=PLe)/nCT!dCihJq9
+%&l;cN`9"HG4e$7#TjK=Rh'>P.8;pE?D'Bt%c]RE49-*C;&17K_C9G>c^lF&XVK1b at U#jYPWaH4AF1j$U((\FQ,qmU!ld/aI$BrrG
+%aHQD+^j^+3gHdG\kOjL@%FkT"j,jAH'q),/`m-D7Oo??2$hTp9e<>YX&f!3BPh^nt3uWbRcOIfb[`u,2YEMN+X0-N#'^O3uC4-6@
+%FHGb>4/.R7q#3PfPc(9h-MBrO!/Q$'3l,,gXJph9m[&thb.'mSoZJ4<@WpAMcP:RgHN]R)X+DnY#]NRD5Ctq6p3g)V>g73so!Fl.
+%fHYON>=to!jj&Q:m$Llr>;g_C[XV#r]-+DT^rn!No,;&B"e:(<km=G[Y*'YCA9Xts&Hd#2k,r^ghRj).`kK[%B[*Se`&b81"?_[S
+%\P at D]"Yf8k3B0g:>*d*;VX?X98kTf]8gIn,M5JV,>jW#C;r*mD-U>/LABS at l5q789AqEgXb[&N/#8#'I43'c\NpchU`-Vp(R/sqS
+%iB\`EDMBjL$Hm\P2P`=ZP%77 at KtoRFIcelL_l[R]U_1U\bbP%Q=nRR)(krr[*[Jo<Ii:VL\=Poch5&d?\Nl"+/'a!j/spn9$*8\@
+%f+`6XQkD!R:2ZhJR+DH"mq#pNcCER%YR6fl<.GRMF1KP/b/1T$bXV5#R]\cT5*SRPEoP![Uos!kq4URD:P\Z;V>?&Ze=#e_%90hq
+%ZBR$36!0$6bM],j$k/hrhLFL[lAR?IeJhoBOf,'1=q['jMJF0b*1R9-8tuNtL.hklLKE'0=0[9f.B3.%0"bWRPtI#J+$u&?(AjB+
+%<f-2;A\`5(2Su%;ih2p'l9Sej+7"CGB]%#.N'+6GUp_o0&YKlpDL;IjEIhP(\+E:L0.jU=bEC%VM<5E'/`HODO9Vf`28\4p:,ath
+%%nEiZ$I$*:d^Qke,1725j4s(e+jRIC!Cal#aaaq5)]RIo7^ja)`jS!kLRf8Z_+fs3.97)5Tl%67Kf9c[H!Sp6Lt0n*,#q>FX\iR#
+%`\]upDU:&>i2,Zn0aHU[2U&5-0*f0[ppmBU!O%X?Y+%e_ZKqF:m#[[[`7^mQa*"q=52Dt23j?(HDst=r_FXCV+i,JN`<*Z>`IaTD
+%/IUn)Cr6#.kI%pP[ai?iFH:6M!n)+V at l-#jB4ZHJEN=6J@$lLII#rGp9ge%V2lQ;"W'Og5`VR`L]A;,RgbS0qRV3Q"A`p1<=Hq)t
+%7Ch#f:XenZIXPhH at J[Rf(,fQ9p&<D3;rXthMqB4(s3u2GIQF%`-No/*D6irh[;BE?g9$$1U0]32]WA6=$.dpGe\_0E.A.e,lYm-R
+%V8.?P0f.q9AT'4_YR?JU!k(2*Du',%rULhJ'gGc@([^N$I"Z=;RDr.*cdV;)k,K't1!A>2[@9Z.'[6n;_:0Y0XJLi`9rhAfJE*FB
+%CgLOtc:Vk=ldD\[PRKYs7AqP3+!MCgo]Ku,n-U%pjja>88;YIiT9F>UTGX%7h?=0EOZI9Jpi`I:=]ft8M:`\V+<&<?HQ_b'jUde%
+%Q:X$;Kj4<`^nDtMgOi(Vr9e*rrcQ2b.QhI4etFsiIpXrI]O04p]i8_;NjXt<pjY7"[?)6.c=\[$MgO:=H+ at 9`\$PQ<kV+C\IN$j!
+%gV86cce!AGCkdkYL6*_aeo#Z6a5mi:^pe;V(a+K,XA#>;q'JMeV=kd03=!t%Nb;aT,6HSjd9COC&nqfedn;m?F&eek3j>-T)*m at -
+%WWc=!T\PJf$n"^ZJ>&#+7F0>^!_b>_-#[<c8Or&#(A,Pe[KM at DTg4HHKL)eg,fIBurcQ%mgo1FBiD\EcK5>43nBO`D'U*p:fV219
+%1L4;+8=s9j?B#6_Oq)_OrWUt0X7X.D4=A9X###SGKc9ia*9PLM_78@\7:hlbXMc1BdpcK*b#Vh1?U5'R)CioirFmC()agum:oNd(
+%,?2?g85UupKW8r!Ld#P]DIUpU5fQ at L^l<W=C<b^?9,1e6"pKC:O'nX'RV0:47AC'onNE8rDLkkoN>P#>2DH.=2,HIK at gnKEH-W-j
+%5%V],#*CkM`H$(R0_VL7o!/Z>S3DZ8koa`[9!40Jd-X7@)&*&F?sdWGci*LBGYp_f6EsBIb3L5q(4EXpnaP$lTHEh&%Q292flN6m
+%67mr\]5.E>V]C,KgZD=?W!-gQ[*rtPgh*5pk9M91Aoj&19"eN8BUlOc5\)!\_pM!ICP,_`i5?B6W3d'FJ:dgJEe--KgVT(U=nA"H
+%EgOGaN8&rq\Q1AYjD[LTF]r at dU@'W[Wc&!Hl3S=8Jdu#9j]SqroUM4ac!2D[KGms#nQOcDOO\*Pk__<B5bQB]FVCUon&6Pi.qgCP
+%@dWe>mpU>\K:[nXDBCUHWK/#e"*6$H)_m)jU_"b3kI]=D8pjf25>sgoRg^TolKXFUpg:'j[,;Z=c2Fi8B>R#*1 at j6FF$WZ,$]RO.
+%c016gWL'b.^phQ(Dm!(q-J_EN6Y$>igCC5$)6Y,jd2^=0J'Yt%TO00oIC]W$EVfHd<cr<Wl!kpTK3g&EfoOY-8qC/4=_S-Wn^HZ6
+%8eT.&AoD`-g-IP5Z`:X_3p81p<K1L7pPqft]_'+*kY at l&jgGZs9\FQf*Zp)-m.KrHVj0h$MW'7H_sraU6jM'H\,K:o-W5Cq7sr`r
+%KfIE%:#og4Kn,gmK5Ntbe^or7e,2U:SP'MIpJ,-&.[_M\eSN'3Z%`ZOpZWrNH8#p[J"ORZ4Y(ENa``L9O9nqL/sP/RRkU.?1Qsr#
+%<mpWQA*.nAOJP at iTs<^c"qW,nocBPg[7ga*ds\NS,1=AP/u)/Er1o:)<bWm=.I?F`^%B_t5E+na.#a1SM?43AUBMM`l^e]cQ(gPs
+%.j^'U=>aiG>B]k1/5;,\7P.C at AZDBB5A8nccn4W,4Y0gq(7!%gD+jb?_?L?'?9N-R5mD'd0N2d36DG8^5-2KcR\M!$3eG%ndWQX\
+%73;c*]i`80iRtdbnf/b/9==)`_)\7DV)e3f5g83oOB91h<5+tdL_WNL0MrRF7C1,W;n,:ma+Dmel6ldT#fVR$pf8;J#$/FWd13X2
+%"ZRZnj"b2S7W"^T_:(;Ln)8/<NN)>?.\+SN^".Y#`JCn_iAJ&82kh4qAg$;hfLP3a3ZqQppATBdH7B.aXoA5,YW9JXGo>\-o;(4L
+%(74`">>"@m]:ZSK:[_)Wh'tt.?4FY+E5>k8IkBMucO;K.6-u"d>VubUT*@D=!X*(LrV@'(IL[.:AIXLDk^Z$u"Pe,I3.#m[&).=S
+%k2?p9CUteg14uci/D)mgL*VB5qi]M]I-]$T4:WQYkem9,nq]DckO8 at dn1$53M<DY!1m3bEPE?s)_pm%-G>[q>JEu6s%(EI2]I.&)
+%B/G7?oD)c8`82+C1cs"k[u76Hd<R*-PCK.qgF(0oSF=Ca$l;60A9.)to<00a at In6OZq4ZOKQ>_"\HDr\Z_diCA[5HAR[QXO#?D`7
+%&>.LcE2p at C&_m.^@aW46NE+)9Nf^RWUfPje#h:207;5s>m?Zm')bi](<m-0tNddgbcTCAa*tr#mR2N(`3g_U)[=SE'QbT_4L]b2j
+%e?..mA8PXH,e(Zf5PT"p0l:g5CRl)]F"%%nN?"kXlFj;]I!p4_L9q6ld6KkB_f2)do*@*.*`q'8RK>(Bc5Nb&$LRr$&)qDE`JM4,
+%A:jClh)gW\k2l?8GqJeV=1)qI,_XS4PA2:5Vr at G:-e<1?WUS;:\+r<"<m(g5#1kd`h/,st=>H[-U`1Hb&\nL[L8%:NN1g=t@)@41
+%k*Ei]e/HA^cJ'p77)5B$0a'$k.JM3Q_O#M:Q;Yq_BMu7H[qDkkB2^tA?W,2Ub2nh6=WUp0GOLTf9F/j3Q:8"`!T+b]P=]it*T"`n
+%L$>BG91!Qap*j at jc;7KfOm<?SE at C.:i[XXIp&IKiT^<$BOEKJKYiH#`euVnG\$?S_Xhhig0#0-3eF"+5V:I)&/A234^V>r:#k)-m
+%ndDXTHWkA+7hd$n57G69Guid@"!fKD2,.6aQc;q:n`M6A$[/9/T5M^2V$56[8!`uEXG9H.il9O8Qkdq*KP/\Cm\5j*g+q4<.Ein<
+%]m)BYl]g;AhN5T6%.YlTT(o20]l0rInbgL4anTH&T+0oG-9`r<nd1lS^Bt*ad$A5LFq1$OAtA&*Ghl$9$)jFb4of#&o2-GJNn30K
+%im\:?$k+W':4ikHO at Y^4;mW:mO;fhp!=^\VP;SS<rWc-kEh<m+SSVKRHLFW'p9^T'*=;rQa8,Ff&.hJKl$^pjmDiUSpY:>O.XtT,
+%1-DZ"`>UP,N;1!UmG+;tf=f<JMtS$.=bS3B=e;rX]$HgXd>Hl7)QU8:W\A]eH at deBmAJTt1"Z@\Z:->X7?EgiAu$HTP(+Q;"EfBj
+%gmmVZBhMlk^RhoVk:kE;<HD)_V+MuPUm3nR^&HK3c4C!&c+t]\(?5Ls<=REK55[0MZ75"%[>X3O9MHEaU;!,71:t4)HQU4[k$3p\
+%'aW+3!.tm)%KCp)n(Jc%EMX+n<s8Li^DijUEn1Bb>*W[>D?NO6)NA0h6diD*o?JhS5`<Pt%D[r-2:RE[m at 3:-R9e?;;?UY7Uh*0V
+%6.W$JSB<s>0$ieV$Q*#GVg9n*Qs^>.2gV&'DG!9-TPZ"&)INV<1kEKY(GI?_dqAodWshWFF.9OS2*n-.X&VhQ_0g9Oo]QPT,K&Ke
+%ol\nZJ.E at _8Cck"A8JAYekX8-\eLoH<1T=dWlFCP``8>7%g5[m[bc3`<?'cF:V.E]'r5o8&H%9SD##jXpD/(8RMe*U2A='t%-M_o
+%Xch(D+hs^9n,cu8-.9g8#2QTd"S*e-dNmlX[+\DF!DoDeB+^_m)qt?Ok3nj]'1X$Q++U/Y+<8>='"(25-o"2RN]#q6iC&gT27P6Y
+%*T_hU*<]^n,(3PSH/<YaQ(ZkQVbb*m%0bbqr,]QuakKh'%:h&_>g5l[X^Z@`Jh_rDLBRP\d2B(K1ft2Q"!W<a!AP:HK&pb7_E_[r
+%NU7r.B-e;H-WPa0",2ON1flTAd0k4Y!mVc,&Ci"$%XUG*1(Lm3PPR>Sa$RNTBhFDf.!R4.)\3hPfTa]Z^G<GkPT`+SU=TC)HB,7\
+%p>d^fGM7mr*toN,6m2$K"q$r2 at ZX-*e'e;JaKaWRl at _B"%SB5AM@,p8ncZV#(NN)eAHt![i"R9q4kXBe9TVCEI9fi8\%k$c.V$dm
+%^,6gt,fE02i[O1N_>qHhambAJ/)<@^4ZcXa\RE!&R8WokW!;7s?=Bfsa^bbODu1gh8eL=8^i[MdMI7`(Fb-`lP]u*JoC^_acn">!
+%i&0$A6ainWIGqE"Y1+m>^Tm&3lQu%iUaE8&7AInF)MTLU2.iT7m&4Ce"qH#U!>pb"g''-l-GlS*8^3HZ^U65jkm3!Z/*S?@#1J:i
+%?3`knlgs3&00M/?6]N&p>1Nl212I"#;)30rBDOaBL)mC_\7@]:@c^@P5#e'QU>lnQ?H.qp+E at j"-;q3`4o$riHF:9!j>\$3geXCs
+%Ps!l7&1rZs[6E8iMej^W9*6fe9 at o&OfP3>KH at sQ;l^uf"foU"_1b'j$fj+\l-pt.9T;7Jb-4s,%Ph0*n?nE92Hj2R.^iVWJTo96:
+%X?/jib/>]'pZ,=cD92&p"<,,C^oIlHX*g(h2]u/?c4k@(hCk/A;RMol4\/H&[Tt;@qbH[_I&](n$)?u]b>VEE)`0NnZYuZp%YQhQ
+%'!0j"H:=;^b&.=a%mkAj/B5\M*gXZT".@"OBh1n60ZXjQ\\]7a46q3QBGq(,,f3+T*<GCe&dDTeWQN$Y##TD;Uf8Me0B;iUNpqgg
+%6R#)6qLR(iF=iepCD][9R#g_%6>B at 1G^Kg$$Wb'20H%Tl!UBAnTn'F06#s$E^bD4hmC#"lA88Erauh0[RcU:":_Sl&\BWcS*ZX<o
+%kp/hm4$#^)f%f?G<H#/]-3cW.d\9!>(`I'=3B"IhejJrlP&FZ]X3:*'OpQ!EU/N^YYgj;rjR'JEe:_a6icaK_gY3?OMC%m?9?qmT
+%YL&*Hk'XSS<H:YE$X1c'41UJF\UA at Wb@7n(\M4jSDtlW$X$&gSC"][r9nn[l(P(.pS^)<,AK^PLMJ[9mKL8Y4*h(uB-kT at k'F?T/
+%/'ToA-ugg5H37Q?(6QLu<-]D3+BN]ZC$^`S-7Fm_D*p-h[f at aM?cSS&d'DSR1jp&%Jo4\^1-?s4kP)4)]V$-=31<UT^]m78"?>%9
+%&-/d[Of^n3CuSQeItK_-3_!Oi at ZlJbdbQTp?c_O<08pf,"E`?f)V/qcM5A3=!(4=oosb8sP)cmo.<JXmc:peYR.`;C0S'dhV5l*_
+%Z\I=Y'(6g09MCkQAn=@LG@$3WGBM,\o9'[mjiSI1btJ#*Sc]=ea=`:/eDj'9TJVs=$bVJG%U'@=$`62[<K6$&)r3!HO`H)1fJt[!
+%%!o5_1>@\BI%VM?kLjt:]V^9H'kAskg$90Q)cc-.:D7$t4Bk:67?Nd-R[,7'e2d&*!ElZ(Z8P.3[`Sa7S;*63X\(VGLA><?jT?Yr
+%2.Ke#juXq644':O1i#D*egfaNGZm^:2J3c8ZLCiS2/1.X>J^]>[d6;%<hl"V7Z9=7+,cga3H1]8o[_LjlAQPc^l6:0i#<kLM)#=P
+%7t[*!?JDc:]Z?5_9cI%?]a$PL63MD.ohShlKiA+)SNsj0Vo&sh(PQ?j0/q7DGMQ"kD.1's6JX)*V??]nibns*`6+e#V:l:#,b_t<
+%*)e>.c7)O0R=pe,kCs&/,7T4VbL`*U!,RL,>^$PPa5hEo43]YcZ1/H5-(/<qHA!<hG8bc91<T4 at CIeO51C^dr2/).UR^)<1l`S<X
+%?sNF5:(FuPb2(3^;%f8A&b3O]mf<q#C_J/n%7XJZ/DL)9P=)5cRICr4PY7q$.e(,u#skVt$JWQHF0941_&TT\+&m:aTHPYBB=Vha
+%O>@p*`YMRKCLN,I5f*t5o7F_/oWiZRd'(eTR=mnBNtp1W!$+a`)QLsqgnHYb?<$?I./4K.Z,d,gf$nlj=?WJP8J8]!`1]jUBEGmn
+%ErfP]CufsdoKe\fj[.C9k5,/N6#dC7.u>qK]:E!>o">k[V(iQ.EF=u_!2G^'bl-XRbYB=cRa)Zh]pTn"dc%0i>:,t1@&"i\n^6]D
+%FDjZ@?Mo&Tp%<$>JOS2[;'DYpnf)@`RtTB/qu[@X;D\DD<Ih$C+PH,s\-(*K!^^+JH"6"D&47V(Rg"TOAf%57Us^2b^G+(cE8&"@
+%pcsKG]+pdu)6_[44]m&fJ\lYroR,Q\/QNMKM9>g:bY$K=eBg6sVb at C@b2`UFXp1Ln;eA)`e;n6If"sHg#^fB:I)+<)(mrY\K[,*I
+%8T5]$`6<Qc6"cpB>kO>$njo>gjKW#3SNp^&0_k3t&G]%KNDa)*Ql0^`%%L+h3*E09R.b+F1CPn+kS]i0Pd)C>!K.#B11Jck$Rtll
+%D+N5-!(^J7%,'Wbklp.gQEn<>U<m)ET1iSsJcf;O(cosKJ0H5NmI]\>#9nZhi!(/h$*WQl^6\h01:@4s,O8mj$]%S$jiM7pGcF]b
+%TIoVR8HZj]U`LieGXpO,,0D7!nsQFJ=4ZS!2aH3B6,kW-E^-1E<PO:B('[]O)!7?jgK&)PF9T,-U8*dA8%dQ]4AjPa0pkfcV^-9R
+%^1"/-k<KuN0aCYYZ"0Y1Ou(U$3gK3qdA9,g1T38i2EKnc7&tu][Q`45_Kh72l"!\GcOCfm]kE*oDp`end9DH8P34->WL3fdU>peW
+%_")O$2%6bV;U\4'Nq,<QK;U3:]4(eQhG2'>IZ@%eb,>rH,a>L'\"$D&rkXmTLmVXDVUE-ok'6RSA0O&-oaVkI1d\OpU@)!h/cF8Y
+%U7u0i5=lQ)=6P$]:ZRr*DD8"gdK6Q2NEqTPZS0BJ;#Gpk?6e<CJ0=q4q16mQ0H+n0BMRBV2*O1608S7PfPjh<)M$A%`4GVn_9U,A
+%&:;E.(BD<Xm8ej^'th33^M41#UG:-t]7pUZUkf8->'qS9OKb[VaPMHThFW5acSu1a/9\Ed?1N$\*]/m4&4HDHck at S`@(;%7(bh4@
+%R)c<'(:na=$D]gAek7i3`f4&5]B-\'6O$.T=\d>=XeWnH8B;9%n2].<Itq7PX._LM0\CDtm`Bh>[8$i9\br5sC@"^gA\R9A,rm)(
+%^e;(ua at OG0.i:Ag7iI-fN>X?';2!4AgJ5%$7\e>V`^rHBgiIel>+O/g_kJLs($03?Wom1.3s!X+-_oAtY]GkY6.rgpgWWkj],`^\
+%c!0I_dqPOt+Woq=5UX+OU?bn:;V63O3[b>lYE<cdDlLIL/d7=X?:A8k*CJF/#LSB3ag)Nn"a!L'"X:bri9;^s'@>U0^7+op`2To:
+%^/Q2Q]'L-0Y3N=Qb[Y at ce'9tc6J(mP2DAVt$1ZG`eB4Ej7$U.K<"rY!bN:sLJQ"Qbjq/SRS5KbhSE`b;oJDlMb'kl9O9:b-Ac$?&
+%A/A3&N#5 at P.qsfk+$;AL7LCCnA7e(R.%CW!+ioXTd/7^W1BPK[5sWDB?t<P[-am'4+A(i0G$ae:P6R3_>r&LS[*TpR(=<Zs)BLFd
+%SZHI('GenTm#;hr$O;JbUrr9F"1B;cD0"Tq at f'R9qbW6u:+rl)L at R^H<(p,)%l_K.pd:T5]:;qas$2nm+u6Gs"UP;9(9<g%7Fmuq
+%`9=3tOOISW!8ct1&1%V:OJ06&mKrNmK'm?/ppq%l<0BT\__U at D)PAO[;+2N<*jV*E?M*oakWk-'indMq`^ggh7\4LR4W!O'M4sQ$
+%e<LED\nQ]?2A\"/ZIqC?T/$<R[iaH\596r_TX^jo$4[*EjQ=>633^8!MXVsRmDlP-&o at a="rP6u9Fh\eHm!M;W\6g/1/[UA^a_[*
+%*b`Y5.I=Bc,TJ'Y"`R63<o48b.[]oi:;YR:X'mDXOqL7lLa;7,ZW/uchT1nRL*L;V-XGa_!LWdZ\Q4qgMb$>JO+[D!%>Q\ur"9N_
+%H8Kj_+mF+&,VP4jbf!CBReHq8E&E0m?7KU?U`XJ"'o!Uugkh&pL84Fs/nm48TH$;=.nF,:mtP<48Xdo4SR-^dA,\RNYSYc.E\sI_
+%Tl\)2d##gmW)+7gSVItin*rr#Z=)V at 4]Doe`$V[Z=t>\o/WFN]-;G=>g^pqo;EKfPk'i0$1`h>(dhMhpGBIH1<=!]&4CZ:U.L7*4
+%'D'0paPC1^7ir$B__u_:!-Yg3dlOUXA%h)2&o#MKo7FCOYN,P9L?NuAb\B+:"g?m-'HW(pN-)'VI1SYQX$GptZA_+K/NG94#19N&
+%-3gB@!-h7["XYU!i]XBpPV5[ta%PYRQ_&jA=W_17,TYcW0cI+.QmHX9ah7cCLk4#*Qm8QjK+\J\=Lt.F2S,cV#"0*tGr[I[B=l:i
+%,o.+I,?o/5)+s,$&>s$VJQ;89X]?PF3Wn2B!TnoVER>#l=:X7,1KH^eE$Ru.ABCHp0(e-UPDf\/CPnf0C)7`J)!Hq?%`CXQE<=qG
+%E57JK%e\Un:F:aTFiq/E+okZEZcM>?FEAM:==g`u!W"$8K)Zd!"Tr8BX:NNn-Obl.Z7t+uf\uOpZ+0,*mb)eQI+]+\\$eIRmOt5s
+%q?ec5(in!GIF]i at k!4LCC6GU\lpu#N at bpWbjm<;Qku0R'=h/G:3-DZJ9R[UP5>_;#A\c[W4X6T"R>Yhgond(XmZB)_IGA37Lgim;
+%CBog.JCF[l?0VOFUXZ6c36qIf[O\2\8dIjm)&ri4MO#1l*56'VjKV#,=g/;"=:/=YZGAFhEICYl2CYj2R-,l&'Y&+L1_<rW`f.,-
+%F+MLF[#h<<j!b]Ib*^WdJBg,75U9;V+Bi>M=^fab_O*4*61Gf86=C%(X0P(85N8=K0Q=N]ZlMP6P+E8Ed6,oUcp3U8n,gT97,BnJ
+%4Z>Tb^4:6."bULB1Al&T-o<sj2Uqm1U+]iQL2OB0JG#'5KI(SC7 at 26s6/t(sO&:E/7NZp;Lm'D>2#=`r?nef'-?Zk!6r)]11U*6c
+%IAc1d)U=_i?^[LV5[8@='Y;ME<10(UY_@"863OQ[8d:f.)?^Si/"H7UE:=C.lEU$mYc\p%;@"0g8aS==ml%mJ?g#@,HNN!8e.9TB
+%,(V=Mql1)+DKE4(XlLW!lC='6m:m25P-tJ[LAF"WOpW4cL>BYY0+*?[JeirJ18eqUIT)?*jRoIL^hDRZUf`ll(el6V-IGekjAHr9
+%)@b(%ADBukCuqdqam?>RE/?&X7E.`g<A)(UhH;'J#WaFafP?HNL]fL0.YjsQ-qRB7,;:W6K!jN^%0S3uVXj_bBS"_?mNW9iY=+C^
+%N20].#Hu`QB9e*W*&MJCVD^HEP2^2PXi/N7[&@'c$;V\rH3p#*X=b;4:J0AbYn8:#-skCi:F3fuROZ4]@P[-qoW5Ca<+06ump<0>
+%6h,C*b?XZ/.pniLJKdP'Q4Id[&Yt%#gD]%K""kZO%mi3/UToH(X\LpsGO-(C(ln>=+sN^t<\po;AR4]nZkTYQoV0(@:;\mCmV330
+%1=24Ck%L,o(kJHsW_J_oEJe+b[<f^S)=>[;Gb"'q;(F_/RslW at 7.G29<_K6iFB0]>QpW-K?1eU$;C4H%o'b)9"l[?g'I(Y&MWE)`
+%%MH4mT62$@PJ&,^)d88</sAf"*1!I,D]%ej%SKa'6XXqSaMoXX*"Y,\a(R1t+Ejd5RW:2l-jV"heTLAX;LG@(HBMB.>oh)m0s`Ac
+%2)X7^bq$*nA3ah=+bIu(oBZS^3pU^=lS-3#KYLT%B7.Zr+-1_^MQB-&6pY0rM5?lS;+tJS_^1ak)F)>(R3lk3K3[.BgP?^MnQj$<
+%39:R)^"gO[@>p"Y!pchA[5*j8TVkE7#>2IG<u'eL9]R%_4t5,K0K'9n;)5"C&2-3IB/i><0iDTo5W3H9[@Kqr36E7LF+(&uP$i60
+%kY`hX"KHZ7NVTkbc.Po@%3$lo#TQsi"(Gde<(obNlQ?7Kd-H50H5b6,5Za/?#"&j$#'A^PMdH^VW9.F"Ohoh(=NpY3$Y0U8LuN7n
+%<.V+rD5d,fQHf\9+S%6BW5[$rm-DnnF2APp5R4&k#5OQh[c6i?Gu,!)mWr*^)s:^jku!hWo/u4GR>l:WflqUL2To.<7,<&<B-n+!
+%o5+/\6!Z1kP./tM^Yk$fFqe%`0sBM#adk]9LmcC"UJFP4D/q$a#;tO*BVo4E;+aZRl,[m31(SO\,)WKJ;>`gjbjc7$!qDW[,q:+q
+%NKL>dA%U?F+DFQGJOG&"Jg>K0#/s1n8P6c-KJph,FlF[ANk'o5^r at L\'Uo-oG3G#CRU?M>MhT6N*P^u.o\s3DN"S(h:`XTcX:iT]
+%Tr4DKZj&\J9df4<WV$WU#.G%aFp"g:@^$'A!s;JFa9Mlb!TG6krE^M:7R<,eb[gq2[drC#)S[$PnioAu;U/*$OdVT2j`+;[hTis2
+%9MWsX,:figfh)F]Q1[u1G at THpGO8Ece\,(4PZWiG2f9p6OWN<;-+FtEH`3DopPe?_b(q)G&^eKM at OtMY)\-`:.Lo:3[;\m(Hc;9T
+%;]t+iH.\Lk7qF_mkI0G.d-3*'_f7S"A/3_a1I<1T\W0t-K2LA^*mg]E(lbpY6.9<nU6d at G6=^QPJ]k!ohJi<lH,%tK)$3e0G%nVG
+%&$9;k!_Y/6A4=6c*%R)*.;<X"SK"!LZ_u/*^b at HQ[tLmD%"[iCA:c5<eNg[".1nSZEg)';nV2%VA>pOl(D!1D&ci;"8S:(V-&.k,
+%&B"Zi8T5jd&/i-_'EJ<4a`J1Z$W><L*_"FTVM7G]<mI at mZVGC7]u#pR\1)AOqF[G3dYXKP6>*)(65=Bp)P"GP*OQ,^4r at L$g9Z[R
+%68d.3^D:hQ(b`9?^kW$o\Wd7J1,G^K;BqX5;e%g!ff;d'>)OYlEXc8[[E,F%+li,+Z%NNEoN%'l;I_TQbES5a9 at 5OhAE=\Z_"=X@
+%]\6O?q=2!MgJk7 at V]%4>WZn*iK*YB*Q>8jGe.GQjW4'ubbB+C:&Npu[V+r$BNN7:(bt/*$NNkLl=BZSd;Narcfb./^\8aBd6fARj
+%[mJ6c</n_WbPcJB-6o8=(lW(B\T4BbCA;sU%20X0>-TMq32Ybh1;3(+V[OIj%cRjcbIqp-Y?f&>P:V#OWr\[LFSDdN at e2_1gKA>0
+%oMI0;BSTFp"ZKWRn6VgE^u1i>%Cu".TV9G/J[h#tH-,H)`^(FUE)Ts at 8?*3Af5Os69-%g4ZI3;2S9?J"oPLaR;B6=<YN+^<H at Zph
+%2%db7+3*u6P7#ABE!V%I<AioP305--A%]h=\Af9bQ?%PXMC,0Z%QfA?)"2dN=-s??'AZ*i*u^"/6Ng;E%Pe%PiL&9(M].D'4PdVi
+%QT$eK-mue1;,OGW2l=PrG/X5g#eA&F5,r#*F[G.m.mUHN#6g(uQSAnB!OO)HScQ)_A(MhmkSnjZ]Rk2;>sZ).J^J2afM_,?k\M-9
+%^'(4HT3ek_JEURD.l/ikcmTZ*J_,GGZ6SFgZLXY2AfqS$`#"%nQ*6MEWL=/eh9_*aRDEX:4sjc3FeE,RIO2(sP!>^m?=:P8q"=S>
+%Lss<l!Xpb2JM`TYM[e>dcJ*PO^oeM+Z at kX&,'6Tc,2Z^[X`=t6KJH&8>N0E8!Zm.d-QTRg!RRUmDBd%#BUm7F"pRK at HE'0Gc,Q8:
+%$Ubd68Y(nb,jMoafXjP<,,^GT$b:6s`dNrI"<Q5!#@99(XKb:3oea3NE=lGeQNVWooPj69J^=ec'ZgX/FDrX'7-pGN)f!*-4Qa(D
+%+pEL'%W:&9$f)/c4(l;NOfd_aJm"sJ%3kVB%cqu at ZcFMF1^0r>bZ?'1==bQbg0q7 at 36@cnU/Q/"#$j`nO`+NdF!-fI>.=eWCsr-H
+%ApUY;0"SZ&A$)gt=fp&46(_OLF<QWNa?)(sja#5O)i,J5gMHT9fZP-Ddcb7i<j]f at Kr0qa)`9]fgNVVu`'bD2Nolcb]6SO:9%"8Z
+%U:+nVlN0S<"BNG5^?SkLCa#SrN9OS,Y+E^"_7H,>'/p6H]sq$nN3;f=A!X1+WVsEt/hoPi$b%,[kHD82A;cuNPd!l(\p7 at t;gLlo
+%fqZTORRACfmOG)Cd]EC>eb:(t05j(`a;H;sjq&u^6Jj00E?g3Mn>7H",)k*()cSK:iuM%,3%6N+FPc`r_<Aih&)K;qK!je4*m-cl
+%<;#b>p-4@?eIf.n*[!RXr2rCMCt+_EFq&92*tK4DURkNO95hErW7sDtfiYqH;JKA>Pq1W,:?3**j+6bQSoZNL=e3LD_X7/*H20`<
+%d*Ues%$c9mNSEVREhI`IWo>GU;FCZhIl<R`TW'lc6L200Y,>3t=LIAD)A;*I)B#YV71!,_UR6k3kVXLqQ$+-(N#]@51VZ=]1bHo&
+%?Yd>Kf<L/r?K-ekrNSb at 1n8?ZMqQ]IRL052W9KDBfu`G=%?>EdM3;4l<WtI8QCTkLVRMft=ormbSH=$=Amr1TgA%P=YuOAH')Drr
+%9V^kb(h/R`!g4p]>)3<\?kn=/lNsEROZY:iTi+n0C;g0<*&*!V`>-a`(K@";$5NY$23"Krq#M1[@afp+cu#k5*FDJ?>='NHlK9Zb
+%W(e#<K\O^;!1JS;DbcYE at pbpA7'!/18iSs*/1>DT\G\_P`0aZRnL at 4=A,(URM:\lO^'Z1M$g9t,>,`7Jg\@=>&2ma<&5K%q-%)([
+%:7uYF<2U!%]co?:;.dIu)t3!"Rh30,&(6[o*#h:7<C+9t_L\H2!TBe(TmN=M at 6g1/)NCj'p_6k<M4k.3O5dtVZ6H`!'td&9iR^s+
+%&eWgW=;,0R=BS)R5s\o[EJ_'KgK:/:C(<ZH(EIjooQe^lYD3n(Ae*05dP*.s3nJ(/<!Jk3=A?$2_*Q?m*\@^MU'QX"JU>t7FG-TS
+%XaLLPW>_L2V*(A<6kl2bbX#U_$/gaO/D'"7M2d_WgSA;U[]tFD&^-r/MRo3U2EK`X(aV?!<\[CH=sYEf.qdH'Tfp:G=`maIOd$[+
+%,2gTRYZH!J]RNcE&P;?;)ur5NOAOdXm&<H[WkQ?G(OHFp=+Cl3;Hl^R:J]rbS9kSjB;1`hQQg=l(LInnZf'N$rP)tb29\i-U_U=+
+%2[o!L(+hHgCTehGe3WHqb:*-)jR$f)/#kL7W?0-YcuO2gk\H:'EI6O0C>$B84\LogP(-h=c#)YZW:6/b^>[Cb_sG\)faiSgql9J^
+%lNc=F++JcdoPequn`n5D]j at d8pV&uZ_o9gZe!>IGc_m]4jl0t)hqe1PbT?,!Fh(SM9Y:Dc^ZD*e44AYML"RP\s7p#6G*LbZn.^59
+%JcLo\J<T?<5O:6$:Zr$&F9e8GjrtL'gZTBEe,93c\SG at JaB'`;md8psq7[DQ&C?m?(f4#78dVM1K"kH%#q7!/p([MVA;9/RgH80!
+%LP`gLC%a?Kd==k(8XUfcf94`6p2n\oUG8F?Rt6ded#.f@)g>%N>NGFm65\4TP9u`pT,]"e"4;o23B>esW%h=K2Nfc<^67-4`?8%2
+%c-ghnJs3mO?L6bY+iG'l*Q&;;<s/BFcntHXd/rq&i-,AJ3i&4s5a[01ESZgIYM6t=0%#l.$ZWrsN;\M!n(>Z;"#/mZraSm`kp/,f
+%27r&XSOmCj6eGJ=-VG3W`"JcM3/1<BdP0fbjN at Uq9n4BPHRDciih/ml-qVL:JC>u=(9mK*Hk:K5+Mf#tC/)FQ/:N1Am03Si&4^,I
+%>+#sf_6*>QGR]#(>'locF0^3I"Y>YWL.BH,B*Q'3akD.q4!,)HC9UQnbPdf;!5i1eH613aC@/o)MLGe)Ru`F3&QO,8Llt,fo#SWl
+%i6C2+gF<4e$B\su9qBLZ0C+.BML(:S&1gZiG"tpjL]^?.Lf7BInQIjgau0BB,-kVq,$^YdfY`Wg`T$`s-4s#YUTSMR0?,+ at 0S<o?
+%K5ib0N]P&<$/tql37Sd3/-tgRj-@*;XdUIP&V3nh`Gub?BH2)u"E at bB[4n(@MdC at BMZc!^5Va#^7F*?cnA<PVc6J%L5a!Z7D\%^s
+%LPKNL'^SKUA?l9k%0\@E.NBWl.F0'8:iZ^C[%$".iELD57nm*<LrkhRJ9E9>&8&=JK`E#70lK*6I&JcZ,L(gtH4DJl6DYF-$8+"5
+%bWrYS5Z_Q(_^)H:+m9&:L^Ha;5iD84)T+sNVL2Is`9WB_(;je0;OChMYm18q9hIN_N4=C7;#oV5\-#$=m81Y)3cl1do,S&R6,E/G
+%]7u*+*c1KiO at 938cUJtY@=',]^[3I=ZSUSY#2BqIcSGYJ-+=GlLoZYj>iDUEqGNK&&D1/G7eO>(PJjO^po:m#)Vc^&#]Mo>d5pT,
+%X3(6M9!PBSRWn%JL*kGm;5Wj;n;]71maYmnY["A<(a>TRa?aQajmTCjWuKQTi&s)68Vpis<6H4iU+#+sNuBdE7=q9Y4K!&1QJI`>
+%7!L9&W14+g9&S"9N<d&_i!7(FC+<;;F,lMJo1@/cNU4JiTR&)0?:7G/n1<)[Tu/2!>!u_-n\J'l+ac"BN;hm at p_Q,no>_>rC#3[b
+%BFS+00Q:Q,$ca\H5bK]\(.5,P=?5_demdY7`,YDep"kS9 at .\l=^7LYR[2ehVJ4bac2510k;lYf"/"!.O)F&j,H4QHFetYP0)PAn=
+%7>U-HXiu](<r/12`q!F:Z0PTNWi$R(cr%M>*KU[r*\;`*ptB>YY`4n,V at ZEnpcZH,rd6Aa#!J_<$Q$"S^`oGbGJ51p&ahSW/7eZ8
+%psII%+hnWcnj^'DI)uZD=Id/@I`S!8<nMgPS$L+(:jA%S-+FtT`K=gtg\]OdHn+FZHReZTW8Efuc8/<gSZSS)i=PU6)75+#C"*Sn
+%f&/h)L\eD$a#toH-oR+cO at 7!-=h7EO+897omk[,c'Q3Vsl&aj(S&!-8B.Eba]rupus'W86k4inDI!.PX]p\gW:\9]l&/TI[mdBH@
+%Zh<VYo]>Gb_hSa4%kj8Fcdm/NH[#0&B_aab(VKf at cj*UX&/':\?OA=;(-`*HD[-UBH),?ODgU61D<P)D2UC)j0O*as^6;!dd((23
+%o04BiqsZ].n>h6QmQD7qOojWC/BOF`&0,B9 at .M,<)?%il]p6c!H=:lP?$ncG$I6VOOq2m?7IX24%G`a\#5)d9\4=gV%\2poPQuFQ
+%aMcJIC";3O+fnFl>1_p at mX]tm.&'%LR4@[Y+P:OZ039)$Bc%g'\K9nO&CAA#7E at dba<K3KLQEIU^@7^\Wg?&=!'<X"0Xu03aYTob
+%+K)WLN)fL$n/$%gXfVf&GoO0rZr!eE0H_sKD9Kpc+ at bb8`X&_nMVprNi_m!-0\0&]*_Kt<5`?EXCBM/_iQ8lW!=dO/4a.MmjKqs&
+%Y=1$5?+>20a;UQSA3mX^E+tU0[(uG at 5`@H:>F'FDN"<UP[oAC#`.A>)9Uh8t5$7VU3VY&hI)@(6*h,p6:9`9-hI8?!>4N?H,Yl&#
+%"FRj"QJsI/Ust$aG9Z1KLq_sg)H<EN02cCLm^;iWofVN2$NOH3!$RG^5WW^]+Oi*F&s>+J"d4^>X:Q.8M'3/E7L9gFaOPqn>QUg7
+%aU0/3SCNN+`1Iu"5_d3Ph;NoWnKH^7-TQ'$T*R^18a]l^h$Uk!e98,=a_6:?8Wk3g+D%"Pp&agc7.<q at 3^rmkOPUM:.R7rY[KKCg
+%n%9/nKWNVB,04'^$n3rRl5LMCPZT.$3$p5F.Z"I!1C0Z[0hls#-/kC!L_>"9mK<Rl1K>&##)m4+3;e:.2C,,<-m9FaF7uC>2kQJU
+%(B?Xn*[lbEbS8D%VBB0HTRu$_HJ&ud%Y;"hYQZ</\d&]MJKganP*nW0r^Lb at P:g"ILfR9hI"uCM]6rY_#ChibB?g&RHE`pN`t?lf
+%bElSXZSnt!@_O[>jr]=44d%Gi%!fXef1b7.LAiO]?t@&T1dsE\>qS]W&f>V-4VKjA%]0XB1f6obo)Q?I)Zdl!#J2rQKrPYt at a_H/
+%<@+S$;)k*rT:@NrUsL+.K'1N8k.n,C8qIAi4u+i!jH at OH6'ad^q=IMrIdh4*$_7]%fW?RXU<TH6L_FH%XtYs@/4jtZ)R$Lo(u0s.
+%\EZ3u$Ha2Wpb,YSaNET!Ua.fp&62-hAu2ps+?LF+(L,%/+aAS#XB%21aFSl*XOoED,a0X&693D<!&*XQph*D-lDF4W8jL=pY^mVH
+%2A)_pdCMM^>7 at e\iXgaLN37mTMuq=ZQ<>C=4B!^hF=#$>j84SJ+j[.9PN)O08c4j<7jJSU/NF!/$W'JEb+(QXKC>Ah4:J%s]h36D
+%4TdH5,BN(eM]Kl=N^PMC$e$5#A.W7F*Pf8Me5Cl7K%Sum*MD=-DWsD?;78Qpi`V5_&l]3pBn3ll?jj"**C7oYfTq4GQI!fGNJT'_
+%esOHXJh!:HQq]m/X/pV9gsUhRe)`Pj)oji.)oB*P&m4Nr<9m8E`nLr:%$`dg]E.5a8.CV[Df,[S.4cagbO&dnTaD4D!LDbtLu-*W
+%3#Dtj$,/UW%Y_`,"FEm0Q?pdsWhLGY/JQdf8ZWI2eO^SRNoPjZ(D^:X;We&9G*'m<Kh`'K?JmI^B at _+TM'tp']iN*^'tS>qit?"[
+%!"uGuGB'?!d%[%R<L+ZDL$@stS9A\'$5u<PeHQ'K7a8S2L4NQ%VHeH5MNoB"L7A@\S8>T5r/*;q4R<B;NemY,YCg*W^IVj+hWP]@
+%""Ne#UY?t;@mb##&B:o[)GJ<:f0(`=.#fN%#!-@[^aH'U"*F7]!]6Et/Ig5V:1 at dBcK)mZr6@[#Zd#qB9R$,:U:ZTkgHH!#^P&Y,
+%O/hk19o2n-,)jn-k8bRNM,6E`RI[F_aR+uY[s%CO at aQNhG9dR."_U3Fr[*WF+uq*bgE[e!P9UZZGeD7=Y_/n,d?KJ%F<=k;Et1f&
+%8<H=mOT?"Q>&KG,PCchR^qtFa*VCRk]11-K(^D]>/\MFPHF+2O.hECshGY#=A!5#/'k[n>$juXg`URc[gWLAXb!?<d+\C-i3RS%k
+%$NWW7I(FZ<'CRtWn**FNDCMgL(hP<Znb!T!KK'Z/0qp!8Tp`T(P\08;]c1l0N/pR/#o"LN&M5<H*US>i?q=NNlQ5l^P9B$Z$m+$$
+%5R(O\_E3:GZ0Y])LYbor/pi,TB&J[d=dt1s+qoakfAp[J.B)):SHsEH3[.Zg3egNT]-R&5GUb&&ku#iS_4*nQ63mc&>!'dXaD;67
+%Qg<?&$WO]Fk79ffbuBR5A*mWpB66H)BC?Qr40n\g+"\378W8^%?dV.5#p^9g4321%KJ%D[+Q1N9A9Vk?#0hq+p`LX^9,-E0\I0%p
+%!(#=\RnG&S)SU+#W$8$]PVpAdZ^qC\=H9BbBNrN3N_TW=h%83aj/[cSE,;kK`(KPXYgSZ5`[Q'DKFW1L'*AJ3>c$.bUrHBXCY,np
+%8.#tp33*X*FX^@IftDRQE1m=P#_e2N%Bl3:K64rA1k,ld%FR%U+iEDPE,8GZ&nMFo?A$loI&\kYHd_;F.<YEeR$F at LjbCa0*R%Pk
+%6U^Lu#%Q[S.tHAF+[=(`"V6OQbF.K#*"Q$,m[/P.H^I+-=I^8;eI8b&JmE+>GZPGO@@8b%%re`SX=LbB1T7;YPqQ#d*5WhK]4)d"
+%(]tRJ;]N,\+>BJKL8`'5b4FZ%dlb+QJ$QDE_j[0Lr8j#)-^is9J,hG]K+2(G$W4gk2Q#038<3h:/"e^rmt67AUd3Eq?m;Hd/u<[-
+%THT=$-PV7:f6]DEj%^:'`uNHDc@$6TA(- at m57kaddDSC,&B(7t&4IRrr^9%l11DJ-lYRgb,cc#5YJ/UZaeW?qVB[K`3nQJH#YrBC
+%I[-n<H_<!DS9PYmO!n^OZG=$gJ!%_SmRrcK2&6;$(upluS+:$))oO:_84#@GS9\S$rGJPY]1oB6\&;\FA&HLIY1Bmg\V_>5c\tnn
+%#`pDZG?gopnM#4$bP#tm't(!Jm0#G#lJ#^riW6#pZVY@@i65#[e-gOV_ZW72/m*NE!P0XsN8j=6Vs0(K[?3R]qI\NkHe5dp=V]lr
+%+`;CB8AKsX0UF$n)NHsTP,JjPHZ0J``oq6V0hN,[9VG)FBr=Mg3^TKg-\PA5\C&a8Jm0H'e3rIeW+?I=f!%dW^h(JDZlGmMHPPb2
+%"DWjqOV\cgiqcA9 at jP)9<4+:[.SN?bga-VE.g^RrC4<mAGd9:lat*MWqeoTTmegL/S*+_8(Teeu>b8UQbT<j!KeTMXd=41cfU?6%
+%$H7e\IlLUN'9J_,^4FgI\NpIE&sn'#g0#E/*jk\[K[#\'?\i9mp]=81-XWS>$en"454H]0\lHXN at 1*rB*+r at L+@PXMG.;9l%Cr\`
+%cNC>C+ik_Oa=nMbL1kif*B<2sW821O4!aJe,O!*96^]Db<7I`0.)[qId:7M]bX"R87F at Oa65iise?l>pGud?$J4:Io*"=@_?J&`T
+%'*nG5#DBr7d&pD$X$IJliu*qmZk:.Z]AR,c!pn&dNLnQ*I(iAA1_'Rh&Eq]Lg`Rud-VqFA"iM>]B`eoG`K!V=l9(eZV.iVIT%('J
+%Lti0)8"j.HI4oC[W1!R\<?HmmJ^^G$XY_XT.pPT.cq\,iOAWfH+*\t3ASVE&,4S&fk]BBjehUqS)1mZ8OmJoF+c$<"B')AbA.fR!
+%6ol:@`jcBapp+k at LsuNua$R4l*aZ@""hh?d6&97pdF*p+[Z%9H\iC!VO17:BX>rt4_0P+0L%GqE7^&hj-WGi^-G at l$4tKb_DI\5M
+%`^2UnBs."Y6.P#L7\qgF-UXpN[M=r%TJJ$=X7b6TgTK%4.=DaOpH^lG2_IIufT,(pkE<4T:sj5Llk<nH=h'0*\e%PN%jiD)$+32a
+%""CU6+AW3``2`$`AO),aFG)#8_r:N,+mP<'!\DKRiNQ`A]?S+^Rh*L%<=2YNeflW)L)dbkl^>ht07Br at QN:*&8#+t<1H`/_SH0(!
+%j0EXH)!?-(qDKOhH)8RpjPqZPMhd8CV:&MkL3R at VreY1F,4fHCIC16LaV[X*'qinU34q8C4>ATLc*+%XE$=MZF+-F2\<f9J6:;>e
+%3Qa8cb?e!J"Y^XSIl^"mN045MgD*W9&A'D(E([7':_"Fb,[1])Uc^WlT?,nNT(ba>/%YDN&V9f=T?^3(A8,.YJ[fobl$*<0J$\n"
+%T?ccWachq3r9qZZrd/XpcF8uB7qXIjHoLl]r,hpYZ'mg^*A(<9htG52rV"Y:jQ-*tC4?0IplLt/5<Cs;5O2qEle/`poC_JLNi%#5
+%\`\2+!GgVMa04YR],mWB:7BbXM:_A5mbO:D7HJnk]Ojsc/l.OO%KIT-7KtA;T,lp3 at 4U=`D',?S/nRoK/pMb)eQa#A\!gZ/jQ?'/
+%7;56(`f:"@IX6)G97HCHQKO1Z_.*BW[,SXRde6ILX7`OHZh8^RMrV.e(\@=QnsFYBk54O\I=-:Fcu.phmdVam;9`VMS,A2pg!>ka
+%LmPPuoP2*$4=^duc10Q31/1aVi`3HL?KDA-YBFu6G.9Rp3LN$5S6#$5f0nr;rLT]b]TLeCYtjt5FhIK\EM)@YD69Gm?GM$ifD4aO
+%<o+eep$Kl\EcphaEUVu`,/7c_^](lU[,:j?lm$!HJXrNtGTbYlIBeZ_r:,<+L4:s!P:IjUJbqjP;MOq]`!u#$T[j?(ULBYJ,CKOJ
+%Q>^</X$(UU6;DX\h!!ZV4$'E:e9APoU./Z;s*2jd=8.tf;q=ANRo6Ct!4$OM,N/Q2Ai(nhM%i!D5>_)A^^92\Qau;$c;t`'os=XD
+%qHgV8NQJ[(;16bPLIqs"G/sXBJ*qITO*+D'o?)D][RBQ>T,'Z7k;]d`k840/?`)240M%Q!+[sI at MQ^MFAT+_pjc*D[Cm*.n2BQqi
+%5Q*j"8WZ</B6E+Z/W)J at 9*4KmY50pFh:q^c]CS^5j"ORqBR&GkPp^X&-N?JsQMa\\O6=338+Z&uA6Y,U38<e^0-)6.k;'3lfG-CS
+%2nRN:'=r4`]9RPLq"WYnkIu&8rkr)L$]TQ!=_-lA$Vf#&2CHUh9qNQZOS8E$?aC#@,pC.G8 at is,q7'es2J!,iTMf&b?Yj*J*3,W0
+%2&Wk!g$ja9"(_Kg=1)!ha+6k>BW57eCL>JiT4@[OZ&n?sRj5G+:LI9(CUJ5j%TO<N]ae?D0Q]7%O1nr.S8Gg<iGeEE8;#+cAAp=`
+%s1Q65mR*mrfB^WIQ/8-uWI>U,r85`$pYB^skkX]>IrI%E1J?5K%oT!B]cQUmI&lD?a4J2_iQlWW^Kf:QmJ59Q]eq=S+c$>D/ak:r
+%&UsI*_<CLj#Q4T`NVh=T,m4)uT.SC?DmC"cpXT4,S=]\,MLPa*j.1tG^\fioS__O/D>oj;OEgfAiVN?B6CZb[FLF;eAc)2r">nB\
+%OsY6t3hn#i^.Us?\,";@@p+:Fr;6 at Up+C91357F:XIc+Cal<$b<BefE>:Rndn1XLua6.a31tVQT$^lZ0qW.V<a6OD-R+?AKmnHRo
+%q*Vl;EVp34 at .S\"l"CMa.3Qn'5KlHU)_K[FORg"$nsTGon#QBGXIW.1s4M^@p at lPo0g#<Val=*p*d at -<rJ$YZ`XiU^.LD'?2 at t,#
+%7gq;cSId'6!0g0P!k=(("_dYJ&ThIOe*M:b4M!W)gU@^,SVJ/sqYi9RI"-!k^Gugcc;'EQO4W-`@/%Pm4)^7MNVS/Rb%spC$s7]\
+%R#aYRf\'4lbcV3mBXoi`qDt,f,I6n'MoG-l02<T2*W=]+6f68f%36N>@t3*-<MLu_G'5r3oDAPj*+$M*l'KJ#i`nNqUZ-"=0#*f]
+%]NSQf3X=0Tr*";5A8V914'APaD-k%;qCr4;gP#CX,)bRjpRk;tgNiN&AMi*o)p6G8AT`C*5'cbalm#T3lMS]mb?sBba-oc#ci.GR
+%EkA3d%<cDG<qMgqo_*BHE?WI6OlnAMc;$"D$iQ&76M"c;@boI5Mj"C"gaW'okiLg`7VtKDVZ_KI)\VF%8S3X(!:CM$Im2<li`9mD
+%O6.8Efs=cOUU-RWSW3IjD*8t[o%u\qLZ%)>-r$k<4o.YtCm[/NJ*&Y1<@@E=9N?EdrA,g4HFs-![91YeaVr_J"NtV!](L!Nn%:65
+%mFuQn$]47^F_Jk#!cb:VnMT^Ta](Yie^AK]L8Uf4J4!BMVg/';QC_8(8s!&e7i,t/X7O6C"ULsi2p<7<W$$,fr5NW&B&*&Q*-WEZ
+%UTS7h\EcD-r=MgFELgF^RIaQeDLR(]FLF70l1jbkWVK,VR\/"7o"O;+_\]O"GQ.I(GeNms%./',g3\J)5_\I?QgiYFLY$^jI.1/M
+%YOO.AZJM5/HDch1gt/cJq$N@)K0PpN?S:d;N0i`h1],L5)?+Dprb:9+5GD%XWCCf'$6b2ph3>dBk:WU8jge#5$k_uXH9\)<6D7[M
+%p`4(&+^$5\d7n;.j(HA[Iu@?0p&1*$$9niFlJ).!H at E-sU/-3bVloZ>Q#6HX.m.SnJF;N6IWW4^?-h;3#ST-,:t396%gXKa-Mg+)
+%[7rUH(q0-rg3%OI&c#c7YhG8d&eRghh_9nscL(S!c'?%EUON'q_qEKiNA&)G/XF'8>d_o:J6nd48C_?r3587F`$Z3An`al8P`GNd
+%ro.I.G_5MX$"'o+'Cb)9K;86frnELsGYS&)dHY3#>4lS%k$ednaM0;"e&-+%DcKf4h2Y7qn&mMu($%<%T9#a/8+ZEORD_8FIs=Wt
+%bjI]?p?;DB;uC6IG]n`K^]%U9J,`%5\$Q,5r at a4ls)3Alrr.EGJ,^%<)7b.9p`CTL4ro^an_mr+3dZ1#IX[G-i5JL@'2Z/aNu at HC
+%YFC+#rScUWIk!8D0C\^c/UtP4:,DIOmI=!7ldbOYqY2bJdu,#md<=X+rRSL;4F<.7<i:l+`FSU[q=W#MigS&6):MDk;"lSdq>@G[
+%FP<:h0]#[()f?bnpjmbd+#OfHct\$c8U19Ia"RGhC&[dDB6EX`lts(Q^J<S*]^P=mr2._).<mK&*+,5.bhpcShqR[I_cF%jJ*kNm
+%$X]4e'3[<mlL7%/ci1((!N8Y at 9:,- at JFK[?2_J07)4Wk#4?>g"nFO7qmLP!;2J@);>a`q%P53GF)_:?C.W9,Q^f7(Q7KKC/1_8c9
+%pHFKVs7FdZ at LZK!Y9pDNjd4_Wh/M"-oR#<:Z_&l$mF[aQa32(G\p2'fn'gt*H]7#8m!JW$9",<:Sq%&N7j#OE''oH5m)!QeSNT!$
+%+!5oS]C<4Th``&jgsqhADdI[Gq+-X/T9eX9`J=#@D7-%<j?Y=4-_K3aqo+cicZaI1l0S'_*SX\4%fYbpYs1XTh;`*Do?Mbpp\)\K
+%nD3AO2HG^M>NK#FmTdP7^P>l6\mOW#8C.=^^]%3F#d:i>f`,;KjmW4f^H2A3X5*,%&+CtAf=/N?p[Y$T?2,$;nr<qqDTB)=o@<4)
+%mm#)hpZ3XpEqB.0po>0#Zen^@l)16eggJIb]0#_h`LPn[5Qb7K!YuP;HbDkC`[>9Cpo)cg7.jOg'WSE9^]KZmaj)]n!,\;A$^7<a
+%rWY,LDAT1-%Ph;d+Q#]Br>[`Nb6nSnGd=i>aG,34DYqbp[<:)HCLb!Pjne'5'LiBkI]_j^K?;]^jF)>tSIQ).%Lrn'mD*r_KT)H3
+%N)/*9ou/M09tTJm_q":8(Y8`DoI5%b-87g3YCqn"JcIc;MqL4rrUZWto=p>V12aFH:fI;K5/(*2X']&^jQjd"/\:ulDgm$-Whg]-
+%DZ'H"hVQ],0%\\s-$R&4IT2&[Wcj\12CoR4E?M/CXmM>1@!qFJe;H[Q/56USqnO\lTBr]AG&4O8?`XcFh,]'=J*OK;%Zq]3ZXM"r
+%=9:fEh[R`o`Tfot9WuA6EfE at P?Nf_RJ:/$60*:iE"mhH$iP&QJY=gZ5qe;$dkl5u,o$p>2Zi5'2[+c31pF-5WI,`glT8]7e,E?:;
+%QXDu8,oA%JT'qjip9T*0m0DPCLmh_JADp%7*IATlbr;]0F+q<`>k%$FgR#P2Y][5Jd95:$S^lqYIrTLTe2DSlEk,YK<A@\%=+>.*
+%]4^<u_tHVcT-(hoH$q3Om,s<,=^S>;:`b#;Y&EWLI0KN*SL8>VoB#Mi`Q`uY\1)BU2s/'LrS:Tk#<B;&G0g#pDiKB7aME3&-//14
+%G3&\Io_IUjqS2=?pt>3.r1n/K("ThU.&52cK.hTL3BkQsbe!$c(?t_pl-Y,]U at 7KWrgq>0(@1XF3q_RQB'8U[kL85O at _J5JXSg[U
+%r7)=m^a*aoilU0/GR4JZriHZP^;m(<pp^-lYhQ_ZXJ<AdVX&PcWo62;giogp)gTY*Wg1Os6P/jW-MWolp_4dBZhiA9US$)MVI$C/
+%+[E\RhloX5E98Ng:UL):W&aU/_h&:,KnH8t)4:0\&OYZc$,E.qM;/$kpae)H7`,`74u;a%1gSdZ_"EfsEL0KJHn%"Efm%1S\[";H
+%>F_46Jgdgq`M.)8UhT6ueZ4["j9>=7a3O3R?.H"L+dY6/lh%R86\s+E;F5Y1q0)<AjtBb:K,R. at Y9%H,_>CK&?/i0T%VE+Tc'e[Z
+%!g[2kLLCfI^GOFj>!KGA#F5M-XF/&04;2GjV9V.]rH8[EPS;JVEVM(eeS<M7 at fb<bH3''i>oXRk6b2:cmX`=.C<*>gWZRt&\A4eW
+%Tssqrp"fUeIed//6p<Zb&1DK-qgZ%X>ekQp=Qi^2QM0,4`!$?jfM6UCWcaDB`=@)&r`\'AC*"3s/ENC=&L-'cWg93[mcb<eW/XrJ
+%H8+:L6VH)u+ugr/jo&TbUc:*PEd,1[oGApElYD#jYcb?$P-eMrNdj5VrVO^6/:!Bc,Ft&09"p.-55(&qY\pl`m?uM\cIONAGVq^6
+%\LE'A&,#]KmmF[F2#N?rAH0N5q>A#(AZ8?G4cIilF4c@>]fd?aUTndkd(SqX^R8Nbg!d$P6.EkX(f*=op%!N_p,<mk>i$^GX_k[]
+%Um,6X(.QfP*m<[0lM+iYp0gKRGkP2^X,S2f<pt/WW`nH#%t;X0mb-'j0tlW=blc#g%'9L9ErKqVgeE-+n0joWVm?Wo[E at jj=L:j8
+%PP9\1DqY;G-P)+ZWTrL?<Js&^RUW$On!.q at nkmmO3qmCEjLn8QNP,W`YJ&2.n%Ht&KK9*Lg(M-O"O`<)03)Q#?<^fPY>'T''3*)e
+%\t6oJW>mluenKkfFTm,tj*eBt]0-,moVXK&#=?Am%.?CsML%X>S^A[MH>rdcLhINN$d5ZF3ST%eYM'.Go_+F.$f^F2;]=*Z^"d#e
+%Q$IuGR<Nq52P,4\roFA>Is-W2S7:=R9%f8t..>h9-iE(SF*;f=>b%t3RBQ50q"9^BK`IH<phOrmrqaYf`iS9a]f%[7j_OCEZh`m"
+%G'J1N[`[@BC-e3cGA-i9[$PuPquTktC`?Z!BmX&cp#3#IlTVthERb<+[2h2F<J,\r4hWhIY84$kDt4j.O(K;hq=Te`21_(VoCKVT
+%(WX_B'>-#?)dghHd-C/_qYW,;8pP'kMV9`91 at J*(-8,n_fKAfH7@&qB4ApAAOK6rj;h2"HpWNBSnbUMs at .AP_;C6q*rV$QS5FL[J
+%EKM,Gr-nHNEV/2MjP.#iou/!gDg"$fG5:-,Z,WXO(O1;%`auC/RQlN*(\RnC3pt.Se_*a=-]>Gjc!&]WX&7@'5q`_o<cBnnB(Rh%
+%mf2Nfh>Y,kaj[TLg$?WB*59#;nS+;Kjn[R5)EEKJLd>UBg%[27cD5*2p#UJ4`uiO_/66<HWHG(%/%f#Fl/!#'HLLuYoA"Y(n'2D<
+%EA2Z6gAJHR)[.d>n9o0Z`iH_JMa)e_p0d?ibIrDlJRgrH]oQai?J";nfdq;!hs?)+[bUb[lVg/3;3H"<^?J;o&jJ?AWZQVrpXd+-
+%]e*hRAW`X6Uj$HpTo`$6<-+UTd3c%jqJ#EUpP. at l]<`UYb#@qn]mmS?\&klsDfY42Rk-G-hpHa/MpC_e3!=IB')N/ph7iQ]LPMr7
+%Sfo<*),%pGEsEN\]P6M$r1FMjoc at 7j'E^5JI#n!]?iCItn]c5m-^^eT8'IFT+2u13TAO*jU$KP]J=ZE0EYk:kU at .VYg%\\lTgVJh
+%Y'G!!3koU([7WE3DM?mG^1m`PG4^m>Dm1k/!PGls_#2QcM=pg("om[G:+AikGi=rM<d5ksPKQ-YHuXeQO4`jo-KHO`^Md9'@K\da
+%OD-oY&dR=irGLis/5OWA$n23/5LF->b0 at ePF>WVBmX#J?r3D^Om:>2c+7s!o+mk';fpV.1mBFj-JqHk875.<%/E`_M&#YdV$oX:H
+%.r02j]%@`iQLl?gVrUdMAObOPbWY#/@QmtgpG`m2:L]Z.oB3BhG0;I14<Y%Fb<A5'8`,6F$h%$N.%s+pm<f0-b.>TA%qbEpnj<M-
+%)Ba)bn+bD\R#[!,RH.cY1"[>>jj:uj1S;>:G68F9?h?YAa1Zj16'7Y\19[()dVYI7Hpd?S]\p6 at n9BhW3u2=8fd9d6Jp?<d3H(Ej
+%S]K&\EZu4>_YCa-Kf\Eo>n7".'b>),-aIRcr"K\_e3DuZ4m\-$K>#l)Q0%-sf-ebP0/9>.0?if'06aM;`4AYqd0/uO$?JC6qFF4`
+%&S=#$d`.ef29(6;UljbnR-2D6BPI).hfZ%PbBpBfQ?-D\MZ22ME\kbZ*NLp"DNd^M6+gp;SH!+;o5K$r<%:e<nu+f&%GcamqdJB5
+%9%F8h-5u'"[-XN<Q9 at c=0>cMYkk]tClJQLpk&ucO4'#j#h'SJ%Jp9)*)(s at ZpEC>>Y^'2UGj%*$E!L$;NNFnt`s:r'$]f6U&'jX!
+%/u2O8j[IcKbdiAG&)D(=k&ucO4'#j#h'SJ%Jp>atfa^3hQj$`qjCqN'I:HYaf'^F/RlRa>9F$P.kGS2RmYRWi:VdJ:5oOXTk5%J+
+%^EGo at cRfspAr;p:em`+=VA<i=]5_lXo;U`ce7Dob3UV29pA;OC3`<U$"4=$+X'a]cpH*;9qt<B$T!9eI^\1+J-HXo,+l%Bd\XhdB
+%Y14AmgZ/uA&9"F"-VOH.AOD-GVG$;Q)kp#u#Z]WBH(I^Ckk]tClHAQ2k%<FmYK#X4ek7hc]P55VRrI!J#8;J8b[%q8$ldr<#6oB,
+%eB.'"Bg:7p/\D1tI8XpmIF%T.Epehr[pN?WkBOOQ29+r?\O7+L)^ih%(jdsiF at en=<*Kn$`0g0$Ja*p\44dg:I/^r$f.(ILYobGm
+%Y$Z6uP)OgHl*a6*42oA`M_SPGaT\+UhCLs)F+s?"mUA8?A at +;jOKVL+l)ot(>T`<](Q-h*AhQCR<bd%4h at EaF%Qo0/0=j>M%\+U0
+%=idnmnT)Zb9W["0&krpURP:K[ft4KGa!%k-m(3._U.u'L*kf`%OHVc39OD[OfOeA8`F\1alU7,p(L<Xe_eZrrokqNfNgDh. at q+7@
+%QY:tqj+J:4I,;^Fm"5R"qWPS7Wd1UG-sr(:P=_V^9QuR5gIqqcHTCFN?Z^_5S6t$U\+95#Zcqr[a(e;LgZ/uA&9"?u]-.Q$/8>@r
+%ZPuf6SR.)/mWph-+k3oK5<&63ad at 7KJ='uq2o;XL\i*uOf7juW^#-#aj5l<OQrpi>-(5t51h"Cs31$JYg8J%4N,!FUK;,F,a$;,@
+%,",Groac\]TOm<?O?/^pem1^9fmM-=a`?g,B,gP]QK<:MQeN<d at auf,BS&2ZjnAiTBY*%om:K>Xf(Jp\*j<fE7p1iAE1`a7.OC&#
+%nT?MI91<e8P38G^!7CDiHXApcJj3\8alCbg]ba66f0 at P7/*;V:htu^<O3`lRMi2r>YNI:RLGPF*#2%7<[h%BtpB!cJ55trHI6eud
+%nE9U#86Jm:&(0=]&!rNO'E at I?mnV`0^Oh-8ol"L)k<GN./nXnF"7F5@#PcociP5DupQ`dhp_S9arU>o')/%8;PrCdLqd3bpB@">V
+%H$Fds:\-,J&Y8aNo2eK[7rB79IpZ+.k9iehN0WQj6dk3`/ru\AaF#lBDK3*iXB0=PGA#8%-[5.,s'FfZI`O`:cSJn0*%W#@kT7r-
+%#ZUH)0:1qfA\7QY at _Fa+T)gY(Ha(7$gjVM(JCpF$Y^^h>\N4!.V=/M*I-b>cpHN"9;ee&o+R5eUPa!Y_+G at Dt`[6'qjRKjbl^Bg)
+%O;k![eY"sVI/K9 at 3Wrnu<s&FNFZ)OEq8JGmWS%E"l1^0]Y2fmW at mO8h9f>:.!,#.V*<]d#3FD=`?i]&/pK;#@N0eLoFg3<I at WMDp
+%Lt?ggF9\K$i/HoAUV*rn[s8AMD9.X)f/*sqc+5IfI4u4A&BN;''\+fG+`Ti)OaqM;;jO6X!/&Z8\fl,5nk'nM#tA8YSRN[(74;NG
+%;2'WBVgOW"O!J)\no6a!MNm?S>RaT[HGF(m at c*<m5NYTW?=tMgN>mTQZfU`_R/'Xtc1cV4\*^L7de0h>O at 89Q-A_15+nlau!+-fN
+%R7>eTm+pTS]SQC[jh'^`jUaJCqpsq?98V'gq_8u2[d-Z/5NMguN\fq*(u47,Hb=mPm41=8M94kO,2T,R:mZD)/qpHb[6^O.[Y_EV
+%I)rqPco!NsS^4p!cP'SSG<j=p+$WKD`qVtEp7[".3(;G(L!"$#)+<5<B6h$t4XO3IC6>BL2cH6IW/Z[:!]8%r)kp#5(#Mlr/5[AH
+%(L<puIg5F$j&o^&I6ApDZWa.Rif+Uagk`"URj*/)hPQ7=MVBPc=%. at uc(KsK(r,5pV>2p'\/EW`ElWK"XPD;L9bD<.1n-#sQiiJ+
+%RN,n3!7AAAhc at Or6u`PSk[,*pok`"@ZKBklr=j-,VXHSj#/7D*)&]rZUR,5<.)V#l%Wo\\m$PGnU:`M.bH7g"Z"d2F1oB(W.CT$^
+%Q1&C"-cu6>)KC=A3Zmsdnk!=/Ij/5OU<>[HU=,6=gUJ>1,V+es8A9]o(P$#L2hCCYj4 at P,*.u]\45K9/mia>EMm9tG?Eir>0=NOQ
+%e=oYiciil.$$*bcVCjAf@)p-Sbp<rb)#loZq-NClOi7HX6YMmcQ4>N[iTI?i>&[;LnHtrlK0:Z"UDJ?_.&31:[(8)]Nr&/,Ck['A
+%I<V`ED8ropgq"P*.lY"0;oG.Oc3$a?*e9$5KL#!Xa+r#O%^?HW9*"N"^hF6\WsH\)`-aKb?o-#f-W.EREhW=r at ZZu)MloF;',2c#
+%9c%`M30.Zs\RRcL<c2r?-AXTQS?oYBLOB(d2QCbghW=@-nmjQpXro7?@YSXu8:JRmJp7CAL%STPp.8Fs at VYsR[>B21BjYrkip6^-
+%Xi"64rG]rVH#o.84-jBhE0G&o7D)dOgdBZ)CJp at I8=OZl:%#Z*rM)u*c&-X-S,09ZLP;$K_RBMJY*P^:I*Do=Em/#3q at -TQRWKXh
+%B9A]HRcNRjeX0IJW?iJ3DOMiGcpG<781o]DUYLF=GeQ#U5Z*CA^/X5)JgNN/VKe[o+IZtCPhYq;e[A`NIj3#(?Aoc3jc\ConoDck
+%9J"u[)GLc]Q8!Y at 117Q4?pg]"plKF(aiORJ2;Nei_3c at _:WE-rQJtj.7?>IS!t\0KGY0pPF*5K]jPq at QCpK@5loKX.pZ9dR0=S+)
+%eB1K<dM24 at 8[D[q+LB#ZK9mN"hU]>lBW9Wf,eSmf7n1O[2\$A&aF:A<N<>!r[2?[Bl>:T_!Nb1*H_l"/P*\7r at q+CDf4]b\Z_X!@
+%ESfiiT(eeCk at jdD%*VjiC:`s)K,GTn*&Pl][4.k.#`0,WIPUSfX&CisD\hXY]\%>^/N5P*cLQ#AH;#mFj;L`)Dj2r6X2,`Na]%PU
+%(d&ct->)f3f[cY?Xs!d"J,`uI%/]u'l"qas:43B!0=[2H0nt^$Dt?+n[kk)ZcUL*1o8CjF%l,%tnoF&:9Wd(1&krpUPUs/]g'sY=
+%0X)?4^!7/k4"tiJH9*43NO8o^S3k+GZ8tIH;`A64P(8S;QX#dq=,%.R at RF3N"m.]No#;@s[k>YLRS>?ZM"G.p,=/'i;SG?6\#!GJ
+%oRC1VVS=CqN07Z,0i_dGSOlleY!U_1]mWE9b*RdYX'E8\aocAlc[th#JVfJ)Zp"!hPGRE>0/$,X4^73tHWph/_:K%oX"#\aI/)Xh
+%n8e?sCgC-AMHOGgMKjQa4?nJhE_s%1+qN^=$?s$hHaAK?lh/qo>Me]Bm4Aha5HUb)>JGgN;lk&m<.r[S+&leoZ(;XFSGW0)r8lr6
+%C4:O3-*(?Yb[3#8o@$VTm,C/-$4=%DjH"15]6JJl1Jm!QI/qIJrV6?5aX*5c5?n)Rh_;[W?EBI5VjYNjj^LAWr6OA!RU3Xq+6 at 4]
+%c-ib,O.]t:pWNKGgp5\bnsmi,mWe2EJ,JiK<IQG4ceH9LrT="d9,kTjgDCE/.X![/JU2-M4.EFgrr(kqpV-M(!?bOh;u~>
+%AI9_PrivateDataEnd
diff --git a/doc/divergent.gif b/doc/divergent.gif
new file mode 100644
index 0000000..5963018
Binary files /dev/null and b/doc/divergent.gif differ
diff --git a/doc/equiangular.ai b/doc/equiangular.ai
new file mode 100644
index 0000000..9b838e9
--- /dev/null
+++ b/doc/equiangular.ai
@@ -0,0 +1,395 @@
+%PDF-1.4
%����
+1 0 obj
<< 
/Type /Catalog 
/Pages 2 0 R 
>> 
endobj
2 0 obj
<< 
/Type /Pages 
/Kids [ 3 0 R ] 
/Count 1 
>> 
endobj
3 0 obj
<< 
/Type /Page 
/MediaBox [ 206.5 295.5 406.5 495.5 ] 
/Parent 2 0 R 
/Rotate 0 
/PieceInfo << /Illustrator 6 0 R >> 
/LastModified (D:20010301000158-06'00')
/ArtBox [ -7.38281 48.38428 705.47852 632.34082 ] 
/Group 107 0 R 
/Thumb 110 0 R 
/Contents 112 0 R 
/Resources << /ExtGState << /R1 4 0 R /R3 30 0 R >> /XObject << /Fm4 27 0 R /Fm8 43 0 R /Fm11 59 0 R /Fm15 75 0 R /Fm18 87 0 R /Fm22 103 0 R >> 
/Font << /F1 47 0 R /F2 49 0 R >> /ProcSet [ /PDF /Text ] >> 
>> 
endobj
4 0 obj
<< 
/SA false 
/OP false 
/op false 
/AIS false 
/ca 1 
/CA 1 
/BM /Normal 
/HT /Default 
>> 
endobj
5 0 obj
<< 
/CreationDate (D:20010301000158-06'00')
/Creator (Adobe Illustrator 9.0)
/Producer (Adobe PDF library 4.800)
/Title (equiangular.ai)
>> 
endobj
6 0 obj
<< 
/Private 7 0 R 
/LastModified (D:20010301000158-06'00')
>> 
endobj
7 0 obj
<< 
/CreatorVersion 9 
/ContainerVersion 9 
/RoundtripVersion 9 
/Options 8 0 R 
/AIMetaData 9 0 R 
/AIPrivateData1 10 0 R 
/AIPrivateData2 11 0 R 
/AIPrivateData3 13 0 R 
/NumBlock 3 
>> 
endobj
8 0 obj
<< 
/OptionSet 1 
>> 
endobj
9 0 obj
<< /Length 1423 >> 
stream
+%!PS-Adobe-3.0 
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (C:\\ctsim\\doc\\equiangular.eps)
+%%CreationDate: 3/1/2001 12:01 AM
+%%BoundingBox: -8 48 706 633
+%%HiResBoundingBox: -7.3828 48.3843 705.4785 632.3408
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 5.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 219 -283 805 483
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 200 200
+%AI5_RulerUnits: 2
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: -197.5 899.5 1 1345 943 26 0 1 11 68 1 0 1 1 1 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:219 -283
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 0
+%%EndComments
+endstream
endobj
10 0 obj
<< /Length 6721 >> 
stream
+%%BoundingBox: -8 48 706 633
+%%HiResBoundingBox: -7.3828 48.3843 705.4785 632.3408
+%AI7_Thumbnail: 128 108 8
+%%BeginData: 6254 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD59FFA8FD7CFF7DA8FF2752FD0CFF7DFD6CFFA87DFFFFFF7DA8FD
+%0AFF7D7D7DA8FD69FFA8A8A8FD11FF527D52FD68FFA8FD0BFFA8FD08FFA8
+%A8FD66FFA8A8A8FD0CFFA8A8FD08FFA852A8FD63FFA8A8FD18FF7D7DFD62
+%FFA87DFD1BFFA87DFD3BFFFD0AA8FD1AFFA8A8FD1CFF7D7DA8A8FD34FFA8
+%7DA87DA8A8FD0AFFA87DA87DA8A8FD12FFA87DFD17FFA8FD06FFA87D7D7D
+%FD31FFA87DA8FD16FF7DA8A8FD0DFFA8A8A8FD20FF7DA8FD2FFFA87DA8FD
+%1CFF7DA8A8FD09FF7DA8FD1CFF7DFD07FF7DFD2CFFA8A8FD22FFA8FD06FF
+%A8A8FD1FFF7DFD06FF7DFD2AFFA87DFD25FFA8A8A8FFA8A8FD28FFA8FFA8
+%A8FD25FFA8A8FD29FFA87DFD2AFF7D7DA852FD24FF7DA8FD28FFA8A8A8FF
+%7DFD24FFA8FD04FF52A87DFD24FFA8FD29FFA8FD05FFA8A8FD22FFA8FD05
+%FF52A8A8FD21FFA8A8FD28FFA8A8FD08FFA8A8FD26FF7D52A8FD20FFA8FD
+%28FFA8A8FD0BFFA8A8FD21FFA8FD04FFA8A8FD1FFFA8A8FD26FFA87DFD0E
+%FFA8A8FD20FFA8FD04FF52A87DFD1DFFA8FD26FFA8A8FD12FFA8FD1FFFA8
+%FD04FFA8A8A8FD1CFFA8FD26FF7DFD15FFA8FD23FFA87D7DFD1BFFA8FD25
+%FFA8A8FD17FFA8FD1FFFA8FFFFFF7D7D7DFD19FFA8A8FD23FF7DA8FD19FF
+%A8A8FD1EFFA8FD1FFFA8FD23FFA8FD1CFFA8FD1EFFA8FFFFFF7DA87DA8FD
+%17FFA8FD21FFA8A8A8FD1EFFA8FD22FF7DA87DFD16FFA8FD21FF7DFD22FF
+%A8FD1DFFA8FFFFA87DA8A87DFD14FFA8FD1FFFA8A8A8FD23FFA8FD1DFFA8
+%FFFFFFA87DA8FFA8FD32FFA8FD27FFA8FD1DFFA8FD19FFA8FD1DFFA87DFF
+%FFA87DA87DA8A8FD20FFA8A8FD20FFA87D7D7DFD12FFA8FD1BFFA8A87DA8
+%A8A8FD05FFA8A8A87DA8FD1DFFA8FD1DFFA8FFFFFF7DFD13FF7DFD1AFFA8
+%7DA8A8FD0DFFA8A87DFD1BFFA8A8FD1CFF7DFFFFFF527D7DFD10FFA8FD1A
+%FFA87DFD13FFA8FD1BFFA8FD20FF7D7DFD11FFA8FD18FF7DA8A8FD15FFA8
+%A8A8FD18FFA8A8FD20FFA87D7D7DFD0EFFA8FD16FFA87DA8FD19FFA8A8FD
+%18FFA8FD1CFFA8FD06FFA8FD0DFF7DFD15FFFD04A8FD1CFFA8FD17FF7DFD
+%1CFFA8FD04FF7DA87DFD0DFFA8FD14FFA8FD0DFFA8FD087DFD0BFFA8FD17
+%FFA8FD1BFFA8FD04FFA8FD0FFFA8FD11FFA8A8A8FFFFA8FD0AFF7D7DFD08
+%A852A8FD09FFA8A8FD16FFA8FD20FF7DA852A8FD0BFFA8FD11FF7DA8FFFF
+%FFA8FD0AFF52FD0BA87DA8FD09FFA8FD16FFA8FD21FFA8A87DA8A8FD09FF
+%A8FD0FFFA87DFD04FFA8A8FD09FF52A87DA8A8A87DA8A8A87DA8A8A87D7D
+%FD09FFA8FD16FFA8FD1BFFA8FD05FFA8A8FD0BFFA8FD0DFFA8A8FD06FFA8
+%FD09FF7DFD0FA87DA8FD08FFA8FD16FFA8FD1BFFA8FD05FF7DA8A8FD09FF
+%A8FD0DFF7DFD07FFA8FD09FF7D7DA8A8A87D27FD05A852527DA8A8A852FD
+%09FF7DFD15FF7DFD1BFFA8FD05FF7DFF7DFFA8FD07FFA8FD0BFFA8A8FD08
+%FFA8FD09FF7DFD04A8275252FD04A8272752FD04A87DFD08FFA8A8FD14FF
+%A8FD21FFA87D7DA8FD08FF7DFD09FF7DA8FD0AFFA8FD08FFA87DA87DA852
+%272752A8A87D7D272727A8A8A87D7DFD09FFA8FD14FFA8FD1BFF7DFD11FF
+%A8FD07FFA8A8FD06FFA8FD04FFA8FD09FF7DFD04A87D275227A8A8A85252
+%2727FD04A87DA8FD08FFA8FD15FFA8FD1AFFA8FD11FF7DFD05FFA8A8FFFF
+%A8A87DA87DA852A8FFFFFFA8FD09FF7DFD04A852272752A8A8A87D272727
+%FD05A852FD08FFA8A8FD14FFA8FD1AFFA8FD11FFA8FFFFFFA87DA87DA8FF
+%7DFF52FFA8FFA8FD04FFA8FD08FFA87DFD04A87D275227A8A8A87D272752
+%FD06A8FD09FFA8FD14FF7DFD2CFF7DFFA8A8A8FD04FFA87D7D527DA87D52
+%A8FFFFFFA8FD08FF7DA87DA8A8A87D2727527DA8A8A8272727A87DA8A8A8
+%52FD09FF7DFD14FFA8FD1AFFA8FD11FFA8A8FF7DFD05FFA8FD0AFFA8FD09
+%FFFD07A852527DFD04A87D277DFD05A87DFD09FFA8FD14FFA8FD1AFFA8FD
+%11FF7DFF52277DA87DA852A8A8FD09FF7DFD09FF7DFD15A87DA8FD08FF7D
+%FD14FFA8FD1AFFA8FD11FFA8FFFF7DFD07FFA8A87DA8A8A87DA8A87D7DFD
+%04A8FD04FFFD17A87DFD08FFA8FD14FFA8FD2CFF7DFD13FF7DFD04FFA87D
+%A87DA8527D7D7D527D7D7D527D277D277DA8A87DA8A8A87DA87DA8FD08FF
+%7DFD14FFA8FD1AFFA8FD11FFA8FD13FFA8FD04FFA8A8FFFFFFFD0AA8277D
+%27FD0A7DFD05A8FD04FFA8FD14FFA8FD1BFFA8FD10FF7DFD13FFA8A8FFFF
+%A852A8FFFFFF7DFD15A852FD05FFA8A87DA852A87DA87DA87DA87DA87DA8
+%7DFD08FFA8FD1BFFA8FD10FFA8FD14FFA8FFFFFF7DFD05FF7DFD04A87DFD
+%0AA87D7DA8A8A87DFD09FFA8FD0CFF7DA8A8A87DA8A8A87DA8A8A87DFD04
+%A8FD12FFA87DFD10FF7DFD14FFA8FFFF7DA8FD05FF7D7DA8A852277DA8A8
+%7DA8A8A87DA8A82727A8A8A87DFD09FFA8FD14FFA8FD08FF7DA87DA87DA8
+%7DA87DA87DA87DA87D2752FF5252FD10FFA8FD14FFA8FFA8A8FD06FF7DA8
+%A8A87D7DFD0AA87D7DA8A87DFD09FFA8FD0BFF7DFD09FFA8FD17FF52A8FD
+%13FF7DFD14FFA8A8FFA8FD06FFA87DFD12A87DFD09FFA8FD0AFF7DFD09FF
+%7DFD2DFFA8FD15FFA8FD09FF7DFD12A87DFD09FFA8FD0AFF7DA8FD08FFA8
+%FD2DFFA8A8FD14FF7DFD09FFA87D7DA8A8A87DA8A8A87DA8A8A87DA8A8A8
+%52FD09FF7DFD15FF7DFD2EFFA8FD15FFA8FD09FF7DFD0FA852FD0AFFA8FD
+%15FFA8FD2EFFA8FD15FFA8A8FD09FF52FD0DA852A8FD09FFA8FD15FFA8A8
+%FD2EFFA8FD16FFA8FD0AFF7D7DFD0AA852A8FD0AFFA8FD15FFA8FD30FF7D
+%FD15FFA8A8FD0AFF7D7D7DA87DA8A8A87D7D52FD0BFFA8FD16FFA8FD30FF
+%A8FD16FFA8FD0CFFA8FD057DA8FD0CFFA8FD17FFA8FD30FFA8FD17FFA8A8
+%FD1CFF7DFD17FF7DFD32FFA8FD17FFA8FD1BFFA8FD18FFA8FD32FFA8FD18
+%FFA8A8FD17FFA8A8FD18FFA8A8FD33FFA8FD19FFA8A8FD14FFA8A8FD19FF
+%A8FD34FF7DFD1BFF7DA8FD10FF7DA8FD1AFFA8FD36FFA8FD1CFFA87DA8FD
+%0AFF7DA8A8FD1CFFA8FD36FFA8FD1EFFA8A87DA87DA87DA87DA8A8FD1EFF
+%A8A8FD37FFA8FD46FFA8FD38FFA8A8FD44FF7DFD3AFFA8FD43FFA8FD3CFF
+%7DFD41FFA8A8FD3DFFA8FD40FFA8FD3EFFA8A8FD3EFFA8FD41FFA8FD3CFF
+%A8FD42FFA8A8FD3AFFA8A8FD44FFA8FD38FFA8FD47FFA8FD36FFA8A8FD48
+%FFA8FD34FFA8FD4BFF7DFD31FFA8A8FD4DFFA8FD2FFFA8FD50FFA8A8FD2C
+%FF7DFD53FFA8A8FD28FFA8A8FD56FF7DA8FD24FF7DA8FD5AFFA8A8FD1FFF
+%A8A8A8FD5EFF7DA8A8FD19FFA8A87DFD64FF7DA8A8FD13FFA8A87DA8FD69
+%FFA8A87DA87DA87DFD05FF7DA87DA87DA87DFD74FFFD05A8FDFCFFFDFCFF
+%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDEFFFFF
+%%EndData
+endstream
endobj
11 0 obj
<< /Filter [ /FlateDecode ] /Length 12 0 R >> 
stream
+H��Wmo�
�
 ����@�6��μ�_&�d;��
�ɵ{�"��ʌ����dg}R�dzH���EÌ-Q$ER$E�����4�Ky
�����J)�.'
��y�֕)	up{荏{D4��

�/����'���
�$�U���J�KY���Vʤ�g����T*{xHt�� ��J�:�,��V�>,��a�xA8�szI$�����N���w4�NFް7�QD�S���%
G����>�@�?>������ވ��u\g277��eU��T���;ۈܻ+��LS�❦"���й��T"9�ՙ�i����&[�Ԏ*���܈T�]�+)��"`��K(?�
+QIcO�1��2
��
�^�
+ۥ1�B�JQ�7���?�}�|�X�DaC^U�m��a�3 ]�:]'�܆o�Y�V����by��r�
�1je@��J%"7��[dd-��`N�ƌ>�Qw�H��Y�ۏ��x����\)6���C�<+�N�.@��Ch{�s�$���=�-��гf]���k����X����[	77��
Z�A�;�{! p~desx{��BfE��䴊z�����܎R����`�
�����H�ȭo�
EC�L�+�Kw.��ܩ��?R�~}[����%Jȸ�u�Nd:�u���C�X�OG��JJ��6\�F�.Wu���HJ��mr]�|�a5������c<��
����<���ܹ4RI	hD�8nQץZ�|�xɆJ�x#
+Y���L�T����A��0|X<r� r���T�6P��7�����7?g(܆l�]t���LgtH�]�t�pO����<N�D6U��wXުAo��Z����
+�ۛ�
�W��;<?��w�_�ntvۣ�CD�������h�����R�>��,@���RT���Tn����p	��R�	?��,�
�~�J��S*���_��u%�Ŀ�E�sU��e�����3/8�[ل�<
#!֦ݒI��]Z��_扨־��eT�H��L�����M-��~�юT�������)aq��U!bxap��uY�<�`2����F�"#���c]l��2y���U�a���*i����k��%�`L�LĤ܊��
D8��7/���4�K߬K)ۙ�k#��Fi�|�%1"���2Qi* 	��B���:e�F#Z�Z�<4\����ᐕ�C�a QS��s�S��ik��
�3�̩�Ϙݟ13��:쳖on��v�y�f����ڿ�
!��2\[��õ����p�"���UJ1q�to��;��-�'��X��"����vc��#:��n-Z!��!�7]Z�r�
Q��S�JY*��B�4���ڒ�F'�aЎ��KԳ"�uFmYk�S��O��l�agl���bf/���.��}
=r}�屦:4�
�]�-�gg��!�����}���ȴ�n�)����v�m��?FB&�	����>R�~�S�Q����C��~^gK�(\�LA�1�K(JT�(�������ڬ�����]<�J�T3U�
��K�b4%T�nZ�(�$�
��Զ"≺JO�vx?�
+���P)��
+�
+k�v�:�ۤ:��L5c�7�u�,[�Ǫ,��u�̗���<M�5�z*
���
+�s��l�[Ԋ�a�Ga���\�ˬ��6��I!~�2��e��=��`i�����v�&��Ԋ�.�޷{V��[����{S��W+`Y�CWw2Ф�O��ە�p�o���IF�s�--5h�
��珥� f����V0~��ai���H�/�i㍬� �co�Q�Ɓ�{�r�0썺�Q��f��7�-�߷�h�,��A�2e���g���hVs"��
\���G�ؤ���%�ʟЇ�
a�w�(K�%����ҳ��z���q�!�R�,5�
�S�15�v�V%�$�%��]���6r\1b�����MB�.tIJ�	�P,�Df��U������zF:�\����֮m[sV��ؼ��t����q���7A�s^ʂ��Õ_
�����E���.~�9��c�E��,��l*�^Q�
+_���ma��O���CUAu� `mU/�^�Һ)�1��6�7�a�����h;�
+	K>n���~:4�Ա�V0:m�]���{���.�P��S'��GMg�
���3w����2_��8'��J�ՎQv�����3A}w
ͥk��㣝-���5���9Sw�-�ܡ�Y���tK�B�I��5^��)��!Km&��L��
��0�n-�i״-y�5n�E�2�iǾ-��,׏��-�1�Q��Be�:�����N���"�
���q�
��
����+�?�N�.�G�q��4�����c���n����ޫh�z�p����^��W<�_�&� 1܁�';��������aL �����)��a� `%�_� 'A0 
�`
�N�����,8̂
V3�0���p�p
N���,<g��@E'Q?D�h���_6=rG�
�؋��b��/2��l#�
�c��/2`���SU�
�pdm� �AS�W;;�鮮~ߧV���crs�-�~��{|���~��|�lr
+.�C
+sXB[(���)�b�s\b�[�) F�\
+)�9�iK%�y��
�4/s��\َ[’�uٖ��5�i]�m�y�>���-�m�–���
+K�d~����M��XS]j��ַo��=Qk��}�ݕ��|"��g
O�u���e�����B���=����>�C�e/�l%��,e��
�/�L�}��oe۶��۲ͬ/�J�9V;nC�yυ�缲����
ؓ�{�u׺�ka��
/���#��Ta␇�.�R�L�>�2S�H�<5���0�y���\�(k����z�<Q�!մS�-eN`�
���\&j�5�p^9���
g��4'��5�v�x�WN|��c��0�Jg:$�'
���@�8�h�n��6�l��X#}�?ON��0Uz�У�^]��D������4��/�z���@�6n�㎌�� ��=���.��݋�G��k1×���_z�KO��'��W��/�
�F��%�/��;P���?�_�Sc������]�,O��	���I�R�_~����I��l�s���� �p$�->B�3dy���<��
��%߇3�_5c��©fk�G"�bu���]�&����aէ��"�P8v�����y��w�%�k��<ܳ ��
�
����{���^�ڰZ�Z��pZa����H+F߁�=J�7�~�i�i`}Y��Ԋ�#�ʨa`�6�.�������\�줘� �9"Hs��k�h��zV�ƹ ��g;�� H�̘��=l�����"�Ƅ����I�d�˂ɬX͆����T3bEl
[��S"�|lŲp=,�`a;P/�ψ�Q&,�mbv,�#%(�
;��1���q(%E�2)
+�7�+]H͇1ׂ���:O����zʇgaljM�bY�$.��1�*�&>b�
}X���%(;6�dX���/��"k�`���j�:� .�#�#�%�+"H�1܇v���2:���χ�'X��O����Ch���kx�p�7��8���0��:g�v�`�;7�!O�
_;�t������ ��C�aP!�Da�p��!�A�a������Q�#$C$���IJA�H`IpɀI�ɠI���I�I�I�� JJ J0�]��+L	N	P	ReU�E�J�J�**`	b	d9UU{	MU�-��,�]��WVM [��'�.�iCR�F�9
/�7z������¬_gfP�
4ǨV�͠�����
A-A
��@�-ʗ�9�=d�\�L�l©M�Q�U�zx+�'v��P�
pU�����G7�H{,�ʆB�qxZK�"�Vb4�)�1�!�
��
�	T��~��U_�~R�y7i7Y�V2������#䇄�x�l�`S�ɓW�q*;SB�.��UN�]q���I�~�[��.����\d�
�B�C�A-Uc[g_�i��5ޯ�ֶ����X.1_�5����.{��φu[gn�.O��!�b���X�̋uN�W�լV+�����Y�U'�����*�1�d;�u��D�
7\9�m^$a����䊂
l�f�#A%u at HI�|z�L���qQ��z#��&�2�@�*�]G��C��7!���ʟ
�H
w��i3I��㬊rB���5^bz�
ڛn)��g�&��� [ӳ��C��P�����3�ހ�^ۢj�a��?���b�j!�IܛCh�Ѝ�[BiF��
`>�_w����m�T�Мρ�
�*�y>
<�qGa��ZZ/�s:w�s�
E�87�a�
o�9�M���4�33�22�QA�0� &
 35t��]\/}������
�C�u������%�ΐq9��$�%�K�[4���w�1�E�/F�)�p��=N��*�x'5�Y?�;����xG�}u��%L���`�����XgR���9gU��J8�8�o:�t��U�W�J���
V�rF�Ή�ӅQf�@�ә��>�ұUb�E��^���Nb:������b�U�h�F8%���
�Yf\nN��p�!���
y
%�k;k�U&0
+�_�1.��汗�e$�����_S͉��wo�|����_5�8��8����0����ā�ӿ�	�Vʧ�IV4� ?'�M��4�j9�`ϣ�o����3������n��7�|��O?��G{'����������o��/�~�������߿}s�+��/�=
�B�kL�����
|g����a,
&ro#�D��a�!Pe��ь�l�L�)Z�]�Y�U�Q�b�dQe���5�1�)�%4C�v�͠[���@35 �K��������ˬ���FE��е�YT��Qq�Ö�C`�xO�妓�r`C�&m��!C9͎�
+
'Tx>/N_����U�U����
wq��[G��7!<�x�s��iз6>��)
�o���
n�i�bן�z��}k|��Cմ'���٧��Y��٦��?
si�\��pfh��A6{4s4kc4S4K4C4;434+#�3���g5@�?3��0>�=3=�<3���]b�juftjs����"
+2�#+���*;
1 �Z�Q��K� �
+mhѾ�F���:T*�U	�ZP���t�r}GT���K ��e����QC����5��
j�Q͂vVd`�
�Pք�.�l�
׭�^#*���.'4zA�3�-w�jg��^oA�Ngi�
E�	��W^���	3ޏ=����F2^ljϊ�gԞo�G{r�5�����E��M'J���}k���5o�Ƶ�]۴z�
�cnU�8B� �����|Aն�*�ﭼ'�g�Z�s�%��Wp� �AˁB�¤����g��na��du�t!�:J,j3^�dh@�A,���=Y��
����+o^���*��!��䐌��=���D2�W��Ƿ-b

���.nF�cq{KX[��*��3����~���mkQ| ��7�M��"��H�Td�eA��Y$y��;�\�����	����[s-���s�d�@�$ى���5�����jȕ��H��ʔ��H��ȓ��HS&��E�IA�-��2$"�S�f��J�
+��E���t���B#2�AbT`D^T\��^
K�:��4����Ɲ�����#:~���/�i�L�8ʛ��14�5���nH�_sz��1M(HW�fS��g��k�49��4t�;}
+��ѳ�s��9� R�
�
c�� E�b�8jHkd�B �t`(�=�`j4�"�i8�%�v%�6%��)��Sm��Ȱ:J\�
��.ֆ�uN�u`l�)���ȋ^c����a��X$I��1Y�Q�A�)Qvd5�j����_5�:V��u����X�d�ᬶ�zE��,�ʖ2�jϪ�T�x�=��%.
�i���5�ЌY�7��<���D>��{����D8و��R1ٰQ���D��{�r���*o˯�F�-���
fX����j�Rv�,&J�o���1ۨl,Ց
�!	���'%�7D�)�j�����B]"Y�%HX�I�
�ո��
+ ��*�E�<(e@�
+�A&*���E!9d� !��{:pG�Sa�7��1�2&�/Ba��E�"TSpv
�"D�M<H"
E�!��C��Prdnl�q���ϒV�����;f1ѱ��

s���Wט�Sg�Y
f0`L�ɜ*j�i�i��ZL9�70DI�U� `�������ζ�����(�]�,58Q�Y�cZ�Ɣ�,S�gn�
&f�������S���
ѬR�g���D��&x��)�10WL��lQ�taS�)a��1��&I4�L�Ƅ�Q1o�L
.�
A��r���Q��aJ���Q%1R)ꒈf�)��s�)�O9w��wc00
:
:::y*�s����n6�O���8��̅Lf�ֹHS���n����D�g"O�T�JS�J�*+��,K6�k���e�$�ĺ�Y��jV���#���]:晸`v�]
L٤���J�~��
�MeX6�cu�|������M�]���fS�x��g����Q���:��|<�qD&.��(�,���kk��.����1���S1�!�~K�� �vz
#���
xu��n`��٘ � � ��
@m ��^a�&�<�=��x� ��+���!
�368H��d4
3(;BLF�� 5�A��c�A�q��8yF
+
�j%V8�#��A/<�e�h2fƌȠ$j@*-�Fð13nD���
!������NK�>zƏ.�6E�9�����
"��(�
g�5Y(�e$�=+w���ʻWek�iێ�A
u=����x{�]�m����7��e�
��/��i�t�g�K����Mac��g1!�M)E~Cb�"	��D�Prlٱ�� j�
�
krdn|+j|3<v�q��
PcO
e�11.��^�B�=3b��$�h;fB���Pn�2?�C��B�vD�=��#�Ad]�ʟ2/U����6�T��Sz�>5'�߫J.��՛�/�z��9�.ȕM0�R��E~���u��c����6�t�[��~]���Z���/�6�[�t�v���_w����ʅ�f���8u�k������*_�i���s�K~ӿ�裏�?>}x����%�2<���)����w_
�>
>�޾������hמ�����n�P��J���ͦ�"x���ڳ�:²'�bO�7~S�M!X��B���P��H(����1�1� u !�� �/�p�hT0
+��D��p-A�@�
�� _�
 ތ��t
��
+X�@Z������5X1�
���
+��`U�"& /cB�=��c�>��g�>�����s3�=��``HF
H�p
F����
+��бǦZ�ٌm
�@�{��a=��b�*lP��tؖ6@�%#�#`#,6�����XzY���>q�e�e�e�%%�"�%�/��E����"_-
���,�.�@+�bw�)6-yΌ�Jr�iv��h�
R��$��K�̩2%�R�~����6h�a]6}���f2��g�yv�g�3q���L�g⹙��O��I�>�����/U%�{����
o��_ʛR|�T���ۃ
���4�����È��������ǧ���W�ǿ>>��~?���O�>~~�����#������cAW=�YokL�Y���*
�pqey
��r����Xn-K���]?�/�]ܻ�wC�`.�U�ݗˤ�ҿ�tP����B����0`�4+HZX�^U������7�7�nb�
@��� �X���ۺ�����������f��t�
+�\�
d�����IC��"����?�W��
W�V�o�+�+��\ݺ�wu�������
Y�rt
��JO�6�G�jY�eY�ձ<+�$����Yz�x:k�޸6�G�2,�r�����J�S�*r�*�Tf)e�.�޸6�#��K�=E�|��ޢ�`�
�=
+_��/��j�T�<^y��X�@�Q��n�3Å=z�����w�yni���9
�
��x�n�4 Ϗ��W�
������حQ�C����R��x,�+H�t�qLdPp1,��.#3pl�
b*�ZcHQ�q� i_�<�
+
�_�^��P�KE}�c,5��J%�p�s��my�����\ʞ�dK�R]��S�7OJ~�wh]���8W
d����=sM���Om:�r6
q�H�8�1:8��tL�U�S�d�Lpv��?��ŏ.ntq��A�
+�O
+�\J^
,�R���Ֆ2�Z-tlʬ�n=0��}���~X�8��m,5���m�"n*���hw5
ԅ:~���
7V�k�y��������cs����jo,s^�x�*�`~^/��5:�}�܋��Z��fF��qk4��l2�9�g���S
xz
Ok[2�Č9����R���1�>�>M}����f��E(c��0R�i��
�Z�MP�e�
J렸��@�ap�'hr�6��h�v�l�n��`0A�#Խ��{�����P\A�;��p��
���?4��L����gx�
�a�@�D�Lp&��S�0��Y����v�G`j��G;��8�����pB5�b����H�R�c��,
T
��H^3L��5�i������|���fR?BD
<�At���Tԣ�j%
+�m��"��ٯ�
9n#�.`�a^
$@� �Ivw���A�1�`�FZ�J��@Z�H�>�n�t��+�y�P����"y��)`�J@)�&-�|��<˒ٱ�w����|�<�'
�甃�eV%3������kO�d%�X�G@k��X
+��zN�����R��"l	�_�0˜������ϊ6› �0w�<�������$C$

+
+	��D¢���(����19���N�'!T0J(��\�9Npg�+!V0
�f�r��^�/#X0L(
�˄f�3!Z0�`P��Ϭ������p�8P~�YӔ���%b��4�4�XېUCCڭ�
Vj_�P�Қ��V�\��p��Η��b(#�)�9�s0S8�`.���@�D�%���%�%�%��|�eg�t��,�Jb�V-��Z©p�s�{�/+TNڎ�
������`�6˙��
���,A�^�i����yku��KT��K�UX1� J�z��u`U�U�65��թR�J�J�).�k�#W��
R/$�Ѭu���������Y��22&F
%��*y q at xCO�G � �*	���d%?�V~T�c��.�n�Ce�42��eG!�)��
��r
C�P�O
�Qc�O�P�O�Fl�
U	n`)��1�H��KL��uVr�BdV#9"���L�����Y��F�6e~�*VYF,ǡ$L�Z��
X:(�	���~��"fԗ�
�sn˶Uu��Df`�>|0�׀=��.��jS���J8GimǪ����-�rR�[��~���d�-i�M�fm��ڎ���C�M�HI��@9���
�ڐ`k �2Y5�`�U
��Y�
�	�
��O��Cy��z(�"�`��u\<j;q;k#�rU�Uk.��Oê��)Μ$�_��3��P���a����zs�m��0���PD�J�\��n���'Ǔ���]�R����X��@3J!�5�l���rT9u��2�ȥH�V�ֲ�>��i��fQ���|�#�؞o��b����<#���݃t� �3�g
+
LX؍�ў���faZ�>"����p`8s�{��A���PFp�9�=�n�p�P�98�
�
_�A}F����d�a{�&�/�*�DB53!Y�6��vH,��-
H��
& ��H��P'$ᅯуmdĈ�]#UO��Zi��ڪ�V��XsA0��ʺ��N�]Ey��:r�j��(0�`Pa,jH���ZL�X�(�D��*s*�M�#��>#�&�T�����Z��zX0x„&�\$�V�����u۞���Pi4Uh��|B�E5�F��B{X��:;�+���Bñ{Dk��p��NC,���gUk	`��^C�l�j��f3�vR�F�m$M��Y��U��I�!����U��,�&�8�u��l�M�s1Qtu�yΊ�T���Lə�;�~����vs�5նW�fz�Ԛo*ғR(
(�������Ъ��.X.ԑV;Zm�A� 
ꙁLH-8q`�VW�V���֐��ԞZ��u��֔ʤ4��6P;2b{Ū UP*%�>���T&��"!��1B$
+�>Ǩ#��k�3B!��5��WGF��HB
1�A{Ŏ!�pC�!�Zb?��q�~
�+V��b��,��ͥ<�`�x ?�쀰����Mn������'"����y�w]���.b�9���'_=����{�3��'z�9��67�
"%TV�Fށ

h;��~٧�M�]�S��G.P����w`Ξ&O_�
3��lMH]��o����	��.
�e�v‚~�3�����
x�t�	���1O�yj�N}��H�>_����^������7w�:r�y����~����~|}���������I��38��U!�����bR),����!d�[�m��
+��-J��˃� �" d�?�`%�
+ъ�j���k��h�$^AUQR!$�###!"�!"!��DAD at g"�D=h�Hg�
��4s �,�� j��G$��`�=�����f�z'B���p`	*�!�LЈ��r�\
�_��竳�6#ev�d��>��
�e��@�*�j��"k��Z�!��Z�UbE��*
LX�_������u]*�%�+��b��j똕�謠�X@�Q�++QU�)�_0�_0�(LԺ��WY����~��CA3]z�3:	#Ͽ}{�ݻ�w���^}�u���'WO��7?��w���7�� ������f�sޓ����������!O?\����g��������O���������K���)=/�ns��~C�l���oڵܽc�OUg�4�0��+'�lOO}��fg����
袺�
}��w<�/�_/� �q�2�E���4�	fPؒ1�9����U<�6mUq�'�7�ˁq���>g�7
렭�3��l�r������?���n
�?������,ḱ�[_��]�s�I9;{�ȹ���b�|.��͸�;�e�櫃q�C�U+o�k�l���l��x��۪�c�v�w����Ӷؖ�.��E7;]�BsB섭*�>x�t��\�W֚�I[����kݮP0��.k����v�v[�N�o���isn�
�7-LBxNA���G���*�[�
B�kם��^o�6�3}�w�RA���)4'�Nت�`�sA�Lw��%�*o��@j�Y�e��B�*��m�lU�1��׫�fVdcͫ�S��͇��_�����ś��?R�]I����s-ͼ���0l���/g?$�����Oe��r2f7U���d����+��͓���7�X�V�����F+eK�,��/eu9�����q�K+�6�x8
�o�~�����BB��M��}.�����
����^O�~4 ��@�s�!���z(�|X�
3O�����mc���zsqGN�ߓ��3��^���=�h�A<�0��i__R7NC��旗Օ
~�腞��.�{��#�&��iT]�p�p�
h7t���s��$��n��`=P*!

���0���>�:C7�C�<42vEMs(x6��wn�������I����=�C�!/�1���F�a{7�Թ b��cs7�
��Ylo��5�Kll�\Li�
$�
+m
��P���82�t�t'���c	�?�zLi�n��|�26w
�����O!���#
���
?ַ��?�i����;����h��~��<���c�c
���m�NF&��_]���e�[M�D
T��	D���.
+4��0m�5�m��q�6�:���$�_��i�=k�[�
*
+!T�2���]o��
��0�F�[OL���d�t�,�%!��ذ޵�k�����Yc0��!lOU�wUWUc��F6Jid��Ƕ�����x�%�f���J�7@,�٤>��Պ�����o�'
F�C��E(�9<IDFr������H�Q$�D��2��\VFR�Q��!\Wp�I�����<�*)��S����R*2w��O���(Rz�dY[���q��ҕ	�0�{k��9
��)V8�E0`7�EE�E2���=޼9
¡^�I���[�>�8� ���yE�bm<����� �ׅiEOF MmH6�9������+�����N�=�m�^���"��b`��9
��G)����,���s��)SF��� B}0p�B]�6��"ž�,{�2
+J��]�[6����9���s�0
U2������S�\f ̙�~ 񤫁���-S#�lbqA���^d��0����/���E�_�`�`B��@N?�2�F踍�X'����Q%g��L�(á�	��]qIi�? v~a�-���+�����+G"+n`YL�Ӊ-�V�]��:,<��6����K&1����Qb��N��=3�<
-�1.漱{�E˂� �R44-�
+��E���[�Q���'='2��(زe!2B2��u�,��u�!̈́A���Z{��;:�B�a�J�ei���9	��}���"�-�JB{�RIQ���O	'�_���8���I��rK�e�������r�L2����Dy��)
���u �->L�,	9ʑ�Cꔍ ���W�-�R6ۋD+#[��A��ٶ�}��J�O_w�_���$�g�/+v�h>�6��׼�O�2��9��W>�r8���Ɍ�HM�Rˬ2q�*�������/Y�y��|
��˂�
���º�@�!�#�{~I�|��(
��\h8��.	��d at 3H�%�	�����	������T7{���0.�EE��Y,$�i��
+�<�I��8�m�V���{"sQFUd�|Y��-�[�:��^:q3�х/�/�������N��c|��
+���&����a2���qe�2���-�]q"k5Uس���
<�!�y0
+&���h݂���F�; 5�lp�dL��zɛ�b�
zNF���#]|j���obf�Po�a��9%O>��:��+ؘ�b�P
+t!�7XW�Ua�/������.Ď3)�\Ux�NPb	�f#�3����f# �{�邔G����}�:1f�WIe	��„����T��2F3�N:
��x跎���ea�`h`��7 �l�g=7ɅE
+B��`��eh�DBlE��"��W%�A*��P���M��^�ms�2��Vo-�6`��''�.LD:=7
�̯p��3
+Fe���E�Ds���O
l�����?��>��ӬP!�c]���*�M]�V��Ś�SV_I��U��u.���:�`���X)�4�Yp����	?K�!$��
VeU}FK��
Ce����o;�
tB�\CK�
b��$�Q��t��*w0
+:4B9M-�ԢE�L��¿bo�k�tkku�ӝ�������la'
�<-X�)#TU1��P������8��!as?/��+�kj�"���{���3E�*c��0���;gz�Gz�&z7�����U�6�V籙��I�Ճ<Vs\
;
��j�1C�<X:|�Hdo��������Z�a+l�R�W�����_JKs�+!
+����
2��,a�J��کtIe��
������ç�y�{�t�<��q����v�������p�Z^?z��|SU�L�_(�#,���s�g��`?6���y��m�D��

�e�u���P��cCB�����Mx�`�/����c���������uE�.��|zx��?�G�6��K��;�'��Z<5��<��m&���M~�7�WP�Q+��G�����r����v�K�5z����y�߭�F��
+‘kR��E�,9\B$2�Y��j���]�r�o>>$~�)Rᓂ��`t�x�l�9߭6������
��T�<|���y����/��������l?nj~���l��G���rl��㓋��ØϏ�l/��7�叫5XO,O�
�M�$�~DA9��ng{�.���t�^]Lxv����L������?����f�}"'�D�j(�m�������⊢ٷD��?�����Q%�*}ܐ��1

����
=�n�7��眹���Bg�#G��k�m�͂�W�y�ݮ��_�ǧ������1�ۧ�����9Y.���n���8𨙸u4=_
�+(���
7P�Z�Gs9�]�׷Մi���#�{3 9����Z���y1����p�������~I#��g��V�pgZ���NjT·$��.{[���m���/�
c�����\��o^���P�
叆R�+�7��뺣�\]^�KG�l�}˥��H)�s�N����2��U-L_޼�!�ڱQ�ύ;z��������
��
��������N�:,G�ڏ�r���*��xp
��>)�W?���Vo�훚�w�kj�٪
��o�l[�ޮ��d��r��m
�Ғ+dG���LX�6�BOA�8	��V[��0�C�	�41e�`#F�M�����13&g<��c��a4s��k�����aJ*�7�jƢ
+�őq�*��L�_��s���h�)�ݫ)�����
�WlSO�LV�eY�j��Z@[=J��hD��3Z��.��D��"��/��L.���̋"%�qX�+��2�V�Mf8,�;
��uK�Q��4��k�aU�j&��M��k}4�T��_��٠�+
�������k���C�K���=h�v���m@��=�N35aH��)��4��2���,��YTnc�~���%k����!�V{U�j�7��u*f���JB)�[}\mޯ��*Z5R/�މ��%��IKɖ���L���a�v^�҇"�J�id�g|ڿH�������WioG�n���mX��PZ}p@�ׁE�JY؀#il1�
<
����U7�H�D��"�`YS]U]���u^��ضн&��'�![����7C����T�[��Z��Rq�.YLoY�e�m���4�qM+��YY�Y�������V�[V.���xoxM�s���-;=})v�J�̇�޴ܽ�J�֦��~*���M4�{��6�}l���7-J���'ŠGy�vZ|��OpD V{�_Y�L�;�Oz�r?
m�d�5fߐ
�f5fw�X]�����S���gm}2p�m�f�*�٦��'g�%_M�*�z
+��¯�ImV��k7�
W����d4�
?���y1�c鞀CY��O��@z��R	ӕk���E���<)�w�������[bm~���Ֆ����Np���-��]*<t��5�8��79������M�p���W�����m8YB���f>(��7�
�����%�~�\F����9G'Px#
���Q1�e7��h����9�K�s
��)_'��t�2*l�U�v��cة܊An�[*����鸘�Û{x�ݲioQY쨋˚�b�s���~�1.u���EY,���g�9Xe1ũ�I
s:��[��]Y�c	l�X��m�@5b�?�E�7�g�嗲�$ �����#��������q��v4�M(�W�r~=-gI�[��KVn6�M���őe�로OF�z�r�*h��ݚ�Q��qώ�/_�����ݖ��S�{N������7���ق~<Ϣg�_,��b��Z��SZN���ǣ�G7�n
����]�o�
�������z�j|]�c�k�aV�ԸMnq=8\#/��l4[}�2y�#6�RN�ĒXo�Y>���~n�5GB�1���
��6�y���t� �d�M�O��r�y"�\�
��$色��ħ�@�H�L�d�ôip�7H[�sD�&Ltlzg�/���yL�����]s�͡|(HrQ���чc�Կ������
d�2�~d춃wXk��6f��h6�<�v��3QseudNi.����z�m4�Y��A2'��f��N
�H��<��c�P�wP�<(��D�(�DIi�V���-|�8i��@tx)#7^*
+ljȣ�Bq�=s��aT9.�����p��B�)xr�%5�OBǥ¹j��"f����bB&,�T\e�O�h�zhp�cB�ۂ9e}��M��	D�9�����JX.e"ℍ$P’1:��c�Pq�d
+�lE)�)=�!�Jh�'���x�\Eí�t�K����A#k��y�
�/ه��'�N��= �;H(����r	�V�ᢌrE<b���JAlS��O�xp�X�5�Qh���G�upu��xq<�T1V�2�li��Z���Q�6h
���8h2�I�-�v�=��'\ml�d�	�
N��U��|�<�8`�Z<ģ%b�	
�#t0��ٕr�uE�I��,��ِ�
��� 'p�$�(�]r�-���� ��y
�z`KH#�5*<c�Ϙ¦�S8G ��$@� �B�dtV��0�ؐ'�*�
_L<$�Yz��0�
#�1rE�F��u¢��Ȗ��{�Ⱥ)Z�����D*��{�A����"B���/��W\mWneԉ�5 )��s*�
v.�OI
8J����RV���xUK�I�ѨF��˰Q��W
�Q���Jf�C�n+3�\�hg�˔�hii�eJ
��E Ơ�D�G�zk*��1��T\v���R*4L
G�j%U
\Ke-З��V�I{��P9�1Ѡ8���@)
��'����o%�k$��P;RQ bL���5bq�ha}"عMh��������%Th7���/�T9�.ă�=`�z�Y]K������D'D�V��ZR;�u�Ѐ�H?�%�@ ��WK�UX������C,�^N&ep` L��8$-_>�ٙ�
�� �Q�'��[�m�b(+@�
�x����ӕf�A)tA�-�$�T�0Q��ՎB��K eY��*	���#ÍP:�(,ԦI�0�W%���À�M
D�U6
k	%�
+�Q�b�,�m0M�-��د��dF���$أ" j�@����
ʮ~&pR�,Ƹ���xS�j���
+5`#Չ#i�P�8)�l$��
�i���EOl�6UK�i]-
`-��D�R#��$9\�ըձצ*ɿ p�E�
endstream
endobj
12 0 obj
16864 
endobj
13 0 obj
<< /Filter [ /FlateDecode ] /Length 14 0 R >> 
stream
+H��W[o�~'��a^Ph9��%}��TP�؉�4*��XS�D�"U�r���|gfo�hZ�������̹|箃�^6)z�
��=��'Y~_����+-,���.�
n�0L��m�i'��V�b�R�HQFp'��
ӎG�]�UCi�kiQs� ��d����
+l(I`�W{�ѽa��B�[?�����E�ؼ6������N\GG/ew��%�Kͽ	_/t5��Uϔ\�8
���N5��Bvɥj�QF�M����jq���Z
b�)#��
��z��j�N��;F_
�O
	\	d�R�E�v�C�I

�,2-�[F˵3�!$�7޺�!إ��i(��t�!"�,���<(�t�Քt�R��u�8=5�`}�`�>Q�,W*��),�û
"j���)�x��n ő��	.��-�����U�5�{;�ZJ%1]l��[�B�
+�XA�ĚB��c��5�'6

�/��xl�DhV�=rmt���5��}:��荾K_+z�y)��h���������jV^�.����E4p�@����h
�
���D��ĵ�_>�2<�����������z�k�_/SF�����W�տ��_E3����i�ٲ�׭dE�$?��Ym�h�n��Di�J�&��h�lt�ώ�:Iϟ�^�ju�F�$XF�f ���A��w���P��������F�@8��
F
Ŭ�Q[�
���DƥGu��!e��N�]?[��#؏:��O�ۻw�9ӂ�hl�
D.�ʱн_&�qR}4��Ω�5@�"*�f_�w*���L�B�zǐ���D
��u�
`3TA�W�Z`�
�7& P���И�݅&"�Eu��%�b���r�v�d<��M׃�M9�M��C�{89�$���r}տ�q at g1��
��60<xk��0���L阽Yߩ�,�)��׍w��f����-m"U�1�
*����r@�� C7�~
tW�'�����R�h|2\m�>�lf�E�ڲ���`
6Z}�N.6����OO������妤���t�o��Ĵ��ˁ#-C��#*]��
+VGMI�:p�";�h4� �FD ���O��G�H�#(21X��
0~�J)j�Dšn�
v
%�T3^�U�&A�Eϵ���%)�=W��c�i�df�	A'�����9�BD�%��ȕc"ttpykƥ�
�|�!UK�>L��.R}��%��$we��C��,7X���=V'

Hd
+�hb
0�JR��i�Z��
+�
�#w��jᨂ
E'�fV=�D���i\&�ğFPb��"�	I�5R�^I���������z�:�m�r֖�ƬY������?�ꢚZ�������؁��
����x4~���T̞ΎM{/����{�츷X۽ź;4ֳX����ብ/��.jx80�B���m+ ���[o�!��������JKE2��*�B���)���9�=&$��7K�)�R�)G��)F
+y���(l�e�ʁ�&O�S�;�3
XZ�snh�( 1�V�>�Ǟ*���ƀ��R{�K����h���r.)9
��>�0^9�>JC������IܼU���`k�Ң䄲���X�hW�
#�� �5ڮu��>��sK'I�V�-�v�;@�V���z���?ޛ�(�{݊*���=u�0����v]xР)*���:
|�N��.�_T�JB>�O�W�w5w�2䵗��j�F��
�J��ˋ�)��
�I��)����H'��6溮�;Piڳ6Wg)���
�iE:
�S���܎�Y\�*���` ��w��t�*g�)
�Y���\,h?���O�f5]o��)[�.&
+]j.
�������a�Y�87�v����f
�`7�
��2��G׷�56!

��}��/W�w������r�?.�=�v|����bs��f{��Y����O�0!(
�O?L���l���y���  �s�{
endstream
endobj
14 0 obj
1963 
endobj
15 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 493.25391 325.49219 611.21143 623.19507 ] /Length 16 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 17 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 493.2539 623.1951 m
570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c
610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c
f
endstream
endobj
16 0 obj
180 
endobj
17 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
18 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
19 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 606.64063 319.47119 616.12793 328.32471 ] /Length 20 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 21 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 610.7964 319.4712 m
609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c
611.2656 326.2822 l
616.1279 327.6709 l
614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c
h
f
endstream
endobj
20 0 obj
221 
endobj
21 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
23 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 488.79102 617.98828 498.31201 627.25781 ] /Length 24 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 25 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 488.791 627.2578 m
491.6006 626.1252 495.416 625.0828 498.312 625.0205 c
493.8398 622.6619 l
491.9102 617.9883 l
491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c
h
f
endstream
endobj
24 0 obj
218 
endobj
25 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
27 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 488.79102 319.47119 616.12793 627.25781 ] /Length 28 0 R 
/Resources << /ExtGState << /R1 4 0 R /R2 18 0 R >> /XObject << /Fm1 15 0 R /Fm2 19 0 R /Fm3 23 0 R >> >> 
/Group 29 0 R >> 
stream
+q /RelativeColorimetric ri
/R2 gs /Fm1 Do
Q
q /R2 gs /Fm2 Do
Q
q /R2 gs /Fm3 Do
Q
endstream
endobj
28 0 obj
82 
endobj
29 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
30 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
31 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 492.9165 325.46191 611.8916 623.56421 ] /Length 32 0 R /Resources << /ExtGState << /R1 4 0 R >> >> 
/Group 33 0 R >> 
stream
+0 0 0 RG
0 i 1 w 4 M 0 j 0 J [12]0 d 
/RelativeColorimetric ri
/R1 gs 493.2539 623.1951 m
570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c
610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c
S
endstream
endobj
32 0 obj
204 
endobj
33 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
34 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
35 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 606.64063 319.47119 616.12793 328.32471 ] /Length 36 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 37 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 610.7964 319.4712 m
609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c
611.2656 326.2822 l
616.1279 327.6709 l
614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c
h
f
endstream
endobj
36 0 obj
221 
endobj
37 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
39 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 488.79102 617.98828 498.31201 627.25781 ] /Length 40 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 41 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 488.791 627.2578 m
491.6006 626.1252 495.416 625.0828 498.312 625.0205 c
493.8398 622.6619 l
491.9102 617.9883 l
491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c
h
f
endstream
endobj
40 0 obj
218 
endobj
41 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
43 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 488.79102 319.47119 616.12793 627.25781 ] /Length 44 0 R 
/Resources << /ExtGState << /R1 4 0 R /R4 34 0 R >> /XObject << /Fm5 31 0 R /Fm6 35 0 R /Fm7 39 0 R >> >> 
/Group 45 0 R >> 
stream
+q /RelativeColorimetric ri
/R4 gs /Fm5 Do
Q
q /R4 gs /Fm6 Do
Q
q /R4 gs /Fm7 Do
Q
endstream
endobj
44 0 obj
82 
endobj
45 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
47 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /SYTTYX+Symbol 
/FirstChar 0 
/LastChar 255 
/FontDescriptor 48 0 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 
500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 
722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 
741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 
631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 
521 549 603 439 576 713 686 493 686 494 480 200 480 549 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 750 
620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 
549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 
686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 
713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 
329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 250 
329 274 686 686 686 384 384 384 384 384 384 494 494 494 250 ] 
>> 
endobj
48 0 obj
<< 
/Type /FontDescriptor 
/FontName /SYTTYX+Symbol 
/FontBBox [ -180 -293 1090 1010 ] 
/Flags 6 
/CapHeight 672 
/Ascent 1010 
/Descent -293 
/StemV 120 
/ItalicAngle 0 
/XHeight 771 
/FontFile3 116 0 R 
>> 
endobj
49 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /MPMVYX+Times-Italic 
/FirstChar 0 
/LastChar 255 
/Encoding /WinAnsiEncoding 
/FontDescriptor 50 0 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 
500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 
611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 
722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 
500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 
500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 
250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 
333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 
389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 
675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 
611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 
667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 
500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 
500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] 
>> 
endobj
50 0 obj
<< 
/Type /FontDescriptor 
/FontName /MPMVYX+Times-Italic 
/FontBBox [ -169 -217 1010 883 ] 
/Flags 32 
/CapHeight 653 
/Ascent 883 
/Descent -217 
/StemV 76 
/ItalicAngle 0 
/XHeight 441 
/FontFile3 114 0 R 
>> 
endobj
51 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 5.48828 351.7168 14.33862 361.20459 ] /Length 52 0 R /Resources << /ExtGState << /R1 4 0 R >> >> 
/Group 53 0 R >> 
stream
+1 g
0 i 
/RelativeColorimetric ri
/R1 gs 5.4883 357.0415 m
8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c
12.2998 356.5776 l
13.6924 351.7168 l
11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c
h
f
endstream
endobj
52 0 obj
202 
endobj
53 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
54 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
55 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 216.1709 337.92676 225.021 347.41455 ] /Length 56 0 R /Resources << /ExtGState << /R1 4 0 R >> >> 
/Group 57 0 R >> 
stream
+1 g
0 i 
/RelativeColorimetric ri
/R1 gs 225.021 342.0898 m
222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c
218.21 342.5537 l
216.8174 347.4146 l
218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c
h
f
endstream
endobj
56 0 obj
212 
endobj
57 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
59 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 5.48828 337.92676 225.021 361.20459 ] /Length 60 0 R /Resources << /ExtGState << /R1 4 0 R /R5 54 0 R >> /XObject << /Fm9 51 0 R /Fm10 55 0 R >> >> 
/Group 61 0 R >> 
stream
+q /RelativeColorimetric ri
/R5 gs /Fm9 Do
Q
q /R5 gs /Fm10 Do
Q
endstream
endobj
60 0 obj
64 
endobj
61 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
63 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 11.47559 342.00098 219.03418 357.13037 ] /Length 64 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 65 0 R >> 
stream
+0 G
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 219 342.5 m
11.5095 356.6313 l
S
endstream
endobj
64 0 obj
96 
endobj
65 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
66 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
67 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 5.48828 351.7168 14.33862 361.20459 ] /Length 68 0 R /Resources << /ExtGState << /R1 4 0 R >> >> 
/Group 69 0 R >> 
stream
+0 g
0 i 
/RelativeColorimetric ri
/R1 gs 5.4883 357.0415 m
8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c
12.2998 356.5776 l
13.6924 351.7168 l
11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c
h
f
endstream
endobj
68 0 obj
202 
endobj
69 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
71 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 216.1709 337.92676 225.021 347.41455 ] /Length 72 0 R /Resources << /ExtGState << /R1 4 0 R >> >> 
/Group 73 0 R >> 
stream
+0 g
0 i 
/RelativeColorimetric ri
/R1 gs 225.021 342.0898 m
222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c
218.21 342.5537 l
216.8174 347.4146 l
218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c
h
f
endstream
endobj
72 0 obj
212 
endobj
73 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
75 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 5.48828 337.92676 225.021 361.20459 ] /Length 76 0 R /Resources << /ExtGState << /R1 4 0 R /R6 66 0 R >> /XObject << /Fm12 63 0 R /Fm13 67 0 R /Fm14 71 0 R >> >> 
/Group 77 0 R >> 
stream
+q /RelativeColorimetric ri
/R6 gs /Fm12 Do
Q
q /R6 gs /Fm13 Do
Q
q /R6 gs /Fm14 Do
Q
endstream
endobj
76 0 obj
85 
endobj
77 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
79 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 224.47559 337.60303 233.29297 347.0957 ] /Length 80 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 81 0 R >> 
stream
+1 g
0 i 
/RelativeColorimetric ri
/R1 gs 224.4756 342.8623 m
227.3735 343.7437 230.999 345.3267 233.293 347.0957 c
231.2905 342.4526 l
232.7217 337.603 l
230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c
h
f
endstream
endobj
80 0 obj
214 
endobj
81 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
82 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
83 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm17 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 589.96094 316.11035 598.77832 325.60254 ] /Length 84 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 85 0 R >> 
stream
+1 g
0 i 
/RelativeColorimetric ri
/R1 gs 598.7783 320.3433 m
595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c
591.9634 320.7529 l
590.5322 325.6025 l
592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c
h
f
endstream
endobj
84 0 obj
217 
endobj
85 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
87 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm18 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 224.47559 316.11035 598.77832 347.0957 ] /Length 88 0 R 
/Resources << /ExtGState << /R1 4 0 R /R7 82 0 R >> /XObject << /Fm16 79 0 R /Fm17 83 0 R >> >> 
/Group 89 0 R >> 
stream
+q /RelativeColorimetric ri
/R7 gs /Fm16 Do
Q
q /R7 gs /Fm17 Do
Q
endstream
endobj
88 0 obj
65 
endobj
89 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
91 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm19 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 230.47021 320.20654 592.78369 342.99902 ] /Length 92 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 93 0 R >> 
stream
+0 G
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 592.7539 320.7056 m
230.5 342.5 l
S
endstream
endobj
92 0 obj
99 
endobj
93 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
94 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
95 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm20 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 224.47559 337.60303 233.29297 347.0957 ] /Length 96 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 97 0 R >> 
stream
+0 g
0 i 
/RelativeColorimetric ri
/R1 gs 224.4756 342.8623 m
227.3735 343.7437 230.999 345.3267 233.293 347.0957 c
231.2905 342.4526 l
232.7217 337.603 l
230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c
h
f
endstream
endobj
96 0 obj
214 
endobj
97 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
99 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm21 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 589.96094 316.11035 598.77832 325.60254 ] /Length 100 0 R 
/Resources << /ExtGState << /R1 4 0 R >> >> /Group 101 0 R >> 
stream
+0 g
0 i 
/RelativeColorimetric ri
/R1 gs 598.7783 320.3433 m
595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c
591.9634 320.7529 l
590.5322 325.6025 l
592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c
h
f
endstream
endobj
100 0 obj
217 
endobj
101 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
103 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm22 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 224.47559 316.11035 598.77832 347.0957 ] /Length 104 0 R 
/Resources << /ExtGState << /R1 4 0 R /R8 94 0 R >> /XObject << /Fm19 91 0 R /Fm20 95 0 R /Fm21 99 0 R >> >> 
/Group 105 0 R >> 
stream
+q /RelativeColorimetric ri
/R8 gs /Fm19 Do
Q
q /R8 gs /Fm20 Do
Q
q /R8 gs /Fm21 Do
Q
endstream
endobj
104 0 obj
85 
endobj
105 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
107 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
/CS /DeviceRGB 
>> 
endobj
109 0 obj
/DeviceRGB 
endobj
110 0 obj
<< /Filter /FlateDecode /Length 111 0 R /Height 108 /Width 128 /BitsPerComponent 8 
/ColorSpace 109 0 R >> 
stream
+H�엿kM�����")
�+[AAl+�AB�I@�@�I"�B4�)#H���G�'��e�7ü������3�{�Oq����<�}~�`������a�p9<<<99�����G�
�<���&k�� �C|��������������
|�6o�!�
����O	�F
�2����D~��
n��U��e��
���1���lyT����S����[r���,��su=���簝�
+��0kh
+�
�>�KSW^�A�"�&kIa/���� �9��W���Jw�&����
�7����n��A��	i����,�
�7�&Q�
!��[Ny���n�����s@/�C1 at A�g(�8`�s����
Ӏ�
��dLOOG3c��{�
W��
�l��k4�v��h���\���v7'w�1 �NO�^�����?�gw�6��7�aC�`dA�A�p}L,�,��黠� ���;+�Hy���2
��w��q����|�X_7��P	�/~a��E�,P���B�*_�P'Yi Ht;�?U��[Dn����?om�S@��
o
�_]�?�R�H.9���=�J(\�F�
D�ٿ��o$KjeT

�h
+��B$]6I�8�EȽ���
a��l"r[P��DV^�Whe��*�}�_�N��
��SV�q³

�5����������5�\v������t��?��P~kk��ϟ��Rw��J.��P
��.�D��HX� �o��εE"�R@�siiiuu�a���a�/_��{�r!`w����D@�ע �#P�Æ�
(�P
+Zh?��[E=��߿
4`�
+�/��b��`��*asv8==]\\\^^^�d~~~eeess�r�&��xq5�g��:���>+Y*�
�C��E������#��P.�D	��ayp�ǘO�E����/`L��
+x�O� �I��p]{��yedNMM��+�ݮ�
��P�^F��oDM��
+


��odS��T!�ȯI��/A����l��Œ�?~�@H+m_�|y����߿���;w666ԕ��Y��� R
�L���h�uW����7oޜ��|��~qbb<x���f�
+�
�A��.����Œ%�<_*�Z�����U��~�z2Ѯ."���Ǎ� ������
��<Ɣ]7�E+�O�3
��ǏuI
�W�_����c�@KP(��&
͑A�@|d��~�w��9�и�Vn`	r�
+t3o_�~��뗚0�6>?~<кI��(>��S���-K�
��l 3h�1<�+���y�a����Ӗ��;�e�%���+-�|񀸝)���Hy�[�V���଼���'��@��w۽����O�>��ٳg׮]��G�sii	*�5�A�Z �P�¾o���ſ2#��˺T|��4����E���c��,
N
+���r�ݻG���DG�����c�G_֧#>�1m...޸q͝<�nk�����F������;� 3�2�;N
+�p at Sw?��Y|p|��XV�ʐx�2"�?N'5����i����|��=/�?���-/�K����� k��=��<���!>\`�E�Qb޿�֭[8�1��g���N�l_=�<-7@�I+��۷�J<�~��:��
��Y���‚Ӭq�����
r6���$�,y��!��EF��=�@�b���]�6�k^��ܜ��kkk�|�<���+`�q����m&
�U�J7�c�65����[�%�^�r�����H����1���������������C]��1�f6�c�gμA�����$*Y^^��ų����A�kT��&ٔh���5�<�4
Lٱ�†��`
�����:ζ+++h���
�İTpK�Jk��m`��

�F@�F^�A悀�
X.B���
#\��aS���O7���[I��]������ҳRRr���DÃ�5R9��3i+��hE�Ԣ�3r3��h]D��`�U
��pA�*�N{-�iu���Z|��.hi����i��
x�e���O���揞��o�D�G���4�

a�
U��fO�MH���1,����z��W-��1��
���su��
��R@�&)�@^+�rn�6�(�|NCp��7�JF
#���cl�J��9�D"�H$�D"�H$�D"�H��
+0 
+�!{
endstream
endobj
111 0 obj
2119 
endobj
112 0 obj
<< /Filter /FlateDecode /Length 113 0 R >> 
stream
+H��W�n�F~��\&Xh8���xm������L)���Rt�����yʖ�{Q0
Y�Ǚ�|̧�����6����{�&�,V�ǺZU[v�dd4�ɯ��e=�%
�x-�n޾e��,_|)kP�Wͺd��G&_�?U�� M}_���.����ӻ۪)_Vۦ�ퟦ�f��e����|��ՐI(e�V����/�Eӱ����b��+�r���c�lz�IF�*�������̰ ~��{v}#�-�����˖w�)��Z���
�V{f��6f��h��β�X~��e~�1l��~| ��	Xk�VA2�7J�1����1���;ɴ��j��s-<�x�ƲE��L�
'4w�YP
+�.ϴ
\Gb/y��%AA˝��
ˍ�
��Zq���q6�uf�!!���	o�G�]��[04^C� [�y
رP��	�<��Da�I�( A�+{�踑@V+�BratwDgH��``�GI�/��YzE�I�2��1r
y3p=�KX����X�N�k��@�Zs�elM��M6ˌ0\�M-�z��2��Z���L8ɵNR�C3�%��4
��
,e�+�eJA�W	Yd�&�Q#4q�;�"��%�"'�@��	jB�
+"�K��*!�L9���!-o��Pr�4���
+�5mL������P��T�Q6XI�
b�R�d�v���#r y”��~�+�cIIGa�ؼd��H����G9p��7�748�!���S�T_

+HT��������E9�����D�@�Fd�I��

��
(Yj$�����H8\��@�8�%^���0dJX�;:֎j�Y�
��P
4�����.�u'�)��e E��Q�5
�~��
�IAE�u�	�e�b	��)K�
+�%<�G>eۀ�(�
�1�(r@ Q��
~��Nt(���ш'��/!0� �xj| t�\W�z�
T|� Ph���),�3�
��!��@�C�Ha�$W��6(RH9"�
��gN�BDO�=QJH���qD���D�&e�
�%���B�����c��m�<�g��<
�
	����
���I�2�����ʺ�t��tRF �HT�zB#00�l0]�%B�2h�]B�nj<5��=V�O��1|,�
þ����
���d��8�5}KT���D�B�����&�*	�yu���X��Hۂ��
p��K4@B���U���T��
�
��JP5�
b�#�:�L��ߤHB��0������
NY�Z\<�4"=?��0˭��<Q�F����߀И<H5�J�����]�"��e���6���͛�C����Z�c��Rj4�MG��͛���n�E�f�b�/�۷�lz2�%;�p���?uY;	`;�+�ƪ�$�b,�.� �5�GmiQ�Tq�Qr��4�;-��=/*V
E5�qC��W��zS����j�)�
����pVmo��j������,?�T��Ƭ��� �}4����7��z�;#;�3/~��д�7�v���v��(X>kvw{v}�]:��cw~AV�/�4_п���"۳�s��G&�o�W�����`B�w���	xB�������z���!qE��͏]n��i�+���*���߬
��B6�{���ʠ����L�׼���T͇�^U[6�эM}_��?����1 Sl
{	-5���z{���v8J/��5!��uΡM�sο
G�<>�� �P]�Ы�W��E�hڐ!`����{�a ��
������`B�r�^���l؄�	�Y��,(���X��y:���	TL$@�D�C��i@%c%
vw�r#����i�l�|{B���^L1
+(DOF/Y+�W��H]�`�
+��Of�A�C��x�3	�$�����@a0�9*�X簵!:�scb>�pG��]Ŧ|v����ϯ�A�ʇS���9(���e�|:Q�'�
ZC�@=d�� 
*���"��[QS�@	���x�>�6ã-���3��x% ����7�_i�ڳ�b�;�e?>�l�=۝$,�I����
9��/e��Jv�=���•_I��fr,19�7��a1�%��v^���4��8%
;
+�N�]Ku#�-���a0x(��_�t�R�)H�\i�.�UO��OY��Yx����	� �j��0�|�	����b��v����  e�
�
endstream
endobj
113 0 obj
2179 
endobj
114 0 obj
<< /Filter /FlateDecode /Length 115 0 R /Length1 1288 /Subtype /Type1C >> 
stream
+H�,P}Lw�k{DO���eQP�*s�S��Qt�|l�@��e--׃�%�vC��I-�`B�ls*�6\L�Q��:��}$[�̼W,������͓�y���$�㋓�'}p0cu�ި�D%�Z�>o�_%�0!
�KZ*,���>̞/A����u ��Т�0�T(&��@ߕ�j��h�Z�`2�s��#<�ɮ��۰fc�0~��s3���|S��M+��:��M,�3qf��u��,��``Sg�,l�΢�JEv.*���Z���:����5
f����r�.j�NTm��j��ך8V/�-%�}�^��u��
��un��	��a!�m�v`;�]�~,

+¤"q
sc�e��D#��.��X���z�zi�ʁ����B�����vd4�����R9G]ڃ�nFj���D+~Gq�h�Ί�y\z
�V@�
6B���aq�e�'�;�U�T�������Ҕ��C�䦦R�V+�G8 ���h�
��VbB.�����M��Tx
EAE�9Q�RO�!
�	���=�ô��
ZZ����
;�m�j|Z5uu_Ra}
+bQ$�#�� �7�v]sC ���1�pS�T��Ev���R��5��_�>e�M՟loh��&�
�=9*�
E�}heQ��?j��h�O�O��dG	��p_����[�Lp�bz���T���2Md$2��sa�(C>�
+��{�s)��J�W���O�l
��m
v’�NGSQUW��]�^oWGo?7�"-G˞pw�����K�GG3��Eݐ���CҤ�E�@엊d�M��_� �k�l
�D��5
uF(4Z+oU�Զ���a�e��8NTI�-Þ����x��WV۹Z��b��z�@�
+�-h/Z}�����JG�� �?[@�z�W��r_ܹv�2MnBy
�ʺp�rRx����*��13qD^m1"����[[��mN��[|��8]���5(5s�_Ac��^�>L�˛}��7��`�cՙS�����Y��5�}�
����C	(� ���^+'m
!ڃ�z�Jၐ�@+��6��qCɯ 
+�C",�kx�{�b�+� +�E����0�h@Ɛ>��hX
�C��:�s�rS���BA��(�8+�2O7�8ծ���/����~����ȟn+��ںh�;�RRO�����N`�j95P먫�5F�;K^�������������/��i����F�3p�E���D at u�U;*=g �Zg�>�͛
�_�  ��9�
endstream
endobj
115 0 obj
1238 
endobj
116 0 obj
<< /Filter /FlateDecode /Length 117 0 R /Length1 750 /Subtype /Type1C >> 
stream
+H�,�ILQ
��Pf�[Yj�B�wb���$�-j�(j
+-R:C[JJ
MZ�`�`��@'�(&�F�zКx3.��q;�Ř����@�|���[(���(�RU�TV�T�W8��xn�l�9�RX���
+�*�
 3so�|4
̀��P�94�g!��e�A�	�z����t;�y�i1�o��[��آҝ�
,Yd�Ku�,a�
|���pZm�f+{�\�[ޢ�
�lDZ�1V�b�-�y�!BL��m��Bˑ�2���S�(m�
R��h:�F)5Ǫbv�')$���%b%�ğ?�I"�7M�$�1E<
K��1�=W�T ��N
4�����V���;\��|���<�h:��G
�NC6�����^
+�^�۱�4�o΍�����oِ&ՖTn�[�%������v�y�{��.�e����EՓ�(�c��0�Ow1�I�
�]G�6mL����/r��SB�����=;l�[�\/̏C3_ƤW�1��v�P�q�6�.˒,]��3��|�����n��9�eT�w
y�A�^M�O�z��$�js�:l�\=BoǵV�:"&|c�3��`2�$|�VB�F���.�-��>�7X�T����O�|�1|�5.R���}ð&|>��ʎ���<p�Q�7���l��-�&�9�V��'�k�°$�>�Yœ�x�K۬�|
e��MБ�
�g?d���ӛmn�����3]�����D߀�7
~:)8�T9�f�ș����ᙕ0��'� 1.M�
endstream
endobj
117 0 obj
749 
endobj
xref
0 118 
0000000022 65535 f
+0000000016 00000 n
+0000000069 00000 n
+0000000133 00000 n
+0000000620 00000 n
+0000000729 00000 n
+0000000885 00000 n
+0000000964 00000 n
+0000001168 00000 n
+0000001205 00000 n
+0000002681 00000 n
+0000009456 00000 n
+0000026402 00000 n
+0000026425 00000 n
+0000028470 00000 n
+0000028492 00000 n
+0000028915 00000 n
+0000028936 00000 n
+0000029012 00000 n
+0000029093 00000 n
+0000029557 00000 n
+0000029578 00000 n
+0000000026 00001 f
+0000029654 00000 n
+0000030115 00000 n
+0000030136 00000 n
+0000000038 00001 f
+0000030212 00000 n
+0000030600 00000 n
+0000030620 00000 n
+0000030695 00000 n
+0000030776 00000 n
+0000031221 00000 n
+0000031242 00000 n
+0000031318 00000 n
+0000031399 00000 n
+0000031863 00000 n
+0000031884 00000 n
+0000000042 00001 f
+0000031960 00000 n
+0000032421 00000 n
+0000032442 00000 n
+0000000046 00001 f
+0000032518 00000 n
+0000032906 00000 n
+0000032926 00000 n
+0000000058 00001 f
+0000033001 00000 n
+0000034190 00000 n
+0000034415 00000 n
+0000035635 00000 n
+0000035864 00000 n
+0000036305 00000 n
+0000036326 00000 n
+0000036402 00000 n
+0000036483 00000 n
+0000036936 00000 n
+0000036957 00000 n
+0000000062 00001 f
+0000037033 00000 n
+0000037388 00000 n
+0000037408 00000 n
+0000000070 00001 f
+0000037483 00000 n
+0000037822 00000 n
+0000037842 00000 n
+0000037918 00000 n
+0000037999 00000 n
+0000038441 00000 n
+0000038462 00000 n
+0000000074 00001 f
+0000038538 00000 n
+0000038991 00000 n
+0000039012 00000 n
+0000000078 00001 f
+0000039088 00000 n
+0000039478 00000 n
+0000039498 00000 n
+0000000086 00001 f
+0000039573 00000 n
+0000040030 00000 n
+0000040051 00000 n
+0000040127 00000 n
+0000040208 00000 n
+0000040669 00000 n
+0000040690 00000 n
+0000000090 00001 f
+0000040766 00000 n
+0000041127 00000 n
+0000041147 00000 n
+0000000098 00001 f
+0000041222 00000 n
+0000041565 00000 n
+0000041585 00000 n
+0000041661 00000 n
+0000041742 00000 n
+0000042199 00000 n
+0000042220 00000 n
+0000000102 00001 f
+0000042296 00000 n
+0000042759 00000 n
+0000042781 00000 n
+0000000106 00001 f
+0000042858 00000 n
+0000043255 00000 n
+0000043276 00000 n
+0000000108 00001 f
+0000043352 00000 n
+0000000000 00001 f
+0000043445 00000 n
+0000043474 00000 n
+0000045737 00000 n
+0000045760 00000 n
+0000048019 00000 n
+0000048042 00000 n
+0000049391 00000 n
+0000049414 00000 n
+0000050273 00000 n
+trailer
<<
/Size 118
/Info 5 0 R 
/Root 1 0 R 

>>
startxref
50295
%%EOF
\ No newline at end of file
diff --git a/doc/equiangular.eps b/doc/equiangular.eps
new file mode 100644
index 0000000..5472528
--- /dev/null
+++ b/doc/equiangular.eps
@@ -0,0 +1,9081 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(TM) 7.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (equiangular.eps)
+%%CreationDate: 3/1/2001 12:01 AM
+%%BoundingBox: -8 48 706 633
+%%HiResBoundingBox: -7.3828 48.3843 705.4785 632.3408
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentFonts: Myriad-Roman
+%%+ Symbol
+%%+ Times-Italic
+%%DocumentSuppliedFonts: Myriad-Roman
+%%+ Symbol
+%%+ Times-Italic
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.1 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%AI5_FileFormat 3.0
+%AI3_ColorUsage: Color
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 219 -283 805 483
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 200 200
+%AI5_RulerUnits: 2
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI5_OpenToView: -197.5 899.5 1 1345 943 26 0 1 11 68 1 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:219 -283
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI7_Thumbnail: 128 108 8
+%%BeginData: 6254 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD59FFA8FD7CFF7DA8FF2752FD0CFF7DFD6CFFA87DFFFFFF7DA8FD
+%0AFF7D7D7DA8FD69FFA8A8A8FD11FF527D52FD68FFA8FD0BFFA8FD08FFA8
+%A8FD66FFA8A8A8FD0CFFA8A8FD08FFA852A8FD63FFA8A8FD18FF7D7DFD62
+%FFA87DFD1BFFA87DFD3BFFFD0AA8FD1AFFA8A8FD1CFF7D7DA8A8FD34FFA8
+%7DA87DA8A8FD0AFFA87DA87DA8A8FD12FFA87DFD17FFA8FD06FFA87D7D7D
+%FD31FFA87DA8FD16FF7DA8A8FD0DFFA8A8A8FD20FF7DA8FD2FFFA87DA8FD
+%1CFF7DA8A8FD09FF7DA8FD1CFF7DFD07FF7DFD2CFFA8A8FD22FFA8FD06FF
+%A8A8FD1FFF7DFD06FF7DFD2AFFA87DFD25FFA8A8A8FFA8A8FD28FFA8FFA8
+%A8FD25FFA8A8FD29FFA87DFD2AFF7D7DA852FD24FF7DA8FD28FFA8A8A8FF
+%7DFD24FFA8FD04FF52A87DFD24FFA8FD29FFA8FD05FFA8A8FD22FFA8FD05
+%FF52A8A8FD21FFA8A8FD28FFA8A8FD08FFA8A8FD26FF7D52A8FD20FFA8FD
+%28FFA8A8FD0BFFA8A8FD21FFA8FD04FFA8A8FD1FFFA8A8FD26FFA87DFD0E
+%FFA8A8FD20FFA8FD04FF52A87DFD1DFFA8FD26FFA8A8FD12FFA8FD1FFFA8
+%FD04FFA8A8A8FD1CFFA8FD26FF7DFD15FFA8FD23FFA87D7DFD1BFFA8FD25
+%FFA8A8FD17FFA8FD1FFFA8FFFFFF7D7D7DFD19FFA8A8FD23FF7DA8FD19FF
+%A8A8FD1EFFA8FD1FFFA8FD23FFA8FD1CFFA8FD1EFFA8FFFFFF7DA87DA8FD
+%17FFA8FD21FFA8A8A8FD1EFFA8FD22FF7DA87DFD16FFA8FD21FF7DFD22FF
+%A8FD1DFFA8FFFFA87DA8A87DFD14FFA8FD1FFFA8A8A8FD23FFA8FD1DFFA8
+%FFFFFFA87DA8FFA8FD32FFA8FD27FFA8FD1DFFA8FD19FFA8FD1DFFA87DFF
+%FFA87DA87DA8A8FD20FFA8A8FD20FFA87D7D7DFD12FFA8FD1BFFA8A87DA8
+%A8A8FD05FFA8A8A87DA8FD1DFFA8FD1DFFA8FFFFFF7DFD13FF7DFD1AFFA8
+%7DA8A8FD0DFFA8A87DFD1BFFA8A8FD1CFF7DFFFFFF527D7DFD10FFA8FD1A
+%FFA87DFD13FFA8FD1BFFA8FD20FF7D7DFD11FFA8FD18FF7DA8A8FD15FFA8
+%A8A8FD18FFA8A8FD20FFA87D7D7DFD0EFFA8FD16FFA87DA8FD19FFA8A8FD
+%18FFA8FD1CFFA8FD06FFA8FD0DFF7DFD15FFFD04A8FD1CFFA8FD17FF7DFD
+%1CFFA8FD04FF7DA87DFD0DFFA8FD14FFA8FD0DFFA8FD087DFD0BFFA8FD17
+%FFA8FD1BFFA8FD04FFA8FD0FFFA8FD11FFA8A8A8FFFFA8FD0AFF7D7DFD08
+%A852A8FD09FFA8A8FD16FFA8FD20FF7DA852A8FD0BFFA8FD11FF7DA8FFFF
+%FFA8FD0AFF52FD0BA87DA8FD09FFA8FD16FFA8FD21FFA8A87DA8A8FD09FF
+%A8FD0FFFA87DFD04FFA8A8FD09FF52A87DA8A8A87DA8A8A87DA8A8A87D7D
+%FD09FFA8FD16FFA8FD1BFFA8FD05FFA8A8FD0BFFA8FD0DFFA8A8FD06FFA8
+%FD09FF7DFD0FA87DA8FD08FFA8FD16FFA8FD1BFFA8FD05FF7DA8A8FD09FF
+%A8FD0DFF7DFD07FFA8FD09FF7D7DA8A8A87D27FD05A852527DA8A8A852FD
+%09FF7DFD15FF7DFD1BFFA8FD05FF7DFF7DFFA8FD07FFA8FD0BFFA8A8FD08
+%FFA8FD09FF7DFD04A8275252FD04A8272752FD04A87DFD08FFA8A8FD14FF
+%A8FD21FFA87D7DA8FD08FF7DFD09FF7DA8FD0AFFA8FD08FFA87DA87DA852
+%272752A8A87D7D272727A8A8A87D7DFD09FFA8FD14FFA8FD1BFF7DFD11FF
+%A8FD07FFA8A8FD06FFA8FD04FFA8FD09FF7DFD04A87D275227A8A8A85252
+%2727FD04A87DA8FD08FFA8FD15FFA8FD1AFFA8FD11FF7DFD05FFA8A8FFFF
+%A8A87DA87DA852A8FFFFFFA8FD09FF7DFD04A852272752A8A8A87D272727
+%FD05A852FD08FFA8A8FD14FFA8FD1AFFA8FD11FFA8FFFFFFA87DA87DA8FF
+%7DFF52FFA8FFA8FD04FFA8FD08FFA87DFD04A87D275227A8A8A87D272752
+%FD06A8FD09FFA8FD14FF7DFD2CFF7DFFA8A8A8FD04FFA87D7D527DA87D52
+%A8FFFFFFA8FD08FF7DA87DA8A8A87D2727527DA8A8A8272727A87DA8A8A8
+%52FD09FF7DFD14FFA8FD1AFFA8FD11FFA8A8FF7DFD05FFA8FD0AFFA8FD09
+%FFFD07A852527DFD04A87D277DFD05A87DFD09FFA8FD14FFA8FD1AFFA8FD
+%11FF7DFF52277DA87DA852A8A8FD09FF7DFD09FF7DFD15A87DA8FD08FF7D
+%FD14FFA8FD1AFFA8FD11FFA8FFFF7DFD07FFA8A87DA8A8A87DA8A87D7DFD
+%04A8FD04FFFD17A87DFD08FFA8FD14FFA8FD2CFF7DFD13FF7DFD04FFA87D
+%A87DA8527D7D7D527D7D7D527D277D277DA8A87DA8A8A87DA87DA8FD08FF
+%7DFD14FFA8FD1AFFA8FD11FFA8FD13FFA8FD04FFA8A8FFFFFFFD0AA8277D
+%27FD0A7DFD05A8FD04FFA8FD14FFA8FD1BFFA8FD10FF7DFD13FFA8A8FFFF
+%A852A8FFFFFF7DFD15A852FD05FFA8A87DA852A87DA87DA87DA87DA87DA8
+%7DFD08FFA8FD1BFFA8FD10FFA8FD14FFA8FFFFFF7DFD05FF7DFD04A87DFD
+%0AA87D7DA8A8A87DFD09FFA8FD0CFF7DA8A8A87DA8A8A87DA8A8A87DFD04
+%A8FD12FFA87DFD10FF7DFD14FFA8FFFF7DA8FD05FF7D7DA8A852277DA8A8
+%7DA8A8A87DA8A82727A8A8A87DFD09FFA8FD14FFA8FD08FF7DA87DA87DA8
+%7DA87DA87DA87DA87D2752FF5252FD10FFA8FD14FFA8FFA8A8FD06FF7DA8
+%A8A87D7DFD0AA87D7DA8A87DFD09FFA8FD0BFF7DFD09FFA8FD17FF52A8FD
+%13FF7DFD14FFA8A8FFA8FD06FFA87DFD12A87DFD09FFA8FD0AFF7DFD09FF
+%7DFD2DFFA8FD15FFA8FD09FF7DFD12A87DFD09FFA8FD0AFF7DA8FD08FFA8
+%FD2DFFA8A8FD14FF7DFD09FFA87D7DA8A8A87DA8A8A87DA8A8A87DA8A8A8
+%52FD09FF7DFD15FF7DFD2EFFA8FD15FFA8FD09FF7DFD0FA852FD0AFFA8FD
+%15FFA8FD2EFFA8FD15FFA8A8FD09FF52FD0DA852A8FD09FFA8FD15FFA8A8
+%FD2EFFA8FD16FFA8FD0AFF7D7DFD0AA852A8FD0AFFA8FD15FFA8FD30FF7D
+%FD15FFA8A8FD0AFF7D7D7DA87DA8A8A87D7D52FD0BFFA8FD16FFA8FD30FF
+%A8FD16FFA8FD0CFFA8FD057DA8FD0CFFA8FD17FFA8FD30FFA8FD17FFA8A8
+%FD1CFF7DFD17FF7DFD32FFA8FD17FFA8FD1BFFA8FD18FFA8FD32FFA8FD18
+%FFA8A8FD17FFA8A8FD18FFA8A8FD33FFA8FD19FFA8A8FD14FFA8A8FD19FF
+%A8FD34FF7DFD1BFF7DA8FD10FF7DA8FD1AFFA8FD36FFA8FD1CFFA87DA8FD
+%0AFF7DA8A8FD1CFFA8FD36FFA8FD1EFFA8A87DA87DA87DA87DA8A8FD1EFF
+%A8A8FD37FFA8FD46FFA8FD38FFA8A8FD44FF7DFD3AFFA8FD43FFA8FD3CFF
+%7DFD41FFA8A8FD3DFFA8FD40FFA8FD3EFFA8A8FD3EFFA8FD41FFA8FD3CFF
+%A8FD42FFA8A8FD3AFFA8A8FD44FFA8FD38FFA8FD47FFA8FD36FFA8A8FD48
+%FFA8FD34FFA8FD4BFF7DFD31FFA8A8FD4DFFA8FD2FFFA8FD50FFA8A8FD2C
+%FF7DFD53FFA8A8FD28FFA8A8FD56FF7DA8FD24FF7DA8FD5AFFA8A8FD1FFF
+%A8A8A8FD5EFF7DA8A8FD19FFA8A87DFD64FF7DA8A8FD13FFA8A87DA8FD69
+%FFA8A87DA87DA87DFD05FF7DA87DA87DA87DFD74FFFD05A8FDFCFFFDFCFF
+%FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDEFFFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+	put
+	/packedarray where not
+	{
+		userdict begin
+		/packedarray
+		{
+			array astore readonly
+		} bind def
+		/setpacking /pop load def
+		/currentpacking false def
+	 end
+		0
+	} if
+	pop
+	userdict /defaultpacking currentpacking put true setpacking
+	/initialize
+	{
+		Adobe_level2_AI5 begin
+	} bind def
+	/terminate
+	{
+		currentdict Adobe_level2_AI5 eq
+		{
+		 end
+		} if
+	} bind def
+	mark
+	/setcustomcolor where not
+	{
+		/findcmykcustomcolor
+		{
+			(AI8_CMYK_CustomColor)
+			6 packedarray
+		} bind def
+		/findrgbcustomcolor
+		{
+			(AI8_RGB_CustomColor)
+			5 packedarray
+		} bind def
+		/setcustomcolor
+		{
+			exch 
+			aload pop dup
+			(AI8_CMYK_CustomColor) eq
+			{
+				pop pop
+				4
+				{
+					4 index mul
+					4 1 roll
+				} repeat
+				5 -1 roll pop
+				setcmykcolor
+			}
+			{
+				dup (AI8_RGB_CustomColor) eq
+				{
+					pop pop
+					3
+					{
+						1 exch sub
+						3 index mul 
+						1 exch sub
+						3 1 roll
+					} repeat
+					4 -1 roll pop
+					setrgbcolor
+				}
+				{
+					pop
+					4
+					{
+						4 index mul 4 1 roll
+					} repeat
+					5 -1 roll pop
+					setcmykcolor
+				} ifelse
+			} ifelse
+		}
+		def
+	} if
+	/setAIseparationgray
+	{
+		false setoverprint
+		0 setgray
+		/setseparationgray where{
+			pop setseparationgray
+		}{
+			/setcolorspace where{
+				pop
+				[/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+				1 exch sub setcolor
+			}{
+				setgray
+			}ifelse
+		}ifelse
+	} def
+	
+	/gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+	userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+	userdict /level2?
+	systemdict /languagelevel known dup
+	{
+		pop systemdict /languagelevel get 2 ge
+	} if
+	put
+/level2ScreenFreq
+{
+ begin
+		60
+		HalftoneType 1 eq
+		{
+			pop Frequency
+		} if
+		HalftoneType 2 eq
+		{
+			pop GrayFrequency
+		} if
+		HalftoneType 5 eq
+		{
+			pop Default level2ScreenFreq
+		} if
+ end
+} bind def
+userdict /currentScreenFreq  
+	level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+	{
+		/setcmykcolor where not
+		{
+			/setcmykcolor
+			{
+				exch .11 mul add exch .59 mul add exch .3 mul add
+				1 exch sub setgray
+			} def
+		} if
+		/currentcmykcolor where not
+		{
+			/currentcmykcolor
+			{
+				0 0 0 1 currentgray sub
+			} def
+		} if
+		/setoverprint where not
+		{
+			/setoverprint /pop load def
+		} if
+		/selectfont where not
+		{
+			/selectfont
+			{
+				exch findfont exch
+				dup type /arraytype eq
+				{
+					makefont
+				}
+				{
+					scalefont
+				} ifelse
+				setfont
+			} bind def
+		} if
+		/cshow where not
+		{
+			/cshow
+			{
+				[
+				0 0 5 -1 roll aload pop
+				] cvx bind forall
+			} bind def
+		} if
+	} if
+	cleartomark
+	/anyColor?
+	{
+		add add add 0 ne
+	} bind def
+	/testColor
+	{
+		gsave
+		setcmykcolor currentcmykcolor
+		grestore
+	} bind def
+	/testCMYKColorThrough
+	{
+		testColor anyColor?
+	} bind def
+	userdict /composite?
+	1 0 0 0 testCMYKColorThrough
+	0 1 0 0 testCMYKColorThrough
+	0 0 1 0 testCMYKColorThrough
+	0 0 0 1 testCMYKColorThrough
+	and and and
+	put
+	composite? not
+	{
+		userdict begin
+		gsave
+		/cyan? 1 0 0 0 testCMYKColorThrough def
+		/magenta? 0 1 0 0 testCMYKColorThrough def
+		/yellow? 0 0 1 0 testCMYKColorThrough def
+		/black? 0 0 0 1 testCMYKColorThrough def
+		grestore
+		/isCMYKSep? cyan? magenta? yellow? black? or or or def
+		/customColor? isCMYKSep? not def
+	 end
+	} if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+	Adobe_typography_AI5 begin
+	Adobe_typography_AI5
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+ end
+ end
+	Adobe_typography_AI5 begin
+} def
+/terminate
+{
+	currentdict Adobe_typography_AI5 eq
+	{
+	 end
+	} if
+} def
+/modifyEncoding
+{
+	/_tempEncode exch ddef
+	/_pntr 0 ddef
+	{
+		counttomark -1 roll
+		dup type dup /marktype eq
+		{
+			pop pop exit
+		}
+		{
+			/nametype eq
+			{
+				_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+				put
+			}
+			{
+				/_pntr exch ddef
+			} ifelse
+		} ifelse
+	} loop
+	_tempEncode
+} def
+/havefont
+{
+	systemdict /languagelevel known
+		{
+		/Font resourcestatus dup
+			{ exch pop exch pop }
+		if
+		}
+		{
+		systemdict /FontDirectory get 1 index known
+			{ pop true }
+			{
+			systemdict /fileposition known
+				{
+				dup length 6 add exch
+				Ss 6 250 getinterval
+				cvs pop
+				Ss exch 0 exch getinterval
+				status
+					{ pop pop pop pop true }
+					{ false }
+				ifelse
+				}
+				{
+				pop false
+				}
+			ifelse
+			}
+		ifelse
+		}
+	ifelse
+} def
+/TE
+{
+	StandardEncoding 256 array copy modifyEncoding
+	/_nativeEncoding exch def
+} def
+/subststring {
+	exch 2 index exch search
+	{
+		exch pop
+		exch dup () eq
+		{
+			pop exch concatstring
+		}
+		{
+			3 -1 roll
+			exch concatstring
+			concatstring
+		} ifelse
+		exch pop true
+	}
+	{
+		pop pop false
+	} ifelse
+} def
+/concatstring {
+	1 index length 1 index length
+	1 index add
+	string
+	dup 0 5 index putinterval
+	dup 2 index 4 index putinterval
+	4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+	dup type /arraytype eq
+	{
+		/_wv exch def
+	}
+	{
+		/_wv 0 def
+	} ifelse
+	/_useNativeEncoding exch def
+	2 index havefont
+	{
+		3 index
+		255 string
+		cvs
+		
+		dup
+		(_Symbol_)
+		eq
+		{
+			pop
+			2 index
+			findfont
+			
+		}
+		{
+			1 index 0 eq
+			{
+				dup length 1 sub
+				1 exch
+				getinterval
+				
+				cvn
+				findfont
+			}
+			{
+				pop 2 index findfont
+			} ifelse
+		} ifelse
+	}
+	{
+		dup 1 eq
+		{
+			2 index 64 string cvs
+			dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+			{
+				exch pop dup havefont
+				{
+					findfont false
+				}
+				{
+					pop true
+				} ifelse
+			}
+			{
+				pop	dup
+				(-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+				{
+					exch pop dup havefont
+					{
+						findfont false
+					}
+					{
+						pop true
+					} ifelse
+				}
+				{
+					pop pop true
+				} ifelse
+			} ifelse
+			{
+				1 index 1 eq
+				{
+					/Ryumin-Light-Ext-RKSJ-V havefont
+					{/Ryumin-Light-Ext-RKSJ-V}
+					{/Courier}
+					ifelse
+				}
+				{
+					/Ryumin-Light-83pv-RKSJ-H havefont
+					{/Ryumin-Light-83pv-RKSJ-H}
+					{/Courier}
+					ifelse
+				} ifelse
+				findfont
+				[1 0 0.5 1 0 0] makefont
+			} if
+		}
+		{
+			/Courier findfont
+		} ifelse
+	} ifelse
+	_wv type /arraytype eq
+	{
+		_wv makeblendedfont
+	} if
+	dup length 10 add dict
+ begin
+	mark exch
+	{
+		1 index /FID ne
+		{
+			def
+		} if
+		cleartomark mark
+	} forall
+	pop
+	/FontScript exch def
+	/FontDirection exch def
+	/FontRequest exch def
+	/FontName exch def
+	counttomark 0 eq
+	{
+		1 _useNativeEncoding eq
+		{
+			/Encoding _nativeEncoding def
+		} if
+		cleartomark
+	}
+	{
+		/Encoding load 256 array copy
+		modifyEncoding /Encoding exch def
+	} ifelse
+	FontName currentdict
+ end
+	definefont pop
+} def
+/tr
+{
+	_ax _ay 3 2 roll
+} def
+/trj
+{
+	_cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+	/Tx
+	{
+		dup
+		currentpoint 3 2 roll
+		tr _psf
+		newpath moveto
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		dup
+		currentpoint 3 2 roll
+		trj _pjsf
+		newpath moveto
+		trj _ctm _pjss
+	} ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+	/Tx
+	{
+		tr _psf
+	} ddef
+	/Tj
+	{
+		trj _pjsf
+	} ddef
+} def
+/e1
+{
+W F 
+} def
+/i0
+{
+	/Tx
+	{
+		tr sp
+	} ddef
+	/Tj
+	{
+		trj jsp
+	} ddef
+} def
+/i1
+{
+	W N
+} def
+/o0
+{
+	/Tx
+	{
+		tr sw rmoveto
+	} ddef
+	/Tj
+	{
+		trj swj rmoveto
+	} ddef
+} def
+/r0
+{
+	/Tx
+	{
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		trj _ctm _pjss
+	} ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+	pop _ctm currentmatrix pop
+} def
+/TO
+{
+	iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+	pop _tm astore pop _ctm setmatrix
+	_tDict begin
+	/W
+	{
+	} def
+	/h
+	{
+	} def
+} def
+/TP
+{
+ end
+	iTm 0 0 moveto
+} def
+/Tr
+{
+	_render 3 le
+	{
+		currentpoint newpath moveto
+	} if
+	dup 8 eq
+	{
+		pop 0
+	}
+	{
+		dup 9 eq
+		{
+			pop 1
+		} if
+	} ifelse
+	dup /_render exch ddef
+	_renderStart exch get load exec
+} def
+/iTm
+{
+	_ctm setmatrix _tm concat
+	_shift aload pop _lineorientation 1 eq { exch } if translate
+	_scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+	_tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+	_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+	_render -1 eq
+	{
+	}
+	{
+		_renderEnd _render get dup null ne
+		{
+			load exec
+		}
+		{
+			pop
+		} ifelse
+	} ifelse
+	/_render -1 ddef
+} def
+/Ta
+{
+	pop
+} def
+/Tf
+{
+	1 index type /nametype eq
+	{
+		dup 0.75 mul 1 index 0.25 mul neg
+	} if
+	/_fontDescent exch ddef
+	/_fontAscent exch ddef
+	/_fontSize exch ddef
+	/_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+	/_fontHeight _fontSize ddef
+	findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+	pop neg 0 exch
+	_leading astore pop
+} def
+/Tt
+{
+	pop
+} def
+/TW
+{
+	3 npop
+} def
+/Tw
+{
+	/_cx exch ddef
+} def
+/TC
+{
+	3 npop
+} def
+/Tc
+{
+	/_ax exch ddef
+} def
+/Ts
+{
+	0 exch
+	_shift astore pop
+	currentpoint
+	iTm
+	moveto
+} def
+/Ti
+{
+	3 npop
+} def
+/Tz
+{
+	count 1 eq { 100 } if
+	100 div exch 100 div exch
+	_scale astore pop
+	iTm
+} def
+/TA
+{
+	pop
+} def
+/Tq
+{
+	pop
+} def
+/Tg
+{
+	pop
+} def
+/TG
+{
+	pop
+} def
+/Tv
+{
+	/_lineorientation exch ddef
+} def
+/TV
+{
+	/_charorientation exch ddef
+} def
+/Ty
+{
+	dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+	pop
+} def
+/T~
+{
+	Tx
+} def
+/Th
+{
+	pop pop pop pop pop
+} def
+/TX
+{
+	pop
+} def
+/Tk
+{
+	_fontSize mul 1000 div
+	_lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+	rmoveto
+	pop
+} def
+/TK
+{
+	2 npop
+} def
+/T*
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	Td
+} def
+/T*-
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	exch neg exch neg
+	Td
+} def
+/T-
+{
+	_ax neg 0 rmoveto
+	_lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+	_ctm currentmatrix pop
+	_tm astore pop
+	iTm 0 0 moveto
+} def
+/TS
+{
+	currentfont 3 1 roll
+	/_Symbol_ findfont _fontSize scalefont setfont
+	
+	0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	setfont
+} def
+/Xb
+{
+	pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+	pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+	currentfont 5 1 roll
+	dup havefont
+		{
+		findfont _fontSize scalefont setfont
+		}
+		{
+		pop
+		exch
+		} ifelse
+	2 index 0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	pop	pop
+	setfont
+} def
+/T^	/X^	load def
+%%EndResource
+%%BeginResource: procset AGM_Gradient_Sep 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient_Sep 5 dict dup begin put
+/AGM_Gradient_Sep_private 100 dict def
+/initialize{
+	AGM_Gradient_Sep begin
+	AGM_Gradient_Sep_private begin
+	_compositeJob{
+		initializeSinglePassSeps
+	}{
+		initializeMultiPassSeps
+	}ifelse
+	initializeSeps
+	AGM_Gradient_private begin
+		/_fillSD newSpotDict def
+		/_rampSD newSpotDict def
+		/_nCustomColorSD nd
+ end
+	AGM_Gradient_Sep_private 
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient_Sep
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop	
+ end
+}def
+/terminate{
+	currentdict AGM_Gradient_Sep eq{
+	 end
+	}if
+}def
+AGM_Gradient_Sep_private begin
+/initializeSeps{
+	/currentoverprint { _of } def
+	_noImage not _level2PS not and{
+		/linealFill{
+			currentoverprint{
+				0 0 1 1 rectfill
+			}{
+				mySave
+				8 setImageParms
+				_color{
+					_nCustomColorSD begin
+						cyan magenta yellow black
+	
+						_spotColor{
+							spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put
+							spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put
+						}if
+				 end
+	
+					4{
+						makeByte8 4 1 roll
+					}repeat
+					true 4 _nCustomColorSD ncolorimage
+				}{
+					_nCustomColorSD/black get 1 exch sub makeByte8 
+					_nCustomColorSD bwImage
+				}ifelse
+				myRestore
+			}ifelse
+		}def
+	}if
+	/_whiteBytes 1 makeByte8 pt
+	 /knockOut{
+		_noImage _level2PS or currentoverprint or{
+			gsave
+			false setoverprint
+			1 setgray 
+			0 0 1 1 rectfill
+			grestore
+		}{
+			8 setImageParms _whiteBytes /_image load 5 execImage
+		}ifelse
+	}def
+	/newSpotDict{
+		11 dict dup begin
+			/nSpots 2 def
+			/spot1 7 dict def
+			/spot2 7 dict def
+	 end
+	}def
+	/initSpotData
+	{
+	 begin
+			/name nd
+			/tintImage nd
+			/tintValue nd
+			/spot_C nd
+			/spot_M nd
+			/spot_Y nd
+			/spot_K nd
+	 end
+	}def
+	/initSpotDict{
+	 begin
+			/cyanInk nd
+			/magentaInk nd
+			/yellowInk nd
+			/blackInk nd
+			/cyan nd
+			/magenta nd
+			/yellow nd
+			/black nd
+			spot1 initSpotData
+			spot2 initSpotData
+	 end
+	}def
+	/copySpotDict{
+		/_dst xp
+	 begin
+			cyanInk magentaInk yellowInk blackInk
+			cyan magenta yellow black
+			spot1 spot2
+	 end
+		_dst begin
+			/spot1 spot1 maxlength dict def
+			/spot2 spot2 maxlength dict def
+			spot2 copy pop
+			spot1 copy pop
+			/black xd
+			/yellow xd
+			/magenta xd
+			/cyan xd
+			/blackInk xd
+			/yellowInk xd
+			/magentaInk xd
+			/cyanInk xd
+	 end
+	}def
+	/setCustomColor
+	{
+		1 index /Black eq{
+			6 1 roll 5 npop
+			1 exch sub
+			setgray
+		}{
+			6 1 roll _ccAry1 astore exch
+			dup null eq{
+				pop 0
+			}if
+			setcustomcolor
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		
+		_colorStyle 0 eq{
+			0 0 0
+			4 -1 roll
+			1 exch sub
+			_spotColor{
+				/_colorStyle 3 pt
+				/Black
+				1 index
+				1 exch sub
+			}if
+		}if
+		_colorStyle 2 eq{
+			3 npop
+		}if
+		_rampSD _fillSD copySpotDict
+		
+		_colorStyle 4 eq{ 
+			pop
+			9 2 roll 3 npop 6 -2 roll
+		} if
+		
+		_colorStyle 3 eq _colorStyle 4 eq or{ 	
+				
+			_fillSD begin
+				/_spot1 spot1 pt
+				/_spot2 spot2 pt
+		 end
+			
+			exch dup _spot1/name get eq{
+				_spot1 _spot2
+			}{
+				_spot2 _spot1
+			}ifelse
+		 begin
+			 begin
+					/name xd
+					1 exch sub /tintValue xd
+					4{
+						tintValue mul 4 1 roll
+					}repeat
+					_spotColor not{
+						/tintValue null def
+					}if
+			 end
+				/tintValue 0 def
+		 end
+		}if
+		_fillSD nsetcustomcolor
+	}def
+	/renderCMYK{
+		spot1/name get null eq
+		spot2/name get null eq and
+		dup not{
+			pop
+			spot1 spotConverted
+		}if
+		dup not{
+			pop
+			spot2 spotConverted
+		}if
+	}def
+	/currentInk{
+		true
+		_inRipSep{
+			currentcolorspace 0 get
+			dup /DeviceGray eq
+			1 index /DeviceCMYK eq or{
+				pop
+				currentcmykcolor add add add 0 eq{
+					pop false
+				}if
+			}{
+				/Separation eq{
+					currentcolor 0 eq{
+						pop false
+					}if
+				}if
+			}ifelse
+		}{
+			currentgray 1 eq{
+				pop false
+			}if
+		}ifelse
+	}def
+	/currentInkN{
+	
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		{
+			currentInk
+		}{
+			gsave
+			_spot1 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			_spot2 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			grestore
+			
+			or
+		} ifelse
+	}def
+	/fill_ /fill load def
+	/fillOvp{
+		currentoverprint{
+			_inRipSep{
+				currentcolorspace 0 get
+				dup /DeviceGray eq
+				1 index /DeviceCMYK eq or{
+					pop
+					currentcmykcolor add add add 0 eq{
+						newpath
+					}if
+				}{
+					/Separation eq{
+						currentcolor 0 eq{
+							newpath
+						}if
+					}if
+				}ifelse
+			}{
+				currentgray 1 eq{
+					newpath
+				}if
+			}ifelse
+		}if
+		fill_
+	}def
+	/fill{
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		
+		{
+			fillOvp
+		}{
+			_spot1 begin
+				gsave
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+				}{
+					1 setgray
+				}ifelse
+				fillOvp 
+				grestore
+		 end
+			_spot2 begin
+				name null ne{
+					gsave
+					true setoverprint
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					fillOvp
+					grestore
+				}if
+		 end
+			newpath
+		}ifelse
+	}def
+	/expandSpot{
+		_spotColor{
+			/_len xp
+			_rampSD begin
+				spot1 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+				spot2 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+		 end
+		}{
+			pop
+		}ifelse
+	}def
+	/rampImage{
+		currentoverprint{
+			rectImage
+		}{
+			_enabledSmoothShade{
+				fillRamp
+			}{
+				_color{
+					_rampSD begin
+						/cyanInk _cyanData 0 ne def
+						/magentaInk _magentaData 0 ne def
+						/yellowInk _yellowData 0 ne def
+						/blackInk _blackData 0 ne def
+				 end
+					
+					_nSamples setImageParms
+					_nSamples expandSpot
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 _rampSD ncolorimage
+				}{
+					_rampSD begin
+						/cyanInk false def
+						/magentaInk false def
+						/yellowInk false def
+						/blackInk true def
+				 end
+					_nSamples setImageParms 
+					_blackData _rampSD bwImage
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/nsetcustomcolor where{
+		pop
+	}{
+		/nsetcustomcolor
+		{
+			/_nCustomColorSD xp
+			_nCustomColorSD begin
+				4 copy
+				/black xd
+				/yellow xd
+				/magenta xd
+				/cyan xd
+				4 copy
+				0 ne /blackInk xd
+				0 ne /yellowInk xd
+				0 ne /magentaInk xd
+				0 ne /cyanInk xd
+		 end
+			setcmykcolor
+		}def
+	}ifelse
+	/nsetcustomcolorend where{
+		pop
+	}{
+		/nsetcustomcolorend
+		{
+			/_nCustomColorSD null pt
+		}def
+	}ifelse
+}def
+/initializeSinglePassSeps{
+	/_decodeNorm	[0 1] pt
+	/_decodeInvert 	[1 0] pt
+	/spotConverted
+	{
+	 begin
+			name null eq{
+				false
+			}{
+				tintValue null eq tintImage null eq and{
+					true
+				}{
+					_inDistiller{
+						false
+					}{
+						false
+						currentpagedevice/SeparationColorNames get{name eq or}forall
+						not
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/dictImage
+	{
+		20 dict dup begin
+			/Dict xd
+			/Decode xd
+			/DataSource xd
+			/ImageMatrix xd
+			/BitsPerComponent xd
+			/Height xd
+			/Width xd
+			/ImageType 1 def
+			Dict
+	 end
+		/_image load 1 execImage
+	}def
+	/bwImage{
+	 begin
+			gsave
+			currentoverprint{
+				blackInk{
+					[/Separation /Black /DeviceGray{}] setcolorspace
+					_decodeInvert dictImage
+				}{
+					5 npop
+				}ifelse
+			}{
+				/DeviceGray setcolorspace
+				_decodeNorm dictImage
+			}ifelse
+			grestore
+	 end
+	}def
+	/ncolorimage where{
+		pop
+	}{
+		/ncolorimage{
+		 begin
+				renderCMYK{
+					cyanInk 
+					magentaInk and
+					yellowInk and
+					blackInk and
+					not
+					currentoverprint 
+					and{	
+						pop pop
+						gsave
+						cyanInk{
+							8 copy
+							[/Separation /Cyan /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}if
+						magentaInk{
+							8 copy
+							[/Separation /Magenta /DeviceGray{}] setcolorspace
+							4 -1 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						yellowInk{
+							8 copy
+							[/Separation /Yellow /DeviceGray{}] setcolorspace
+							4 -2 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						blackInk{
+							4 -3 roll
+							[/Separation /Black /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}{
+							8 npop
+						}ifelse
+						grestore
+					}{
+						/_colorimage load 10 execImage
+					}ifelse
+				}{
+					6 npop
+					gsave
+					spot1 begin
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							4 copy
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							1 setgray fill
+						}ifelse
+				 end
+					spot2 begin
+						true setoverprint
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							4 npop
+							1 setgray fill
+						}ifelse
+				 end
+					grestore
+				}ifelse
+		 end
+		}def
+	}ifelse
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_renderCMYK not{
+			_rampSD begin
+				[/DeviceN 
+					[
+					spot1 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					spot2 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					]
+					_inDistiller {
+						/DeviceCMYK [
+							spot1 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 1
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							spot2 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 2
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							5 1 roll 6 -2 roll add
+							dup 1 eq {
+								pop
+								8 /index cvx 1 /exch cvx /sub cvx
+								9 1 /roll cvx
+							}{
+								2 eq {
+									8 /index cvx 1 /exch cvx /sub cvx
+									10 1 /roll cvx
+								}if
+							}ifelse
+							4 1 /roll cvx 5 -2 /roll cvx
+							8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx
+							3 1 /roll cvx 4 -2 /roll cvx
+							7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx
+							2 1 /roll cvx 3 -2 /roll cvx
+							6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx
+							5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx
+							6 -2 /roll cvx /pop cvx /pop cvx
+						] cvx bind
+					}{
+						/DeviceCMYK {}
+					}ifelse
+				] setcolorspace
+		 end
+			/_nColorSpace currentcolorspace pt
+		}if
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C0_Space _nColorSpace pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C1_Space _nColorSpace pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/initializeMultiPassSeps{
+	/invertXfer{
+		[
+		{
+			1 exch sub
+		}/exec load systemdict /currenttransfer get exec /exec load
+		] cvx systemdict /settransfer get exec
+	}def
+	/ccThrough{
+		gsave
+		1 setCustomColor
+		currentcmykcolor
+		grestore
+		add add add 0 ne
+	}def
+	/spotConverted
+	{
+	 begin
+			_isCMYKSep not{
+				false
+			}{
+				name null eq{
+					false
+				}{
+					tintValue null eq tintImage null eq and{
+						true
+					}{
+						spot_C spot_M spot_Y spot_K name ccThrough
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/spotChannel
+	{
+		_isCMYKSep{
+			pop false
+		}{
+			/_spotDict xp
+				_spotDict/name get null eq{
+					false
+				}{
+					_spotDict/spot_C get
+					_spotDict/spot_M get
+					_spotDict/spot_Y get
+					_spotDict/spot_K get
+					_spotDict/name get
+					ccThrough 
+				}ifelse
+		}ifelse
+	}def
+	/getChannelData
+	{
+		_isCMYKSep dup{
+			pop renderCMYK
+		}if
+		{
+			_blackPlate{
+				4 1 roll 3 npop blackInk
+			}{
+				_yellowPlate{
+					4 2 roll 3 npop yellowInk
+				}{
+					_magentaPlate{
+						4 3 roll 3 npop magentaInk
+					}{
+						3 npop cyanInk
+					}ifelse
+				}ifelse
+			}ifelse
+			{
+				true /nonZeroData
+			}{
+				true /zeroData
+			}ifelse
+		}{
+			4 npop
+			spot1/name get null ne 
+			spot1 spotChannel and{
+				spot1/tintImage get dup null ne{
+					false /nonZeroData
+				}{
+					pop false /noData
+				}ifelse
+			}{
+				spot2/name get null ne 
+				spot2 spotChannel and{
+					spot2/tintImage get dup null ne{
+						false /nonZeroData
+					}{
+						pop false /noData
+					}ifelse
+				}{
+					false /noData
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/renderChannelData
+	{
+		/_tmp xp
+		_tmp /nonZeroData ne currentoverprint and{
+			pop
+			_tmp /zeroData eq{pop}if
+			4 npop
+		}{
+			_tmp /nonZeroData eq{
+				{
+					invertXfer
+				}if
+					systemdict/image
+				get 5 execImage
+			}{
+				pop
+				_tmp /zeroData eq{pop}if
+				4 npop
+				knockOut
+			}ifelse
+		}ifelse
+	}def
+	/bwImage{
+	 begin
+			gsave
+			dup dup dup
+			getChannelData
+			exch pop false exch
+			renderChannelData
+			grestore
+	 end
+	}def
+	/ncolorimage{
+	 begin
+			pop pop
+			gsave
+			spot2/name get null ne spot2 spotChannel and{
+				true setoverprint
+			}if
+			getChannelData 
+			renderChannelData
+			grestore
+	 end
+	}def
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C0_Space /DeviceGray pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C1_Space /DeviceGray pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset AGM_Gradient 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient 20 dict dup begin put
+/AGM_Gradient_private 201 dict def
+/initialize
+{
+	AGM_Gradient begin
+	AGM_Gradient_private begin
+	initializeVars
+	
+	/bd systemdict/mark get def
+	/ed
+		_level2PS 
+		{
+			(>>)
+		}{
+			(counttomark 2 idiv dup dict begin {def} repeat pop currentdict end)
+		} ifelse
+	cvx def
+	
+	_level2PS{
+		initializeLev2
+	}{
+		initializeLev1
+	}ifelse
+	
+	queryDevice
+	
+	initializeRectFill
+	initializeShading
+	initializeOps
+	_producingSeps{
+		AGM_Gradient_Sep/initialize get exec
+	}{
+		initializeComposite
+	}ifelse
+	_illustrator{
+		/f{}def
+		/F{}def
+		/s{}def
+		/S{}def
+		/b{}def
+		/B{}def
+	}if
+	/image where{
+		/image get /_image xd
+	}if
+	/colorimage where{
+		/colorimage get /_colorimage xd
+	}if
+	AGM_Gradient_private
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop
+ end
+}def
+/initializeAI
+{
+	pop pop 
+	AGM_Gradient/AGM_Gradient_private get /_illustrator true put
+	AGM_Gradient/initialize get exec
+		AGM_Gradient begin
+}def
+/unload{
+	systemdict/languagelevel known{
+		systemdict/languagelevel get 2 ge{
+			userdict/AGM_Gradient_Sep 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+			userdict/AGM_Gradient 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+		}if
+	}if
+}def
+/terminate{
+	currentdict AGM_Gradient eq{
+	 end
+	}if
+}def
+ 
+AGM_Gradient_private begin
+/initializeVars{
+	/_d255 256 array def
+	0 1 255{
+		_d255 exch dup 255 div put
+	}bind for
+	/_d255- 256 array def
+	0 1 255{
+		_d255- exch 1 _d255 2 index get sub put
+	}bind for
+	/_sSave nd
+	/_dUserSpace matrix defaultmatrix def
+	/_bUMatrix matrix def
+	/_imageMatrix matrix def
+	/_saveMatrix matrix def
+	/_xm matrix def
+	/_ccAry1 5 array def
+	/_bbox 4 array pt
+	/_level2PS 
+		systemdict/languagelevel known dup{
+			pop systemdict/languagelevel get 2 ge
+		}if
+	def
+	/_level3PS
+		_level2PS systemdict/shfill known and
+	def
+	currentdict /_illustrator known not{
+		/_illustrator false def
+	}if
+	
+}def
+/initializeOps
+{
+	AGM_Gradient begin
+	currentdict/Bc known not{
+		/Bc{
+		
+			_renderFlag 2 eq _enabledSmoothShade or{
+				6 npop
+			}{
+				pushBSpace
+				_rampIndex 0 eq{
+					pop pop
+					setCStop
+				}if
+				linealFill
+				popBSpace
+			}ifelse
+		
+		}def
+	}if
+	
+	currentdict/Bg known not{
+		/Bg{
+			10 npop
+			/_gradName xp
+			/_renderFlag xp
+			/_enabledSmoothShade false pt
+		
+			_renderFlag 2 ne{
+		
+				_illustrator{
+					_of setoverprint
+				}if
+		
+				/_enabledSmoothShade 
+					_level3PS{
+						_usingSmoothShade
+						_producingSeps not
+						currentoverprint not or and
+						_noImage not and
+					}{
+						false
+					}ifelse
+				pt
+				
+				_illustrator _eo and _renderFlag 3 eq or{
+					eoclip
+				}{
+					clip
+				}ifelse
+		
+				_gradNames _gradName 2 copy known{
+					get
+					mark exch aload pop
+					/_gradType xp
+					1 sub dup /_rampIndex xp
+					/_maxRampIndex xp
+					mark exch aload pop
+					0 0
+				}if
+				pop pop
+				getRampData
+			}{
+				mark mark
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bm known not{
+		/Bm{
+			_renderFlag 2 ne{
+				_gradType 0 eq{
+					linealRamp
+				}{
+					radialGrad
+				}ifelse
+			}{
+				6 npop
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bh known not{
+		/Bh{
+			2 npop
+			/_yHi xp
+			/_xHi xp
+			/_radHilite _xHi 0 ne _yHi 0 ne or pt
+		}def
+	}if
+	
+	currentdict/Bn known not{
+		/Bn{
+			AGM_Gradient_private begin
+				dict /_gradNames xp
+		 end
+		}def
+	}if
+	
+	currentdict/Bd known not{
+		/Bd{
+			AGM_Gradient begin
+			AGM_Gradient_private begin
+				/_nColorsBd xp
+				/_gradType xp
+				/_gradName xp
+		}def
+	}if
+	
+	currentdict/BD known not{
+		/BD{
+				currentdict/_gradNames known not{
+					/_gradNames 20 dict def
+				}if
+				] _nColorsBd _gradType
+				]  _gradName exch /_gradNames xput
+		 end
+		 end
+		}def
+	}if
+	
+	currentdict/Bb known not{
+		/Bb{
+		
+			AGM_Gradient/AGM_Gradient_private get /_illustrator get not{
+				AGM_Gradient begin
+			}if
+			AGM_Gradient_private begin
+			_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin
+			}if
+			mySave
+		}def
+	}if
+	
+	currentdict/BB known not{
+		/BB{
+		
+			/_tmp xp
+			cleartomark cleartomark
+		
+			_tmp dup
+			_renderFlag
+		
+			myRestore
+		
+			_producingSeps{
+			 end
+			}if
+		
+			_illustrator dup
+		 end
+			not {
+			 end
+			}if
+		
+			{
+				2 ne exch 0 gt and{
+					2 eq{
+						s
+					}{
+						S
+					}ifelse
+				}{
+					pop newpath
+				}ifelse
+			}{
+				pop newpath
+			}ifelse
+		
+		
+		}def
+	}if
+	
+	currentdict/Xm known not{
+		/Xm{
+			_xm astore pop
+		}def
+	}if
+	
+ end
+}def
+/queryDevice{
+	/_inDistiller
+		systemdict /currentdistillerparams known
+	def
+	/_inRipSep
+		_level2PS{
+			currentpagedevice/Separations 2 copy known{
+				get
+			}{
+				pop pop false
+			}ifelse
+		}{
+			false
+		}ifelse
+		_inDistiller or
+	def
+	/_noImage /lv1Fix where{
+		pop lv1Fix
+	}{
+		false
+	}ifelse
+	def
+	/_useShells where{
+		/_useShells get /_usingShells xp
+	}{
+		/_usingShells false def
+	}ifelse
+	
+	/_useSmoothShade where{
+		pop
+	}{
+		/_useSmoothShade false def 
+	}ifelse
+	/_forceToCMYK where{
+		pop
+	}{
+		/_forceToCMYK false def 
+	}ifelse
+	/_cyanPlate 1 0 0 0 testCMYKColorThrough def
+	/_magentaPlate 0 1 0 0 testCMYKColorThrough def
+	/_yellowPlate 0 0 1 0 testCMYKColorThrough def
+	/_blackPlate 0 0 0 1 testCMYKColorThrough def
+	/_compositeJob
+		_cyanPlate _magentaPlate and _yellowPlate and _blackPlate and
+	def
+	/_isCMYKSep
+		_cyanPlate _magentaPlate or _yellowPlate or _blackPlate or
+	def
+	/_compositeSpotDevice where{
+		pop
+	}{
+		/_compositeSpotDevice _compositeJob not _inRipSep or{
+			1
+		}{
+			0
+		}ifelse
+		def
+	}ifelse
+	/_producingSeps _compositeSpotDevice 0 ne def
+	/_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
+	/_dpiThreshold where{
+		pop
+	}{
+		/_dpiThreshold 600 def
+	}ifelse
+	/_screenFreqThreshold where{
+		pop
+	}{
+		/_screenFreqThreshold 150 def
+	}ifelse
+	/_contoneDevice where{
+		pop
+	}{
+		/_contoneDevice false def
+	}ifelse
+	/_subSampleOK 
+		_deviceDPI _dpiThreshold le 
+		currentScreenFreq _screenFreqThreshold le and 
+		_contoneDevice not and 
+	def
+}def
+/initializeRectFill{
+	/rectfill where dup{
+		exch pop not _producingSeps or
+	}{
+		not
+	}ifelse
+	{
+		/rectfill{
+			gsave
+			newpath
+			4 2 roll moveto
+			1 index 0 rlineto
+			0 1 index rlineto
+			1 index neg 0 rlineto
+			pop pop
+			closepath
+			fill
+			grestore
+		}def
+	}if
+}def
+/initializeLev1{
+	/currentScreenFreq{
+		currentscreen pop pop
+	}def
+	/_byte 1 string def
+	/colorimage where{
+		pop
+	}{
+		/colorimage{
+			pop pop
+			/_blackTmp xp
+			/_yellowTmp xp
+			/_magentaTmp xp
+			/_cyanTmp xp
+			/_cnt 0 pt
+			[
+			_byte dup 0
+			_cyanTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx
+			_magentaTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx
+			_yellowTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx
+			_blackTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx
+			/add cvx /add cvx /add cvx 1 /exch cvx /sub cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/dup cvx 1 /gt cvx{
+				pop 1
+			}/if cvx
+			255 /mul cvx /cvi cvx
+			256 /mod cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/put cvx
+			/_cnt dup cvx 1 /add cvx /pt cvx
+			] cvx
+			bind
+			/_image load 5 execImage
+		}def
+	}ifelse
+}def
+/initializeLev2{
+	/level2ScreenFreq{
+	 begin
+		60
+		HalftoneType 1 eq{
+			pop Frequency
+		}if
+		HalftoneType 2 eq{
+			pop GrayFrequency
+		}if
+		HalftoneType 5 eq{
+			pop Default level2ScreenFreq
+		}if
+		 end
+	}def
+	/currentScreenFreq{
+		currenthalftone level2ScreenFreq
+	}def
+}def
+/initializeShading{
+	_useSmoothShade _level3PS and{
+		/_usingSmoothShade true pt
+		initializeLev3_Ops
+	}{
+		/_usingSmoothShade false pt
+	}ifelse
+}def
+/initializeLev3_Ops
+{
+	/initShFill{
+		/_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt
+		/_rampFuncsArray _maxRampIndex array pt
+		/_boundsArray _maxRampIndex 1 sub array pt
+		/_encodeArray _maxRampIndex 2 mul array pt
+		/_beginCoord _rampPoint pt
+		/_colorSpace null pt
+		/_firstFill _rampIndex _maxRampIndex eq pt
+		/_lastFill false pt
+	}def
+	/linealShFill{
+		popBSpace
+		_xm aload pop pushBSpace
+		
+		/_size _index 1 add pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray 0 _size getinterval pt
+			/_boundsArray _boundsArray 0 _size 1 sub getinterval pt
+			/_encodeArray _encodeArray 0 _size 2 mul getinterval pt
+		}if
+		
+		bd
+			/ShadingType 2
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_firstFill _lastFill]
+			/Domain [0 1] 
+			/Coords [_beginCoord 0 _endCoord 0]
+		ed
+		shfill
+	}def
+	
+	/radialShFill{
+		/_size _maxRampIndex _index sub pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray _index _size getinterval pt
+			/_boundsArray _boundsArray _index _size 1 sub getinterval pt
+			/_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt
+		}if
+		
+		/_rampLen _beginCoord _endCoord sub pt
+		bd
+			/ShadingType 3
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_lastFill _firstFill]
+			/Domain [0 1] 
+			/Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] 
+		ed
+		shfill
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+	}def
+	
+	%
+	/sampFunc{
+		/_tmp exch pt
+		bd
+			_tmp length 1 eq {
+				_tmp 0 get
+				/_tmp 2 string pt
+				dup _tmp 0 3 -1 roll put
+				_tmp 1 3 -1 roll put
+			}if
+			/FunctionType 0
+			/Order 1
+			/Size [_tmp length]
+			/Domain [0 1]
+			/BitsPerSample 8
+			/DataSource _tmp
+			/Range [0 1]
+		ed
+	}def
+	
+	/fillRamp{
+	
+	
+		/_invert _midPoint 0.5 lt pt
+		_rampIndex _maxRampIndex eq {
+			initShFill
+		}if
+		
+		getRampColorSpace
+		
+		_colorSpace null eq{
+			/_colorSpace _rampColorSpace pt
+		}{
+			_colorSpace _rampColorSpace ne _rgbInCMYK or{
+				/_index _index 1 
+				_gradType 0 eq{
+					sub pt
+					linealShFill
+				}{
+					add pt
+					radialShFill
+				}ifelse
+				initShFill
+				/_colorSpace _rampColorSpace pt
+			} if
+		}ifelse
+		/_endCoord _endPoint pt	
+		/_rgbInCMYK false pt
+		_producingSeps _forceToCMYK or _rgbRamp and {
+			_spotColor{
+				_renderCMYK
+			}{
+				_isCMYKSep
+			}ifelse
+		}{
+			false
+		}ifelse
+		{
+			_compositeJob{
+				/_rgbInCMYK true pt
+				_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+				dup length string copy /_kData exch pt
+				dup length string copy /_yData exch pt
+				dup length string copy /_mData exch pt
+				dup length string copy /_cData exch pt
+			}{
+				_rampFuncsArray _index
+					_cyanPlate{_cyanData}if
+						_magentaPlate{_magentaData}if
+						_yellowPlate{_yellowData}if
+						_blackPlate{_blackData}if
+					_nSamples expandOne
+					sampFunc
+					dup begin /Decode [1 0] def end
+				put
+				/_invert false pt
+			}ifelse
+		}{
+			_rampFuncsArray _index
+				bd
+					/FunctionType 2
+					/Domain [0 1]
+					/N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div
+					_gradType 0 eq{
+						_invert{/C1}{/C0}ifelse _C0
+						_invert{/C0}{/C1}ifelse _C1
+					}{
+						_invert{/C0}{/C1}ifelse _C1
+						_invert{/C1}{/C0}ifelse _C0
+					}ifelse
+				ed
+			put
+		}ifelse
+		
+		_rampIndex 1 ne{
+			_boundsArray _index _gradType 1 eq{1 sub}if _endCoord put
+		} if
+		
+		0 1 _invert {exch}if
+		_encodeArray _index 2 mul 1 add 3 -1 roll put
+		_encodeArray _index 2 mul 3 -1 roll put
+		_rampIndex 1 eq {
+			/_lastFill true pt
+			_gradType 0 eq{
+				linealShFill
+			}{
+				radialShFill
+			}ifelse
+		}if
+		/_index _index 1 
+		_gradType 0 eq{
+			add pt
+		}{
+			sub pt
+		}ifelse
+	}def
+}def
+/initializeComposite{
+	/bwImage{
+		pop /_image load 5 execImage 
+	}def
+	/rampImage{
+		_enabledSmoothShade{
+			fillRamp
+		}{
+			_color{
+				_nSamples setImageParms
+	
+				
+				_rgbRamp _forceToCMYK not and{
+					_redData _greenData _blueData _nSamples 3 expandColor
+					true 3 null ncolorimage
+				}{
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 null ncolorimage
+				}ifelse
+			}{
+				_nSamples setImageParms _blackData null bwImage
+			}ifelse
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		_colorStyle 0 eq{
+			1 exch sub
+			0 0 0
+			4 -1 roll
+		}if
+		
+		_colorStyle 2 eq{
+			_forceToCMYK{
+				3 npop setcmykcolor
+			}{
+				setrgbcolor 4 npop
+			}ifelse
+		}if
+		
+		_colorStyle 3 eq{
+			1 exch sub /_tmp xp
+			pop
+			4{
+				_tmp mul 4 1 roll
+			}repeat
+		}if
+		
+		_colorStyle 4 eq{
+			_forceToCMYK{
+				6 npop setcmykcolor
+			}{
+				3 -1 roll pop pop
+				1 exch sub /_tmp xp
+				3{
+					1 exch sub _tmp mul 1 exch sub 3 1 roll
+				}repeat
+				setrgbcolor 
+				4 npop
+			}ifelse
+		}if
+		_colorStyle 2 ne _colorStyle 4 ne and{
+			null nsetcustomcolor
+		}if
+	}def
+	/nsetcustomcolor
+	{
+		pop setcmykcolor
+	}def
+	/nsetcustomcolorend
+	{
+	}def
+	/ncolorimage{
+		pop 
+		/_colorimage load 10 execImage
+	}def
+	_noImage not _level2PS not and{
+		/linealFill{
+			8 setImageParms
+			_color{
+				currentcmykcolor
+				4{
+					makeByte8 4 1 roll
+				}repeat
+				true 4 null ncolorimage
+			}{
+				currentgray makeByte8 null bwImage
+			}ifelse
+		}def
+	}if
+	/getRampColorSpace{
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		/_C0 [currentcolor] pt
+		/_C0_Space currentcolorspace pt
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		/_C1 [currentcolor] pt
+		/_C1_Space currentcolorspace pt
+		
+		/_rampColorSpace _C0_Space pt
+		
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/npop{
+	{pop}repeat
+}def
+/xd{
+	exch def
+}def
+/nd{
+	null def
+}def
+/pt{
+	AGM_Gradient_private 3 1 roll put
+}def
+/xp{
+	exch pt
+}def
+/xput{
+	dup load dup length exch maxlength eq{
+		dup dup load dup
+		length 2 mul dict copy def
+	}if
+	load begin
+		def
+  end
+}def
+/mySave{
+	save /_sSave xp
+}def
+/myRestore{
+	_sSave type /savetype eq{
+		_sSave restore
+	}if
+}def
+/gMark{
+	counttomark 2 add -1 roll
+}def
+/execImage{
+	/_tmp xp
+	{
+		exec
+	}stopped{
+		$error /errorname get /undefinedresult ne{
+			stop
+		}{
+			_tmp npop
+		}ifelse
+	}if
+}def
+/pushBSpace{
+	newpath gsave
+	_bUMatrix astore concat 
+}def
+/popBSpace{
+	grestore
+}def
+/makeByte8{
+	/_tmp 0 pt
+	255 mul cvi
+	8 string 8{
+		dup _tmp 3 index put 
+		/_tmp _tmp 1 add pt
+	}repeat
+	exch pop
+}def
+/setImageParms{
+	1 8 2 index 0 0 1 0 0 _imageMatrix astore
+}def
+/linealFill{
+	0 0 1 1 rectfill
+}def
+/testCMYKColorThrough{
+	gsave
+	setcmykcolor currentcmykcolor
+	grestore
+	add add add 0 ne
+}def
+/expandOne	{
+	/_tmp xp
+	dup type /stringtype ne{
+		_tmp string
+		exch
+		dup 0 ne{
+			255 mul cvi
+			0 1 _tmp 1 sub{
+				3 copy
+				exch put pop
+			}for
+		}if
+		pop
+	}if
+}def
+/expandColor{
+	/_channels xp
+	/_len xp
+	_channels{
+		_len expandOne _channels 1 roll
+	}repeat
+}def
+/blendColor{
+	
+	_color{
+		_rgbRamp _producingSeps not and _forceToCMYK not and{
+			_redData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_greenData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blueData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			/setrgbcolor cvx
+		}{
+			_cyanData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_magentaData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_yellowData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blackData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+	
+			_spotColor{
+				_rampSD begin
+					/_rampSD cvx /begin cvx
+	
+					spot1 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot1 cvx /tintValue 3 -1 /roll cvx /put cvx
+	
+					spot2 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot2 cvx /tintValue 3 -1 /roll cvx /put cvx
+					/end cvx
+			 end
+				/_rampSD cvx
+				/nsetcustomcolor cvx
+			}{
+				/setcmykcolor cvx
+			}ifelse
+		}ifelse
+	}{
+		_blackData dup type /stringtype eq{
+			/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+		}if
+		
+		_enabledSmoothShade{
+			1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx
+		}{
+			 /setgray cvx
+		}ifelse
+	}ifelse
+}def
+/useRectImage{
+	_subSampleOK _enabledSmoothShade not and{
+		{
+			mark
+			0 1 dtransform atan cvi 90 mod 0 eq
+			1 0 dtransform atan cvi 90 mod 0 eq
+		} stopped
+		{
+			cleartomark
+			false
+		}
+		{
+			and exch pop
+		} ifelse
+	}{
+		false
+	}ifelse
+}def
+/linealImage{
+	_noImage{
+		rectImage
+	}{
+		_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get
+				/rampImage get exec
+		}{
+			useRectImage{
+				rectImage
+			}{
+				rampImage
+			}ifelse
+		}ifelse
+	}ifelse
+}def
+/linealRamp{
+	pushBSpace
+	_ramp{
+		linealImage
+	}{
+		linealFill
+	}ifelse
+	popBSpace
+	/_rampIndex _rampIndex 1 sub pt
+	_rampIndex 0 gt{
+		getRampData
+	}if
+}def
+/radialGrad{
+	/_usingShells currentoverprint _producingSeps and _usingShells or pt
+	/_firstShell true pt
+	_enabledSmoothShade not{
+		currentoverprint _producingSeps and{
+			
+			newpath
+			clippath pathbbox 
+			1 add 4 1 roll
+			1 add 4 1 roll
+			1 sub 4 1 roll
+			1 sub 4 1 roll
+			_bbox astore pop
+			
+			newpath
+			_bbox 0 get _bbox 1 get moveto
+			_bbox 2 get _bbox 1 get lineto
+			_bbox 2 get _bbox 3 get lineto
+			_bbox 0 get _bbox 3 get lineto
+			closepath
+			6 copy
+			gsave _bUMatrix astore concat
+			1 0 moveto 0 0 1 0 360 arc closepath
+			eoclip fill
+			popBSpace
+		}{
+			fill
+		}ifelse
+	}if
+	pushBSpace
+	
+	_radHilite{
+		_xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp
+		_rampPoint 1 lt{
+			1 _rampPoint sub dup _xHi mul exch _yHi mul translate
+		}if
+	}if
+	_rampIndex{
+		radialRamp
+		/_rampIndex _rampIndex 1 sub pt
+		_rampIndex 0 gt{
+			getRampData
+		}if
+	}repeat
+	
+	popBSpace
+	
+}def
+/getNSamples{
+	0 exch
+	{
+		dup type /stringtype eq{
+			length exch pop exit
+		}if
+		pop
+	}forall
+	dup 0 eq{
+		pop 1
+	}if
+}def
+/getRampData{
+	/_rampType gMark pt
+	/_color _rampType 0 gt pt
+	/_ccRGB _rampType 5 eq _rampType 6 eq or pt
+	/_rgbRamp _rampType 4 eq _ccRGB or pt
+	/_ccProcess _rampType 2 eq _rampType 3 eq or pt
+	_producingSeps{
+		_rampSD initSpotDict
+		/_spotColor _ccProcess _ccRGB or pt
+	}{
+		/_spotColor false pt
+	}ifelse
+	/_ramp true pt
+	100 div /_rampPoint xp
+	100 div /_midPoint xp
+	
+	dup /_colorStyle xp
+	_colorStyle 0 eq{ 
+		2
+	}{
+		_colorStyle 1 eq{ 
+			5
+		}{
+			_colorStyle 2 eq{
+				8
+			}{
+				_colorStyle 3 eq{
+					_producingSeps{
+						_rampSD /spot1 get begin
+							/name 3 index def
+							/spot_K 4 index def
+							/spot_Y 5 index def
+							/spot_M 6 index def
+							/spot_C 7 index def
+					 end
+					}if
+					7
+				}{
+					_producingSeps{
+						_rampSD/spot1 get begin
+							/name 4 index def
+							/spot_K 8 index def
+							/spot_Y 9 index def
+							/spot_M 10 index def
+							/spot_C 11 index def
+					 end
+					}if
+					11
+				} ifelse
+			}ifelse
+		}ifelse
+	}ifelse
+	/_tmp xp
+	_tmp index 100 div /_endPoint xp
+	
+	_gradType 1 eq{
+		_tmp 1 add index 100 div /_midPoint xp
+	}if
+	
+	_producingSeps{
+		_tmp 2 add index /_nextColorStyle xp
+		_nextColorStyle 3 eq{
+			/_tmp _tmp 4 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 2 add index def
+					/spot_Y _tmp 3 add index def
+					/spot_M _tmp 4 add index def
+					/spot_C _tmp 5 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+		_nextColorStyle 4 eq{
+			/_tmp _tmp 5 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 5 add index def
+					/spot_Y _tmp 6 add index def
+					/spot_M _tmp 7 add index def
+					/spot_C _tmp 8 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+	}if
+	_rampType 3 eq _rampType 6 eq or{
+		/_tint2Data gMark pt
+	}if
+	_ccProcess _ccRGB or{
+		/_tint1Data gMark pt
+	}if
+	_rgbRamp{
+		/_blueData gMark pt
+		/_greenData gMark pt
+		/_redData gMark pt
+	}if
+	
+	_producingSeps{
+		_ccProcess _ccRGB or{
+			_rampType 3 eq _rampType 6 eq or{
+				_rampSD /spot2 get begin
+					/tintImage _gradType 0 eq{
+						_tint2Data
+					}{
+						_tint1Data
+					}ifelse
+					def
+					name null eq{
+						/name /Black def
+					}if
+			 end
+			}if
+			_rampSD /spot1 get begin
+				/tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{
+					_tint1Data
+				}{
+					_tint2Data
+				}ifelse
+				def
+				_rampType 2 eq _rampType 5 eq or{
+					name null eq{
+						/name _rampSD/spot2 get /name get def
+						/spot_C _rampSD/spot2 get /spot_C get def
+						/spot_M _rampSD/spot2 get /spot_M get def
+						/spot_Y _rampSD/spot2 get /spot_Y get def
+						/spot_K _rampSD/spot2 get /spot_K get def
+						_rampSD/spot2 get /name null put
+					}if
+				}{
+					name null eq{
+						/name /Black def
+					}if
+				}ifelse
+		 end
+		}if
+	}if
+	/_blackData gMark pt
+	_rampType 0 gt{
+		counttomark 4 add -3 roll
+		/_yellowData xp
+		/_magentaData xp
+		/_cyanData xp
+	}if
+	_ramp{
+		/_nSamples
+			[
+			_rampType 0 eq {_blackData}if
+			_rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if
+			_rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if
+			_rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if
+			_rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if
+			_rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if
+			_rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if
+			] getNSamples pt
+		_enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if
+	} if
+	
+	setCStop
+}def
+/rectImage{
+	gsave
+	/_sInc 1 pt
+	/_bInc 1 _nSamples div pt
+	/_nSubSamples _nSamples pt
+	/_optimize false pt
+		
+	_subSampleOK{
+		/_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt
+		/_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt
+		
+		_pChange .5 gt dup /_optimize xp{
+			/_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc 1 _nSubSamples div pt
+			/_sInc _nSamples 1 sub _nSubSamples 1 sub div pt
+		}if
+	}if
+	0
+	_nSubSamples
+	[
+	/dup cvx
+	_optimize {
+		/round cvx /cvi cvx
+	} if
+	/_ndx /exch cvx /pt cvx
+	blendColor
+	0 0 _bInc 1 /rectfill cvx
+	_bInc 0 /translate cvx
+	_sInc /add cvx
+	] cvx
+	bind
+	repeat
+	pop
+	_spotColor{
+		nsetcustomcolorend
+	}if
+	grestore
+}def
+/radialInit{
+	/_nRadSamples _nSamples dup 0 eq{pop 1}if pt
+	/_sInc -1 pt
+	/_rampLen _rampPoint _endPoint sub pt
+	/_bInc _rampLen _nSamples div neg pt
+	/_optimize false pt
+	_subSampleOK{
+		/_uRampLen
+			_rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			2 copy lt{
+				exch
+			}if pop
+		pt
+		/_pChange 
+			_uRampLen 0 eq{
+				0
+			}{
+				_nSamples _uRampLen div
+			}ifelse
+		pt
+		_pChange .5 gt dup /_optimize xp{
+			/_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc _rampLen _nRadSamples div neg pt
+			/_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt
+		}if
+	}if
+	_radHilite{
+		/_xBCInc _xHi _rampLen mul _nRadSamples div pt
+		/_yBCInc _yHi _rampLen mul _nRadSamples div pt
+	}if
+}def
+/radialRamp{
+	_enabledSmoothShade{
+		fillRamp
+	}{
+		/_saveMatrix _saveMatrix currentmatrix def
+		
+		radialInit
+	
+		%
+		%
+		true
+		_producingSeps _rgbRamp not and{
+			_nSamples 1 gt{ 
+				pop
+				/_ndx 0 pt
+				[blendColor] cvx exec
+				currentInkN
+				/_ndx _nSamples 1 sub pt
+				[blendColor] cvx exec
+				currentInkN
+				or
+			}if
+		}if
+		{
+			_rampPoint
+		
+			_nSamples 1 sub
+		
+			_nRadSamples 
+			[
+				/dup cvx
+		
+				_optimize{
+					/round cvx /cvi cvx
+				}if
+		
+				/_ndx /exch cvx /pt cvx
+				
+				_usingShells{
+					/_firstShell cvx{
+						/_firstShell false pt
+					}{
+						0 0 3 index 360 0 arcn fill
+					}/ifelse cvx
+				}if
+		
+				blendColor
+		
+				_usingShells{
+					0 0 3 /index cvx 0 360 /arc cvx 
+				}{
+					0 0 3 /index cvx 0 360 /arc cvx /fill cvx
+				}ifelse
+		
+				/exch cvx _bInc /add cvx /exch cvx
+		
+				_sInc /add cvx
+		
+				_radHilite{
+					_xBCInc _yBCInc /translate cvx
+				}if
+			] cvx bind
+			repeat
+		
+			pop pop
+		}{
+			_usingShells{
+				0 0 _rampPoint 360 0 arcn fill
+			}if
+		}ifelse
+	
+		_saveMatrix setmatrix
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+		
+		_usingShells _rampIndex 1 eq and{
+			fill
+		}if
+	
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}ifelse
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.2 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+	userdict /Adobe_ColorImage_AI6 50 dict put 
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize { 
+	Adobe_ColorImage_AI6 begin
+	Adobe_ColorImage_AI6 {
+		dup type /arraytype eq {
+			dup xcheck {
+				bind
+			} if
+		} if
+		pop pop
+	} forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+	/Adobe_ColorImage_AI6_Vars 40 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+	/plateindex -1 def
+	/_newproc null def
+	/_proc1 null def
+	/_proc2 null def
+	/channelcount 0 def
+	/sourcecount 0 def
+	/sourcearray 4 array def
+	/_ptispace null def
+	/_ptiname null def
+	/_pti0 0 def
+	/_pti1 0 def
+	/_ptiproc null def
+	/_ptiscale 0 def
+	/_pticomps 0 def
+	/_ptibuf 0 string def
+	/_gtigray 0 def
+	/_cticmyk null def
+	/_rtirgb null def
+	/XIEnable true def
+	/XIType 0 def
+	/XIEncoding 0 def
+	/XICompression 0 def
+	/XIChannelCount 0 def
+	/XIBitsPerPixel 0 def
+	/XIImageHeight 0 def
+	/XIImageWidth 0 def
+	/XIImageMatrix null def
+	/XIRowBytes 0 def
+	/XIFile null def
+	/XIBuffer1 null def
+	/XIBuffer2 null def
+	/XIDataProc null def
+	/XIVersion 6 def
+	/XIColorSpace /DeviceGray def
+	/XIColorValues 0 def
+end
+currentdict /_colorimage known not {
+	/colorimage where {
+		/colorimage get /_colorimage exch def
+	}{
+		/_colorimage null def
+	} ifelse
+} if
+/_image systemdict /image get def
+/_currenttransfer systemdict /currenttransfer get def
+/FourEqual {
+	4 index ne {
+		pop pop pop false
+	}{
+		4 index ne {
+			pop pop false
+		}{
+			4 index ne {
+				pop false
+			}{
+				4 index eq
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/TestPlateIndex {
+	Adobe_ColorImage_AI6_Vars begin
+		/plateindex -1 def
+		/setcmykcolor where {
+			pop
+			gsave
+			1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			grestore
+			1 0 0 0 FourEqual { 
+				/plateindex 0 def
+			}{
+				0 1 0 0 FourEqual { 
+					/plateindex 1 def
+				}{
+					0 0 1 0 FourEqual {
+						/plateindex 2 def
+					}{
+						0 0 0 1 FourEqual { 
+							/plateindex 3 def
+						}{
+							0 0 0 0 FourEqual {
+								/plateindex 5 def
+							} if
+						} ifelse
+					} ifelse
+				} ifelse
+			} ifelse
+			pop pop pop pop
+		} if
+		plateindex
+ end
+} def
+/concatprocs {
+	/packedarray where {
+		pop dup type /packedarraytype eq 2 index type
+		/packedarraytype eq or
+	}{
+		false
+	} ifelse
+	{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		_proc1 aload pop
+		_proc2 aload pop
+		_proc1 length
+		_proc2 length add
+		packedarray cvx
+	}{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		/_newproc _proc1 length _proc2 length add array def
+		_newproc 0 _proc1 putinterval
+		_newproc _proc1 length _proc2 putinterval
+		_newproc cvx
+	} ifelse
+} def
+/clrspaceissepn {
+	type /arraytype eq 
+} def
+/clrspacegetname {
+	dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse
+} def
+/clrspacegetalt {
+	aload pop pop pop colormake
+} def
+/clrspacegetcomps {
+	dup /DeviceGray eq {
+		pop 1
+	}{
+		dup /DeviceRGB eq {
+			pop 3
+		}{
+			/DeviceCMYK eq {
+				4
+			}{
+				1
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/clrspacemarksplate {
+	dup /DeviceGray eq {
+		pop plateindex 3 eq
+	}{
+		dup /DeviceRGB eq {
+			pop plateindex 5 ne
+		}{
+			dup /DeviceCMYK eq {
+				pop plateindex 5 ne
+			}{
+				/findcmykcustomcolor where {
+					pop
+					dup length 2 sub get
+					0.1 0.1 0.1 0.1 5 -1 roll
+					findcmykcustomcolor 1 setcustomcolor
+					systemdict /currentgray get exec
+					1 ne
+				}{
+					pop plateindex 5 ne
+				} ifelse
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colormake {
+	dup clrspacegetcomps
+	exch 1 index 2 add 1 roll
+	dup 1 eq {pop}{array astore} ifelse
+	exch
+} def
+/colorexpand {
+	dup clrspacegetname exch
+	dup clrspaceissepn {
+		clrspacegetalt
+		exch 4 1 roll
+	}{
+		1 3 1 roll
+	} ifelse
+} def
+/colortint {
+	dup /DeviceGray eq {
+		3 1 roll 1 exch sub mul 1 exch sub exch
+	}{
+		dup /DeviceRGB eq {
+			3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+		}{
+			dup /DeviceCMYK eq {
+				3 1 roll {1 index mul exch} forall pop 4 array astore exch
+			}{
+				3 1 roll mul exch
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colortocmyk {
+	dup /DeviceGray eq {
+		pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+	}{
+		dup /DeviceRGB eq {
+			pop aload pop _rgbtocmyk 4 array astore
+		}{
+			dup /DeviceCMYK eq {
+				pop
+			}{
+				clrspacegetalt colortint colortocmyk
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/makeimagedict {
+	7 dict begin
+		/ImageType 1 def
+		/Decode exch def
+		/DataSource exch def
+		/ImageMatrix exch def
+		/BitsPerComponent exch def
+		/Height exch def
+		/Width exch def
+	currentdict end
+} def
+/stringinvert {
+	0 1 2 index length 1 sub {
+		dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+	} for
+} def
+/stringknockout {
+	0 1 2 index length 1 sub {
+		255 2 index 3 1 roll put
+	} for
+} def
+/stringapply {
+	0 1 4 index length 1 sub {
+		dup
+		4 index exch get
+		3 index 3 1 roll
+		3 index exec
+	} for
+	pop exch pop
+} def
+/WalkRGBString {
+	0 3 index
+	dup length 1 sub 0 3 3 -1 roll {
+		3 getinterval {} forall
+		5 index exec
+		3 index
+	} for
+	
+	 5 {pop} repeat
+} def
+/WalkCMYKString
+{
+	0 3 index
+	dup length 1 sub 0 4 3 -1 roll {
+		4 getinterval {} forall
+		
+		6 index exec
+		
+		3 index
+		
+	} for
+	
+	5 { pop } repeat
+	
+} def
+/StuffRGBIntoGrayString
+{
+	.11 mul exch
+	
+	.59 mul add exch
+	
+	.3 mul add
+	
+	cvi 3 copy put
+	
+	pop 1 add
+} def
+/StuffCMYKIntoGrayString
+{
+	exch .11 mul add
+	
+	exch .59 mul add
+	
+	exch .3 mul add
+	
+	dup 255 gt { pop 255 } if
+	
+	255 exch sub cvi 3 copy put
+	
+	pop 1 add
+} def
+/RGBToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin 
+		sourcearray 0 get exec
+		dup length 3 idiv string
+		dup 3 1 roll 
+		
+		/StuffRGBIntoGrayString load exch
+		WalkRGBString
+ end
+} def
+/CMYKToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcearray 0 get exec
+		dup length 4 idiv string
+		dup 3 1 roll 
+		
+		/StuffCMYKIntoGrayString load exch
+		WalkCMYKString
+ end
+} def
+/SeparateCMYKImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcecount 0 ne {
+			sourcearray plateindex get exec
+		}{			
+			sourcearray 0 get exec
+			
+			dup length 4 idiv string
+			
+			0 2 index
+			
+			plateindex 4 2 index length 1 sub {
+				get 255 exch sub
+				
+				3 copy put pop 1 add
+				
+				2 index
+			} for
+			pop pop exch pop
+		} ifelse
+ end
+} def
+	
+/ColorImageCompositeEmulator {
+	pop true eq {
+		Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat
+	}{
+		Adobe_ColorImage_AI6_Vars /channelcount get 1 ne {
+			Adobe_ColorImage_AI6_Vars begin
+				sourcearray 0 3 -1 roll put
+			
+				channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse
+				load
+		 end
+		} if
+		image
+	} ifelse
+} def
+/colorimage {
+	Adobe_ColorImage_AI6_Vars begin
+		/channelcount 1 index def
+		/sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def
+		4 sourcecount add index
+ end
+	
+	dup 8 eq exch 1 eq or not {
+		/_colorimage load null ne {
+			_colorimage
+		}{
+			Adobe_ColorImage_AI6_Vars /sourcecount get
+			7 add { pop } repeat
+		} ifelse
+	}{
+		dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or {
+			/_colorimage load null eq {
+				ColorImageCompositeEmulator
+			}{
+				dup 1 eq {
+					pop pop image
+				}{
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						gsave
+						
+						0 _currenttransfer exec
+						1 _currenttransfer exec
+						eq
+						{ 0 _currenttransfer exec 0.5 lt }
+						{ 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse
+						
+						{ { pop 0 } } { { pop 1 } } ifelse
+						systemdict /settransfer get exec
+					} if
+					
+					_colorimage
+					
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						grestore
+					} if
+				} ifelse
+			} ifelse
+		}{
+			dup 1 eq {
+				pop pop
+				image
+			}{
+				pop pop
+				Adobe_ColorImage_AI6_Vars begin
+					sourcecount -1 0 {			
+						exch sourcearray 3 1 roll put
+					} for
+					/SeparateCMYKImageProc load
+			 end
+				systemdict /image get exec
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/proctintimage {
+	/_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+	/_pticomps _ptispace clrspacegetcomps store
+	/_ptiscale _pti1 _pti0 sub store
+	level2? {
+		_ptiname length 0 gt version cvr 2012 ge and {
+			[/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+			[_pti0 _pti1] makeimagedict _image
+		}{
+			[/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+			[0 255] makeimagedict _image
+		} ifelse
+	}{
+		_pticomps 1 eq {
+			{
+				dup
+				{
+					255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+				} stringapply
+			} concatprocs _image
+		}{
+			{
+				dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+				_ptibuf {
+					exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+					_pticomps 2 add -2 roll
+					_pticomps 1 sub -1 0 {
+						1 index add 2 index exch
+						5 -1 roll
+						255 mul cvi put
+					} for
+					pop pop
+				} stringapply
+			} concatprocs false _pticomps
+			/_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse
+		} ifelse
+	} ifelse
+} def
+/graytintimage {
+	/_gtigray 5 -1 roll store
+	{1 _gtigray sub mul 1 exch sub} 4 1 roll
+	/DeviceGray proctintimage
+} def
+/cmyktintimage {
+	/_cticmyk 5 -1 roll store
+	{_cticmyk {1 index mul exch} forall pop} 4 1 roll
+	/DeviceCMYK proctintimage
+} def
+/rgbtintimage {
+	/_rtirgb 5 -1 roll store
+	{_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+	/DeviceRGB proctintimage
+} def
+/tintimage {
+	TestPlateIndex -1 eq {
+		colorexpand
+		3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+		dup /DeviceGray eq {
+			pop graytintimage
+		}{
+			dup /DeviceRGB eq {
+				pop rgbtintimage
+			}{
+				pop cmyktintimage
+			} ifelse
+		} ifelse
+	}{
+		dup clrspacemarksplate {
+			plateindex 5 lt {
+				colortocmyk plateindex get 1 exch sub
+				exch {1 0}{0 1} ifelse () graytintimage
+			}{
+				pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage
+			} ifelse
+		}{
+			pop pop pop
+			{pop 1} 0 1 () /DeviceGray proctintimage
+		} ifelse
+	} ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+	XIImageWidth XIImageHeight false
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	imagemask
+} def
+/XIImageTint {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIType 3 eq XIColorValues XIColorSpace tintimage
+} def
+/XIImage {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse
+} def
+/XG {
+	pop pop
+} def
+/XF {
+	13 {pop} repeat
+} def
+/Xh {
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		/XIImageMatrix exch def
+		0 0 moveto
+		XIImageMatrix concat
+		XIImageWidth XIImageHeight scale
+		
+		XIType 1 eq {
+			/_lp /null ddef
+			_fc
+			/_lp /imagemask ddef
+		}
+		if
+		/XIVersion 7 def
+ end
+} def
+/XH {
+	Adobe_ColorImage_AI6_Vars begin
+		/XIVersion 6 def
+		grestore
+ end
+} def
+/XIEnable {
+	Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+	Adobe_ColorImage_AI6_Vars begin
+		colormake
+		/XIColorSpace exch def
+		/XIColorValues exch def
+ end
+} def
+/XI
+{
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		cvi dup
+		256 idiv /XICompression exch store
+		256 mod /XIEncoding exch store
+		pop pop
+		/XIChannelCount exch def
+		/XIBitsPerPixel exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		pop pop pop pop
+		/XIImageMatrix exch def
+		XIBitsPerPixel 1 eq {
+			XIImageWidth 8 div ceiling cvi
+		}{
+			XIImageWidth XIChannelCount mul
+		} ifelse
+		/XIRowBytes exch def
+		XIEncoding 0 ne XIVersion 6 le and {
+			currentfile 128 string readline pop pop
+		} if
+		XICompression 0 eq {
+			/XIBuffer1 XIRowBytes string def
+			XIEncoding 0 eq {
+				{currentfile XIBuffer1 readhexstring pop}
+			}{
+				{currentfile XIBuffer1 readstring pop}
+			} ifelse
+		}{
+			/XIBuffer1 256 string def
+			/XIBuffer2 XIRowBytes string def
+			{currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+			/ASCIIHexDecode filter /DCTDecode filter
+			/XIFile exch def
+			{XIFile XIBuffer2 readstring pop}
+		} ifelse
+		/XIDataProc exch def
+		
+		XIVersion 6 le {
+			0 0 moveto
+			XIImageMatrix concat
+			XIImageWidth XIImageHeight scale
+			XIType 1 eq {
+				/_lp /null ddef
+				_fc
+				/_lp /imagemask ddef
+			} if
+		} if
+		XIEnable {
+			XIType 1 eq {
+				XIImageMask
+			}{
+				XIType 2 eq XIType 3 eq or {
+					XIImageTint
+				}{
+					XIImage
+				} ifelse
+			} ifelse
+		}{
+			XINullImage
+		} ifelse
+		grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog)
+%%Version: 1.2 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin
+put
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+	Adobe_Illustrator_AI5 dup begin
+	Adobe_Illustrator_AI5_vars begin
+	discardDict
+	{
+		bind pop pop
+	} forall
+	dup /nc get begin
+	{
+		dup xcheck 1 index type /operatortype ne and
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+	Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+	dup load dup length exch maxlength eq
+	{
+		dup dup load dup
+		length 2 mul dict copy def
+	} if
+	load begin
+	def
+ end
+} def
+/npop
+{
+	{
+		pop
+	} repeat
+} def
+/hswj
+{
+	dup stringwidth 3 2 roll
+	{
+		_hvwb eq { exch _hvcx add exch _hvcy add } if
+		exch _hvax add exch _hvay add
+	} cforall
+} def
+/vswj
+{
+	0 0 3 -1 roll
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			dup cstring stringwidth 5 2 roll
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			4 -1 roll sub exch
+			3 -1 roll sub exch
+		}
+		{
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			_fontHeight sub
+		} ifelse
+	} cforall
+} def
+/swj
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+	0 0 0 6 3 roll swj
+} def
+/vjss
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index setmatrix stroke
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			gsave
+			2 index false charpath
+			6 index setmatrix stroke
+			grestore
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjss
+{
+	4 1 roll
+	{
+		dup cstring
+		gsave
+		false charpath currentpoint
+		5 index setmatrix stroke
+		grestore
+		moveto
+		_sp eq
+		{
+			5 index 5 index rmoveto
+		} if
+		2 copy rmoveto
+	} cforall
+	6 npop
+} def
+/jss
+{
+	_lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+	0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			false charpath
+            currentpoint
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			2 index false charpath
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjsp
+{
+    4 1 roll
+    {
+        dup cstring
+        false charpath
+        _sp eq
+        {
+            5 index 5 index rmoveto
+        } if
+        2 copy rmoveto
+    } cforall
+    6 npop
+} def
+/jsp
+{
+	matrix currentmatrix
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+    matrix currentmatrix
+    0 0 0 7 3 roll
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+	transform
+	0.25 sub round 0.25 add exch
+	0.25 sub round 0.25 add exch
+	itransform
+} def
+/setstrokeadjust where
+{
+	pop true setstrokeadjust
+	/c
+	{
+		curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		moveto
+	} def
+}
+{
+	/c
+	{
+		pl curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll pl curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		pl 2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		pl lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		pl moveto
+	} def
+} ifelse
+/d
+{
+	setdash
+} def
+/cf
+{
+} def
+/i
+{
+	dup 0 eq
+	{
+		pop cf
+	} if
+	setflat
+} def
+/j
+{
+	setlinejoin
+} def
+/J
+{
+	setlinecap
+} def
+/M
+{
+	setmiterlimit
+} def
+/w
+{
+	setlinewidth
+} def
+/XR
+{
+	0 ne
+	/_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+	closepath
+} def
+/N
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			_eo {eoclip} {clip} ifelse /_doClip 0 ddef
+		} if
+		newpath
+	}
+	{
+		/CRender
+		{
+			N
+		} ddef
+	} ifelse
+} def
+/n
+{
+	N
+} def
+/F
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+			/_doClip 0 ddef
+		}
+		{
+			_pf
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			F
+		} ddef
+	} ifelse
+} def
+/f
+{
+	closepath
+	F
+} def
+/S
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			_ps
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			S
+		} ddef
+	} ifelse
+} def
+/s
+{
+	closepath
+	S
+} def
+/B
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		gsave F grestore
+		{
+			gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			S
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			B
+		} ddef
+	} ifelse
+} def
+/b
+{
+	closepath
+	B
+} def
+/W
+{
+	/_doClip 1 ddef
+} def
+/*
+{
+	count 0 ne
+	{
+		dup type /stringtype eq
+		{
+			pop
+		} if
+	} if
+	newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+	_pola 0 eq
+	{
+		gsave
+	} if
+} def
+/Q
+{
+	_pola 0 eq
+	{
+		grestore
+	} if
+} def
+/*u
+{
+	_pola 1 add /_pola exch ddef
+} def
+/*U
+{
+	_pola 1 sub /_pola exch ddef
+	_pola 0 eq
+	{
+		CRender
+	} if
+} def
+/D
+{
+	pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+	/_i save ddef
+	clipForward?
+	{
+		nulldevice
+	} if
+	6 1 roll 4 npop
+	concat pop
+	userdict begin
+	/showpage
+	{
+	} def
+	0 setgray
+	0 setlinecap
+	1 setlinewidth
+	0 setlinejoin
+	10 setmiterlimit
+	[] 0 setdash
+	/setstrokeadjust where {pop false setstrokeadjust} if
+	newpath
+	0 setgray
+	false setoverprint
+} def
+/~
+{
+ end
+	_i restore
+} def
+/O
+{
+	0 ne
+	/_of exch ddef
+	/_lp /none ddef
+} def
+/R
+{
+	0 ne
+	/_os exch ddef
+	/_lp /none ddef
+} def
+/g
+{
+	/_gf exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_gf setgray
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/G
+{
+	/_gs exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_gs setgray
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/k
+{
+	_cf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_cf aload pop setcmykcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/K
+{
+	_cs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_cs aload pop setcmykcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/Xa
+{
+	_rgbf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_rgbf aload pop setrgbcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XA
+{
+	_rgbs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_rgbs aload pop setrgbcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/_rgbtocmyk
+{
+3
+	{
+	1 exch sub 3 1 roll
+	} repeat
+3 copy 1 4 1 roll
+3
+	{
+	3 index 2 copy gt
+		{
+		exch
+		} if
+	pop 4 1 roll
+	} repeat
+pop pop pop
+4 1 roll
+3
+	{
+	3 index sub
+	3 1 roll
+	} repeat
+4 -1 roll
+} def
+/Xx
+{
+	exch
+	/_gf exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XX
+{
+	exch
+	/_gs exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/x
+{
+	/_gf exch ddef
+	findcmykcustomcolor
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/X
+{
+	/_gs exch ddef
+	findcmykcustomcolor
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/A
+{
+	pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+	pop pop
+} def
+/discard
+{
+	save /discardSave exch store
+	discardDict begin
+	/endString exch store
+	gt38?
+	{
+		2 add
+	} if
+	load
+	stopped
+	pop
+ end
+	discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+	/endStringLength endString length store
+	/newBuff buffer 0 endStringLength getinterval store
+	/newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+	/newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+	newBuff 0 newBuffButFirst putinterval
+	newBuffLast 0
+	currentfile read not
+	{
+	stop
+	} if
+	put
+} def
+0
+{
+	pre38Initialize
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff endString eq
+			{
+				cleartomark stop
+			} if
+			shiftBuffer
+		} loop
+	}
+	{
+	stop
+	} ifelse
+} def
+1
+{
+	pre38Initialize
+	/beginString exch store
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff beginString eq
+			{
+				/layerCount dup load 1 add store
+			}
+			{
+				newBuff endString eq
+				{
+					/layerCount dup load 1 sub store
+					layerCount 0 eq
+					{
+						cleartomark stop
+					} if
+				} if
+			} ifelse
+			shiftBuffer
+		} loop
+	} if
+} def
+2
+{
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		endString eq
+		{
+			cleartomark stop
+		} if
+	} loop
+} def
+3
+{
+	/beginString exch store
+	/layerCnt 1 store
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		dup beginString eq
+		{
+			pop /layerCnt dup load 1 add store
+		}
+		{
+			endString eq
+			{
+				layerCnt 1 eq
+				{
+					cleartomark stop
+				}
+				{
+					/layerCnt dup load 1 sub store
+				} ifelse
+			} if
+		} ifelse
+	} loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+	/n /N /s /S /f /F /b /B
+}
+{
+	{
+		_doClip 1 eq
+		{
+			/_doClip 0 ddef _eo {eoclip} {clip} ifelse
+		} if
+		newpath
+	} def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+	4 npop
+	6 1 roll
+	pop
+	4 1 roll
+	pop pop pop
+	0 eq
+	{
+		0 eq
+		{
+			(%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+		}
+		{
+			
+			/clipForward? true def
+			
+			/Tx /pop load def
+			/Tj /pop load def
+			
+			currentdict end clipRenderOff begin begin
+		} ifelse
+	}
+	{
+		0 eq
+		{
+			save /discardSave exch store
+		} if
+	} ifelse
+} bind def
+/LB
+{
+	discardSave dup null ne
+	{
+		restore
+	}
+	{
+		pop
+		clipForward?
+		{
+			currentdict
+		 end
+		 end
+		 begin
+					
+			/clipForward? false ddef
+		} if
+	} ifelse
+} bind def
+/Pb
+{
+	pop pop
+	0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+	0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+	72 exch div
+	0 dtransform dup mul exch dup mul add sqrt
+	dup 1 lt
+	{
+		pop 1
+	} if
+	setflat
+} def
+/Mb
+{
+	q
+} def
+/Md
+{
+} def
+/MB
+{
+	Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+	pop
+} bind def
+/setcmykcolor
+{
+	4 npop
+} bind def
+/setrgbcolor
+{
+	3 npop
+} bind def
+/setcustomcolor
+{
+	2 npop
+} bind def
+currentdict readonly pop
+end
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_pattern_AI5 1.1 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators)
+%%Version: 1.1 0
+%%CreationDate: (03/26/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/@
+{
+} def
+/&
+{
+} def
+/dp
+{
+	dup null eq
+	{
+		pop
+		_dp 0 ne
+		{
+			0 1 _dp 1 sub _dl mod
+			{
+				_da exch get 3 get
+			} for
+			_dp 1 sub _dl mod 1 add packedarray
+			_da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll
+			definepattern pop
+		} if
+	}
+	{
+		_dp 0 ne _dp _dl mod 0 eq and
+		{
+			null dp
+		} if
+		7 packedarray _da exch _dp _dl mod exch put
+		_dp _dl mod _da 0 get 4 get 2 packedarray
+		/_dp _dp 1 add def
+	} ifelse
+} def
+/E
+{
+	_ed begin
+	dup 0 get type /arraytype ne
+	{
+		0
+		{
+			dup 1 add index type /arraytype eq
+			{
+				1 add
+			}
+			{
+				exit
+			} ifelse
+		} loop
+		array astore
+	} if
+	/_dd exch def
+	/_ury exch def
+	/_urx exch def
+	/_lly exch def
+	/_llx exch def
+	/_n exch def
+	/_y 0 def
+	/_dl 4 def
+	/_dp 0 def
+	/_da _dl array def
+	0 1 _dd length 1 sub
+	{
+		/_d exch _dd exch get def
+		0 2 _d length 2 sub
+		{
+			/_x exch def
+			/_c false def
+			/_r _d _x 1 add get cvlit def
+			_r _ ne
+			{
+				_urx _llx sub _ury _lly sub
+				[
+				1 0 0 1 0 0
+				]
+				[
+				/save cvx
+				_llx neg _lly neg /translate cvx
+				_c
+				{
+					nc /begin cvx
+				} if
+				_r dup type /stringtype eq
+				{
+					cvx
+				}
+				{
+					{
+						exec
+					} /forall cvx
+				} ifelse
+				_c
+				{
+					/end cvx
+				} if
+				/restore cvx
+				] cvx
+				/_fn 12 _n length add string def
+				_y _fn cvs pop
+				/_y _y 1 add def
+				_fn 12 _n putinterval
+				_fn _c false dp
+				_d exch _x 1 add exch put
+			} if
+		} for
+	} for
+	null dp
+	_n _dd /_pd
+ end
+	xput
+} def
+/fc
+{
+	_fm dup concatmatrix pop
+} def
+/p
+{
+	/_fm exch ddef
+	9 -2 roll _pm translate fc
+	7 -2 roll _pm scale fc
+	5 -1 roll _pm rotate fc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate fc
+		1 -1 _pm scale fc
+		neg _pm rotate fc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate fc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore fc
+	neg _pm rotate fc
+	_pd exch get /_fdd exch ddef
+	/_pf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					patternfill
+				}
+				{
+					pop
+					fill
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_psf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					9 copy 6 npop patternashow
+				}
+				{
+					pop
+					6 copy 3 npop hvashow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		sw rmoveto
+	} ddef
+	/_pjsf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					12 copy 6 npop patternawidthshow
+				}
+				{
+					pop 9 copy 3 npop hvawidthshow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+/sc
+{
+	_sm dup concatmatrix pop
+} def
+/P
+{
+	/_sm exch ddef
+	9 -2 roll _pm translate sc
+	7 -2 roll _pm scale sc
+	5 -1 roll _pm rotate sc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate sc
+		1 -1 _pm scale sc
+		neg _pm rotate sc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate sc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore sc
+	neg _pm rotate sc
+	_pd exch get /_sdd exch ddef
+	/_ps
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					patternstroke
+				}
+				{
+					pop stroke
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_pss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					10 copy 6 npop patternashowstroke
+				}
+				{
+					pop 7 copy 3 npop ss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop sw rmoveto
+	} ddef
+	/_pjss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					13 copy 6 npop patternawidthshowstroke
+				}
+				{
+					pop 10 copy 3 npop jss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+end
+userdict /Adobe_pattern_AI5 18 dict dup begin
+put
+/initialize
+{
+	/definepattern where
+	{
+		pop
+		pop pop
+	}
+	{
+	 begin
+	 begin
+		Adobe_pattern_AI5 begin
+		Adobe_pattern_AI5
+		{
+			dup xcheck
+			{
+				bind
+			} if
+			pop pop
+		} forall
+		mark
+		cachestatus 7 1 roll pop pop pop pop exch pop exch
+		{
+			{
+				10000 add
+				dup 2 index gt
+				{
+					exit
+				} if
+				dup setcachelimit
+			} loop
+		} stopped
+		cleartomark
+	 end 	
+		
+	 end
+	 end
+		
+		Adobe_pattern_AI5 begin
+	} ifelse
+} def
+/terminate
+{
+	currentdict Adobe_pattern_AI5 eq
+	{
+	 end
+	} if
+} def
+errordict
+/nocurrentpoint
+{
+	pop
+	stop
+} put
+errordict
+/invalidaccess
+{
+	pop
+	stop
+} put
+/patternencoding
+256 array def
+0 1 255
+{
+	patternencoding exch ( ) 2 copy exch 0 exch put cvn put
+} for
+/definepattern
+{
+	17 dict begin
+	/uniform exch def
+	/cache exch def
+	/key exch def
+	/procarray exch def
+	/mtx exch matrix invertmatrix def
+	/height exch def
+	/width exch def
+	/ctm matrix currentmatrix def
+	/ptm matrix def
+	/str 32 string def
+	/slice 9 dict def
+	slice /s 1 put
+	slice /q 256 procarray length div sqrt floor cvi put
+	slice /b 0 put
+	/FontBBox
+	[
+	0 0 0 0
+	] def
+	/FontMatrix mtx matrix copy def
+	/Encoding patternencoding def
+	/FontType 3 def
+	/BuildChar
+	{
+		exch
+	 begin
+		/setstrokeadjust where {pop true setstrokeadjust} if
+		slice begin
+		dup q dup mul mod s idiv /i exch def
+		dup q dup mul mod s mod /j exch def
+		q dup mul idiv procarray exch get
+		/xl j width s div mul def
+		/xg j 1 add width s div mul def
+		/yl i height s div mul def
+		/yg i 1 add height s div mul def
+		uniform
+		{
+			1 1
+		}
+		{
+			width 0 dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+			0 height dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+		} ifelse
+		width 0 cache
+		{
+			xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul
+			setcachedevice
+		}
+		{
+			setcharwidth
+		} ifelse
+		gsave
+		scale
+		newpath
+		xl yl moveto
+		xg yl lineto
+		xg yg lineto
+		xl yg lineto
+		closepath
+		clip
+		newpath
+	 end
+	 end
+		exec
+		grestore
+	} def
+	key currentdict definefont
+ end
+} def
+/patterncachesize
+{
+	gsave
+	newpath
+	0 0 moveto
+	width 0 lineto
+	width height lineto
+	0 height lineto
+	closepath
+	patternmatrix setmatrix
+	pathbbox
+	exch ceiling 4 -1 roll floor sub 3 1 roll
+	ceiling exch floor sub
+	mul 1 add
+	grestore
+} def
+/patterncachelimit
+{
+	cachestatus 7 1 roll 6 npop 8 mul
+} def
+/patternpath
+{
+	exch dup begin
+	setfont
+	ctm setmatrix
+	concat
+	slice exch /b exch slice /q get dup mul mul put
+	FontMatrix concat
+	uniform
+	{
+		width 0 dtransform round width div exch round width div exch
+		0 height dtransform round height div exch height div exch
+		0 0 transform round exch round exch
+		ptm astore setmatrix
+	}
+	{
+		ptm currentmatrix pop
+	} ifelse
+	{
+		currentpoint
+	} stopped not
+	{
+		2 npop
+		pathbbox
+		true
+		4 index 3 index eq
+		4 index 3 index eq
+		and
+		{
+			pop false
+			{
+				{
+					2 npop
+				}
+				{
+					3 npop true
+				}
+				{
+					7 npop true
+				}
+				{
+					pop true
+				} pathforall
+			} stopped
+			{
+				5 npop true
+			} if
+		} if
+		{
+			height div ceiling height mul 4 1 roll
+			width div ceiling width mul 4 1 roll
+			height div floor height mul 4 1 roll
+			width div floor width mul 4 1 roll
+			2 index sub height div ceiling cvi exch
+			3 index sub width div ceiling cvi exch
+			4 2 roll moveto
+			FontMatrix mtx invertmatrix
+			dup dup 4 get exch 5 get rmoveto
+			ptm ptm concatmatrix pop
+			slice /s
+			patterncachesize patterncachelimit div ceiling sqrt ceiling cvi
+			dup slice /q get gt
+			{
+				pop slice /q get
+			} if
+			put
+			0 1 slice /s get dup mul 1 sub
+			{
+				slice /b get add
+				gsave
+				0 1 str length 1 sub
+				{
+					str exch 2 index put
+				} for
+				pop
+				dup
+				{
+					gsave
+					ptm setmatrix
+					1 index str length idiv
+					{
+						str show
+					} repeat
+					1 index str length mod str exch 0 exch getinterval show
+					grestore
+					0 height rmoveto
+				} repeat
+				grestore
+			} for
+			2 npop
+		}
+		{
+			4 npop
+		} ifelse
+	} if
+ end
+} def
+/patternclip
+{
+	_eo {eoclip} {clip} ifelse
+} def
+/patternstrokepath
+{
+	strokepath
+} def
+/patternmatrix
+matrix def
+/patternfill
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternclip
+	Adobe_pattern_AI5 /patternpath get exec
+	grestore
+	newpath
+} def
+/patternstroke
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternstrokepath
+	true
+	{
+		{
+			{
+				newpath
+				moveto
+			}
+			{
+				lineto
+			}
+			{
+				curveto
+			}
+			{
+				closepath
+				3 copy
+				Adobe_pattern_AI5 /patternfill get exec
+			} pathforall
+			3 npop
+		} stopped
+		{
+			5 npop
+			patternclip
+			Adobe_pattern_AI5 /patternfill get exec
+		} if
+	}
+	{
+		patternclip
+		Adobe_pattern_AI5 /patternfill get exec
+	} ifelse
+	grestore
+	newpath
+} def
+/vpatternawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	3 npop
+} def
+/hpatternawidthshow
+{
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		9 index 9 index 9 index
+		Adobe_pattern_AI5 /patternfill get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	8 npop
+} def
+/patternashow
+{
+0 0 0 6 3 roll
+patternawidthshow
+} def
+/patternawidthshow
+{
+	6 index type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get 7 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse
+} def
+/vpatternawidthshowstroke
+{
+	7 1 roll
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			3 index setmatrix
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			4 index setmatrix
+			7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	4 npop
+} def
+/hpatternawidthshowstroke
+{
+	7 1 roll
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		7 index setmatrix
+		10 index 10 index 10 index
+		Adobe_pattern_AI5 /patternstroke get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	9 npop
+} def
+/patternashowstroke
+{
+	0 0 0 7 3 roll
+	patternawidthshowstroke
+} def
+/patternawidthshowstroke
+{
+	7 index type /dicttype eq
+	{
+		patternmatrix /patternmatrix get 8 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse
+} def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+	Adobe_cshow begin
+	Adobe_cshow
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+	{
+ end
+	} if
+} def
+/cforall
+{
+	/_lobyte 0 ddef
+	/_hibyte 0 ddef
+	/_cproc exch ddef
+	/_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+	{
+		/_lobyte exch ddef
+		_hibyte 0 eq
+		_cscript 1 eq
+		_lobyte 129 ge _lobyte 159 le and
+		_lobyte 224 ge _lobyte 252 le and or and
+		_cscript 2 eq
+		_lobyte 161 ge _lobyte 254 le and and
+		_cscript 3 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript 25 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript -1 eq
+		or or or or and
+		{
+			/_hibyte _lobyte ddef
+		}
+		{
+			_hibyte 256 mul _lobyte add
+			_cproc
+			/_hibyte 0 ddef
+		} ifelse
+	} forall
+} def
+/cstring
+{
+	dup 256 lt
+	{
+		(s) dup 0 4 3 roll put
+	}
+	{
+		dup 256 idiv exch 256 mod
+		(hl) dup dup 0 6 5 roll put 1 4 3 roll put
+	} ifelse
+} def
+/clength
+{
+	0 exch
+	{ 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+	{
+		dup cstring
+		show
+		_hvax _hvay rmoveto
+		_hvwb eq { _hvcx _hvcy rmoveto } if
+	} cforall
+} def
+/vawidthshow
+{
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			0 _fontRotateAdjust rmoveto
+			cstring
+			_hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+			0 _fontRotateAdjust neg rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			exch _hvay sub exch _hvax sub
+			2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			3 2 roll
+			cstring
+			dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+			show
+			moveto
+		} ifelse
+	} cforall
+} def
+/hvawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+	0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+	0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+	0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade true put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider
+currentpacking true setpacking
+%%BeginFont: Myriad-Roman
+%!PS-AdobeFont-1.0: Myriad-Roman 001.000
%%CreationDate: Mon Jul 25 16:15:04 1994
%%VMusage: 28005 34897
%% Myriad is a trademark of Adobe Systems Incorporated may be registered in 
%% certain jurisdictions.
11 dict begin
/FontInfo 10 dict dup begin
/version (001.000) readonly def
/Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated.  All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) readonly def
/FullName (Myriad Roman) readonly def
/FamilyName (Myriad) readonly def
/Weight (Regular) readonly def
/isFixedPitch false def
/ItalicAngle 0 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Myriad-Roman def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/UniqueID 41987 def
/FontBBox{-46 -250 1126 831}readonly def
currentdict end
currentfile eexec
fcecc98c2aefb25089edad915372f7632807d0d80113c0fbda4614dda7560bffacbeaa4f371815c991f0682cbc45f51895a8e6fc33b63b87db33f2f141b34c80b26ba7d9f30c5d0811a31c14ca6d1250d33478395ee2096ad1b742ed78b95145f606e652e4d2bd83f4cf7d67cdca3268c1d165c3cf471a6094892362712d5e
+19b5084335eaca009edef0af8bc976eadf7c336b76887cf63653a555e0538ab47d8bf6a8c45725720630bc185740fdab20647654dd2e6d2db3254e482024a1dd45e865357b140bacb98f0a8066087af1076333e21e51e77d70bad81d05e6b7e6f4d3a88423efbdf6eb3b9d4ca66e9ad97e0bde315f13542863a4a6b71a9c35
+60eaea09bb5a75ea3eaf84bfd6a5549a045e20540ac787976353c114cca7c97ce57501589cc846a1320ba2c618644bd7ead0f736873e8d07e7f550df45b51deefee29c13aa19896638a8f580a26665a8d50511d6a0a1d8822fe99e3d82a19244ed668b2d510ea6ef05c17002e01d0a4c4154288c2156ae5fba08cfb2394c78
+221f1b67ca0c6dd8bc930eb9cd6d5b77619e5cfb0e19da187d81124f0793bc0eac6aff145fd8deb6b9100aad8798983107b205f36eb8f7c6b46c6149ccda404549845c5177d0b318b4e621f7c02260faf5e4af8463b776c5b12e6fb1d6735ef91f91d9132268c0c67f18915d0807f99694d4ae8c6d9d495b000604d311a9b9
+6d2520458341a4efa4fa686e80300f18d6681a99a5c3eaeb4767306554865d708a58419b05c24200c59454847988d50b7abbe83a2756cc5781be5b71c28318750549b21f7ce539909e8425c5c38a4a24cad2cb70396b88777346c838c7c8ae27833df843db788ca8a3f0594707a2e54f427a416d3e07d838039d5edc835b68
+ea0aac86f3bd470b37f7ba7c53045a8460d1e7a3175fc90d877ed022ba3f45622569455e31a3d1dc8261541bcd25c8b52845ce4a9dc2e3eedadbcbca781989cf5c51284a4e74b7c0d163c25a608196e89ca4e3444395562311d405ab1707e3dbcba475c61e3774137432519b9e0384112c5da682e59ed4c7e1db1ee381d8fe
+a4ced481f9823b96b719e51b5f059d26949588d5d33c4149ac36cfcac4ca83210c06b15377d9911bca684f27ab16f18ba374261a00514f0ff70163c0d5c41093cc02725b828f004cd04c5297bfc77d3185475d17569f430472d6d67aed94ebcf0b9808ed4489c233e69eb9139561dd741605b62511aaa09a44fc841851ccd7
+80f15c71bdea5386f1bdcc7e30fc4b07b461f21bab5fc313d3424519359f17a4f5f44332ebc0bc269892cb1d91a414817b152a77192c21a0501b586a667f3a5352940ca13f840f5377f30c60b6740ff7fa07964332c76def2b8925245fab5de0ae53a0226fab8218c703a4bbc6733de7a68114d6048f85e7ba1aa4f3b044fa
+052182ccc1b98e9a33ee688bcc29d195ee42d78d814b058abcf57d8970241d14c21f66107ae839a4b3a8ba06f6300d6b1199f3c255140776c5e1b9db2cfe374926e90bfa7ed45dc371ea7a3a9715347b17c9cf2ce89fbd64f7a932146cf5f766a702936791071ce8d01c7c36f77c1796da835f45b43ffef471feac9f548c39
+ee0d15805da6381d46062e084c3aca65b9abd3aa4636bdee45cb6ae316302385bfe24279f27d9017d98233d0839a17c34c40a140b9ebb38bece8bb0ea78b602573d457bcba967cba9191fc3e689c2204f798b8ce4785d908a20a8b7af26a59da060b181c1375745de477c32b46e059157e1bff21058709f5ed1e8a561505f0
+ed7fbe0212099e9dbe1c02412f63eb6274f62db5075d74c2aad39a2305a52c4267fefc948faeb4afa2de78ec35e2cb02f212e5f772ccb07ca14636535ca1330c44afb15689daca6808c32592bab5c1427f87572983d82ca79707177e7d2799df80faeb622efdd1afcfdf20dc7a6c18d0f3ac98e9cabe609d0ddd71ff2cf57d
+438e3caf3933449994fa51703c49ccbe30982ad2ac4e09f1e10dc393eca013bab3de6205e7c78ebbdc19f8d30d6087acc505ef874f28f299993aa81f21bdc769e0d238dfc42057eb50fdf73b9a637425fbb2e79876941d51720e5cd95e42ee0d8d0c3c2460272508530ecdb2a086f11fa43560f6dbe830f455b26684f6927c
+b653a092af8c202f39c31cccd2f0ac5de6d5b03b66e97872e4eae9451a3162514a6a7b4e6f55d1742b3fd1cbcf8b0f75ec005244759bd68e7781459a2519d59b16f9c88d4cd4fb37d6ba5fa740ddfb7dbccf5a6a95f7c4c7d1e62ca9ab6cc08dfd08ca2f1aa9dd44012de2be0b26c222d43eeb3f987a396e498f028ddc3528
+dd3d956a9e14e6776c4ca5ae0dbad3227b1dc293df5a68679fcf7463b0f5107469f31f688e241e4058437bcaa3debe0a522a797088521405d8e5ca15c23d77701e441d10b92c5a6e0f731d6073e328f89051625b4f788222062ffcccb5ad208805c17b28e97167510b891b65b6f3583fd60945081fbfe0e78f317947230517
+545be57c398e2a60f51c622473fcb3fdd659a5cf4c6d8f2337bc3cd617d3aa6d080d4247a7d78c7b1963ad2ac7e0924e29f5184dd1082e58b0e8218c7b390d07412a2cc18239a8ed7414f9372375ad6d546aa06c9735867665cea3619b0912399adb32995b6dff08ce7ccff0320ed318a5a609259895d00948876707bc9631
+c4c5fe755c4c884b09f3f7e6694ad188dd3a7d61d1ebe85c61eb3067c7a12ac3719b1f1f9d099fdb0a6b118fdddb67ed0107415894e427c5f5895f5258dbbb6395504d93f9012d76ecd59ba1f134430c92e944cdac08f57a19341161acd1d7ded4b4aae204bdb10f9fc3684a47a4958f815bb544e6abf7f9bd2afe96e2dd7e
+eef096bb1654faa5c80fc2c66d09968a1238b9671bc6d96fcdd6aa2a402d0fa9db18650556a2ae8c44550a03d98cfc02730d8cf948f1a84e3a0edf4c209cdadef9d780e408d8d161965249e48856cf33de593276b50e82abe13b81ee3d67bef7eea9562563238d539b3a256dfaa10c4867bb48c67795a15160d54973d84a49
+19fb5855b5f11e5e51a64ee190a25b3beb482c07e61b8663c3d79f4b3a2f5b8c749d3603e6eadab1e89fb73c426f12cc026791ac66fd1dd83ad47eaa9a9aa23f304ea10e6862f4fb0d41d676f7a42f5512f3b8098c8b6fe7c50dd0af3222c8b4b00aa57199354998ab52ac54d30d17b24e22306b74744c42b434eaebddbf8d
+1d3d3f1504d6caab0446b8ffa56ccecc8ec9976d19d0d9b6a6e0ea7e44c6fdb29f0b50ae017aa453deb992db2ae3087b78beaf7211b00200c65089f5ed726d4251dd284d22fa28e28fbe0f1b064723d3196af84cb1644e39f61fbfbdde02cbf70465789380e1912b7d3cc8118428ed9af4f633790b4d219f09c13c3e8f3f73
+9def2f967c7bfeecd25daf9b5a747eb281d2535b31c7dc99e34ee537a478ecc8174c6a3a1ed0c2c74b871493599be9a2ecccee1136fc7eaaa6f30758b607700faa7d19b586fa6aa4dc5a813ac33fc3e28d226b6665dac7de35a014f89a31195a416833e9a13123be1ae1518effefc0523499f54377362bbcf9d91650d6d283
+e1bc19a5f2e53e5e1973c406bc3b4878d4a4b8278b878d9bce540ca936d369af2d1c31850d5abd466083845e1479b51d368df23c5243c131db75853e962c66db13f8ffc95affaf6336abce1cd0a699e733aa64b29ebe04915471de4d165e4d85573ec24ff0e09bd7ea8cba8169299eeabfdbdff58bb12460e20b9145b67872
+484d911af649e1d39fb9a44aeba926f3a83dd87202020f674613001107a5d1f184b9ed1c1f8eb24a32f41defee4874b4ecf3d9897c00c2a859ba745e11304823f59c0aea5bfa21081b2eafad4c4c94ef891ce7c97f388ff1753e1d53d485e9d5b18e333f9436572eced77d9197c3deee53a26dea76f0a738aa979f4f2a358b
+725eb5b2321e717ff9bec75804606fd0489a36852ff5474df878831431a0257d2b6909e5b954afc9a49dab3aca5b02e02e3565e762d240542917fc4cc781bceab43f7c53950ad992e596582bf87ee042f4bc7f9e91ea20ba6561019e184a34c8a5e17d7912edc431fcea320c7066afc23bdb5f64c3606b11b1fe9e810a9c82
+2e60bb187be38c7b87b35539048b8a507233a86f6b8b363656eaca0f8de48f3cdfba3616a743c579a7ef6b922d2d282b1c77cbda888177ba7037513b64d21a8a6a09ffc1e3d46769ae279e68799e520a412ff61d952aa3b552159e3814c8f185731c7269bb375c1a1e266dd2f73c7708635c2ed5a52d362c124a76c92410dd
+3f00f21fe81977c80051eb8bf67997efcafb1593ca9307301c2ecf27c08b568e404d1d1414dc2220d73c6a352a2624c916ada967c3d189a1b893d41139c948b04d6f808452fcfde55603527e598a6590ed920be0d75cfe65e105bfee9cddaa6fc9934c42f611ae55681be92fc300e7249af0d7f863e2b69ce5bd4ea2ceab04
+8dbf1548639ced835beca4cb4da0fd79e7936a451691f23c1859231f2bd61d239a352d33e063142ef8844b777e28eef2f286bdf4ea7326ea3ac9719a4cdb181640727493a2b94b7a9df5cf6844064558c63f27a72892b19812828d32c8c76a52636f16fce7c04a3a38c78abe0179e533746e1e1c8ac3e3bbe106ba78b05e6a
+27f6fa044cf6281acfc616fbd096d15b607b86a61644947c5caf286f43223ecd23873e67c555f614759a4ae0bc8b78c136a1b050e79c682e1545e2d3c018b7321e63ab4f61f7173fc172d563a90b072b2fab9bf4d184650c1b6fbb6b14cc43c354fb4dd10fe294f9e7e2d1ad12e49f517775962e6edb08dc6fd08e554d014f
+57bd2707948f910e79946e5992a7152893e562c4adef8b17f8e9c642e0cba85fd3998de2336908f3bc7d6f1c7af67020d5398b4356837e256fab4d507221db4772022b13022e02f3c72f91fe55758a990143fb641fc74b8968bd9c66c9829a7ec6898d0216d33aec6ce97e6d408712b81130fced7a2f83078a2a25fb6ccf74
+ee3a76ef72a4eb35cda2e35aef2d203fc37d2d5497725c5491fc2029f90f19973512c8ca94e560780075b41f8cd42aa5a2b43261a0008201f4fdbf34b768f0e033692725bd196ab644a5c4680102d5b665b7061097844c1a663bbf1be878a2991c98fecc4b67508d7fe91b50c0aa373b02a19040bf72e6dd84a54dd0385f35
+4af7b9288f434a80e79982107b31272e902cdd8d5306da0d306bb9ed2986d3498373442927a5c774769daf503c30616f24001cb17caf8d14d426c9d768b2ced9286ff6b0d1a932056e25aed939e893f4d9dbbbcb5f9817c6d0b0c469f1a9f6e2af3c5046808dc130e18673ae7bb5ee973229bbcd78a193e0360c9d4729bc92
+933a65866eaa926fd9d7031ff212f3c770dff6740640dadc6238d1fa2b44e979edf743f2ce2227491776ea376dd1f833d7d4099cc8914e92decda2cb2bc9c82987ddad25097e7db47c4c4237f879085866856c68079bb837c87af84429bee7052a7e4e1a609a235501ea40c921bd5ce7050bbfa2c8cabd184c109d14d9e359
+5603efbbd39715fa6959290eddd302be9417190a47c8d1e6d7b05bbe50bdaab53d8164413d28c2f2b684640f5cc8768e564023892b9f573b37ed8b4a49a82de14b097ee47c0edd61a0694820cee6afb2b9b836a06a420833976dbc30f081cb44876ce406261794ba472afa4e42a57784052f19cf1e9d46605044235ee32394
+9e6d09c83b087fcd55dcd7245b717f09b5b584fe9fcc06ea9f785b790f5efefc8fe8bdf26e1ace1c05033c4dae7d271738159ed7d8da8145da39d7a73c7b54424c52424a60746a738fd4ff0c4af80ee7976790c7d4af15d1bd9dff8b21e21ea965feeca5c241be2b5b8ef1715596e3a5492ee5f67fba7f2532513ec40dd18b
+03656b3f75c5d8515c1d14d385043418ea8d34b54e19e68264ff8c3d3c94bb9e41a47e2689ff90ab1c8eebc4ef16753017766cfaa4b583e48f8f6649eeb4aaaf7ccf549f2bccd421c7ec43d0a3e58f5fcf41da55255c38dcafbab0550fd7bcc7988a49d4efa19e96f83460cf1078dce4574b6feace55e587282addad042a77
+7ad11b356ffd95af1cdd79982839a3d9835c78cadde2b7911fa4b9d3d8fef1736cc4e946942f887b023118f9d510c391b54d26728d7a2ecc75fdbc3183671c97d0139691723f07096829c8d3b74e0ca32b5b1ba45d2d429f2b3c1f7408bbadf1109e6aad96a464dc16bdfeefa0b15286ade98d69ba0f664f19c2abf7b5947c
+9db71aebb11ffa9d0471db01dfa4849a90ddcb5cdc833984c119a66b5cf4b43b193a4d061a9f8b95cda62837c2c6b54f8de5bdaf9e20bb2c31cae1e23ec3fab581ffcd25915fd2a54b61f5d316a3443a2d417f65f4b9baea2309f1b7d610c5c412048be7e47ef4e48dd21b3b1627e06d530b07f5bb21723b26f51d1a2646c8
+834a6f5ec1e736dead4ad042a09bb6c117fad1a3605e77ce6204aab04610a3af8efcf6f015bc26a6a937b0bf790e751a5829112b26122059ccd4972fd902f44b7efd3abf42a8b837aa1c36b6e38ce39bac31d6e187b24809f2f65aea0f98f8bbe1c28d2e27852d80a307c3878a481f0a3c1850d92d7f68fdfaaf22f87b79c8
+73cf9b85ff3de77c2d479d996533689c53374262a28a5e2b27d375490ca2ceaa6e5f6c1ad2a4b044591c243dadf5a7f04788cb4138f263710cb535d5d1d3bdcc58a2cc2b978000aabb4d82de04523952b02232b5686034641dab18ef3c9fb8fb72e32361d62679fc0b79b638df933f2683650c9129f349952ffa0339f30bb0
+efb733ec3c0592417801dee756fcf0e0cafcbaf192a31ae4bd2c5a450d578364446aaeb6e6dc70d633b4aa814ca0dd22b134eaac110f8e97830c71a7668a6af257b1920e45b49e407e0e4edc260d5efd2e5af984a24a292474ddb97859dd52f0777df04a38fa8162484a0bb509326a2c69557053f667a718e74f6961923b77
+d0bf2e78f70c0c054080dc950a656d7f66a191f36b9fdc39d1ca58bbb7775eb6a74dc7cc5aeecad4d5be08ced461a2df18c79e93a79eaa9a30e75c5430c4dcbd3c0df71184dffdc78aa6163611ec6415c3e75919bf9f61d1a48b1c8c1d694236703e7f512cd94b48f05b231de1b00077a2c764b2ded73c07c12c5f4f1e5cca
+80cd905364cede8535d12b83677f886644aee1e500deb52302d9eab6b8da7040b0e38cc8691a201b970bef3a61affc8016e345c9295f60cf8496d39021e1c8998b83cc0d5ba59ce7d0d39537dd4aca4d8709f2687ec57e82f8cfbc8ed01efa020d27dc30da72995a7f1ef26aeb85dd1cbe5565d38d407bee29356516615c12
+d451f2792018fb7fd733841c6844ac937f0100235c70b4e0cad08b1e0eb2559972df3a06d387cb172876c7c886af2fe8997ec131ec9d5f0054d10a6da33de7cefc93d28625fd0b31c0c51d87a07e3ff150cbed0aa53658e3d5ca68a9dbad920f3fbeb7a669fa44287d41f43e70239748e7b86cd7f56d8747c942e91f031216
+9f13b0d6a0b48e156772b09198024c4899334e9bac261eb9d2a12baf043beb9146c0f317684ed59f5102e168c8ebc1457a426f761bbd0ae6732de783d77b1ede35edac6c9c806cdaec4d2d1f2b0e0989c92c63de9406ed690199a3a6c92eaf35328ece2afe2259e98da23976049eeeb8904715e0c30ddc9f83cf9e9330d57c
+375a91df767405b685faffd062575fa32d28b488bb21a9e9dd64146c5302385c01b3b32fc557d731a7365d556c229e02dbeee87f16190ee17b1d6610e49ba9ce2da2790646a0f4135fb1c7d4050a58668704ce08a45454f6272d38412e43fbd141a5a2fae3d78267bbef02b79ff6052307c55c0c08e0dfb447be19944306be
+f250e552d87bdf34b06d7b9f5e15633b1a7c9a1c4ad5ae03d603f596a0f84a65c09c6bffa6284b6eac429799ac6e834ff8b2c749e04049b8c28c81966af8d9f8dc3b872a86754ee4fc2a6dc78b3d7ec8eedf585d54bbf8548314e65465ea1fe463f4788a7d26701b77c35e4f4ecbc8dfd5645313cba4ae9fd8708776104aa9
+53c5ced171062cd919bf5430506de264b09359bb0d32c59484f369e05e402c86f9872c35a43aacfdede6619e16c206fc306e65b89f96ce9c591c64936d58ff343922e0650acbe34dce279d3f31dea0e7b467fef530816ca58264eaa8bf46576dc6a4c466d7603d033ff17b8a634ace8d0c12d742d1bceb2423b4802a5d9146
+10e5f54c5bf9330950b24668f0727faab92b8da23923caba71b9d519c1df5867ec5696796d5c800cbd7dca45a3ee712087f07cb8320474783a2e8a89ce3bc5dc0fe83ec18c1d75695a0d13688ee8f59c7a6855ba80f4c8faf1051fa9511cdfd5bac786bd7226eef6c10aac0982fdd596934c2acceb044927b1f8b47eb0a730
+eaba241abaddaecc1f565084df13ba16f70435a947b40cba85c8ff103d65829575a95b844709ea6c7cefa992e9984179ae4aee2b20ac658e4c45ac5c0d4109c7087545bb7ebd0856ba283e122286dea2f7e7a6de5e1974ca5c3ab3f3b36a3f1065f9fc6dd3c80c419762bcbfde2f2368b6714dc2d972ce96cd0001b5069df7
+612f079f06115d0513916db8e31005001f81e7e45c8f9cf7376fb1073280aac3a28374f346c30d069e5e3227169b77be94de1fae88bd533a12fdd8b723ea665ed68eca303f8f7e67c704a4e754d569381322d18b2736999231b5a9146dd6777fa62fb92a61ddbfb8b5fac877de4d7b7a32f65cfee163e31790354ed262e66d
+f841b21f5af794026d03973d586cc48ec892fda6ed2195ad5994e179d72b63b3615e1c8b37c5b4a35d5b9114848fa9b256e1aee627d3d2555f6f1155fa56d641701e83e9d0a0dea236ebb1cd06ba5df6b3d180e75f3a5d5bab694b50565f8d94096f007cb435e5012d11d50ff06b11e4627c2a68942b8e22afcf1fda80213a
+49609d7f37135d7be8dd9c07a5fe279d02d2a4942ec98ba46a6161f9adc3403b77a2dafe021ba37e0a0ad63dcb1aa6ab490b5d7a716c1ec09de7a9d4d06eaad43b64cfb40c8e834a2467d0ec68d441ee0a9a67d0c4ce2f6e1b973a3b8d35e9c9f21a4885fc671cb022360d426146426ce1b48f7013d98a4c4ba74cbc07468b
+de59944b07a91b3632b275e02b02b83f3d14678960165159c46a9a1919304814c608b4ddd708168181a5c4d6152eadf5fe8aa5a0ba3a4510dee18ebff1c1e2e222082b38378f7242f1a6635cc2e8dc10b6e8266df9da6d2b001990ad0559dc329f0623bc40925e4c075873ffecda33956174b95e5946dfb89d9c13c9791580
+8517aba5b443d75a673d23e23aabe3ce8680a444047f106951bfd2a9c609bc4cade57d8d74872f89b31b98d54e2d382f16a56d8fed0583070443f386d564388495d48def25dcde0139cd2103b993ed7f2f0a42ebeef52e4e536fe0e77d4c7d2dd24979b3bc0dfb0c4fd798dbae91cd584f794eacae55b1693f98c24e807f32
+82a17271c022e29e45c07f4a9343c6725466269c0b84c8fb7257630404df5fb9462ac1ca783b3c236d2b71aeea329950a0d596bf473d86eda8250258cff33b85a2d5fd39bb9576350f6da89756b9ad50f14a9209de8a4d5ddb1541c6d892a3c71d4769fb8668779a140fb2f7f3b9118304c403a3670c45bca56946ad2314d0
+2345f6e8f6441f3d4fa11dcbdeb0cfde771d98b4a3c229c598c3930dce9bdac57de5c92d51e3dbc43ade500a4a4bc7ae95a377ae8789828660d5ce612b0a3fbd04cb47c8256d8c45cd883898719e04ddf66345d752a0d5807c08b69fe5aec2d62a1b03780c55b2d264f84205261e4042530a9d1cd83648b2f0fc092a1f3dd5
+16d6d5ef68bf5959b1808646af474ac98eb91f1aa2a27c29b26cbf398b0543d161d6335ead1357f379e9be619f524416069f4fceb98bc9ae2b90b58bc2ae1cb4d783b961e15ae4914db5bce4b3661fb755d29d8be343c716213f9f08dfc1efe3cb5f8b6ead9f54512c9248798af5e963b56cf72fe0dd4cbd1f2875c2709c3b
+5fdcb3a32f653a372373113ed1ad4e63e99dc9650a230b76caa23db7681bc2b8968bb436d734f7c52f7dbb5c407d6c78de709d020a7db6f5d87061e463c61dc847519241d3d83064ad3f4e276f6cd3786a66529acad1869f895ae59cd940b46a533fb77bf2fe875e86cf33dc6d153c486d9c3322b7b4e7534071ad001bcaac
+d3ecdda204ad751101606c2f8a87e0d78439d82e8ced891ff633f7d47fe7c1d36ea903f635c68d3a43a6ec347a5c3a53217ff9854755efb34b9c2c86b8578a4b433a2e44e326f21d697adc5c78fae3ff19b0974c5a18da8f12dab89d9d496c867036b7184c6ff88779eef5a7f6138cc73ff6c17c243c96883233a17a31dca2
+e6dbbd5cfae9ebf98c80f81ca4e4ef04e37fadffab35506d9e406f24ac7904e9f8704ec591c5c117b5a2444952301202c43a62d4782672bab9114b3f340503e3b5211fb545ff86dcde7f2b58acfbb9866a40ae1bd6a6b0254c5830c70762da6ab4eb2bb2ccb1ca03392c6d0cd411f2b8827f7e06b9bf43ea2db210f7fe3c37
+02e902a1c8b0cdd52e9d170df67a90b642af92c779570a61d203d40dd619095807cac1786696b28c7ab139150c7abac724fcdb6ce755d5e85a6b55798d41b8ae80d073bc484c694e7b6dba32453d515d5807606d460303b065bf316c06ba6ce5d8fc13ad261028620ae820001c9f5288a3d9669dd2b630d789083eefbbccca
+d7034813255e0658200d73f2e773934e66c52f2dcb56e4a8051bf67e5018fe7743087410c5bc3a55e8af500f10de3c88a43a18f5f7247652df8b028e4f2cd63ca29e638c11cbe5d479d3a907b17d1b88f5b8e89f1471421b74e3740e76a374d5f5a9fd81078d4d8aa385f5c6069bf62feb6e077c039076baae312feeb68b0f
+e5929ab8547f064a2de9fd89c82be2ca99d83e8f7e344d9fb3b74111ec9c2ca79ef5430dcf3d07fd591f59a84c679b0b0c0f4245770bfc1b94c985d26a208f1f7386868c1d244f6399a859583db75106dce52efb8b0c4d1e6824cf11b13f6b82cce7256d444801484365b00c3076e1f7d0b913616c5db904f66ecfebac4211
+dfe3111e1d1826e3f2fa44e3607b839c14ed218810587b6dd483fdbb3395452eb6243acc612b2bf43289ce69e86c650cd5e5a0f96a265c2617b2d2d6ec2759dc4ae6e32c94978932671c1e0d72aaeae835c447912f66a39925da78528b43d567f9ba003bd952e2de86df8660274919c4c1f2ea9c2967d30d8326a838df881d
+35adbe41ac3b1680c0fde52c3f1c1e2d6d568f7822baeeb16e1f2b959dc637e0194e7dfb1cacf3018b39d0d2c5e954a58cfd002cdbf390d1bf281df3eaba5fd82b542d6faaf3664a89523a5d0e95d7fdf91a1999822094b0666a6e91be0eb2236a85e6ec4dc8cb561984eeb99e52ad0dafcad0acfccbfd62af62150c749438
+8a77e8ef10a09c5c88c511e5e3d25d0f54e53f100c87810f3a9d50bc6a04368e024c896e2ab00ef625c5754801705b9c8abd0e1d2dbe0d5de2e9c3c2281781ce2f2c917f424ed45168e81e639491e952cd670226059fa5e248f9ba9d8d683d9cb975fc09d8a50c89aa00ea7755eac81a11320cf74eae634cf3866dd1b3673c
+9a58c91e9e8b94581f7628d2ae0f97485b590b5f3ebd7c268044ba7f8f9b07fe50989081f1ac50e6ba5d02577601bfea699ac59432de6e125001de032169ddbb10854b0f90f55d3b3a85e461c7944c5ffa1a3250f71f3c535cc142cd16c4fc8c9c1de0761f87cb840136719e63b342011d02486b75bf81997f9e7849bebfa8
+71370b7414491cc16f38d5d4eaedc34047d3ee80256aea589585f063d056eb62a6849eb56b488d0d646dc22bed4d316bafb5428d5049bf5400a7a1b69c463a80ee16906eff9beabc7bae61a7edcffdaf1a57fe269155f7a7113bdb3cf70a5c8c8509d8bd1e3c5126ed4e1a4853a25939b01a03673a4275571e6db4dfff36ca
+6ea232bff15e576bf012b5a946a81e48bbff414a94db7968a1f0d4bf163873c842cfaaf83554775fbd7428d8286d97fc546e899c88a16bbcd93bcb5b78939539b0cafc14b68344e42c70c182804bc63fb0eb6ef54bb5f316d45155e20beaa7fd4684ce238004cdb5d23adc7c2e618667e88fee3c5d7a1fa67deb9fd654ef75
+479056d32a7bddefc6332b1d430b862cbb02757ab5d9eb079e053d509eff800232c195e8e3518cf9e2dd4102f59fa55b2686b0d7d39adf9ac37f55bf9882184293c3a216730d26426986ce6633ec5fa6820fb8243dc46fae0deda0580864045aebc5b25a3747c43bb9d8f7374e4ff01593985121efcdc51dad1fad55f8a750
+93859cc5b08f83dfd3bb4990011db4712420c2d941dee159227656e5e54ef1d33320554ab70ec8b70f73ff31f84f50ae38fcfbf4a7957290d21d5232a3e230ca7453125cf6f799ab62312a12ed8444e837a854374b33d43904f5cb9f4163d716fcd8fc025200d4388fcc4075b166273ece9bd55699bfbf1dfb9afb47a17797
+75e6ed5648874afac0f5199bb65472bbc0492863a4d2df2b9d7b0c91ad8509382f6eb68b236b8127acf3c37b3b3e2119bfb5766591e152d794b3ebd3f295989836ee729141047139efbc409fc46aaecf32bda5692dd28664b0636f89be326b72b1a79dcec126fafea7150b99df8d57006cc11d29982fb55dd7ce5972da22f8
+baff4c43f94f0e4616a2929e3849c8425ae6dc950a626d6137da8985f4692f61b5c37a0640b09e841db4f86ac7fd66d5af3a95259125bae1999d9fa5fb21eeac7926a7f6fc9940b19b0f81c8a94e26e8677decc980c4b7f28016a31153b745eec51a8661266d37a09f9c64255649e64090856cdac677a66647a9ebf427dd1d
+222c8150a86b8f7d12ec27b5a119ba6ffc942b0f34623875d640e79535ba6fdc5f9e936549e949ab53323ea863afdff2911a91d1bde89ee15da1a752738a7744e9aba6ecf3ac402fecb52e2851eb82bacbb125c2dfa5f2797ed1b15aa6f5bcbc2686c7c7ee3376b9d7645399cd2fa28a4c7b6d68c043b8241e55a75bd99a23
+2109044ebe7796199b97309d62c6b677d78d98e982adde52016d1dd3f232d57f0cf66325dbf2f338a27530d01ddb87865a792c827d7ea48b07f7d35a00a236c87f97ec486f7c1b518969d7498009f8a6ac1dcf052c167697aecbc1e35758694df075f85e5d07a08c2a0c3b0785dd39b31faf36b7902eb150d1b4c0f13af878
+605995bddc766dbb1776381eebec65924a450b3965110753df533d38a414c1af4e58825cd6bdb803c4dcb49617811fd9274d0ca8b3a10efc1635fa81b8d4ce892f321d7e5eacf5f26e7c07fe8ff9daf3cc7c33e1df1c3f795bd427a977f5bbe6ae6e001852922ff4a30098c38aa7b9b9b0fc5862dbfeae46295a8da3eebd0f
+0c372039bdec907bf3407146b485469fa08fc11c2619360cad71d6dede0f8b49fc7bf3fc6a158252a228ce6930cdfc0fc07d18dc4cdc4cfdc7854bac54e0c2949fe16f2736e9005538bdaad95ff396d3969b6d5a2ad0c99ee9a4a6eb5f548e659a766f69b6395852719629cc135a01c30f55002efcff8091a2477f752c3365
+771790d5b7ef5a9bdb5c88096f497563166a3969190db41181098e8dde06b54cbc40842aa08a6947071a49c3d02f4655d49b4fb3a3f164858c15cf813f800c0def66135e1d15edd4314f75949db00b28bcb41428a3e1a58e8edefee9d21774c336323bea90826e7bf07fc0478e5f4a6500660b95379474543ff2d482a68276
+f38710ee5407ccc3aaa27d21c28ed3f60879e14723060ac34e91568de52d8f34baf046f2bea349471fd3eaa6cd12e377e37bb7fc103058169df4f595f3ca6b15e343f59437770ccc36ec393debf2defb3ac1846eeb9532e862e0acd98b36605bc535b88a5e5e3b6b6e86f95b8ba093c68bab5fe5588f1c3edfc51e55b512e4
+a3f1a61b4cb72ae51494802cabbcdc1fcbee06ee21b64c35045d9fed344fa9facc0a539b5148d7dd255771c76f4892f1a398811404730e7dea2717760943c78ab7975a422507b7e2bcbf2de6bd7756d098942a1e4bf2185f74af7febf2e29062f05deb585f0ef1d57bd10a5eef0e56ff2804ede0576269ce93ad23d2c501e0
+4e5644847a026dce845c5f38ec0c155b67bb0df4e672706d08b35c8578485809c06526464e1d7575394386c2b77583fd56851ddf67e0ffafba970256907d069bc545863e2e847e9a52ba27fa0c60838b92b11883363d8aa8bdd4be8edef5f1c074d4a6fb068101805b4318a586a9409664a48a49639d1bb19083e77931ff92
+bd724a761b5300ba8332b8412248296f3b89045603988c1162fc0d917f614c6ef84112554f8bae7ae6dc9dc73193c0dfe72d77040c1e632686eb8d87071f3bdb3d2c72c97ef1e8874e657bc36f9ac3551ea37a56827bdc66809d5fcee7cf651e4e65ec1889723f803adb69930eb509d788003c63fb158c764db263778f7152
+3ce577e8ae531258b5a33886624205fed4f56e3ef9d3c994298edcd2d59a3633aa63f831e99ee4e20dc4735eb17aeae03e31cf9b35ccb512035bbde359a1d123752fad616a095e2fb1a246755c699e073fd33a77d1e391a765639eacb04a27ec5e70523a296c6f9127aab3b380aaee76af3c9c8ca147a00b860fd235839ebf
+cb9105dacd64668f62247562457053617ec79486ed91fad906f38147f988b84caedeb9c6acbd6575ce2971053b79bec5c7ddc1c0a05e1e42e6ec0e4dbd180cc00e6b6aa8c458a2fb0787542c674580cf4a70b88f30af08005eb3d4ebebefc88e4af65b3cd9fbf680d770b79e150eebd0a41941e3f01535dee3e8244e4a50a0
+0b993973be46564bb69f73c229b60e72aa023826515083bb65a70dfbc8f246320c97a9bcf123765499d116ef7281eeacdd55ff71f0831be417925d9656b545d8e56de71b656342f1b3100e9099dfb4394ee7235e9246e81ed09558555ffae7f7a2cc47ecf963e9ad959d2e2c95bcb4c5bebcf3018d505f697cec50acd2cf6c
+b43e7b60314d35a2c14b025d66b8a68b1de9ec53f72a00ac8e7010dce365eb9bf8705c92f4f8fddf91d56c4bffbf8f342679bc3059df5df6e919e3443f3597f60189c1f9b1a47cf4266b48f6d8b0cbccf9347682ef3d85651b235b2cbff0db7153bfbc2cf59094c5e682a83cac5d58cab9e2f4e9d30c5bd8c92d5f874131b5
+1d273a3b6f57c210291bf0294f0f2016b80871381ae47ec95d63bdb757b28a14e3cc9431747879791ab83e7ee5ecd0d226f7b5f42079633b42f31d007ea2fe4728f353530434eae7f5f03f1ea03ff081768a4dfe815783d44a9662322f0fbf2e21b6ab07c6af457848d49e37783bcf4d4ee852d603eb60cf8b520f5f32deaf
+8934badd620d40fc52fe047275fc4468571c084f5910e1f5f88b1e1d50d03f7b13b2579a046c0b0d6f03544a81ef4559e15c740854e95fbc1bcf1e6d2696f12f6b7146c82f77e9ae591c9b9252cefa2d6d534cae5e16621698f441e0463e70705b982fffb7fc23d39469a3b213c3479f5f9263f68c36af3c58fba33bb1c0d9
+d2c59e3037c787dc2210548ee9749a42af9d34b470f53eca9f4d614b87df34d5bf4cd5e88c19815d7049c12b2c8a1ac3d6d82503218aa54b71550602ddc6aac54c7558c79650d2a15cad3ebc6a2f9d6288f8b63bb3ae1c83c9f24f8a50b15181ea9fd71fd34bb21c11e668c0ac538bf610156268a779f1a750c6d962788900
+504d6a88f8d1457c3d23dff4b7c7dc4ffd29b1ad888377539f41bba722fb39427e94a1a53c1c50d63bde4740097cc6f835226dbb52af3f82bc614d2ab4febbf8b138609e8bb957446d75d5cc9132fbcb193172bf20fdf15bd0276dfb957dcdcd495a9ea845122ad8416372632ea58ee4c98c61ee314873a9cbf6a90a6d9fd3
+f0b3d951e7818ca95888142b926b49fe6fe30cd86c176155ef7e078259a8b765b9cb9858ba7af634cd66e5a7194468ef8b9bd22de3e83855760fa9d73d29bfae16352cbe2bf4546d0aa5a303d9b621a637d380b556f7d8b671675626f35a4d814ddc8d636cd80ec82d0587b70923b9cd0be206d6498de7ede78a407f66379f
+c5a1a21ffcc003671d2966f6d88329e2641be547e9f86d36eae5da176532792f2e78733262956950b59025d82550b217e68a7ca0904708495e1f1a8500b85afb12fdb3441e282ff674b11f10b9d95937f6a5216af24c21bb9e3ead9d36910092c9db7c11be221331da36c6435406e6f579945a5a11ae59c67460b17d197e49
+c70ac5f20eb8225e50de3b9327c04c94c4a1b0bca1913429df6740d7193a24232289a807d815f1530442f7cf7975c848354128b85ee05b4cdb538268649adb30af9105e58e98bddd4047a3e39032ee1749828ff1811691ae5e83aaa0ee912927dbfcd857366ce53647e67ccd7e6db5a8f02664be0500a8d04072f8e125c615
+81dfa16c04fd17bfe43a40042d8fa7d63da86c60302c17a51c7d4585f3f54abe6aee02bf03f8d1b9edc1a3e07f4d1101d6464dbc099b09837e6eefd90a52e36678dfce40f58feabbbd9e5e71747abd6bd9dff1de4a31e1ca6d3768285db207a0e61c635f5bc404ebb89d19c01afa54bee15049035b40d2aabfd9c6e942cd06
+559507ecbf5bbfff1a9ab8171f0991f434fc4dcd20b6ca6ebf1cfa6fce43ad5f51b30aa67b88986f3090c636fda5c7555a25f4f30a18c7d310dba00a34fa6dee95e17b97687dce089f929df1e7ed3581c38ad304df967148291783f91904085b4707d56f761a6518c5c7312e55aa34b874e792d8950ac99c760aa08d601724
+b1522fe0c72980b05986affd302f757b37e0a176c05b356e8ce0881584595a5710146bf39a92d43ee8f1774e795cadb6823a70e090609f40a6afd3b3c41699b36f0717154b6d90878547ecf0223a17e250fb729d43cd48f0d57b05f6206e618357589c26259e6da00804d9e1d931010bb59b7ecf9337592b79d9a41b21fb85
+92659d537e1a38f9b0716b8a53d9a7b7c8591db7e2bc85b47a3fb704d27fe6f369c34c363737332f48d0b3442bbb27dd083799b791145dbdf33490ffd9251ecaa1239ce5376e7d7faf69cc6091685fb4576649cf27743e25e451df78b850e6066d727b015ef813a685e49b0749dea9e07c506ef37a6139500550cd52967d0c
+179dc78da3c5e06bc884d93e21d3c7da599f78b779a9ed1a87673216ee02165aa4a0cd8ff637d229a96177affc8b39b73bdd04f953fe354bf97da3edcf922ae8c99fff0b535e79722ed84e1970834834d0f81952fdc90f308402e514e25b67a5bd7d8f89e41a1d2b5e6d50517f98bd2b6051609d21fedced4667a11b331264
+8f2d369939775a283118249f3ac136114642b0a3003738570d9e6d820e84b32f41aa07bb689e3a2e9b8b71f5f16e7ff5bfe5d7cef61af8d4e1f66ac8fd4ebb15b81667a6777fd2c65911970f47547eca714e07379c0eebc77f902cf1d7a8fb26d918281f9ffda2e9f3fcf13c4692b856b653fb96d8db4cb0520ab224f650f6
+b54df1bf2361a7008d2f9b398426458fc7d554b21cc49a21b679b6814784698bb5c9002a093910389839620bc24c57dccdd8e5673d05c5a9cd91c15690b8b6d0a4ad689ebb091bf16a19a1198a710843b85548e601315ff75737a353dcd3578ea91a9165d9310175a769ea6bf1188f044586a4751340aeb95774eddbfb9271
+5cd1e13ac0c25ba33e81834d25b4eba8766364ca2c02d757e2eb93830c57f24fd15aeac44d5e4e01e99ca27eef2883a952f5c52bed754012b3ec587d4db775e6444370ca98376418827a19aae7d113cab6689da95a0e4447bb3496510cec640083bc7884c08750bdadd254e6910ec02fdb3ddf07f0fc8e61e227030c9dd6be
+c917684bd7f20cf8dcf79ee2c84c4d3affd15559e9e7adc2f3363fdc9840d01ea65dc2c7a1a677a21f723df4d2b63dd8cb1badf58f63c1dd590fab21a0107babe7c06270e247353615b4fb8cbae6f6f4d68d29b8e8ea5eaf6cd0283563bc5da66df1cce125a62f02848cf6fe379f33d11250b30f4ae202abba92519b91b223
+851bb68fa5363aa745f76ec3bae67661d21c604014f10db45049781c2f1fcaa906910b973c938c2c799876613444a0264a5f3309288a47b1f2df72e90f519860d78b1c7a021b63936ccb9723ae4172c10264861c2e3e842663fe623457143375cbfd670739f2f01f4e9332e139a78e65036e414e9a0856027b14fa015c3029
+14cd58d042240dfc711759fffc0f7e0af71294012247a3f827e494a4ade47cf78de8561158a3318ae38753cd6ecf82777ed916949684f63d0c7d56fb3d5fa891cae1cc2417fbe734954b52d7b1baa1510c943997ca78c8e5bba26a5e6c2ecd5e204647377991f2bad8234cf28f71c30e8b0cb51354b4461a99737cf4122988
+25ff9706b1865a997456e22cdc981136d641207d56b7ab203f15a2b48fc6ad499ce3529ff67319b64fc87d5e1ed9ea7f359d0446fb34da085b3fce1749c56498ac103019cf7e06ce15aaf9e9833047a8d06a0b9792a821ea0e6bf23f4cd71072795d9fa50bd3a343f1a01fcf313741ff1ce9e485561a124b60979207d83abc
+64e33258b8a4499d1fb2e9fe64cc9d451ea5c9883dbb90d62e1d37c5cdd3fb5c7f3769a3beaa44e81540b4223835ec1513e40f6bca362d8e370766c2c09b3f65bc908b2242a83b532a42d5e2be1b88b1bdf2f2ebba0c6c00b041ece7c628b424b4129e3c7ecf1686fe7df96e8069eba24806d225b487057ca45c51ed184542
+157e396ee15896d3218715bff7a7d3c6b7225281fe0731799f85930c52eca4ff4d52033398143df84ac8dbdda872379074d34bdd818043485c97005ef1291e36d6cc0a0247e03e7ea59397ede235f9e5a667661ce2f89391a68937d18dd1248b81c45e4427433d1cef0500636b83c8a82becb3d62a9d750742a91817039387
+3cb3a317188a7d875a0ac68b1e3dceedf2c24f34a73b4f8ec0a593414e740aa05f92260fe3936eb0bcf95d2c20b8d186f2740d8d80084b43130483cdfd5e1fd72fff02ade4021e7044fc567ac7484ae84be004137ad4370f68b7015a115c4c74638b147384115429045904b90dce5e0e1126eead8a7e3aa07e88686fa61ff3
+46303a9cf00cc7ed566cd9eb55587bca1363faa6d936aec23fb900df32b485943775df0d3dacd78abce4336b85a6a6d3c34a2dfe82c98eebd8cfa48683417b87d87fc6cb7490da544c002eb61d5f8c9394f64a39c33b6fc32c5c68d533569654c3aa7750b76e42dbb58e9315577c1af2eb97b04a060b953f4274d59e2269ff
+fa486d3fe9fe292e767f2c32c35b69d62e6905ba4511cc4997865d372006d2f47b13e1d00ae9e21881c5c35ac7744ff4b6155f44f683e15ce7e94aa45ed01c0d93fef9b413a3686ba410dd1997a13a8b6acb56f98501be1250743e102936cd53f0b0ca4aac60c8e45b396377cc1ae9d429787a2bb4e58946cd27c44676f7be
+c6712ca15771851a335bd1907454f1aa48fcb9e144dc108d25a2a0a29da3b6889dc243e58cf4f0effea3bfd9390e9ef435ca0bde273117c7067a4e3139e0bb8a7a42398383e82a9158668d8ae9b0f853d403388533688ede1d4e39323095b62193fee792fba05595f89d5e885fa854421430486d068efd99a3019f903b631f
+ac37f5939b9cc09e9fb55e8770248a8e171a4927c55c0550c954bf29fdcfe104a4d8c5f4b8cee2c181208492b54a7b8e9d9c1851077ce831a3809c34db39ffaa95e7f268a7d1d8b00a3655a9d8bd0795b6efbd2673e5ffab8bd809cff4ab0cea8a46bd6d378a4d678ad8195dff91bff775dcec4907e115381056342ba78e1f
+5ba0b768349e2af84b9df227085f0b0976dedb08cf3fd45c54af2b7fee33eb56e4170c7485ffe29b05b08ff1f5a502c86fe044e05ab61522ecccadbdda74d2e9577b9384f41c933756e6789305929756e8523c13ffdfcc6553718357506f1cb5e0bfa99b95e4afdf622ba483391d96e9ff449b297613b5be941b6e2e10bc00
+7ce716000a5f0b848fc8d0da6b3c3943eb1577aed337d6c1bc090ea7af28b703123b338db4ae1bc9ca0c49029bee08ce3f2ab94e225fba22ce399bc15e8951e3c889ac4a77486466fa1e109035e5eb9c0b478d705011653cd7619bb47cd2319ee29a82a4e624d1f95e09c134d78e1d9a2a267653f2aace82066f27172d26bd
+9247e2fdb867488d4bdd55bc354ca0ac96e1639b5de0626620aea95739fca1e6739e4c60f8db618b01235562f79aa3b11875d5e6a7edebeca38051670607f11e49fb82a7568bbb280618740dedd55a79fee1036482b326934c0a5e16a1ab4701926467b81485caf16f0a8cb9c6678ed81e8638cbfa410aefbedcd3d18c3d4d
+c07eb131e6f35cfc86f9d0157a677d0c2d7e3b4abe3a59e07893817b939c734963c3e6abc86003b6383c6c5ac4f2462f87fb69bddac42c0e1f0845d24b1b909fbe03a93a4ea55c923acd4238a6aa20a384d300eb44a4e33c5867c3f82855b2621108419dcfc5845730d99c031e29d2ec3999f24564c9f7fdb687ee7f7469d2
+7e8c06d3f5b99f3fba2b431e1b016f7c0777b1d7cb209374e54a1e9ebadb0fe0405335bdf6f0ab285d1b3d6bf53a9fcd2e6748e5f76ca45a49c2ab5dd68edc59cd42f38f28427b01a3a2a3df74a442be1bcf7bcba6af7b539b1d148e6c75b5c35c4d7483c1209a753c510709be09dcddfd3dedc18cb976fa5389cc960211f8
+7e2dd57e86fd0158b2a0822d81f32ab0e6be3aba720ad374bfa454577b44cc8c9d96b2d5dfc95fbfb528d7e76a60486d33ff9afa2f16f7b4c09c69377adfb9863b6cb5f75f00fea2648de40dbd89e46a59d50a522e8cf5eaedb1946d4344b00430603ac426817e2b376acd0974b3c37f65230b8b5d9eb500ff8e52610b7c2f
+b3097e380fe2752ec948b46b323fa0ab178f34bcdb6c471c8cefb5635564d5d7a8d9b869a56ee5e7f97d2e240d94b689204cd44ab2aa067a7a4b09e71bc475d3edce56f03356937ec1ffaa4eda180da13396859c5c85a0f71313ed8d4858ca9394d4df8d2d9b95fb2be76b8a3d08d662aaad760f2730efc2f6782a6234bec7
+900b93ef744f05dc53021c01b456ab653cccd32528a76a974a24d93a67de276b0c7a6eadb306a420fb5c14db4a19671b6256e2f1239457c5b9808fcff5ac7ff494f457ee0a04788256a4f079affd0bd880ffcfc98fa12197c9fa128500ad5a416d7888297d5348cad355511b44f9a4ba1f2fda06b8f0e5e53715ca8230f740
+b12c9c4ce34deea8dd6e10093dba924d182e27d87e24e85f2da026d332651afda0afc7ef42cfeafa0aac976fa04ea29eeaf4243cde03edfc0bbfb10259ca2005d1ffe7af6b4b9b9f271c805bedb30c9016e8129a013b662240de6a9b3c64305cd8fc2dfa746c5a6a836714f04ad67287b30a21d53d484d44d263ff9d697ede
+9d0250ced442ae69c1af297cac6c5a67c24f5659e4ebb64af3297e481ce55a19016d510aa5bdf6fd8f27fb8002683d3d2e0c73a4caa3b9a71c35a1798034126c1760ef65c20ff02b5f971d4c843c327424fc9ed7e714439c17f339a1b7486330b3446f4ddb020714129780f88d0365509c481ca8474fe8552630ef36146556
+e1f3ca751363169d50190b0db124e2230b46e42475bddd584435f0fca6aa65533841253a9ee250c378ac22f56e1eedbeaf6788f82ce806bfa2c3208da57be3eec807ffb8e86a1cdd83f95b8812c07ebb36f2fcf3641d9c3f3ad1d7c604ba85891fbd97063dcc52164488e9aaae40821bbddcb6512980d01be2a8197a67e264
+dbfc76642eb69909da9c0d32a2a08de62a5fe165be73d5811d0f0172e1c3d95cd1bcf7f006b03bdb011d59f115a1b03e9e510a2be83e0c303e78085c6399f73000340810da2eed9b889c5e7f44fd479cd7a5cba4f1d1a8df20fc31d73d13f88ca5ced625e0b76d70461e39786ac20680790ea9e836c6082eff9b15b6540878
+f7ba0dd194cc93818013214156ac9278fba4d25c276d413834e2c077c5ffd45f0367e6099fb76618c276daa565ff8b47d70725dd1d612733b23a244f315a96548281df0df7c1a6141713107fd777f3150d4012eec5f8dd4442f95c6788c3fcad4b1d75c6a46eab03c412d5194b4e90f9a6607a04577824f5495d359761878a
+b1b0da9fb29884579f2cb4708ea65ca4601c7d8063975caa43e18f9c28f9daf31f92e2536fde729b4a620a786339f9cab5117d38e7d08d035c01a8a652880b776d64e61bc1abeffe61992da6593016aa7e8d9c42c7f126e574048a653d12a9300b0864ad905eb22a86bc81235836882b113b75d44a95b1f6ee0084172ad703
+6b7c2b1a5b8d79d1854519692a15705979f3492e2ba0638f6056b134386af0443610871f3bdae7fd150d394c4315e8bbe54578e91172352541fc1bb6b7219d19cc4c17d611c9c7ac1f6f5bc7022debde0f953a235f4d3901a9d800a00cee7d2879d7b8517c0d8e77f5e03918afb64895e67ee07aa92ffb4d0fa06ef55ab615
+681ae8983607c1c26aa24e2d32f9cc3cbef9a442010962f13447b5f451ccf6517bda24a53ae49e391df43eb21a55a21736074518cc79b9e67cc0f955274eeb5043beec6eb65bab1a452b28cd0eadc43b5d8f019acf3e458303dd62f4f78f3eaea23012866ca9da905a6441a09a7ccc86707fbdcaa77dee19d0d5db9643dead
+e7e829e24d1095e07848b4316309a1e0e7e1004135cc5119b19fe6a739407fd6782c36b2b082f150c617dcc453ebfee07e1dfb8dc1105237405f89b41a81f461cf03dfb5d9d13db21757878642c4373b946f052f7c094ada92115c9fcc25a374f42bb1fe7830f1909b78d9abb2461f84280f2ccc6dac98a0c64862b6353e7c
+e2354ef01fe572059d6ae25af308e20cd36508345411e41aace28e4fa8e02edea172dc99c7a200048a7de4dddef619fd90f4dbf7255b7fe188794e42d7cdb8eea28c0d886a1435ece7e4681adbc8aafd7c4250865c5550c06fbe2db519fa9ae8d4f455df4660c9506e60c6baebdc61bcff8e249a26c495420901e548b7d2fb
+f978741c3fdb26636120b8bc93677814e55a871a428d81fc6ac23ee71edb85739a92c20a86c84d6fbfeabd86462fb3b249440ea7c0517e230d567eaea7fc73ae495843221ebf44d2ee5ace164c8d09749227d1e09669e4addb6750479ca45dab1fafaa0e961f11a0eae6fdfb8edead318a477c3b480d6e642ca3c3e2927253
+6b304d374f66cfb416ff4baf24217d011a5e57638103db4a466baa95ff8aad9650931fd179c3f9c80a1b57b6a080ae49b110a5c1b4733381615a85efb8dac06b2f770572c3d1826ee972f43387694d3ab4ac73231d97ffe98f01bf83ff20aa623ce57ff5a8aa1b4203d6992761bcd10322f9bd8ed075c94ecffe6d10bb1934
+05fb314a363280de060657b19a72b9e1869b97b999ceb2dee4aac63485fe96b5b550db2e98c0a1d0511e741a12becfe5d59e968f7833c1eba2ab4f0111d19025ec745dfde1d18803de29f4ca4810b0c68de3d57f174ef5b9f648b507e0e0e1fbe4121f0b7ca4116f037bad6091f9a91cc64c8ee02caad6e4634488e4288c83
+f34dc8ddb91a2a1f01a49f4e48de607f8375ec953d5ee22e28c9f3aa8e4f6074254c770bcc2f6739c24d30455bc9dce6f87084af762acfc547b5e56d88f0b97a22c777baaebb6a9eb1c3d42420da473f8dc0ece39b20484125b0d62a27982f9616aa74dfb89ad704689e901d5c84f07c8951b2c4b869dba939e99cec5cdf45
+3a97246c6255a8f349f07a669c66c0013b105a0f58ab84e5e014712c7d91425d61a3c15ab358686ffbff9797e020fd43fc6141298910010cae25e8fdd0d574a55f699ec3a4015d9baaeb12df1fbbab16361eb92479dd3dc22810827151eec3174c22a94c8841b94446b74c22fd1932535c7c7e1107d6e1a1bba0ea8155dc41
+f6e2c725f98669de5569f33514b6528a61a534d22d7ceb6babb2f824771862299cf6369c2847f88aee2a76417bf51d81ca6a390663501b9215b4861a644efad6e15e3ce4dea623e8bd06c220f372cc7d836beb72bbda20288afce2ed884e9178fd9995e528a38c0293690054f0047c629b5dfe85baf65be877a1ef133e7bd1
+1204ac206c8dbccb7d3e55113b24872f9034257cfa15fcc7ece44b821b8c74288c147c37bdf27a595e65f2037416bf9a78a245c93c4c7c8aa9444c20ef3021ad783fe5835889c5fe99c3e1856e58902655571432d49f43bccb0440498d8eb41fc07b9fcdfa44a2fcf5d3327109287f816285140c471308cc4499adc95977a8
+71f8fbe0d43e3c1bd9ffea8d68695c1cb83673c7d4710829394d0e0fecd1016f1145ed219f60411cc2bdd628f72f60aaaec58187032dbb6543b3a138d45c5cdc955abb05c1fecfeed4011168a0c93fdb2d454c66a25a81fab137e70ec07787dcc132144c53a15cf0909bf10134ba9205a65545b441f1280239409d3bc95f1b
+0251d408e32b36a1d5f146928dce90c91f815d3ff79bf3a6e53726122e8c2b2d30e7092fb07e1a736b51cf13fde2a940154fc9e67568c7dda81c1d49072b4987af38584dee02328ad9476876ac02a1637dbf13fa61596588f25f20c08dc982ce453cf27b40bce8ecbb9a064da740f5c75497ac7e915d0d90904fc4dd614af5
+5e66151efeb466b98423ff03fe3a8472c9a6a09965a81c831ca8ed875489a729c2d54b0d496d83cd009f9cc027eb116a865020e2159909a3210c0c6f5c04a5418e53f49ad35fa915e3bf11361e1808b22ab4ad96cb70771e9894f2b2853be3af22df08168e67fddd7abddce1ee95cb7e9e2bd075ecafcc4acb6ca79aacb2de
+df98ce002babddb84b832197f0e4592c0c24bc97477416885713d49c5e54bd834db02d4977d8287f1e268d765e61c41b64f8f32bd9b961c72963a226d0bcd1f412f35b140bc547de69d7cb48019b9d939d9bee291693a4b1d787b12b4d8607ecb54c1109ba0d3b2579d5a4eb71c43859e996e87f8f62f03a4fdca481e1597d
+18d91245aa1102629c3a87268f2c526c5281f8d8a5f1fb4896a55232319791654bea0c5dadfa2cf56b1a9cd344d3225759f778e86c03a19fa1bb9272d99d7e4ce5254d321379f6febb97619eda6493e50a932db686e48a2c08415f1039baa1c62a46b960c078e7ee5e1a928578e491d622abd370d75aeb126e60667b8c2a4e
+8f6f079742d805aaac642341612d5a4da0056770b0d241f85bcbe26946363b1d0654fae73e66dd77d19e4c616b3a5b2fff244e6de6ec051bea09444c83b691e3933bf18e606193b242e5f26a53fde3621e5ff648ed9b2e133315fa72bfe9a2145de0911d277ce0ba118f32af9b3e3981da06d88ebfd936d675d35c47f09d69
+1f68bdc2b864f41cf16680a60613839d9110fa6d3cad642242577c17f64ec3ccde2f532fe397e6299d0ffc4e4c82c82ed6ac813fc8afdec88302a0fa6c6b9dbd0a5bb5fc129686e8c9d60d3c8c024bfa8a82d0b70f2cb541cf08f3205d991129f26354596f09d84b81af4d11a4311fca55782cc7ab91c43570a9f93f910878
+9ed61a3ad1916d48c84241c8b939fa5749f57c13f67e46c2b1f6990deb284f22988ed3ff87f3a4893319b8a1e124b704171602db712c6531b3c7d6e573a9d8825fc78a42acfd014f87302515bcc12b98fea057c668620e4089b85c9efda576f029cce97ba5709191e2a4850235ca0a7f76e6565c375740771bc3556cf654c7
+2681550517c0daaa38193efd335baadb8d74945507b1c205af82e3828c0e49636abaddf24554634b268717a20b4a0ee9153fd69243e470cb86f82e327a6b4c10576fba94a720650bec7491e6d8ab927d78eb9724c3bb0e57c2f7635064cefd39be742f14572d15eb3c071db19b21c395666303e86b74f2ba59d314e4b1a78a
+f52250ae13fd9947c38322ef9eb2545a518bdd6246f3923a03133fadcb08bd3ab2f54f8f65cee6bb23b072f8637e63d075d55fd70c2013bc6c7baae4da712e71fa07ea68b32b58e832e9bc8e3f8cc1d562552fb916f35e8a47d0d8f33acfd33a93e0949a4d8087413f837a672c84b9daa42154fbad948b310559bac30aa416
+348091e77490c006ffd37deab8144f53738d4005b73b532a0f9f181b6cbf8844b01f0c86bd2f4281187bb4186c2a4425d9255aaccc99cb9586a9564e11b4be5cdfe521e581b23c02319ea62ff36da19bc72ef3245fb76da03b3f570d8b86187659c05658077b53a7aa4c4b36cbe4ceccb7a45c031e8104cb489b4e2f8e434e
+e0a7e5088a33b9b95c58fc59e94ffabdf1428db844cfadc0de0c70f87df940694053347db6f55e330a28dbe62ad81c4f134b0be88454ef7fde8b83a50fe0697a6ae22a2008d13126cfb25bcd52bf0f4d66ce2090fcb74227d7747a798b52aabcc30672436430cd296a861db99271792d196740bf3f40ffa32095a68f20d3e2
+d6ae11e58d4492914212b71a9fd24a2c43aeaecb2e38811029681691b7d30555d7c2acef4889768d0ae02d2c640567553ad3c8370dc471091278cdb8f4fdf83441a69c885ae7c2df863a23a3c8a8ab3f324a3f6b0413790114ee923ac731335c71075bbec27c9cecb5ed78d50e4445ca13aa222fa5f3f57b1f37ea9558a93b
+03c6b217bfc62c6cf642f3473352377865cd47fe599f79062bdbc5a1ce07081b0742ff5a918a3b976e303ea68e60098aba208b6932a7415d833316b42fc552643262e8dacda5cb399796ac53d321b7c1ff5b7d536025924d7912b776e33de08f747ff7d938aad9f7b9c8e222f2dfc36a9935fd9776503d3255704be2f87681
+5a1800afb6e0e088a881fdcb8fa06519b31f1882c75bc12edfe8ee10a682ccccabf1b7590f64b8b2364fa2f770ef0a9a3cb22202989bc412c0f0b16ee45b059ce22568d04d191c658aa94417db08e26016ded5da8b13886981ebd6d97b8dd73b878447d1993dae50ab57eec31f5a4aa0ef531a86493372eb77951c9825409f
+b74ca8b2d93f37549cec4fef92df3f6094b3480ffb4b576c8b0155530645212e265465916017323259d276a4b81ba014439bc3bbc55a2498cfdf411594503bec04237d96333ad872c29dadbc62202c17f6346af9556733a64564deaf61b24d84e657b138c37c3604c5c1da709053f7a75bddac0bc3229a00040e6d1f9ee207
+465717e9f33a1b11c095efd75486665ca6e7e1e6b82c06a26586a38ad0bbd4e0f8eea6128281b39665d47325f10d28820fcc900650ee330616538cee7454f1c807574cc9cf6a55ddfc428f9e7c107af7f44f02ed3be9a1047584c927e4a9970c55094afa481b82c8c40e91fe96791699f9128e0ef9da59b1d7dd3c20cc2803
+5d5571e3e5dbc0ed14e00f31dcc0d6abc1b19c48926b82a7d61cdc95d29fbbd9b81dce9c518954d1a2c6c518452b6de06e9c65ce5c90baf0493f31022493cd05041e05a7a0f8eb0bafdcb41169cbfa504255cdf2bd13cb167482fed8750189169b951e54a18ef428e9ccdfe2ed0dc7a39dc85e480a9c7f47c3de2744c2a9c0
+3dc40a63c62a8aac041036e295cdb1dbdd70a47cf0ce18257a258aba254fe866590bc7ef46f7154df46a8e4117068656e7126d7053506daa3dcd7b66e53bfa99cdfb82fbe5ca1e5ec177fdaf04f25ae27142e2b040afa421474c181c7943643b0976e3805af1a3f47600a2d8912f1ff654c41f826522c07d0e35099b283a65
+9fe3241cad8cdcaf551a1f31fd7eb2abb2eaa65f2a15aed783718f86f56966b0b2d21ceb722b8ac38957f38932acf9a19e4ee9a609259eb0f6b9de75c1b29d87790563e79f425091966b936a4428df2aa1c281ecb8401e3f8f3c67f6dc631634832ef74a8c94ad979439b30bc8ec1c99b1e54c99f26d09974b5d92e96be88e
+ad84918267a050f2c6ff91508f6e045fc9bf267f6464c901c6b2ee48fbe4f7696d26da1fceac4a2e9d6cbb9d7ed7660b4011beb631b80f6b97297a20ee5e52719a3db2732129fd8eacec5b84d94363f4de595556494b89d26e70bc33f5da1031505674602aa5391a649c4220e1b14f2d8312e445a15276a52f1d7f45cdbcb3
+c95786779a266651cfba24926fcb2b44b5116273e67aa1c6ed0b4ce53a946e74d4c291ebf7e9d1c1ab84b09126b081978c2b0fb3feda78703cdca556f178febdf0153c6615cabf44ec1400ff8c02370c9ed1086e7b4cebafc2acce977568b8e3ab6c334e55b850e5e35262e9ac4eb201bcc21bafa2e342ae824b79c9728527
+315e32a7ebf413af7aaf2d87c73d97f100b06a940a98816ec4c26fd451673caf4abd2dbace36898a853ba4c3acfcc14042676e65d69979aa1543d0965578c64ecfd194ce21fc8314fef29e35d5597a539d4bd67b077e880ebc4d41b072b8462dc63584bb256094eb353e355b346d6313fb265b8f713015642d61c843b1358b
+fcfebe5a86307bae9b574c71371509fd56ace646d61e0a328a707e3cee1c3e3e9c40c42ac453ef5b692a1c2f24626d0cf130c3a819c54d798dc577ff7956bf27f2b6110af08f0301f44008739ecad974aaa7d68e6883dc7ca3ca0b95ba226d819904cbf79b11ff35831c7258bc605c97582aeccbd2a5e64d6ede5f4d5445d6
+e83641b35ddc7cc6778e3ac7eef59b688a3d247306caec81765246ed6106b3ca3feb27e066de66b65e792548a57d9aa20e60f6a6f0de006845f8d75252ed9122728971f33120b49265cbdd1d8b0f42f3e673d99915684038c49e5ce0eda876c2f8f1ded27b035263256f986ad7aa8020f24e25731884e026c4e4c93b385a4f
+ec7fb1fde9e7dcc5ad30bd18c739bf39f72ec5b2c36a98575bec2105560c733d7e074e0289cfe0b374bd89bc94e3110ec7fa6d117c012319870bbb612ec2c75a838a07a7cf229140d5ad195aec2cd0c980955953bb8009348a5b4c700b123b00156f57257c1d06a7d5d175167aef7095e63dd7da9dfa591dca1c59db066ad3
+dd36d2e1162acef1c20cea01052c010e89276c8ddfac9ad719214eb3aea6089edd5b66193a5efbb6eb71ab1d2ff19f1931bcf5f2aa54b7f40da7114b49fff966de7f5b972aa76d02e31aa6d6b36b61157d0150e89d4d4c116ba19bf10bb33e2ef1fbd14009cae33d03248507083dccdf90d4e3dafba0b5b480f74b8fe3a71e
+4020707a940b3053bdc7a8db04706dd04029f9180564a829480dfb462619f48bf91b55567896a8dce27e4d324c8e2b4e669cf659c16c0f6b82dc72823d0a4b7e992a8f80ad0386473fc407dfda4e7f18d614369631e8d241aaa48dca013c4368ae87faa94a6fbc4a7e425a53bda770bbce6b524c07a517e9367f611857f6d2
+5dc35589ae182d098797f9312ea7874f03c5d19746425aebb87d803182d98a8b43528131aa077596d4e37e091567165cec8192466d21d21c97dca1daa89285afa44fbfec5c8c369e3f6eb4e7538a831964e68e7dd069d4816337a07a5983c954e48a09e8638b060040614e1b9d7f745c74a1b50973e831916789c540af9fc2
+55cf152aa8ab85ce2d47502abdc31f3d2efe0ef16a7593a8bf5facaf83cc8dd8f7bb53e73a869e114a352393d3ff15846f1203442ddb1189903b3a0d772de82728cb3dd36cb06a5a7feec342105c3fcae9acb6c39ad706772835370df24e865e52f504701ef0a739952d2704e3e1f3c7e74091c3b3fd4a7330ea94744d4f1e
+1aecdf1e733ec1e4efa24ee73121f6b4ee0df14ac0f859e56fca07db9b41e79e9d144c7df44970f0137795e8d5c80fa2e3978bdbdaafe4b4c71973d6e20a60e8211529bb5b96286d8065b65d4ca9124fad2a4b935863b3f886edbd9bf7a57cebd03a3358cd90cf5cb91babfd8757565e9680cb800869674e4c356ce76fa50c
+aaa6e0dd75a61aed50acc2373609972d065263dfc6b9326c41b967b61e78b8d3442e8d30c50155aa7ca9cd1cb9247f306206ca691b0d5b1b8fdae901fd66a04eb6ceea6b8495f5061e0efbc0017e95623e196b88ebb9b74cb283f006cdd5f6e7687c6cacf1223f09658b2a1b0e1430beee0cd6936a93dc037dbbefdfb2cc1a
+2c84036ef6b567d8926e6b524586143a6689266ac7c00cc11830a8d1a2bc3ca74356863bdb535398037b77b82472cdc5e0c4bc80bcedee7fe043aaf1e5ea75615c46dd2a5ca22d3e032f7c0b33523a2d5613f3eba692d641b0a0a33b5cab39cf4ccd8fe72bb4ab6ca71cabb4e13625231f81857ce493fabadb25280f209f75
+f1adb15ce277f7cf3e0ccb79293c3871cf1fb2b516a2f87a84bf8aecdf84cae2582076a2af591c19cd604bb2b56e65371bd062db57035de806bc6e864e27d7a27c72e175b9122cc656e8b71bacc85d8e20bba92322a50063ef7f91fb05597a8221ed0d542e42d58d6f8e50de5377ff027da0127bc9661a2ae255fe1a844063
+29d44a50c68a0903f4669c4324af974a97de6b60365f992de322fb446da39ea54e3e33660d0ce7f0b31504109f954f11eeb823bb4eb4d893b8c1190a1c9fb9dd71c3f0302dfe9ba1305e52f67afa320459ed0b6f870d7585d53790261dc14e26c26791bd9c99740158cc333c36f4230d12737e8c8a688ef66a51f80962dc0b
+5492e2443ac24ba132954aacaedeebd9cc62bff8f8e5e08c14187629f13b6a94568e5d4f2b55463c70f863b407cebafae6ac9566ec05d48ffaddb7a567d5a2816634d1c5f79280de20d78387e23db4303144454e3a437015747b048a170c497e8433dc28361e610e5a2b503cb51f5dbc63a292f16fc267fdedd7925c58d314
+dd6705cfa8f1612defe39682c12d47ef0c3d9b5ec686ffa4fbd04742974cb6a9483b5e03cad1f0d140aad97d74e456c75e6642151d167c1a822dcfe56c247e0af1af264aecbc735e218f42d9f817cc1a5394bea937965f7afb1313ad55e1f317c53b535882120a2230d00dade248ae0f7981031bea25dbb72dbe2e8547ee40
+02a0c251387c68ecc120adad0f0748e19edc9dbf3a4566ae5e2f38c74f6b731a4a97600534c29aa689e4551421aa5ca24d32abdf485a12df2701fbd1745230271757cea59b63de1ab59113bb574ad553d98955e41c6df5c7e91636eace1e5a0603e10253fcdaaf8ccb8a2e28eeb2ca9c7231f5d1e420110bbb7ac464e131c1
+78312efe0a67b81bd80c4d428286eb9a149cd7b9909ff160b057d9ea89528a00206f5228a3dd8581ace94ca99fedbd7b21154e0e7509dcc0e107c0fe2f45b0fefd1ddf56ae11d7f17713c989095a5c046745f4d801f19fe0e248635f8c57b5028096e7f12f5b2f28c38f8d8403828b7cfc9c9da1c8ddc94b99688a050afd26
+58870b4fa3dd87eb75fc0f38cb2fc2b949042f1008d1cd2887d9977663064865c6df078abcf76b0faa79aa3657acc916cee0668ba5888f6d497c318a1aa53849eeb939c3696e1b18224b789dbd87495f007bc11b86db8e9bdc4249e1f7c9c40a0de26a580d28aedbda4313fa07b53cdae3d5abe5e580c79c1ed42736dfb824
+660a10eb0e9412339624b21bba4ef66196dfcd89bd539fc6e9a660a05b3c73a315fc48f8d68d7de440d8c7a1c8bccc4e09657445b3f5dc43b52763b21354fef400f9bbc0d1bba85802e4ed2baa3d11aead44ddc825c755ac4ccb6a1f1a6f65365f609f5cb3fe0ab0ec9b0428f8aeafed197d05874a80b87e3b0afcdd7bba62
+2c4c416c110f8627ea81643efe6181686ae0b70f80cdc5a1cdad97ece8f77b87d52ad6cbee78642fa2c9a6504f2a17cd6861b050a90fde964831d4c43af525bb043d7e78af1deb2fdd442c43cebe9e91c04420b2029dc4541662999e750574d4fd387c88306fb654def8a3eb995729d20e1b730e61f697d5ffa998714251c8
+18f5c0aebc7c45475163a859d9541c2282d9ffa97a310cae7fe9b35e635a8a7df366040b480fd578e21f7b2b5d1088b8487c34c028ef3baaba0cdd7c1e7e694b17c5f25b29a2de9d8f29220c9ac477fe369838b3537bb49b1fe9ad1549580bf7799bfb709eada7c3c8614207c28c9c654420c1b16d7f0bd461f61ccfd93402
+4c3033fbb6b3dc15f9956f6bac3ab1dc43c7785d42a084d3ea583258ef531202056ee73cc09f137994322bb00085e97fc204224c96b0f5843a171326901e49a94a4e46d00364f177adcc2ea9e5b4760b6ceaa0849a7cb2c232b91f4ef3898ae87a796f62f1a96e31188d12ba2c21089e227594fa35b40bcbb1570321e1657d
+a8abef8e1ac37cbacf67d719f1605af599dbf37b7d083f45a80063fb9f8ba01ce9a63ef25413ba5fb0454131b586aae594edbefef70242552762989968614b1b50cf8339166dc97ca1fd7e4382c53fab164c0e469ec39704d6dc6f49d18463e944438eda86183311e340062ef76bbc0fde1905f5fc0968e17292ff4d1efcad
+1f1d12d5986ed3812214ca855370c635c39edbc0761aeab87f4651a8a28b0965fd5da6d2d45a2e5a517377cc80d81527912f9f4c163d05c1239a3d4389a78b6047f34e2011fa62d61433bc3c5c6b7dc5aaa5c7b3156d396975b372f51ce56ad05a3c55f24a22712eb86aeaf45c1bb268398b3e790869da81cb0017909eb08b
+7274550445adb6439ce0898acf8928e681ac0f7a7f94a52ced2ab6f43d526f399a5b3b911d7cd38a66b65bdebaaa16d82de09a532665d8d17b1a1a33c33017e68b4f0dc14d5b7740e634e62212205071ded125590c91a34e81843970b0c444e9adb434e09a20d005b6605087d2a87277dc0e94d319f088748f51525141a681
+b129e5aaef51c21af8dbc19cdd19aced661ed7a6c7b9821d9eb4742036d2e69223bde8bf108a1aaebf3eb87d689effeb55dfc86c1bd3a68cf998aaabfc85b54cf4cb78cb673f9bef76034ce010a2b4e845b056ed1aa51354e65ea1321f60ba829b4e9426c2101bf0015f3b85b31d0255d4d6fc2d054b6b4e6bbebb89a25bc9
+c510318116ea5e1b8710b42761a18d283eb1a5ab154b034ff30d2b829f552653fa000aead47603a4740e90a54b13734e94dbb6a030823d29c1e68a75c3f361cf9efab4691d65cb4ca6382826e1db005ea774c3ac9b85256d626a7bd1fe8612726b07dc7ceab780192aff9a436d7324952dfc994bd670b2f271d142fc84c8d6
+52efa5353518a52817c019ac2cbd31111bb7e560dfea2e81a2e55cc1110278204761073fb0a40bfc89ec3cd9d34b5d59affbc6930b09b8226ffce9a8a93fe28c5ce2bc536953a91b2bf6195460c8677f2bf314a16a7b4311f969ad289ed2c65177193db462719db6680e1cc03c2c3154e60dbdf7db0e270b0154bcace82bbb
+2616f8a418d898da0ae875514b7c4327c66c0b6826515f29b972eb52e220429d27e16b9b5ceabe45aff2ef9f645f196886cb989687e951f608e738f1ea6cf2a79e507be7f080485c3668af2c8c3cb8a9d4e0ca896c5ae8a19702d64c71bc4c89a414576b07ae2e38d6a655de7d336b2b1927a156e0850e6594bde58480a07c
+0f3c026467cf9b96b873c8bb203002e2b69ba3445fd368780c425360ba831766a37ea41c03f69454823b46e55170aa82c194be95cd4f6f32fd93f3701c5cd730038e8ea9b6a1e563bccb223e9d86751123671c0b92f7fac56d296bf09f5eeef39c32dedd67034fb718034ad4ee1252a80529e5e119b48d5a1dca82e04fa906
+d3fe0eec976ba1ecec8992d0c2f9594d790da7b52d71687c3a15c4a325594207bf603e2dc80cf93f71958724ccbc53b3b514b1108d6fe912ad5531dd8a294ba705b1ad011d35cd6a0e80b7d8b345e0795498295b18a622708751e8f961104e7871c5e78f0011d936e6e86dcb8ba738be88c899b81df3feca87c2bec0282e26
+242f22fc596b83be010e8799eab36e37674a2d25f507c734801be5fd0166c3605206e5038b95ec649de2cd85e970935cf3822fae2b92de3d88343c9a03e0a775f2760a422e468b7b6e0714a2eea42a675d18eaf42fedd9544742a9f8cc4a9eaf3d77629ef815904799cc0917badc507cb247b808e543524d903c2437050f2f
+8d5dae66f994a88e334398d5fd17dd9f9c50f6002b0e52ad911532b9022fb3a83de7359b9b57457fbe91471e2e31685e7bd8ab907cbf527200efd0d55b7745b9feabadbbd037c8e05f5d38196d3abfce6dc605c9f8e9543c9b364af5f0bb4146cfa84af9ea4906515a37d9aecff4305d7fa0d4c82440a01a5eb66abe43cbbd
+6ea131c43a16cd0433c39abacee00a58638872d90a349dadc0debc1f64ce060f05956b989b084ea5c42fc7933ccfdce2d538c45df01ddc4d025f450994168f7b00bbcf5fbaa45c396c84e67db0463c0422d830ccddd69fac0434eb4f6f6db9a4fcbe063ca705f3d2ac8b38ab65fb32789313db034852f172f9ee3bbfe0a4ec
+ff0275b06bf586fea2fc5bbcea05f0777aa8306e5cb7eaf97547430a79c8a74185abc137c7e30cec2f61ffca8c38bd34a20dee0388ef6dfd2d68612c37fe50a3fadbfd1efb17b04ecd5173b37a85ccd63e6e6bc83acdde36b27e8827a54badf3822d9eed4afa49839ee1a49828f9e7d945b4545a85178febab85903940fc65
+8bf53669e12735d351a2858c5be4270ef9cfb187161278216e2eb359a0f01ce0326b6152c56f44600e3152c07f00ce0b766ca8192c6e2cef6a9bfba1a6b042de3ee0f793da682d07628baf6f60961336bb4f09e7ae7fb5a37064bfa5e2d9390f78d7976575b82e27510219a0f3a7e0ef06536255b9e9a545f8c6ba2f746426
+d6f7f0d43b84abb4a0ecf66edbdef6724bb060bcbcc13124a1dd801768fcacdd51f7d13ac3cf5ebc3965127f4772ae3c296fc955da79143d65290d99d2b8204d5227ade3cde4a2e523c88b93eb089707226777565c7bf63b5cfe1fa261ba54d692f3a9bb4a10e08e6335bc73fe3a4abef58baba568da69911064bc5790251a
+618638c4906151100d57e5dd8f05c804c29370822a95903e6feca634e70be1adbc0e0f4bb5cb68b995c0c17433bd9d039b89e202f278a829143fb7fccdb7e9ef900aaf2daec6b25e9edcb1ffefd889ebf80fc69a5e817b45bdc4f5afed089ad32256c50b0de86b1797ebc6108cf3fce226c7866e92dda1b8a1a9b225988f5c
+e866118085ea4356c3a77fb3e3a9a847039aec345344af70b8fca478a3b79fe3c1ed74210789937232ebceb92e5ae683d7713dd39252ac439b969a2509fa6dd60c57c863bf06488b290a23121fd0900e6821f33bc4c41f23323c711ccce1edfa5116f569dc5fec01cd92c04818ce8a17b912bc4f62d9f72f4c0567c965d7d1
+266706031d6d8b3f4b65a8ed125994275219223d5e2289c5dad045df1d912bdf7bcbd2666148f981273eed4fc85d190afec3843451d12900feeed5f42d357cbddc01579eac9fdf9adb6e212547733d3a22d2f65be27038c2c3fb5b2f51a3ea26751d0e12f64b4e6d6a8551d23080a8ff23d23e5cb0857e653a859246812efa
+4dbf873f78813f4b5ebec1529768371f919c5b67c6458092590ec328be8bccdc238f103c7e166daa869758b517d9cd869820e0633beba0386b2e33965335740787530458a698a1664bedca0b586afb5482b2f580e7adfd584314144e3adc41b2b08bdff70789c06a87fd49ab7dfd4949c088464f296a8f1f69d60abf17850b
+5a254dff8d52c9c4b8860b651e92a5973113f56f1c030ebd02417dc181029099007fba17e649ebcd1e1d044bdfcc279430f56e80eb54f921aea09dc18689beb9f34bf4005490373b98ed62ed66f887ea252160a6b15f91a0652288f55b704203d285ae011c79270bd5d21114334fb466ef469fde9df95a3e11914c69ba2abe
+a27c2c5e43baae066c5b329dcd72cab79a214af8fdef80a2201082df01a595b21807a6a3342e8ae626c0e4598fec95553be69f8882d7378b3280665efee8e5ef126cccc2eacdb561fc84c491c227bdd2323198f73c8de2ca9068b0f8e4245da4645abb5d3fc748f70542314f06fe52befe20239e5e0eeabdeaeb0fd4299886
+1463aab51c77bc0fd59900fac5ce1773e0b71ffd32410a02063a152104b211530e3692a794f794073e75d7b05dc2f78c0ad588aa76064d888b500e950d2f4553f9bf23b0c22ac95771c291140fbb45541f381999a18b0dbc0656f58493098c61007db73a88a35dced73ddc40b636becd3259ee495e8e90f76a40023e5d8c48
+dc98a2ae34edfac225855620c93365bb8b10eb2f7943f1016e3099e6ea05474750ef6e6e32b2d49fb82662238f0a33a1f9260215fee59f8a7762f8b395d601e66c0627b4dde3c681e7e1323e1fc72f2a26a068f6a00c07a9862bcb41deb978c09ca94f01ab0449a159620c7987bf9501023955b27089b7f95af916c319ed37
+819f4796e917101031aae8a271189cec405c5ec0195da3b965047a69f1d2df83cacd4f320a94b5abd2bb6f2c06f7292b0c43421567587f793e043fdc07231e2ed763642791842a73730e76da849297ac6f5c60ce4be1a4d64a42282cf1e049c80df994d78d488e03ba101e8520715e68a5159cf00427a7ec0d46971d881f68
+256e2e9a4addf369a03252b0fdda0c05650279f72349ebbecc1431697f87df7d87d3726a4916609fb3674cfbf8bc59e2af9d855bd5f8d991e53bcbcde373df266e5998fff0064f4abacd91894f0b76e337e416ee7632e88aa7adcc56430a022f85bbd2e802339441aeadd92efd87f160a8f98368fe8b5061f5a4aaaefdfdb3
+31bfd109a6d9641be4ed21eaa90561f84f9114d8187af6e0d231254fd4184efcbe11ac4ac0c4f2ef4ebee729356f6819cf9180fe32a4827c201970fa382c93363e11594980747e1323589e0f9fce87048c1c1b659c277f001bcc05525680c6778ebdc2b88658ac7f14a1866b8be9dcb50f2f6c3360b62fb95a1417db555e07
+89bb6b213291e6fc13dbc15e1421e8225799cd65afbffb899e8819fba810b6129fcb43b3552cf6f42c1a836a3397d6fbca416896e97ccf3e00f8932b8a19e3245d9f8a19dff4dcd8fe9f8e068a87cae658b7cf4c613ad3e73d818ec217f3e604f0d5499e0eee62153829a6d22ef926606e87dc1a5f8c5449e3f7991bdf6b9c
+a20fcde4ba519679575586ed701e777b3948b640b0c18aa62c326f0c73517dfc91ba5cc0dc1aa51256d2c9d330e822090b94012a13360ca15567ec72634f29477bf0d9f71162c9a9b138d62e17118eb12c5f7ff3ef464e6dcb0f9709dd6ef1fce7cebe59d7eeb9ecaba1dc08613a6206cb151513b55912d02dbbaeb3310bc8
+ff725234dbe12ecbfe5e7680d6fbc60864ee0c07f89224326afe09b33ae142b7072715a120ddf29fdecddaa02d9616bc7962d6a0740ce050076b3461be5f12cb4a9fd2aa18a5ac8b67e9d6d13ff94ce18fce66225621c8f867bb66c741958b9e5b4c1cf7d1efbbd585284ea6e175d50c4e4cda2efe8f88aa6f004daa8e976f
+37f1320c55a8679964077e3e800af1ed4333c6cb5b30301cb2812f228b1d196d3d87cf8035bdcf34d0a53ee1d3af0376143a02a762718fc97a777d6bada4877bfc0561d31af67e29ee7b81c15d676925fdca3f2d0c625b07bd4085dbde0b30610b05227d097364fdb30443cc1bc0227a76233871db622155052c294307a792
+0fbec7a44784cb5dc6a4ab34a252fa948cb3e242d4bba9a821d0a04a9ef8ef1f5a40a1c623a26db245d9a4506a092b1261e647f553305e24db2358847f752e439ed4c15411c44620e78d01051db8c8d5408ebc2204f75e69ebb5d02ed0e82b0de812b31b882dad2506b6fed15be0c3f97e3b791f4e21eb9f21f873eb8045bc
+e7352ec5207bc1bddf135d3f1de8d2fe86746566dbf2478faec9c41ab6d47da56798af8a67a213b9495cbbf3d0e309ec288c65ed73c16e6e8506e8067dd991bd4364a0eccaa1612f172a8d361408b8fe9313e2a4271e8f2ac9e9fccf76b71a8f445a3c362995c1b74b62abaa9408c4e7a1985754eed14d1948e7faf378fd05
+750d6a616701de0b8bc6606398dd43e174ef7733723aee91bb18f4cda2e8eaecb92f5dfc4b51eab336fe9fc88609a7db57fe87ad076386a7c9e7ec95264192f004d3968779df827d365898a4090fa77584de6b0bb385397b2f3d0aadcb1b055ababba9c57b44f46d1bee53fe9b4aa7942b736a10f0cd996050f721a2c31190
+9fc6e5714dbc0ef077ab022c586574087bf9e04ec2de91717e9fec8156ea0cf5a0d42c135d4f3765766018166110e0b977637644b7b5b3ead9e4daac9075d89e5e04d6b7412f287c4f232d50666973f4800dec6c0a3e7929ada06c760a0c032ba7e12016011074220c0b5a8521712e105ab165dfa64e20508aad153a5f3e66
+748c2f592bd0ac23405952a6bb5f324d5d3508ee50168d3e42fd5bf68ab658818b94283e16eb124cd29f6a69a6a5f9058b93285a858d54a9e2937ceacc276a1f95ad867d159037f86acff2fb4179f2079a1d53f99cc875379478bb5fba5892eb50d5c516288f8c49735897331235eec56b25211b32b03a58ae893081ac8742
+9f0139b15a23793b4d764e985f38d4f9a381e15c845742b1557e5e671697125ebc6ba21f7a141950c1ea22091a3bf12f2142c2375c57768136903a4152eb856c2aee37a20c3c51c4ba923ef61ad50f9a1352d14141faf2e2ce08e472801d0fe34576228bbf84f65bede6b126ee490f30c4641db47fb652fb05c16b8738c1eb
+62ebdd7c9a31f7e92a568ab77cd097ac8dc57e97aa6327cfcc0c6792cbc6ada1087f2f0e561de05c9703048ea484338144401aff886af73af6f7133f203cee5c1fa43ea9cd751e5427784ccfa901329ff8e451f0b22669235f9b9ea9fd13ad0b1c57b554068dedda8745b6cc1bafdcdb2deea3827fbe52aa8a360e7859c5e1
+899f8439431fe772ba668b3a3b1a99b57310bf0870f86d3b5d8d617ccd085fdfbb530a88d65a978e96f1b54137d4bbfbea1173253dd1d5fffa52b7fbce0882f521f17f4d4a9693c6f033588bb619a3dadfe922b97fe2047e9931447d372bd1bc802b53bdd2ab1b155da7ce01d01a47b490432cefbbe67ffed4078470c7e4dd
+7ac8e76d57c5470f010c137f816da5425174cde833909dff07facb63580a034ace2d7ffc08d32c0ded750206dd0444f1f1e769474de065112b4877bfd30867ad9f3fb0d1f3e9cf2fcb25ce6990215d241e0b6d8e64a71f0b5178234afcb03373e09e7e35e71bdaf68551b2e3f900598b57ab6c61b0b1bffd256510864cb71a
+4d7a2b742a78d380759bf7069b5f1ff4e34bff04b7ed7c0e023e4776d27c8d7fda75c358261031c68924835b83438e43dc7f5d357b4a719e7ee153438313c45a900e608a37d123de26b4bdaac57dc756d2de11281e723e09607255b080765755811e2040c158f7c664585666f2c87866e56ef03d74aaa183398329d3937162
+651686f32cb9047a47edf42d294693ee311872c8ae8722c597673a52d3652ddab08ddf261f0c61b02e7542230a50e589518584173116ee4a3c76bc1a40df112d4eb97caaf7a650221127101328e4155780ee76be090a9fdfdaf29c0cd9ec37555f8cb4ffc61852249ba7ea3b4d251c61c7e8eae9f98866b669516c81d83a7a
+391f9d8f34535db519e6e6a61ff5470203e604bd0a8e0c5778ba95875929f4f49b8d2ec26e0c8d030ec93b77e8a25b832f3373ce61a4b43491ee40edf057d4596efb3ad61cc29c1b6980b0e5039146d61934ca28b4dc8313f03dce37736b556c7107a55bd9729695e56939880ddf5004d93cbcdc9f68c95de59e38795adb2a
+502fe8247259f82334ca32a2fb3dde620e303c3ead6650478dbb7f4afaab4805db2154600ec0b02fe926c9f42007ac24ced38df61f3889ae41825fb89c30e0eb5ef8b2dda787e6c75991013c5cdbcc10355e8bffeb473116c623ccdf2346afa7c739d0ad42f69ca0b7e68319c130ed981fd6c370e0d6369e6ee97e32752b86
+10ae94de09bd96502c4e34e86610ccab2dc2cb527799df784d5643a6ff1aa4d3d9cd0b7798964fa330bbc3351243be6a3b1519211004acbb08f4b41ea396e485ac1de0613ab29174b61ae361c517bed30bd293e42d36853803e3c16766197024bf16d0d8dbd260ee5ba76cbae75890b66d5bb7ff72d1630f059f863c4a0f0c
+207683e7eda064e6c8596759595735025ad9b3af08180bb722fa713e428fba0f98d82499cc7c747183f6ae4fb6bcf978bb7574c4a569618571e50dce8ffb78d4603295fbabbcbd02237ef2a213492a6b41ed0a7f9aad38f3825926688f7fe4426c590f5479bd22a451c342a564ab02ef8169f967d1ca87a238ddd6cfd5696c
+8f97ae4870ca2d814005fa376e1376bdca52b732391c5b71f51ede618ad9370fdb2a89d95276df695b6db060f2d683aa9b80a40770a1c76cbff7bfc7628c155e0fec88ab4c5ce051c8681190c8e60970230a52c428b1b1043ea5df17d5c10b25a5c6ddd941a023b00a9f61e89a4760cfcb0851eeea9c393d8b7dddfb9efb64
+f1118b3fb9d45b610b5ec92449c72a451540f25b407d5162d85bb57dd1864d69bf7dda142767d6397437e950ed071793b63fa5ec834ab66ea827f2801fb7f33a2445587fb17a431b9a89a512db355e4b2f0290f8528112fe52e3f30e8748c2f2125aa2e4d8781f74d173066e1cceb94931d004e11c916f5d60800000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+%%BeginFont: Symbol
+%!PS-AdobeFont-1.0: Symbol 001.008
%%CreationDate: Fri Mar 28 22:03:48 1997
%%VMusage: 30820 39997
11 dict begin
/FontInfo 10 dict dup begin
/version (001.008) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.) readonly def
/FullName (Symbol) readonly def
/FamilyName (Symbol) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle 0 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Symbol def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 32 /space put
dup 33 /exclam put
dup 34 /universal put
dup 35 /numbersign put
dup 36 /existential put
dup 37 /percent put
dup 38 /ampersand put
dup 39 /suchthat put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asteriskmath put
dup 43 /plus put
dup 44 /comma put
dup 45 /minus put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /congruent put
dup 65 /Alpha put
dup 66 /Beta put
dup 67 /Chi put
dup 68 /Delta put
dup 69 /Epsilon put
dup 70 /Phi put
dup 71 /Gamma put
dup 72 /Eta put
dup 73 /Iota put
dup 74 /theta1 put
dup 75 /Kappa put
dup 76 /Lambda put
dup 77 /Mu put
dup 78 /Nu put
dup 79 /Omicron put
dup 80 /Pi put
dup 81 /Theta put
dup 82 /Rho put
dup 83 /Sigma put
dup 84 /Tau put
dup 85 /Upsilon put
dup 86 /sigma1 put
dup 87 /Omega put
dup 88 /Xi put
dup 89 /Psi put
dup 90 /Zeta put
dup 91 /bracketleft put
dup 92 /therefore put
dup 93 /bracketright put
dup 94 /perpendicular put
dup 95 /underscore put
dup 96 /radicalex put
dup 97 /alpha put
dup 98 /beta put
dup 99 /chi put
dup 100 /delta put
dup 101 /epsilon put
dup 102 /phi put
dup 103 /gamma put
dup 104 /eta put
dup 105 /iota put
dup 106 /phi1 put
dup 107 /kappa put
dup 108 /lambda put
dup 109 /mu put
dup 110 /nu put
dup 111 /omicron put
dup 112 /pi put
dup 113 /theta put
dup 114 /rho put
dup 115 /sigma put
dup 116 /tau put
dup 117 /upsilon put
dup 118 /omega1 put
dup 119 /omega put
dup 120 /xi put
dup 121 /psi put
dup 122 /zeta put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /similar put
dup 160 /Euro put
dup 161 /Upsilon1 put
dup 162 /minute put
dup 163 /lessequal put
dup 164 /fraction put
dup 165 /infinity put
dup 166 /florin put
dup 167 /club put
dup 168 /diamond put
dup 169 /heart put
dup 170 /spade put
dup 171 /arrowboth put
dup 172 /arrowleft put
dup 173 /arrowup put
dup 174 /arrowright put
dup 175 /arrowdown put
dup 176 /degree put
dup 177 /plusminus put
dup 178 /second put
dup 179 /greaterequal put
dup 180 /multiply put
dup 181 /proportional put
dup 182 /partialdiff put
dup 183 /bullet put
dup 184 /divide put
dup 185 /notequal put
dup 186 /equivalence put
dup 187 /approxequal put
dup 188 /ellipsis put
dup 189 /arrowvertex put
dup 190 /arrowhorizex put
dup 191 /carriagereturn put
dup 192 /aleph put
dup 193 /Ifraktur put
dup 194 /Rfraktur put
dup 195 /weierstrass put
dup 196 /circlemultiply put
dup 197 /circleplus put
dup 198 /emptyset put
dup 199 /intersection put
dup 200 /union put
dup 201 /propersuperset put
dup 202 /reflexsuperset put
dup 203 /notsubset put
dup 204 /propersubset put
dup 205 /reflexsubset put
dup 206 /element put
dup 207 /notelement put
dup 208 /angle put
dup 209 /gradient put
dup 210 /registerserif put
dup 211 /copyrightserif put
dup 212 /trademarkserif put
dup 213 /product put
dup 214 /radical put
dup 215 /dotmath put
dup 216 /logicalnot put
dup 217 /logicaland put
dup 218 /logicalor put
dup 219 /arrowdblboth put
dup 220 /arrowdblleft put
dup 221 /arrowdblup put
dup 222 /arrowdblright put
dup 223 /arrowdbldown put
dup 224 /lozenge put
dup 225 /angleleft put
dup 226 /registersans put
dup 227 /copyrightsans put
dup 228 /trademarksans put
dup 229 /summation put
dup 230 /parenlefttp put
dup 231 /parenleftex put
dup 232 /parenleftbt put
dup 233 /bracketlefttp put
dup 234 /bracketleftex put
dup 235 /bracketleftbt put
dup 236 /bracelefttp put
dup 237 /braceleftmid put
dup 238 /braceleftbt put
dup 239 /braceex put
dup 241 /angleright put
dup 242 /integral put
dup 243 /integraltp put
dup 244 /integralex put
dup 245 /integralbt put
dup 246 /parenrighttp put
dup 247 /parenrightex put
dup 248 /parenrightbt put
dup 249 /bracketrighttp put
dup 250 /bracketrightex put
dup 251 /bracketrightbt put
dup 252 /bracerighttp put
dup 253 /bracerightmid put
dup 254 /bracerightbt put
readonly def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 42996 def
/FontBBox{-180 -293 1090 1010}readonly def
currentdict end
currentfile eexec
8dda0385bbe2e28975521ce366a1efbcd19951c755b299f7de57699ffa32088176bbcfeb9d3d075a656fc2d3ffadac652e0956194030c65b6ac7dfb4cce0096cf30964c72ac7742ef0dfd71d6aeda00d45b6c86f2ebeadafcc658a64b076f436a780849440223f266d2dab36e19a62bf7550db533ad06fe9bb6bb7ebaf6f78
+06f6852f23ff339a8c1fa991f1bf47f71268b6727020001c8171cb3acdb4eebea4d340dbfb5d95d8d24eb1c831a51121a967305aec34b69ab5a3a0c21ee4192997502d726972f6ccea2c58f4e7ccd90e299cdb76cdba9c42084edd3a07ecf08d5d8459c87f2d392b866eb9ca8d6b8e8cb4cf97599599df0d1c87704f3532f9
+44b58dfe91e713ff665bc5a1d74808d77591d2989951c76bc0cb73e1b40597b250c9776948f8d60bead8cf0d4fb39c205662436ac4a6187b00b5645538a68c6ce44e7231c7492f6b4677329a9823d5510077ae7874e5cbd15e8a39797dd2b269d030912cbd063fcd5befc5065c16972fc994aef7110c16634aa476dd2beaf8
+9a89a81b20101bbb2942dac0e7bd0e6fffb56a851127ee061e3e97515730d3f92d488ba61997e88e50520e778b6e4fdc856126a03bae52db2584ff2d7852ba528fa91db625ecf87d97c1198ac22a8cfb2f19e377c558112ac6c2603dcc29d9402998e7e5c749c156b98f8424ee10395dcd7141d8dce9bbea1888b389ad7288
+38348d4c0f924643d9fccde61c5c46f99939f2eb3dc0002137e456161b54f58a06299bd20184d58981613c285aca7dcd5736db403c92e9fde31f3ec14c2e3e67f9648387c1d2fb251fc8310c35608177e05052764505a7e054c1568429017d5af318ba6f39d33cf88dac226b1e3f3d3a3b1dd7d3a8c67367ffb00a7568e1a6
+fda2907236f77bdb618fa1f04e5317fa2d8f5da3f48fd88d77c73f439b7a68b9a7970ba0108da48bd1fb6284d94470ac957d679cc7665a6f0d3a1abce3352866b459ea0aa6678f00277172daf4c5aa545ae425b2ab530c7404a04ddd891ffb0b3cbfc6e5b8614986d7216e4bc571590cdf32ead925c0afc93110751b5c6a95
+025bb9b74a00e941bb7714525646d584d0565c0106ee006d10ec7e289ab250d6e99c3072afb4c15e1ddebe02a78b508517f985a4406b0bfb74c7011010b1f801217c1fa21f60c4e50ddee045e69c9c40075683c68dfeedd25ce02dca55b96c246670c9e84e586360077921ab65d0836eae8675227b3c40e10cbd7c410f2999
+2f1bad2fdb649626271df074e58d4754a3877316f32f9f6d891bacd719b3de29707622f725d5508a268a40a5896e06ad92d2e133389bb0ded7dcf837635377dc16fe2e5ba97c6f04f751911f82fab56def6221c8029dc6fc0878c36954a92d4001000cf48949e772a8fd21de1922a2e546ceaaa2f8e464fc6e82e114b5fa17
+ee00bac6a27e96ae49775f26f1cc6dd494b16fa60fb976e5cdffac370a977dd1ca8468c45c9919cd17113a811073516589fd5bcb5c5a50fee1df5cbb0fee6a71756e08d144d082f7714fd797f75adfbfd7a4ce0b2a8e25bba46fef859bf88afcfedb408fcfe3a0c517af7065d93bc9534ea318ea2fc45e0ddb427287b6f4c2
+9b1bf79b82021ebcdbfcbdb93254c3f7e9a8c431d8d7bb617b9c8c9b1d78b70cf24ac4b1dd4edb7b4629d5061f0f1cb86698afebd44fb08afb198ceec07d799f426cfee1bc9913e7a997c7c136a9b8571194349a8e960615de021415355640c3e3855873a38c726eefe0d9addccc89ea1e4446ef4365478d26c2cf094f8596
+29ccd6f433f42b5eb3f065a96dca95297e406d97f60d3490dc6c2ec0830d16b502ee1832ed29356a16c94f2f74bef5bda000b36a1b7c228958ecf8df388909038fefa348b2394fd6018206aefe6ff3b7362a9f65cdc181ab7a9f1b9abb5c36321e9faa8e081b583035c34d3a0eec08e7b08f182c67de2efdb4c68ab169ec5a
+89df851a3b53019c2c604b560a58ea246c8444f9380f19b553611fd2cb4ab5c99740289a947ffb7e2b4670efc0fbf28a631c93c0b9e84cb738f93ec6c7f78e247419676a3ec643169f01465c032cbbf6f62fdaf66495105d30538708eb93e58474374b8826a64292753bfdda20b265105fd7c4b1d57993b063b752e890fc9d
+2453595f50fb0c16deb4ca009d581de07767a8afac5fdce02ffb4874a806e38df9ee47d963c9f7cb3e650335a1c85237e83ea2dabff0d2fe93e82a00329c607b76d45425344d5fe894e55394775409fa582a50b06130034ac92f03b63939da92fb22f192d2579517aa7141f28bbb58c3aa7951c9615fbeb1b76d04ad6ff685
+d4887d9cec6e1ec2355ba1ed9bad56dbf58426a9964cb84cabbc307614ecd83f47e3856f09719c82246c7f987a6e820e88353adee2f7c58084991a3020ee034b67d0f16b921a8d992d407177abd6027b85b5abb4053dd5a1c54e1cc679a63a59b5327332860dabdcddbd29e976a242792b320ca11581d5d71ca398673ba4ca
+a3a2764fbc2ff807f0c05f5fcbad49877f9abe090324b0673e366a6d9cbf120e7b50036c363b6188d8f5e2c8cf6ee4e0146bbecdb0283dbdc3f4fda4a757c916eda66f627ded80d3906ab023c318128512ea33999ba08c604c372f742605c884864c3fce5de17320ffbce73ccf9d1b293643bfb587d97e73f91c3dc8707551
+a9626fe765901e9e15f3128efa8c133c2ee55a5f1622aa143fd2d32541badf67dc1dbe132b3d5d3d28cd83dc7311bb1fafc0477ce525737191bc318a3d6f6cdf80bfd8289d0e9a984a2b43fae6894748fa4ddc3a4015dbf9cb8778e7b957ddb126b75dcadaae6c41c48072d767f4d533bcc3692608e4153e4c51b077e0f867
+357de6624ae6abfe9d7c77638ef25a8bb685f8a8f736c91556bb9fbf31e97df1aa45eff70ddc64c3da1ec15962e34f62c9281b78970d09a069e31ca5239a449b68f97fd45453f8c74575d93ba32d7de8e7023cfc69a565ce01af28ae06949b826c32f4d899c90665dd666a4a3a887961d02d220c30014391153158c6eae0fe
+6ce5d67c4e4a4f014ce2ae331d1ac04e9131e7683843ac285253f8f211e47547bced470d3da3af611cf3eaf64373e7922488522c9dc6250e0d45951d4c5d81aff239392924b613d82f75e12739db4e4d61a98b72e912647e74a243877c6b5044041051b67446aef3aaaac555970651b44b3f3f2f38c7b1d4f806ff6bfb09a7
+0b81365831aa9de761222d9dbc17ee4e2a5f3dd9d6115b4b234efbaaf7e6e0bc29176bedfce51c2fd6a49a8214be6ab282b236219849b6497fa6d9ecbd4a3ac6dd1906829a3eb83a3011c918d1d4f7f5443f03cf7c7a4c6b0a4863be4227d96d547f700f0a0165352a9485c752182b7657d199cdc8b4d492db7bd201348d60
+41f092b3111efc8e534238eab160e439d9bd2f2881fa51378380fb7442edd63ec35fab38896e8f355fd0cfce5d5626d7e58a7c359611f6d5ee1baeab9695d26c2716b20157e7337c5a9eac8278ca2243a70d4ab9a597f457bffe8dbf1185865a9b4551d602bfae5259a6bcfe0359ad33a02e0bbd8a16061f918a31c5701820
+1195a528a6bff4042304f184a93385d98ee591a489184706152fba680ae7cc46ce18c3988c8be0597786d87de3c3a6b87e54664f7b9688d6c04e6090bdb1538913ae3513a858bcb6acf336e03f1776e93b74604723db8bcc746e8f117b1aaa7bd834f328d3ddbee4960cd7d2227f5e373bfaf1704ec5911607e66ffcf877fd
+84978f5eda69ad33715b9005104d888baca0e810c2d9bb5c3333e92a7b5d7ec5065a44cbfebb070a32e492469ccad1067d5bccc7fdae294087f9688991aaf6beba1e771e15fb03b8f867806c6e4dd7e872f370025f11ea8d0a4098d6f335c75019138502e9ade27a170257c0566ea3c0cee8b4fcb7a6ec5491ac346b35f97b
+224b3fd13965f1d5bee6ea025f1a97c51c2d5d46ba6f48eed37c5a8bac8a36ed6f0cc72340f02646ea4c67568ccab4bd233266ae8d83623303f9c6ee79da6dc347d26251c5599a52096b795a24a82e6c4b2cabe150758e9358615ffeddc218d8f81bbc32e4780d925ae0b79688c146798a6bc81f308dd00067c94d2094b1cb
+254a5c041ecaf70ae06fe53b7beaeac1cd4e44fb503144eedca7414e184e37cda24f88a290d075e278a09d9e826d666eae1312a6f5abcb55d2b88ba3e6c4b95e08246c2123d0f7552e5c975fb8afc67bf7617c922943be76dd670c50df969f3b5bf2c077e4cdc27d910bfd2d81300ce868953e39b279eb823fff40fe2f7ed1
+23ac4ce9b33883bc666e8ff0c73372918ae7b3bf76c373a3e978d32971791b36c99e0e011ca35d529ab7a5c8612f27d25fb43ea881ec3db171cbeb3a3a2d08a0aa6cbd8ee26ca957ddd557cbabe0dc969323ffea0750984dfae620b9ade74bee70f9800dea62e3d182da5bbd35b37d52d710b2e31f959836723d9acf104590
+33c48108c6acc641cb25259ef387af8c2f5476847e415a9b37abe9a9bb0c35d3177d47b826a07d4680056afd60afece29e29f8ace87416c7343df851931534e2e92e2407e709dfa25be5d31961161705e23abf87e800ab49ca6b61e18e4835cf9807d0f360835ce12b8bc11e2057402f913ba0cb9cb921383c956ef7e38993
+6d8c63c9652cd307cf356edf8266dcdcffd162822b3d5745e839d5aead8fe07a3d4e2136e90797c5d0d73c82a2d5d5c9962d02ac784b7b20174bdd47fc0a1dce504cd9fd139719df3c9d9a119667ad3e8a8967f17c044961104de938f14f0aaca0513ea9081ecb27348cc77536729efb2aa5a3daa54371207b36c5fd352a98
+cc4896b537b30fee8165b7233569a418d297531dbcb3a14c78a3d85462c5f58167a9bbabc3e81563c7bd4d67e28b9eb4a9e8e0aaa5bac958e0b098ed48c81e5f05095f4d4076a37eb859fbb32e3594131b547a0b2be52f68c98cc688aefb1f498108cc425fd9eb6668f50da7d11602b3644e1243ca05b68b86993b1d3d564f
+93ecacf6c7bf2d967da77e395e4d761bc04a170c35d1cb9040cc824a33564c11b579a113f598f6063e20b1a90bfdacb5f9d7bef4009c7dde9f0548efa4b84704e4c7db807bb6c45a59442b2f5cc505d2f708a07791a8377299f9a93d5b020635f62a1698f90487692e7c4dbce5a89830c9383ef38c35e1c4da5e6d8c82ca71
+da2e066c7d0be8775e1597ee3790b341d04ace82f8793a8699f40f4c215b740a4ddd7ed6f633dd7bc5bdfe382ba44d8da0af288d27c5ac2275afd98c0f6dcef689d6c18dd05444197c235d6c4fffd0d4ae738f708583370ab97e23fe3487e9a1448997f5ae85f0333b7acede3c2e017cc5959844057a30571d5c105cd70060
+598e46b1338b252f106fb414673fbf5769918ba184b2721c4f346bf811701118dd7bc87b99d94030f089651cfaeaa67ce98fde391c4ffaad4b461749595c359aa3a29fd8eac363034a441bbde61658a968359309e8cfa46713c28573a8ffcfca320a9b261b924d0b3594752eab93d3ae412e42498cea914b060bf2a3f873b6
+1d70d50ceed77d7e8dfc8afd686749bc2a1172723a9489c1ed7e50bb32887efb97721c2095ca934ebf0c5a560989c726986287e6e5aa8f8b41cfd7966973de9fefd7a951343da41ef7deda1a90a736ecc23791220058140a9765a68da3a05410feae05e892ab98480fb9a0683927443ce0ee6a3d41af55e6360f365e87d3b3
+66f49aa22a96948b63efbff46f2877a5c82db0e3350f875f6e06008eca65b9abd3aa46393e634e864a2467d03fcba30c0d901fadcc4f32be09123a3097b8668039b2ddaf65d9fc0f162762633b2be257c3b6d1e219495303bfeed7585fdbd773a3bcf9a9216701ed906134b72ecf116cfc158e567e86bb094dd75f7a31aef3
+95b57f96cc4ac739312fb475491a51a87141cb9b69d26ab25ad0cc2db3f5fbe2f4ac62f763d0e07c68a90b3f080cc4439cc9203cc35f1cc1b05c8b15fc8da648aaeaa7c6e9be25bd4ab0e546cdb4fde2d3e37492a0d1870427d2a5512ad4a4404fca76525662bea2f092a3e459a57c43bfe967f825b337a149b4548fcc6092
+833e3601a7174d65428b0fc127b395079ccc41eb0783ae6a59f27deea923ea1218004b28ae86ba9fd1ac220164e56cba287866e237994f7b3c9f87c89273e87ca37ad2a7e4b49f8725eaff5945bc1e8a38ec762a1698f90487692794b8863b8829a12f0173cff77206de0c51863f9486b535195b402e6756fbe9aae85b0fdd
+cd37bc42e77755eac8c9112fe050d4ff4f85b0593e5ac5fd15ccab06d233fdde2c4273fe4100613a6e216246c50dbfea5ae4d73c9011cb57354bb5a7367877f8b713109953752e71de96469b5e7962cfca0a2801a7cdc744ac8eddd3faf50dea43fc847271bfadd691b25d725ea0c048d9bf3a647a28490e28dbcbd776dadb
+a506f4b9e48a19f6b8c88563974d27bbedc8f90ae194a515887b33acb58310d8d9a6bd66517239ada895df2b76947eefbdd95d5b4d4249338d5d4e79fcaaf80e6021e3168d31d46f250a21045bc26ffeb66de912d2f65bfdfec70f40fa1fca155be79e19ef3c47449aa13aa2cc4608ca8cb46dea76314364250fa7b18fa096
+accb689cda9be75c1c97c54d163d900f3a2df0b149096f267e5188eb70a72516d7902ceb4d2b53196e97fde812842eb18bd8b81fdca020aa6fe0423256d62c239db9b468865de7308e892a9c3ad9de5cddea3377b83c5525fdf7c68092a6fa1f4dde10ffeede3d575db8c76304e4693ef0997a01d76c8babc93435dc47d5d9
+2d4978d73a5eee6d1c3faff112ec24f2e9ba1b7fb6b77d1a17b4218807d52f2b9b19dbcf792de9e0cae5a63b5d19876c8747b85820ed5156dd76e40047d604f956eaa13f088a40cfe12d7bdb48dcef4d55bc9d1a36f1fe388b3a18b08c6c814f95e576fd37cb04ac2a808ee2463beac694d5242b0ed37d7ad39f5fedf6d24d
+e9250097259ef8b2fc7876267b6e4185f011699e91aabdc29d8b6a7b2a591bd24a20558c0f4acdbc90c55a2d946b1ca6462f2e4c6a1f6bddbbb22c71db352cd5875dfcca9eb600f40b5773647bff7062e3a70007b1b67ab5082ac00fb543829efa14c2de67f82af0c1dd2df76f3ecd59cac53780c7a170b66066b1d2424263
+9d001bb68503f68c73b18ada215459efc7892b32dcfaffe8e5fd689e264115274a289b99a16f3394e746f09481cf2a654946b67b1a689b73c8ac076925338161fbc0f7e562286cc287afb9798a54d9fff7aec4f29c792e455f803b855898899d4703504f00a83b937f92b429634732f116a69ce1276006e63b2058e59e3879
+5816de7cc7b75d480e72660527a72d87dd111c6a598899f8a4f6a61b071e349b61b55293da28c5db5a3e3284d8ca5d90ca4826dc140172a5f5ac7d839256ee9be9cd45eeac3aee11a1fc4949acd796c52de69320310cd143210458cf31c32413b180af54f2a08d4211e0407de959a46b569371a4cc573ad77d6fc07a6932d0
+1ac150d96fb3f028aab2fade0823d2b606ce517257883042d716c016f4377b8448fd461a0f710467c429c99db02dcc30a54d6e8ee952d68856c5f47538ff793a38d6fa34cb798b204e7525e898bf96edf9f5664a07d91c16a8e8b4138364fd615701e40cf9a8e0ef1b8d531d544053b3d78665f4fdccaa3a2dcb61fe360752
+a79a19da5db010b0d319b97ca6682400de421739901efa66f9a88ae97cadfd155d359948d21fdce3b4722e49d5989e2d5d6fd1e6a3964ebf12e2c72ac5035360cbbefb77bf83bf5e983ad39a5695a64e0584e5e5ea60fc4018ff70d6b725e51a82dc5575759d6130ad57e2f0aff28484beba6106c854df1552da18e6a886f2
+f75611885814fafc8a7befcf6afbba04809175281d78f9de0f3574e19584a7133d3a879acc2a76fbbbd9c1dd69eeb348ac699b5c23637c5842d6d3b8852a3864e44afbf1ad6dc72892bc4042e8d4a83cf5006849b4fda58b27200212e40f7b33410366a19349eee37d5db96cd5a9a7a2ec739ec3716300d1963bcd6a327afc
+a6d3d0ea4a530373c0433418c133942597fd01baffa24fb7eca9ca8925ad3eaf574c3590d52f450a808f81a0c17e1735b7a0b33e9bb87da1d4b1fe5982b5e67d998074e92eb42c9b89a397bbea6640ccd8b85c5db458fee3e9d7afc5e62c372bb5df0931f807b0d9685db68cb86180f30d09471424e233e882fdeb3dedb235
+ee5aaf4fcf963a215a0611d5737941b404f56f5a09c1257cf81f1fa5e4c259644fe058f0ed1e5ff03f2812e341f1c32aaa2eec7378146817aa946f974090fdfd8ef644874a77930b7507532e89a92e9b8bebbe2b4f4cfd90ffc1a12d05e40b30d81bd636e56012e6c1aa6c0a0ce10261303b7b87ccc39a78e178492489fae2
+dbdf46a22da38c23da154ab5b2040b05a2ac11e0a33d34b5ed1e4bf958873bafba0d0c9c1a43a566eee422f47431b6a6958a34bef02b91b868eeed9e38a6d20d7af1ea66c21dbb0d42f273633f87ced2554519dc51368ed60ccb752090b5e3c756dcd024b7c2c3de9c02a79142cc23b1bb5fcc08e6c9777e1a41e86d8b0f07
+03811b3790eb224a6f752883bfe0860715e334946a1c8ea440cd6710674caccfd90db1897f020b7307ba2793036ec96347ccb1dbf78c000e49c8110fa5597e2fd2a0c48ba0b96b18b318756488db3ca3215e958b34f1fe9aea94a1a7aee7f697848a2cc07675822783c9c5807ebcb069f1d070943dd926de12d88c35592789
+1a420c985b969e986e0192f662e886d2a5513dea2d839b35d9902d4bdc6752295b761292a63e997c20051a040314c6a86fd3f2f791d7b5371914e343e61428833dfd3eeadbdf6cf368fe636212877d348e95c2882a5661ec1ec028e76e944ef033662cb1677ff63df2a537e89222348d7ce4579b5fbfac2a71b3cf584c0acb
+e2dead719b06874a7b4f725fff17e1f5935aff4d50691ff781d6772e4e916430f66dbcc522aa88af24b2e30b5e3264558624ef3e8792c142371320bc6d31b0706dc458d81b860e293d47d70e1c12fce97acd06fef46aeb22c8384a7aa66d307867d7b3c90544febf15254b5639724280c08495ef3198afae50c4a64ca1082c
+34d1b181053c346314cac3497f15f32946e0f30fcd48ad64ce05db65812e9b256acd53afcd3900add856cc73b2bdbcee4b905f72845e4046a055b441d7e23bdf8de57cd6b7449d28bfc1376bfa7c1deb0aaeece95e9818feb14f5ee6cef4ce55553f6a314ea042c8a3b4f038eb223e03dde23d4dfc21b04afe0130db1be221
+639aba016be874d16f50ef548a33c9aaabc701acb0b0e1a806d81d0a4cb21c0f8b7e064027febb8d9b98c0caefe7bc2073009c9f55d10f4b2653e08262f2dbedb6b3dc5b0649abbfd7a3be625944fae5064bab68f7267f8cd3bdc732537f8dbba779e3f50f607720fefcf3a2505bdc44eebe30d8b35a59417693a5d62158d3
+5dc42758b7656cb7331761802483a156c5d47ba1926f1abcedacd4ba24a60488459e5a55fde0f56682d3abd004b29438a735b7484afcf057cd4f32733a9caa3ba2ebb778097e30ed2ff7b56dab7e58b4aadb109fb8ba2ba69f1e661849d7c8638faa40318f7e15cff2cfa260da0451cf0fda569461f10319431ee42aedee83
+df31f72d5923751745713a3b71fb7b5a7ee2de6583aafff1a77be181a5459e59e8071b6aa9a992e67f7d34a826be2d664002abe68c4d09f21799e33f31e86e2d48b250910d5da3862fd2ba75bb48dee55a88b6f68cfa91bbbb0f08b77c56b43ed295578043dd3675f9cfb7ff2c6cb843abe28974c2e8fecaf0ca923da144f2
+d91ee185df2c0e9e1c7ea35a38daf6cbdac67db999ae9b83fac72b22be42a2f63b470c2f86eb552d482294b95f01053abaf7f079d51782d9d0eb7ce9595228a50d9f2646277e8d9df31e26c2c8a434efecd49b53341afdfb41d5d86dcb2ca9a3f48ec48eaa82983cbc69397b76431110f6724e7cc0f7b4546bf41d073ff25a
+6ad6a43b8a8f50062cbbd6c5f9b3d09e0f161e942823dd28e01cac4e51f7ef5eadaf6a8dec6853b2b412ddfb8dee2dfb58e4be766cbcf1e8a954c8b67f28d7a6675bfbd581301ec31dfe47bdaef075e73769fb768686e19fe0d5333e5825b0b98b9753bd00a5b18d6c595b5199a1004b745b205db48e43d2e65a4b6bcb7f69
+3711f07e367eef6588bb98c5ecc3a951f1826a0db31a440df73d1e8eff42d31322d0730360a4af1c318529cb3faba1f219d0dbe62d2aa5fb998ddbf78ed7dff1169e3c2b32bbf926be863c5dc357bf95a378ff104c9634c2489f944d5070795cbfef6822f991157cbf1267310922db6a8700a85ce19816af9f5009791a1db8
+72f04ef6227850bbed40f105effa93ae747f237ebc35996a17def8c2c553bdcb87fdbfc73c562e619d0e22e8734992934cb13c8f5bb6546a519cacb85974919daeed4cc39315d964837dc7120c16faf23d339b39d8ae5fc555ce04db33e77fd890af32d3c21507cd181336b9b1e8de43ffc805843364e19fe9a91c89161403
+99ed0ce9322db840d2d559e6e2676cffef5ccda610a41a36e17a3851a9b6a3b196a16d60ac56ae04a23be73f1bf2b6ea6a4dd5dd8fa498c0bd9dd7d64bf26227dbfc0ad2da8b617200762678036f0553f3bc7551cfa19ed13673b7ea9a6386fcfe0a3c18521a2e3335fb4c2aca5b9d10616c657c900c5c7709dd6519406ee7
+09189406a7d3afb767e251ff11d55feac2cb7aa8fc7ff10b9758bf12cad01b78f802875cef9e8c25a876a11269ff1c9236e4b9d2010ace6270a23b035ac333d409aa96598a093fd97d73d3574e4ee7b39069daf9608b1e1b910792cbd5bd6b41cc20d10e8eb7afeea758913e8b7e243dbc33a760aa8f73400b3f8b4d4d8175
+d4ddd12b49a7157d1f078a77460229f29d8af315e29e5ecb386fc32b41871efc789ada932f6ffea4fbffa07055cd5d47a3fd8c17dfc956132b8117345e17292080efb5bfe77ed2a956866509ac8e896b737639b6eb6dfa5ad97a27996df5ee0ec807ba74511f6a382fbf1606cd813a8b92ea5bce7c127614d8c9cb19369772
+00fc8c5b8a615f8a3e583a440860c8602f8803c391ace1c88573dff597e1e1e86a7fa09b762a1743d10e2ad991fc020fa9034f7ab37bfcd9d8add572f89e7dd7132972042f8f80de3300f4424c45449e80cfb9a7c6cb3ced41d03dac06967b92822a15735e0b4b3e856107a6f5dfe5f87c88e83184462df50e2b3dc73cbbbc
+e7e2527fef7928efa85f72a6645788480996fd1fa5b20f6ad38f20f1fe92de35ef7f078faf9780bccb95795cea7da36a0a59ccba9cf04eabb9cf608f13d30d9d5060f11ccd07240e2cbf82eaa10fa069a9ff5df33cc5f04291b62944d9c541f976021d73d34ef99677bf0c77d976ad480af40a182375d75d8799cc3a98c1d3
+db6669237461d98c2c94b47e5d5a16848d161bc6b8d6bb49ceaedf19e0a1445b2b43b5db1ee6e7e8a56ac3e39308adfacc682297cd27dabfa64f4859121654cd4bb804b75d6a2aab1ae308e37c8764ff9a50dbc77d4980780405fe1794527b7b9dace056d7d27076955cb9084426d1318991e40c2c1f7c98445f324e74fa3d
+d56bf9658fe5100e29d2815142f22c8b0a0179c89389737e4b11b18eb05acee9d75d0d52a14bd709648947c7ef660267aef6ae23fce6ffb75ee208f0afa915fffe85966de1e8aa6dc68d9844e3cabd469f058164af943d7aee1b80e7edab46117cf4e5a804a981404232462c647cdb1dc827aba92f3b45960e791696aa7157
+7de6a00c47b6bd5bbc565363fec2b112048790d9f880dc1547eeb9611b4273d434cf00c460134f9903dfa2512bd1d87be35cad3dfdd73409802e40834a9684e8450695956e1e9af26de84a6927db278ece1a728e742e626063b237a101505d908e1d9715f9d0e2a14b5405a8ed94748e2b773b40e25acb42241b241a1a7425
+54c9d2f89ac539ca78e0a7e70cac1dc181aa3268d3799f001000f4063d315a7c780dd68a431b156ce363fff3d6c41e24602658868f38d7e6925b226b6a11c7f1e2b5fb67df7e1fa5ed7fa683393ee2b7834276926494ee47562b2f05f17ad122c3e1d91c073f0800ba544e8a40627112d2ede2e24becfff9af3898f7b736c8
+cb62c91206aa2964a70c6e079e1c5fcf73478409c4779840ff0ee47fabed23fa3dcc495b43a13f89febfc454c3d0839ca36095af09c48a197370e7b978f7f29fd2e61e782efb3a78d780f62faad43f67ed07340ca8bd96d41f2f2367c57748bc2205df12a4321db5487249674f8daf15014ffaa6c890f5c7d9fbc97a0eb021
+93b541f4f3268803a6261f6408009f0a655a5f2aca3bf7c69e344f1d706b2b4ce2e4fe45759cff8461efb66f320e8e5b585261fe966cba1f021f93b0ac8490ea015eb1fbd1f7b5c2a1203480d45661826479c3afb67e7619b8bbdc3202232cbd84b5048d84ae60de9c27e42d08213a7e6c6a89e2ed1c9fe24896194ea93bab
+993c754fabb973193ad4cd3b3349f7501ec9da3bef61bc9c37ae15e0a39f7927d931fbb3904e841a61258dc6f9f817f8968e1b56cff47280572390142c3506fad50c1eaa389af430823b1d50d6bbb8a7bf0bcaf00f09a9c416d7b6eadbf3bad6c66681b63e8e982b923eded93676928803ee7ef1a92361c8d463a50dec7611
+16fb36b1e5645d6d11b6d9d5915dda307c45768b40ef3eab0a3cd47795857ebc906df50d62a348f1b50e78ab823bb9ca6c5c3d79e4a727d2bb4c7e0158f789a06a5ef10fc678b94678a1494817474ff3eff2e4365abec2ede8803a52ae223bd44a9f6de006f25411203a252d3f0a7d31433a67ba37fdf5c19cb1dfa8f6f2f7
+0a20e40940b1e2649b409d89bda82d225da83f7d7262b2e833dc39109a9f7c52d2908410feab8bace469cd5582d69f83c127cbf94b2ba18a5f693e8addcacae9fee9efcf00b43426908aac0d211988aa456890b250072e47c849ac5a2dd3ae7aa094d2fe2fd31b283e58bd247f13dcfe7aaf7051a9d780aec1971985fb6c64
+83ad6e7e1d7802bb6d249182642b478a1cda88d141b25e82ba91ef65fdabdddae37e9dfcbe015cea798f895f9c3f2aacb14022edd5a5b613b7c6dd2d1095bbb107b03af6955cd516db4c0f6bf2fbad7da9984948dbd8261a0da69898e70666a1f0ce8f0f657635f50e55248cad29a7e737277b54bbc9a6879839c1652f871f
+2f2f37b979dd0129cae254d20ffe4ef7aae24e07191c0a264c162360e328cde396d7717c5e45a27cbe06430b4e35d1b8559c34b81a7ce00ff0efc1c98a07526dbcc28231b1fcd32a3a8afd2f757a4e5867ea67b01c8989da742222c8cbdb568f8c38796f8ea3b9c782ec1fd018284179897d1c09f184b486a61fad60490c5d
+474459d960927e73a3a0f884cbe6f1df3e6b7ab90422e701432722286919c4ba13e1292a8f87acfa353622a10115e7899f204b5358fc8b9ed670e4bcf55e76e10284d2912c9a00b36f391477de60caee3c239f990343ec10d47fd989f3719ba0020beb04fcc3601fdb5b19254abe0a3026d47b85c6b2b206213adbc8dad30a
+7fa9eded4e736787646900bd08eb1d57ff1af0a67b83f6c61894197659e0d6563fdbadffc51c190338fc5ffad81173827f1bc7a00db84479250daa018efe4ac6fe33b26bd3765dd0d996890b77a82ac9555eb388d6ac131c03790add0e0b5aa0fa2ed569d3ebf276a7aeb9ae7f0746f56148668120fd65d221e670d6519877
+52adf0dc0369bbd0025f9c43bbff1adde52942885e9afdadf8dc452b845a1a37eb622c08a7bc0460d4b1b417b36e091edc6302fea4e47939f30d5e4d67db5cf35c9ccccab5c393d4c61b8e88c3dc14c6efa5cdd534593167aed46d9e2f758703cd272ebf5ad2dbfc2dbc7cdb82a4d88253e47dbd33abbcf72381ae994b6b5e
+d750dab87b87aef008d5a76f5251bc35921c22c51aed2f73bb9da6a9a5d43ef6910e25730556cbe8b05a3578109ca2dcc8821b223ab51ee27112951825028b7d48de5590c4aee2a94c50d589644cd34f4a8c027f98d769236f6203344994b05b4ffe317137d0dd6bb13c32bd8a066d2ee7915fb51d5ec2a2b73605a68a6a9a
+65c1521ddb30b74e5d760778f1b1763c0c935fc8119e41799b76304fd3d2da90155109fd20b31cd661dba5decf444ef8431b3edf47ea1754a2ac96d27342a5cb09611b90126c884ffe27f7cefa08f6b84b023d3095ded200a24fa692e84d3ea4159d90ed93e2cdd131faf7ae0ef6367915c47ba9029e58550a36097ae25c8e
+df5fc9e8a3568d36d08e826b377044214415bb82271aa769160959d78e972cf5a637fea493fa0291703e6c922e0a4684fcea3e0c8ce794fca23a154413b095c0a2bef152ba57d911fc3d9849e7024afdbe703b4c7c959cbc01802f413236999b1a749d3a12bc3c190881322fbda197a84859f1d4d7ee7652a5dfcfaac40f30
+dd003f807e9893e2c6e7892fda5a67c90c344f7220b1025b61fba8651219c6499080e37513bf84135e95ccf1069b3296df6c6b4bbe46f064cec3fd60a0607393b9f29353f3cac0ed86ea823d2ce65174c9d69500a4bc25fd8ffaba8813116c621d3da8735a0e13caeacd7a8931b358f75df4d5574e0461327b943bba799c67
+993fe07bb180375cc36d07734ea13a92a3d7afc1136938e8d4059c919b41c7545ca5d469cab0edede80b627d31e987235f2350ff0c9b75a9e050b0537331e70f0df6aac3c5581bffdef5d1b24735d15976566621ab52b15a1bd4d6725e5d5a69d5e2867d209929f1184b8478ca85fe04dfc6fdc0164a76ff9e5da5d3a68d54
+e96463f64d34c9e0cf7133df9a8c18a6689497adf6a86e82f71d89c2c8ccbfc81ed616d66ef3f29468bb57b236a3772889b4ca39bd70d3b9022b15830bf43c462a493eb29b9b2ae43f07dc29542d426e659c682f89f2d655e7d94cfb508b25f57dda601e1df6c5cec8f8565ec110bdfd1ae69a3a84c4cbf12929929ebf575d
+7082d2428dc0fdb93472f793865a325f3ccd66ecf9072df98b55c6a788264f0848bca0bf864f4a0d4ec941bfe339f60ee9e6c3ac5f43031c7aaeab97f1e4831306f8911ee45ed10148b51efecce6b7293b8f40b4642af614f204af6c072b48c47e7074822570f317a5fe730e59d725cfb698db0ca73c95a532771ed2cf19e2
+729dccffc76b4c9b32280cc6cbb1e20bc5a016ead5820d841d61614c604c7e4e50ef845e90c140d0c1c7a312634c59fde56c147a1c394280f01b78d28e70f31bacddf09cd5efb4bb51f956280aef96e617b6fdd5b2c3e9e625680a34dc2422fa6efb7865ea061c8088681532d8103b7781294b028efe0b64900a9c240bee05
+e73683859f5515b3076c435324e2e2c914b76570852a7b7f562efb6121a92ceb9f1d37fd2b1cebcde72824d0a6c1e91a451be797cfbc3b6d47759ae09b1edba945970648030686fd859afa8a6765ee025134bda9c2d6b13c22fc48412c9039537a03f831f3d292d43958526b9340a0489d9d7808e2904ec531c7d56e17592b
+f62d1c9047be95c0cae9be1785428ec40897fc27dad0714654ff8fec5d7188b396304161dd65ecb626ed34364d4b06610107c20cf25338a3160ed462c2746b21f774e8621a1b7a11b6ab41a727a03011516a993a8bffe2b72ef23c0f30f23a6a0d41c579ccaf0c97c19580f3f0185a223e526f83a19b4477e877c67851df59
+0d1e29ec76b7ea84bbc7958f4fafcee76bc0602e09756e324c67466dd46721c92010a3881514b25aa093c1f4709d60df96bf47f2c50065253f2f3cb16d66b5d7d8d8281db3632a6adc24df76a72d4ac515157347ea5ef7defced3beeccc46345efc52c6b2fb3a06b8d6d65258ea44fd63ef9f553882f09c83a776664ab569f
+3ec7d69b8730b36a2ae6ebfc3fe3646e286ed25cc8325154057ebc9edabf2812fb8fd247d942f254e5594b5e4ff122af8f04c9d8cdab08003df911456236397c51b4efaefc1011e3b3c5d64dcd35091626b951cec80e89c6cbb9b471b4314e5ae0797f7d10c5505f4a421d02af13304eec5414d548c36d3c99c8efe624b310
+792bb3b5fa229b08479ea9385c55ec505270902e5568228d5332574eb1d22b27b9fdc57537852245a273de669d25019f771a7a5c30d8d337c151cd2b776cbc2ee89351ca5c4ec2555062cfa668bb75f3203411a71bc2ab5825b9ebd0621893348fa4b8e8b4d9e458a429d6d26ebea99dfa01b279210c3ef464426627bb2c6a
+8f4ffb219ce04a4564015575888d0d76e013f79ea964187a0d6ceae8753e18bc7f0fe928037c1eabf3769214975c73f5ad3f0b49cc80d8617e500802437d9020a4a0a0e98e43b9c16cea472c0d5e4bbbb7d54c634e97228f3c513550d63c51df10b22f710ba41de00e3d209372c276f7b7530260b16f0c8bf273cc6980f6d3
+63b94a94d8ca813eb601a2f07328cea787abf0e00a5005ee49805e58d3c33a5cf090759df241ec4c871257dcd3fc0e7d083a967fdb3fe8383341452716ddff24799d651bc1e7fd4931c0e7c1a868846c77ede5c091a13a18c09d6d13d103bcdb5a77c16296ff63263f0dd68b8f88d3ed3bc2e48ea51c5c18029720be5a64cc
+def3cd0c101b4275d973be1310960788860c4b6c05eeac7d827bd9963cb0bb5e169b79c146614c4a4842d5d588672eedeb304a89e2ceaa93d42b601d5aeaf79f9bf8a9fbf18b926cb2e626771cd7e2e07447d355e0257c22848f48906b58408a8137ea44e90ec5c804aa9700ffe0677bd26479d01317eda6821efa7f341846
+d3d844e272385add9ed441c15b8d54eb50614bf2e70351a328b55997cb0e3db12320bbedfa1044579bbfdbe7380b6a3056bcaea088c85b97613f13ffdbbf6c237c25dd8e7b3df00cca0effbdc389cd5937ebb2395ba7d9c11253d8b7fae27f30895b1107dd460c78bf21c2022b328cae888ade147afbcb01a477d1561a322c
+22b422281444c30d7319627c12f5775b7ca56cf58c0982aace7ae0ce84b5c4b20a664c8efb1183e3e673e0b689e43c45a7754c3c1a30a3094ae9ed82f5286293ad4e5e92ec9ce384ddb545f9a00723800acd1669706e0a5708679bffc0f3be2831c28be5ae64f8535c28844f5db6ccc8eddaf97a85aa2b0786012da0d69945
+13d31e7dc3b4f1611db18db7ec703facf71326f9acf586f0bd32aff925abaf86682819f37e8f6904027cb5731228a512094e166b149d9f3b0d0eabcc8ca6ca6c41f20985e8eaa0ed74a3f7c7982aa1a4f247eb08f6f087bd8ec8d789c6fde9bb75e294ee405de885b33d192b0cd0d0f51903fd55453666bc10072579b21b3e
+c25b6f0ee17043d7c83ce1ec05994da4c403bb51ea25d27b084fecd5e596a43d37fb6f2f2d5cee95e7138a4ded8cd60a9eb83771f1f011975e2cfc4f1ea033b7240a5d87e349831cfd7e0bb965df052282298bb25d0c5e72ae086ecb80a5919a0066f2ea5885d112fc08d5ff78308aab9477f3eb94f23a9af9166901d79ff2
+a3ffd58d7a8062b50f4b1ef73ece442aba266ecc05d275750f17ca0af60872f9472e327b5a5b781eae92fca9589289297fc04498891b33a732b60eeda5e8941ed72db22cd99aec7687fdae7d2239ab496803fb7f4521e3e1b1e5df3cd5559fff7ca4f014a7ab3c712689117a1f66ca2cab11b1a930336d56947746c2c2ebcd
+e8fc576c053ab8625061f909243adb5691c22bab9e8307f1aff9596ccb5304b1aa8451132b22171dd9b0d104022e3fc253ee07e73fc297f75ecd4646ee6a21742e033056e7a826a04f7b525402656f8500556e6e378b7051bada5a095948a1fc651a681d854fa51825033233b26c4ce62c905bd1a7d5a4668301759b2f7a02
+b944cfec5c21b918e4b29cb3af1469392eda968c5b4df27a5e623661f6105f7746c4150d005b6c1d38c731fe6f49ca4fbd6a282322806f7c0907b4d6fea19153f465fae3dabc3ef1f9ae170653ac71bcaff7a315cad72204077b92d508b23cb237604859ef8c2ad8490dca4f622e16a60871214b719406e0937a14e7754fcd
+c286d6746d8d299203d9578655cfc574a0fe027b3ca449e19facc444859f51ff4a3e7947e76b941bfcde9e91bf49e424dacfc7f3f2d57d764234604908d44e9cec3cbb1a5976cd882697f2ae69b46888edd364f47a528bd092954772b3592b7108cd1bb60de961ee82220f4cb2521f6fb64ad02161bf3c3055ffc7d97b24a1
+e1552a5e7f3d3abda7779b7f4df6f76a25258cd609a959e66f301ebea94faf846fc6c3b7484d4fd1f2e34c1840944579a4710e7889dce62f1aebfa5693e3333f1f9afaf41439c9babbf49acf54571630ca58ff3daca297839d4384c77d00d3f656da064b7095a18290f52e66a6020b4c0d0e0e6d5d3af818670c51c0b5e5d0
+d20f125c0f4405627ab5a0c4a6d74a77ba732afcebd7e9c8b091ab697c53e3bd5fc00dd745b80a3521ccd233df15f7fe9c40d34a3ce3ebb52f2c729975902d6fc955a6fef71d4dca28a8b36c1bf9898fdcef49546e82492554940a17cff78d5e59cbc295b5082458ccb0e81ae519e382ff1fda6caeddf25fcf96b7b35bd7f6
+dc16a78361c8f0cda9c88e29175bce6722a5a82cf04c712c5404af8262d00b2dd59074f26cd668c2e5b0cb8f158e18d20fda399ac84533ac81a904b1ec24c082cfc266c6b28b15c4e563a94e52e5230251850122eaa893d6533eece0d6b59ac1d669900cf4a347b74fcd44aa62f4d4684672d7602ce25106be3234494c4b01
+c17919d8507e7491902ee48e8999a9658b97ffcad2e9eb49eeaebd9143f556ac9c0d9ff4fd73f084cc133af1315a0fee2248520a812f0551de463a24afc6809a68b50bd49b329d9a83792331330a1cd3002df4067518b88628779584e2ab85fd4fd9a35777b518ddbaf58abaf95c932db9c357984aa5ea5ec4b0f211693ce5
+6db21538d1477195221f4326bbf99a4bfaa9218ecac3fbebb492d36f75068093cf55fbfbb8187ef5af1d826c8882c499749bebf3ba5c515e97de3f0c222e81f03fb2d2bf4b2932ebcbf154ea1714225d6fd78ffa775de98dd6c34b07342d950e73f9c1e779d19ad24f07b27b7129c5db28bb5a729727eb6c1f0d0dbf87732c
+d7d49c7b0d7159315ce0694a86dadee6caa516ccd24d35333855666a4e59660aba220b351a8c88e731b0d74d3813fd56eeb24adeabe6ac2787f6d76aee2787f53e8238aef7950be2ed09abd13a18da9267f83de74522855f0cf1c584ecf29d139a14f0c6432b1ac22ffed104590e14742df17847e1ea3be0c387273bb8e121
+e4ebea0be5c3f8dfeef4fce37c98edb6ac1a69ecb31ca57fdc725013de578c9d313f47b3f120d09f3d0492f9bd5da8c890005e82eccc396d550b8e35ebabe2a8633772518d10d28a7e8981cb07b9ce1f9889e3d03ab6f3f0fdbac1d305c617f9a50777075977b2612deed34e1296ccb8891c7c242965a397404e00be6e8274
+22cdaf8da6357fbbe3fcaa932cfcc8336bd56ac33950900ec0d5a843faa9dc64b77b3a993987c14350faabd948b3987a87060914724d9735b264ea522ec6df689c232e05c90512c0f12d5560de1890866f09ec2cb4967cfef0656260f54ed8f0245e3c2bded20c3d743028214b4ca73c7b0d535d70689039ee0a8019cbf62b
+18b029f48e022f1ff1f12ac795ae12734ec3d0b7899259cfd31184c428c761cfcfc1c0a477999e7d3595225bfc500e681f29a1ea66fa80f98bdf39a89d5aa56644162aa4ce28842a529b16f780eef2e2dee7511331804a58680c81a0da811283e1d572bfe58ad58fb563ba903f5a27ece9bf6df047bf61d7cbb12dc63ee348
+a8d4f4166827cbdc406327395ec555902b51e8f03850da8f9542f0d253fbbb24b0fb992572dedb700ba3dd338cddee0e532256f2c29ff22e41eaecf8cea2090fc8ae42a0dd2406d3742ff95dc236d83b3243b45d2aecff891525a0d429dfa9fa47d658cd0b47bf508daeba39be9126f6435fd3e21ed77b884291a52b1299c4
+13df2bd32349ce7ad44d88719bcb3452646f5bac6d04c51700c96e55608484ced972b512418b7eb9bb6c7873f3d1477a12364b9b27f6feef2e3607022abdabb8249149acd7ba821f811af603efe20409f9acd261e53abbf3503d914db79164cd7ac0d02af00fa9eaf159c6ee1d4e6645c1db7998141e647c1bc3b2243bf3bc
+6ca9b4643147fafb0e0aae1fe24569f4615857487f1be9865131764f8c6f0675ef6798f18ad4e9d5ec26dcdc5a7889a31a4e3a2c97933617b94e188d2dbb67b860e85e0b210aec97820c5a15f57f3ec6c846f6582d9f0bf99ee05b07abf64ccd3471a3010a63ebcc7cc39c7720f46d91e4d5b7b59c88da8bca5917877939ca
+96763ee87f73cb61edd167d5d13eb6175c084cfac84ba56c6390455e42f474967dfeebc63a996fd4e849dd8f9692ad4a28e754f6774d37fabec8005429d3dfaab837707138266056d79e3be5ab060f6a0947a2db1220cb7b298e2969f2e8f4c14ee511834d7cf6ffe465cfb8f7c739e4526b13bd9aafc6c7f6852095aaf1a1
+9c9ec78afd3239a5fabe695b35b631c50aaccc8c4124cd9022dfce5cdd83a7c1f5cf0e8646fdeee883831f2b720e507c722c32655dea19a26e4f4dafa3f824c2abccf063ef765a6480956f88e58aba6fc8768fa7648f75633b55808d08e64b9186d6c71de1e6bd50c290db15a4c89014472934ef315500666aa515d38262ba
+069d0581681441740a4b7c1d1ca361929ec8734af8630400feb0ba59d8432543e85c5b2649c024eeef3f30042eac1bd6648b0e83dc53215058cb828f2a7cb910a080e3fdce7312e66b529bf17d4e5a86d52e206906e431f83051b401265f0445f0bb1f69ddf256a0408e0b8ad9ceffd32a9ccdf7b9402d821d739e06074425
+8c8ee9bcf7e1d23369276e58afbb0482d9eb85add648fc2b726400f4a5918494e6e14b1d46bd01ad303464b4367364d5755cb7cb4c5f32bbb37f3b7177be38f825d370936b3d291a81019a46ec2bb79a3edd0ba525a5e016f0883d0987d97e8e6b00620bbce266fd14978bcdeb8bd70cb0997cf11f40266a7e5056217917d2
+e720e55a923b7cfb5756028d34e57d775de86c7aa56cf7aba899d0e77a72e25dd80dd8adcce7c1512eda0453c760cf36a2cfa296e43cfff0a6dec28113a1889db68f0258dfd69c291b581bb5b40502f9e18801d434f92f7d03b6ec16254357b57ba5a4bb0e4d85297e8c4dbc1cdc80dab172421cc1c1dfb10cf2c96d524a8e
+99638bd38eab05614784f94ef1a4ecfbd816092e18c9ab3daff5738efd79b51db9a93d2ac0e80479fcd08054e0f5399deaf6398a0838da62bbf4ebba55b244c7f965af5f3f641a39455a725091cd0bb3c16c9edde9269b586955e5a866c9a530598aa54957dac68549ff77cf685173061a2430dfe5adae6a12896d5952cf37
+53459b93cd30e9bc76b0edca624c3d85313bc5bdf4cc76ebb82e9a43d95bcbf7325a8182f07aa4f056043340dbf8ce6a187c1705a3897551bd0e1dcc8f3fb09ac53c7227e85c070aa696fd3f66bb9dbf2610ffaec4ba0d37e6acd1c340ab5729c1fa46caab96fd94d4e212ba097252b701d72855fdd72c861de1d69d0df79b
+a57fa6ebf631574a83664223d95faf416468fae864dabcd2a71da5095410d6495d2ef4868fc7dfe72d77d7f30f09ea3a4009d399e9998b37b7745bfa5b78465c523984057aa9c17ca428787c7c070deebb7e4e3e3c7429cb697b91f5af5a46114b788df2cc256eabed34c857e1b1e5634d19b7efdfe2ac2bbb4285e5f72b65
+aa9cba9cc7a9af330f1b7cdece551d71278f8ccc3461ccd7c6e4ba4d693751d2f04cb01c4afd6c34d89fbfd7123f562e57845156214554a9480d600ae594442cf92821b3b0bad2c77f1d84cd90abc3686c7b6f8fe8c9e623b1e5fb5cf14f374ff0730e8d51fb6c30a3dcf3540683d0e6ba226e35e4aa80e6d45305d49b0a59
+5f84e36b367c2b1662cab9e4e5f359cbf8bea18af2da7a2353aab63814f21813f0145d8fcded42fe56ec9b90c973c7e9ed3f2f7b462a91787d5d34b8a30fa2c762410e727d8544bfdb12cdb62d95df6fb0afdc872a78d268c3665733e153bcb09176b22093dc16863793e3be3034855d0ef240d26680c9906debadd330bf92
+ee93ccb0099c2701a2e71b6861199207c79a30624f1e773b3fb5ad8403d23a25f6c53d49b16640410dfa2ded167385430aede652a61150852546634b92d2d2a0a99d6a0467de61f35cc49c29bb3771bb235fd6339cd257b0e09c96574cdae1182f09d27d3be66602f220f9aba917c0d3cbdc9bbf4d20f93c11a501b4cf6c67
+974824fc79f3cdf59d6d10772df8e005ba2b70dd5161310dff02b12f1d488b8c07de7842c33f753bcb3cc10523beeaf1a0f655194cd977311669bc368fbefc526d81c88693b293b5a64580422ee11c776b1e7d4436cd18af8f1dbc50a4a5106bc781a1d458bc7752e0f06ad07b63cfde6abef355a42158fcb308b2d0e25861
+88b57974a2d301378b9fc9de13114392c9142fd4078fcc33b809be833f46e9de93c2abb2c6fa5119ea357e992f1e879fcd80b7405693cffe7ec5bc4ee461640606672f82754e481e01c5dbe0af11f18d17dfabbe342e190e7f2ea46d0e1b32ef57176257cba464850a66d7761322ccc2dfdff00ef4e1032081cd01973e8233
+31404d4e40c08ba9dea78025aa6830004412d72390e69cd74aacd88692a880f6e9d2a00a77c52c9f96861a2393b732f31d34198d88a2b7e138416d3201a0bf6b23f6d0b5e57176f88edfb439c4a3df4786ae8802e29d674b05f2098d6e864acbd1cd5a1d9214106e4d85f95dab48095f8fbd9268073df742cbe68577aee0fd
+1d7f84673fb1ed400822c6dc31d56a22d150eb7b01bd431637f7e263900860114079fd7e0bb2dca152575eb5586bbe1aa71bb75febb12b5c39aeed0e85790c2843cde0562f196e8f1610bdbddf21080a38add8da17ee311b52fa4f92ec20ac43c7f10bc189a92bec2d26baa9ca95ce5b950af2dc1feff04955e9bddec88369
+95028eb37b408c1afc08782a1af6fbb3e0641834f37e2ed272bb37a8e92b553a7bd93eaaf597404d87d45d0c31c234fb11d0d723fdf8e9d5546112caeddd83b729c91cf2d2aac2b4e002be7b0c6b214ba0e16c860790ee5e1a753a4ddf0e1b29ecfa534bb43a7cf8fd1030049708cbceb014950f8e7f367128e57680aadda9
+a05e546f62cb32cc19e963ffe2f374ea3bf7ed9a5affa4de339f60e3e1aa7d55361705f0d3f8dce36704be4b500ec2af47fb7266ca37ef664cc33c3b3bd2dc644477b0c228eb3512b18da8d56ee1da0ddb38c757181a9e70f7588fcac1eba97531337cfe68e781c292ecaf5def97b4038732a9ac7d52c6f76ba36b888f8ee7
+6d6db5094d638d8551e3d3e268c3ff1038e1677defa587e988a574eb7b598511f91cce21ec212675dfb11c9a9fded970c837fc270ffc5a5a7b0b07d789933e5e49bf8962902b0992c9f133872ac632cf9bee9de570f5314c1169bca817cf36bce129c3fdbf4da6227420e3d1408fd1099e19fad087fa89d9f2bbd8e0067ba6
+935e8b349ca5f1c7b43d4e69318472985ee36368641d180fdde6f6044fa6764ca2834b873f137c071f4c197f9d1a5476c59e2629ad57b539b489154e2e9ecf8196ff7e48fb4d9f9ca73eb11b8a72652ee4baf29735f3b38e630dace9ad3207812cee35810ddeb466a9768dfa90d63b5696687824bf63b3f20ff57c7f6d0745
+b6f6d4f7f6e397f79e655c5991dc4a9d65045ac0d7dac4eff8e71b9095ea8994a053bdcffd375411ffb1113f494fd4fa8dd83f9bdbe43533bf9a2e961f93a47ee6dd8818edbc810391caf25d8f13053d86a4d264b0a03832c372fb1d194e45d8265757b5573cf9d988e5d5b164c44d2ee7ce02e6b394c7ea709c63ea793e3c
+bc7d5dfe6b5af6b32cf1a0303a8db5b1d9b0593416427efc5cb5fa968c35decaa8262610637679db3865faa20a700b4cbd53dad08ba0f20fa0e79f9eebc4df5e77ef74bf50b341b30cbd1623933210a9c5aaae69c3a9cd55038878d221f80f98840d249d066e03acca0787018e35e9299e26118a787fdd9085f9374a49c5b9
+6dd39968a836ebe7203388d39431ce67c38b5d8e3207c672ceaf4ffcaa946932fe26b7d4604d365c72d581b5d9940a4b65039cd9a0b79101c0302662d10cff4c36d8876fd34affd9f7696f6ac97a4d535fcfd57d4e3c3ac34410d87443850fb19e0b988193de149fe0540aa5ddc8bc71ec35cee91ddee93af5d297158e8e9f
+138c5b22d5b525724118dd2f1b7d77466b76464bfcd45967ef53cf3ad2dbcace50c65d22a459bef414e170491587596cfede9767750dba43ddffb58d5ec0b5d4bad84bd8e01e2bbb102128a2975def0d7a5823760c697d522a53567d479dc5c3c7b1ca78942a1ea8706c4d51b05d01888e0ac3d25c2fc1532cb9c286f3d6c0
+cfc8a0bd5b0e6b3bfddf15b62a8f5042b4f8d74c14c545845f6eca4acaf9f7c202da7c4827fb23dd7f362dd9a0bffcb3b38ee7e3bedeeec45fc799780a7ff895ff706e031ae6ad7dd27dca4d25ee572b3d275cb26cb80593878f394cbde2f2670138802144698d137f7f61467ddcc66ff36ff5ac38fcfa506d7f6e7ceab11a
+04b3c9d5571f5fca27f46dfbce4c3e6606cde136d78ed979afed5d956bcb25f3016b03180fc57f4cd1c8bd8ff46d25fc6fcc4ae5dca59317e0622a31cb39810c09061c36c9e18f35faff8590442fd9f02e4fe62a03d85266ba883e1061473dbec136c6d25cfd509269f171fa4b534a0c1c78b0182e5ccd4490bbe57728fb05
+45b1b1dee107bebb0fe8d43708d334806f1dc2ca81c5dfc42b7d81c94dcc94e84267e94c1c3c51abf261dec41cfc8cb5cec2ba4e0b2d396d6ebe64cc0a12d0dee8cd816de9a88cd5290e09568d4835815f85c10eefcb158282e82637783ff09b804e5bae910d4a10835a16732b59da547c887e91e77dcdc14a03d0103e6dac
+4a71de3a186c2b80619e4e662bcf456ab0881bfceb432d9a5cf87885738a2ebcc644cc47464e6be60002a7e3353b20306834bb3adc80a2f449bfcd0483499cb41e5f83f58a90eb3ac8ac39d18622b94d9827ffe5b4198079d523877f80f7fccc976967d679f05b58eb75c337ac6b33f99cfe113bf0944b585516258e26eb5b
+576503f990d3bb07c0fd1e7701a1d5d35b356b532481f31e759a7a085c46298ca5cae19975ac550cc30177fbd684c75a8b3f5aa3e4c963e0a4abcd7ff6174149818996eac898cefdc91b402d270bcbf5ddaa851b6cc07fc6d145dbce645f590716ab70bcab3764988d64622c901e8ce8cb596de839e4f01881ca22fe064b71
+42807945ed70ef2fce6a550d410c7de6ad4a8be9c0141ce4e3e0f4986b0d14279be49bf06d2fdb333abea4178c782eb0ccbb09679a791a9c7c671820863ac8e1b542718d543f9a90a10f67ae8dfe91348522e631eea42176e1114167a8733224f8e666ca972398c5d1b88e632132a9913789bf74210dd112634687d0446d05
+8167805a14ac50e36d00ae9335981a158e09fda16d2ac66969e02269c428aab24ba9a7df8176ffe857a19765b62684e5f0886cb1e55d6c67fb8d27f0ff020607f2c8f64d12c5f0861da372a0a58e36831e9856338c9b5150af16ffa247199d93d9b36477f066b1eb1e7fb9fc6279c7840585faebf9e3eb4e998a52352ad94a
+4a45d002aa19fc2ba8266ca466682915632bc3cc85acc844d4497cd9ab2472498fb1f2a36b79ac2a6e1818087842648d1797a952c5da3cd33e18fc11f87599983bfbb8f32fe3d4d94460715e1b27f0ad7260b49acb60768a868fb80c437624271683a1b34151b439e5a843f1f3d8dddd02d3ce58d8d97232714428ae036df4
+f6e5a7e3ddcbfca8540341171a0c0a07269f7090477d9c6a67a2ee5ffb3a7028fbc0e95b3e1ea725e1595eb4fddfe71b34743e7f4ce5fcb5947ebb249beefa621b9a9992f46edf5956b8169181ec67391c190efd17e30e6f3ceb3a8c9f40f0672865137265bec25b2394b4d8b5962b91d47b5b99f383745fdc2202b81999ae
+b07d34aef93e722caa9f1d8a6d360f41a59bd4ca0695c98e227496c01a39508cb86d3596ae706738fc44f0fa2bd53e5ed35f5a21928d91468b1d1d3799d1d7d2ce47db2997078b34bd8566578fc6097df820385c7333af6499c5c32e37488e4a4bfa48031c5e7a5773cd783e31cb5a47aff0633d40cc82fecc80b4107fb35d
+12fab16b86856bf8b484fda78e1aa962b06d046659a4a52f3c3e473f2739a3b2191d38b0bbb47cbef3eb7872cf7a3ece0517db01d9f8c226767a3cad9251649234ab3c653f00a03323c668a1c4d3bb5e22a4ce389414b62375f25902c00d69d34036315b5d581f509b8ae92f8bd67bc5a84e6f0ea6d1631794d60dd1fb58ba
+569a4df3141ef04f642d63a4e89d96c01ce9b0c5586f41a5dfaf2d269edaf135bf06ba8649e14e93f9acdfcc5492c335357cfcf305e5107a965830cd18cfd8ac6a0b5c6011152843e3b4bcb8f71470aa5d99e7ccdbb507c80d2ed8f70a5f6328080515fa6eab20fb154499ab9bb39318b8dccfb2bbf9be94e32dabbe3a2d28
+e6436f72e59cce23dfab1eba104222c6a0784d51fb0afa5cd0e6894d75144fe1b59a3013a5d803d54ce702b0fec134fa764776e72367af0c5eb20e6d0affb7171dac5ee7a73d56b1625584dc79228d40a28bbd05c494b4bfe672eda6faa95c9dc1f35f0e16bec2f87a2ffe558bfa047964cc58c1d7a4e16d4c6ed27948593f
+c4f608370a8d01c89c0de9b300469c2dd99acd189e0a8cb56ed5dabdc6feb9b61b594458100f93f9243b90761a37b04a12312ebf7e91f68882e38c1cac8172c57d72e9c4dc50154227254e424831dd418ff4e28b1f3fcaac56c5d8ac68fb5407a94018a97dece53afe9095178a9f8802c6706aefe9ab5309d5f13142ef2c04
+4df751d282135e65cb0f0e1f1872220526e247e00bfbc79f27e5db089db13bfbd73acaff9e8b19f1722d5487779f2eeffa470a0f2386e03160737675ab5ef85b15818f8681a32939b4f87eeee7912d829619050404ec25e1f21bfabaae220cf98a98fff0dbfe554ca6eb01836e79764ee984ba03621b439e7fbba1ccb1616b
+28e7f9871380fb554f076e677a049d59952b134c7a7cd1c9c637e5337cb5f356d9861c7c7ab7f4efd96c8fdedfaa7144c48e22be3a2cd989ffff2cb6b4ddaa6c6ebad073dc111e3794ec58c30d9a3a7028778b3b04b4e8af09243d0788389819ef286cb9eb496923a9dba38861d332db79fa25c06e69cd34786ae0b92c22cf
+8ad20cf9277d53fbc4a6b8c77e9033ff33db0b781a633833f6767a4aec343694c8bda1e70caf773217ee5bb1ba945ad687d9ed151b5e61369ac7f13b9630b85aecfa68d8dad1027c0d25219c6b068077fdf1b62681f3d624702793b1471193843e5604e3e0dc657bd8e850a33b1746c0c6d831a80155f978f10517ef843c12
+54054a4804d221dcd3a3b78052733e0ddfbdb3041ed9a07318c7e74ce851e9b4abdcfbeede6eb780051407b9e5db01e3fca882f0bc4f560dc041b97ff12bb2cfcbe8c0d779dc839f8ca0ceb68e27f37583232d2563f054b8dcdd737a48f709c930de8ae87837eb3c2cd55b2bcdd143df870334b3290e275a268dffbafdacd0
+8bb5d8ea5c2e35fecb63c4d0d5924a413baad8a6d9099089c6f8330d9a9c39888cbc2a147daac2e81e07059c3659718516e1d71eeb0d29204256078b6a3eb0772c6e3135617a2a9c4cfe2170c4e66a56ad8721c08140805dca7494cce6b530644beb677cba28fb62de4c5a784ca5fd40246321c4148844219926b246bbe86f
+fb642d251912e64ae152bcbb834df0d6745138ca65bbe7cbbb3017323450dbc0b47f4388299799c252933fdec374fe93457e94224db816a7c458bd99b27a32c7054f302518fbd6050df1ddd7b6a05565395458968a436f66fb42776ab4cbf93f6271a0d6a1976e01332ae00d13e3bb6b789b1e152b934979ca6ffc0e2638b7
+6b265a118d64236e2fb8caee7c5c870e73aadce6896ddd9b9908c1dba575cdb5dedf66eb8cd563ace22069b88c277774032f78e206598042207b1a249393294f792566bd6e7aa539588e2a9c34b9e00e8854a9a091f13bb7948a8185595228250eb4f02ee93ffc0c25b590ceb82946ffd98d52f92b90ef81f62b64b16dfb6e
+8efaeea6fbf813ae76176f3b67f457cc4fed4b492b94b786b294bab88a3c961d191b4d8175827e788f5bdfa0f5974858020010dabc8c504204c43d1a9bbf7079eaa2b80f544cc746322831442282d81875587eac06135308d67adcb2da1500f77938b6c9db8fdbc7f197162fc167422ac4eee1780af60ef4b4a6cfae913933
+d3f5b5a1d8d528678627339bef3c00d89ffd0b0330852e73674cd267bc1ac47827b04e3634794829a485140ed03c6b819895c14138fbf11a0cd1d13afb99fdfdb737f674a9074a17e0d2059fa05fff30b00fd1d2690c93a302a56bfa4bffe9cce42534429ad260fd9c8b0e2256dc44ca584a657f0de052c9de62a821c885e0
+ce9c591a34c263e8da2cded07ec24f8d5d329b9737b1fe831c7c3b7e3d6ea7d0be02bca48450dfb6dd69a43492f84bdf7ec0ae34d39041757d87c1cba9bfa5951930227a67089629a6603ab6431b3887b581bce57d4209252fee3e51726e22799b0132fbd263855e69e25aa4ea992e9b547d4704163e01598d24d43b43ecc5
+4605b817844f37454eef1d6d5c6f4b602a35417c234ec9b9ab9f26339d0cbd39aaf696c44774f65dbc64d70cadbfe02c20f965da9f57eb02c8ed6d9cb883d2defc824e8e7999ea2e928c523052af0c64a997664c2acc9934aa5c954f00ba1d86286301e13e2e682dae8e006c52665bc637083795b91876090b3b23199364fc
+6062a9d919f462b2e5daff3a1aa368397bc496e3fa6b42bbc17fc37665dbed43ee6b1fff57425b87fbecb0ba02dcd2109c7f0bf7b3e19594f3b2d1d91614fd8aad2a833e538a90263b6b7e87f534e4dc907ad019d92ca41f056c99bc1e106cc3466c0ba6b04f2c82609e88f236d1109d1c18d033253126c843f5137e2d5090
+cf568d78e31ac03bfbd4c472dcd6dfdc24d97811c168a983af25f6b4a1add72fbde130c5400e517a2df5ce122eb79a225c4b6833842cb9467c8f9ed591cfafcdfdae91b8390dec86408afad08352e259cbe898f62ee66640647d017e16f2b15f898f51d488d91057080f660af85d313e7a089c497000bfbbc4d52fccbfa314
+9b22c7c520d15dfb8743c3ddbdfee9379ce5f3fac1af3dc1bad4c17f24bb87ad43c92e339128b95c42ba692a8a65858161562e4dcfc5e0ab661ba96341d000d71a0453d9e32fed21dbf05290fd7a6772730f5bbbcb680f31b566a0906f0a1f91d463a1f20103a6e1a422d49b578ad89a1b06648113a1c4470ff421475bc427
+7cd96cb5e75a33702dda7ce2d99511adcb4b08f8c5a99f775408d61226455234ea792ec345a34404c7e8b7db8524306bd6ba2000f85d5665c5414c734feb27e41e898b2b226ceb7c09c45fb97be9c8da15aa56009380589c42509a7e8f6574e930b20b69f5cfec97dc753a03e93c5ef69811a32f4b1d23a9fa09d615760e85
+bd9a553e07b04630a99b41a3c4080b90f176b7ef933d8e4113c8095b7672c0a2bfceef163775b2fc753f4293c39874d3b58ad3df54fcf04c073063306a313c63983b836c5454875166566d9d8679ff1f7316f21bf55e845330bb25d2a166f4527203e1c3d0d7925f08341ba23a49c01201d4a6e62efdc12a02b7d55d1ec231
+eec6b63e30405f3ce78aaeb2102c2527121906368ece6b0a912ebee20086e095b7f1e9deffaf29f7a94bc87702e2dfa7356b154a562598cdeaeb53783ced9f15e01924ffa370cf055a45a23deda4a4a561d66d46bc4d0c1d258f65a342cddf3b981768677c78f0b7f0f9937eb88e925ddd347e36fef8cb0f75316c64409212
+537af7c22d72c558cd94c52b5a8f8636e8f4097de899193556034a3aaa2ae72549b5a7622e7af2a72516282e7b0411f411da79ca95393d5ff9488a41dca4081f2a742f3d6678662cf590fff1a4241bc6cad596fb5a162dce70ba3501f24be6cf3c022e4b23f175664bc2d422019e5af0c1ecd823141a9046ca0b095e81e88f
+1ff817eb6a7cf04ef5f053361d954da1072336c22c6f8bc733cb54801c0bcb121511baaae113ce384b3245f141f4389c3df3a58922ee64574c5f75d74f76b11d21747c3c6578754dcb2b4451938c78f44957029f9f84e4204d0d5835ff585327e25061bfb78288fe6ece19ed731afcc42521d1050c0ae5ab768b6d3f73a5c8
+465c03ce4698e0ebb3d7ae9e4a21120f83c71f3fa6d080626ec03b93d39ff727fa467d95892e684c36725fa237b3fd09b282014a55c90bcace8f71af2296b9701c778a65b94252bf7c878d568732a261a57716fc7a15e11678dfdd83875cdf9ff7269e4982313a7dbccd9df2182e274b7f6bcd59d6502f3c1d6388aa70a19e
+dbd780f5bedf5e8a37a60987e0937ccdc4818ddd153eb7e4c0aef785d28234a58bc1bd6919391f396af1f64b08fe1c55992857c5dfab5fe40e96d51ffd64637f234248dea2df8991a54091ce147b8c5f595bb2cc52ae168311bb94d8621d01fad463bb04971f56c03e0ea5b7d2f5313cae80690f373bef77a24e9f95c487fd
+197e167061b2847394d1ef5afe8295efec99cf30ff9af53dbb8840cac09601aa48ba690bb33da784ccec09ea4aa5a8cc76e58281b484c4eba15ab80e640f49d1c6330a7c44ebad76a62e70a2a4b123d2f30ddc392327e642d2bc4372ee905259fe6e94b14667220a615d55bb054cafbcf58681e70226348dc17c8783322478
+81585d36e9f25b27d16d490062a6f4fa514d129002d1f74f6fbcd67b010d1529e8a389e61c16d4ee65aabc838588df52c6c019e5aa64021aeff593b8c12845c0c99b27f0b489453e9f41d4031e583aa9ae9321c46628e18e45a39f52f2e4be9053f498735e1dd686d2de1cb19bb2c00858a4bb2fb38079cfef3990f5c220cc
+8948ad96c91edc85443c6ed5e0677721f0826b078f322bb6a712a9ff06c9325384bb029ad30dd93af96a22dceb410be33ab0d9189a60eb5c762a0e93284fbaf6b70016217051b11cddf61bc5582b1f6d06c187fcf6f02010378cd10469d264fa7867e1443cbef0349c2b5959e4ceafc24fd83fa6243ac6df53c0186f4637fa
+56399bcf8fcabf87efcf951f39284074ff308a0bd43bdf4b7e7b3d846f90e21a4021aa513db14d818e2974d4d5d74380b89eee28ae0207aeda518eece871e37541a21164db6db0c7fea838345b3570bf7194963946aa9b8a8675d903c2d9feb22918e52647374018e19b6c58be78403cefc9be9501136a7a760a3dd6c58da6
+04ccde96d2e4807dd056ec112af1642830c2536b4c38d934c063757867a11bc8524bf33480be5e91b72ee66e3f4cff1bab803c30b265f771202ca0d25e499e93e1e36b3ede2d1712841faae096fcc635d2961e2ab193e61fa920ba9907f3c2968b103f925d8d0bec39492e3015d60d4c773a42d9cd038fe3b305bcc663e191
+38e0870180945598200497bd709e8707aa26cdf1a0c9812d60cf322c62d3c43afe8b3745273d6f01ad9871242d27fc1749b8705ecc94707149c51adab96d45f52b675a898bd629a2af3d960a9d003b8ffec63f52a51863c007f49fc666275bd0098ca5f12d6a961b2134d0d9e5c8982d9bf78b02e04c86700f232d4aeb7b8c
+d53690d9e2ee2397b725e7e436eb8913d4153d4d414695cae9e26e822f36874716a948da62ffab00827eb5e9aa60f6b34dd16e4e7dd42a0d9dc92bbeffdd921f4867f86566923dc1472c200e8b253e619072c613c6f3557cf49617001135de0b417342a389fb70f556dce6a3bdcccc641072fee406d83e3a85c1271d99c4a7
+23a3936d954e2a9567746695328ec626544aabfdcbca1268dd48b6e0e842ec4e196aac5e229f4b95dc12a82188bd53e443dc0d4a23b40cb13e883b67ea19411986f5bcb88cf29ffbba591046dbec9f47a6698fc04ef697f377523e99ae95ab7e64f9079333eb7e002782db3040e12606fe5e1698af41b829684e2f3bcc5ccb
+39a5b77f834496bafdfea0e8f8baba1090c5b115b97c3341bcb158199386a171598b34e137b1574f51f09c5bf785db93104d465c4d945c4652cdc36d59567b18d0907e89b98b3a67eecb7a1cb69558d9a2f286bb7ab1bdde51bfbd7efcd67ece3821d0bb5419ba7177739eee8d12680cb18ca1757fb438e5820c4bffa6f419
+162b0a0b7a843ca00e37ec3a4a4b04f4ed8e7f424b4a9d1456c6fe6287860ba088a47635ea731abb80cc67c3322cc67c551171219db9fe95e002ef4f54b3328ef32239e09b3ba1c972941231dc51cb0d5d8dd4b833d898a40048fa9cf12c2f73e7fd8871779431f0ffb6024c357a1cfafb5ae2a352f7cc78263846d13837f1
+58f38ad0cbabed46fd47c5719fff252d4ddc1b50fea6a5d8aa61a1a1c2da888e6bd22fbec6e3543de95a9dd209a2706c5430c5a7331577025079cd8e08b550712c7286a07189284e22ca946fbea2524a17e26b38148d2f77aa2e7f61434abaa9dd7ed442b430e636ae49ba382eaa6a4bcc70033f6b96e29339fcc95afe2f48
+0cd004f967c37174b3fe213af666aa615bda747723ccc90b1366750ff3f1b09d3d5e0b2e111ce46ae9cb279ca786663e2c20db407508f5a9053112f1cbe4f6c9aaf0f3dc6de9f4d3b535a64525b168854f37f7edc9174fc782bc933bf5d83e988ded92de45f3299d83088aec2ffa01ade2030177661d276715ce7ab7818c32
+a48c4ef1c6bfbedd338834293893c1717f1ef6466a6b16c5c0260f4a42a9785868999167774a4df80df627564bc3e33a7495ab3b8b2a11c929420bea1830002de2f6db17a1130b75eec1ed2a74191676dab58c68bf16a8fc0457621a2669ea1e7acb4bf8adbc2289c086f47f1e01351653fc5629f146ea101fa72015552958
+7fa014fbf31f02e5844242e406d71ab3b06c71ce3c1207bd2081afcf58c3dab9e39ebd87ebb6e0db0ab6f81da96a20110af0e56b45f1463ac3120db679ea2eda282c339220031c93fb244eb1d73a405b8de455700071a1a25400d42785dc6b8bff374163356ede39c4efa063298ced265eb8372569da1e2e325e5447d10b94
+acc11caf5089cfc95ffac6cf7aab564ed58d35f1a6b2e4046a186cd831a1827a8913b6b6369ba327683b080f4884456cad8fae0773c3e2718099436c684188683338e7b001ecf5ca61e0edda0e2e95550f5f8902092a651dd429312a1bf4ee918e2fa21454dd7329dc99e039b33e04759352db0380cbdc986906aa16ab9fe7
+7d74103970722a22e130c1f4585ba9ad6b619c60612aff65915e5fb8831fba02032d33addabde16415933ba05b1daeb3aa34fa2b03f1055e3a378eafee5d8614a778b4e6c6e8d25d900b1e2552c6513d074b398abc6ec23dd9c302912452332bbe524688d7a2881196a499726792c493c5e3f5f52de45e338a5dd5a5f85463
+630434e841b81634460a830d5e7f00ecd2df1fd289e8e15bd1b2222670be241199a8e62127631639e76855b90b438d5253884f4cc6cf425ecb8f6e41c39e2918975d603d7e5922ef8bb3bbec384cdd1a1a937d247cd9a6f64c6ab9a408035a16d38dd93f2bf7ec9ca002687e302d0bc5576603e21c214b787e16f94dd95b45
+cf1ac5bfa8043280edcf2612f27fc933ea521edff0a2cb7c7ba103ea444e0bc28909eb0f258f084d4dfe1149da6523a83616cbe90cff7af60603cb8a1c4ed5eddd796e2a2e10f9462b48f90fe7e493330cd308e3815e7b140ad562d82c8dd1e72ec7e782691a2816197fd605098edab5dcebb16f1649c27cb0addd69862efb
+52e3dcd0a497fbd2873f204c48236b96175c760c432d5e275c8c634612d2e07cbceea765bfe0c54dbde6d31343bcfbb7adb32163228cf43d9ca6ee5cbb81edfa30c1da85febbf19672043daf93e6923f0ae7dc0286819445c7f327a20388290488eb04f47762919675592510fe299f813804e2b68a22b62776a2424c04abde
+79876d5b041f903bbe92c88902563ad910ea7f3df74a17174b186b4bc5b12b7880853478a5b6540281b971ffc8b0ba2f6869ee528cffb1b984b036a6a3793e42973445428f25253dd251bb71a5be536220cf3ff8677b6198fc5643d623820df45f31448f1c959bdbeb7081bf5ac582b08dd28909aa1def6360608f2b4aadf7
+7b9a92c20a86ccd50579c3162616231da3b27336a0d3e8d94907c09b1f73c46cf2145ad44606248988c17727a1067833f3eac3dfaafc1ea7c64b5cd4762a87cdecac4d2787debd03897ccb467eac59708339e11e9cb1961d3d254e6a6ab7722822b59d342a2e79e030f45ac2a3890cc7e2a95abcd3e7daa2f4cdc5c3246148
+1e5acb93655df9e8e538c14feab325016bd5d54fb767331cbbec874268bfd8faac9eb0a46c1501c81a4039181337df1f5d11294226bba2976796262a82f335440dd28687c166b78398305e1c73d0513c4aa0387d20461bb69bccb1a4ac804cdeabe6ac2787f6d7252b1b69e2bcc8a4adfdbaddbdc454e896c489989d47095f
+cced9823c951938a9d962debe96473d9e4447b761e69e486be14a447e5e899061b6463a9733fd5d483016456954bcff2f7eebc48f934d7ec4ccb133e19b7528c371f85bc0aab2c33464843cc7bcfd34eadefa744bffadc9d7eaa246bad45616d9340a8bc72a2a75911c866974e1306e13cd618f770092d81e8c590944ddd0f
+f482d24fd677dc8b22ca4c08b0fe423d0931382938a40b79c13fceb09e6389669ea69d6268a2d40ec37b5fad440c49904d9f09df089e5c173ea5943e676274e69eb0da19a46de72249bb6b9af96ef17b509e4a71b531ae45d89608d14937d68f8f9d0320919bf78c58f8e65fa4c5c21dba0546c6836c117d58dccceb7e9b40
+e363866482ba02eb7ab974656af5d6cc97ce1b6d08c20596434f49183a6a232c339b477e5dbf2bf03be77a43646ee958c40d4b7ed6f7aaf6258b3d046dcc1379b1a52adc89bb768939f9ea57cde21dcba5e859f960cf8ce7da2b30f671d8bd623588e5cd3b99220ec66f881f99e9d71db48ac4eaab96bd93d1176399dd1ac8
+dfcc5ba4f0010fd576e236a4306a4fd694aab6c881b7ddd00e6f0c83fd02f43d011f48d443572c0abdf7f5c90700998899103f64f84a096be5a12e1d44734fdf15de9e59bfefec1c4116cbb97711f518d39e35f067809d88f563952d5558757b2bd5fe145b8fd6fcb095dcdf7c4bc3f5b98b2d0e79f5f1d967c36a9b865be1
+356e91e3afa02cad97bbc52ff6e1dce666469e72864105ff51c62c9be04ff17330f4c09572376ce69601f488a50775dbdde2a9a5eee389b654ef1aa48bfd5b5b26127ca482d88247b0eb260a802c87a9cef4347fb2d041f8404997de3145dbe722264da369f5b3eb837df9f8bf0b283a05590aa4eea782c4ee5097f415431b
+69c3eeee0e41b579df3eae3c557c19b10e952d5ed87acf5b804aa11030159fbdfa01dbd7ba84eca8100250e4c55b191e3b529e6dce055d49e6bf1ca48fff4e28c5255b4323518e8775df0efb5370b6d0c5980e3963d511b2f08aa1ad9e0f2727fb7f43cf8806f33f6af01a4f13063281323e008497cf1da4b7eb772f7eda1e
+a059cd3ecd558c03f8a808d7be311f8088aeb5605510671a8d03157e1137858a0faeed64b251a7c96549d830fb59c8c1268c0c48b1ea8ad0f5295c285bf8420167cc5da484b8e200af03d615764aee51f8768a0cd123928f1b3f3e91a46f5130b000176f520cd3f7d48378882578810a7c494d840272b2243e2ca830fa9195
+7bf05deb8963a12991ad48db5f07f5caa61d6aa8e9f9ed895f9734cf9cfc01882d03c85a9ff3963f67d489640a2b989133c7cb307d5cfec8f31f6e35c87292410b3d1f301fd5adb11e33e2f2029c5e3dc0484b1d88ea400d7fa461146135ffa5f1824e8a57a986b53ea059b3c8998373e2673968ca99f89d46eff589806c12
+b706be71c1db78f29444608a0b886b8a59df8e2271205f0e008b96ef616a239492e0108687ad56b4314b888d4dfab64ccebe5351ec3556b8e3a2ccef716d809d7e23bd74d75ad6abde177933553322be0c1275e91982d19e15169ef293cfc447421b5641b00dfff942d73ee56f4e79a114138238d498c117ed72326bb96052
+8fb884d59c8d2e2e83296523f6061fa5be37a84d4f1bd4d88d2f27dd7d3fc04b1bac8f74dfcfd58eeff5dc8749a0f5981f854f7680a7c847c7742530dbd627829d96d0a6d3e4f7ba14dca3601ce354ed7c9d3f49ce07cee46c82da679153945115ab50a33d49da938395f29387b4d908f040739038e75b44f9f560d780a8c4
+8ceaf9d47cf592c447a567fd6634c7392ecf31091c34af2d7b31dd14070539989f11fd916e5dd02ddfa41f76e0ced99c785f0c8a1aa6e43cd26db4ed7a36ebe9ee2f958fe94f42b675e199c3b2e6e5f959f6acd00948de268e326535ce3b356b28d818e1c1644a7b649f13a81f3186a9dd95a30ec99d429ebe0e13119c1369
+42c023108721edcc376a6e1ba8380cb0ef9ffa8a00b13a0e74704e29a71902d9f33cbc56cc47b4d9fb96aba13009f0059b3c53f26aedea73f3346f0e809bbe904cccdc75c4228a6a9d3f56477903dc1dfc2fbb3426945620f94fae7e6af622c8444b8941a549acda534f9e0c125967aed7bd7c832cad33a6c57a0d8f539ca8
+00f84fd2c87618a003e94c88ed328b711206de3bee0124402f5574035fc7d3ddcb519ea0670392c12e476aff9f59e9b8569078e236c49afa100d58b8de81f2e4ed1bab63dcb0f2c180f6c60ea76782579c83f331eacb9cd75f912ea12ca6d49e4deb77ea81257dde8c5bcfc67d3bc115c55baece396a42eda8b8752f79f8a2
+9058a4dcd2f9e1188b4a36c00ba3a5a6e851424b86f95ae3f2d8765340143dc6663cb0bada459e0760a7a49ac621eb1799c51a8cd7d76bb9cd2f679de03b06022563edf64abed6eeff3780c20e965ea2111e7e7fe11f75864a3fc54233ecfc518c8cb17f0183873e66625be2feb0ecb79cb834a6ac7945c9068712bd9a335a
+6f195ec6e712764bee0edbf50bca12c98e87539c8b17800f29b115fb8d58fc4b11b0837dfa9f62b73e9ddf08033d0a15dca7d3eb21a0851179755bdba76ae61e6bdc17882213915fc865bc8c44c5c9ff3ef1ee7611dfc261f582c6f1092bcdb4d22c3c8a7a41e48100b1b76a5657b013a9e4691108bd08997d3a808af31445
+5d78fec3ad7b712b5f8e780ba22de1eaad1520ec63d092d44cd822760cff8ffde07c4a74013eec441d4309f5d3d1f8f6921735a1a3f2f491eda6c72b78ff3ad2ca83bf992a9fb90527eb3e5346a41e8560b9c285bd32bbd2bb0b2434bd4f7c1327db96f9687c8c7ea6888bcb5737ce1e4d20660337f0731869f34e101404d5
+214d56075a7ebea66dd483314691c64bd5143b2499f78983bf152ed573f5747c1ec8fdcd5c4b38cb20eca2985076d9920dae4bb9a806115106108b329bc3f524c22d89608080677593d2073ee5e2786c7bf858fe688cd272d42b0be8b8eba87ff96725f0c1725bdee0ef988abb27c200c9dbd33d471f4717744ecb928b9279
+eb98bd03d1a569435aeeb2996916f116c031b0bd5457c30d3da7ca79e85071a4d91c885a4092c1622e631fe30a2a06de75f02f185ad726fb1612a3bede5e46e01268aadf558dd34f3bda7efb6d9e499d7e113efd536d0482eb6b8c5594396a75af2c2f9e0387661ac30dbb10d88d76c092e68bb80688c975fa1a9a9a12f225
+5711514cbd91aeca9cc10166894cfceb7339fcd34f7e2521485b96d7c29c0f42321d09b24f6f1e462ac7e49a98e3a66e63e8a71f37c4ba4786ee6f9eaf559655fa419bc584883ba9ff033bd2861e028d81664b89df81019faf15a555e37e551b45da582c99362bcc39f03709aa0fae6f5bd36c856e79d0fe920601c798314d
+2058884895e84a14a124daca885fbb0a79559d909dcec4696cecd393a4a3a6aab414af6f7b5eae63122c373065593b666290e5dd93836f7f9828ddbeb6479aea667d78bb4674af1296a55747f711cfe5b9b90e5191242153922b58da07f768cd9489cc60973882410d43d2c27d7b3b2b23a3e93039db6f4c55b057ffd10e7f
+3c02a9f005d1dd464d06c8bc8dffb311e67ad0103fd5356c7a962540a37ca57e52d3f2b279f4a53d28670c80696ed53bb9dd15d9798563ac88b47af1f6783589df59642e31b047413d5b45cccc5b4c384b05530880b94db8b26a5636938172a121d284a8edd61414a4a62f4a6c97d946306525393e25ef97a6cbab7e0379e7
+aa8b16f449445c3bdc76ff117bbf29420d5c8149d61559888336db54a0b0be97b0556844a762cf9f214edfa472db4633e7ff124fdddc9ed01d063cb0cc9a9a00f070077b6bd40c0aeb42eb7c76ed2e286618563d5a9985734264c875b4beff341766edb6d2c91e5872b3114f2266c64edcc03336c0c1870a25edba86f5b1e9
+4831baaefe75c6726bde39cf57551d4f71248d20ca5b78ecf22616a5f769302eb5e751a8e4a11c6640f28c8c78d57132e974a868028eb1508698fdb3690da78f4622074720f9b45cb61649b23dc976b63261bbcba2a679f8b46669fae207d39e131be1d8788261f693bca225b4e26cf9bad7746ee7d540e52a4ada888d58f1
+db373e7152b8a9ad861dc7efb71ce0eabbc7ce577e7e562531df032fa713bea60c1f57c1f9fc43f22a4528abd17144311e5df980591d082a488e75f1379314ba2fc6f21dba4a285354e54e1321aa21db86561eecf7fc5c53b3a157e9f069ac687f7c11ea9a35b108df5e1ed6472e8d7e4c0867ad8283052fe1ac4f0e5de2e9
+abc5d8d17040a98a2c9c535a654ffa3dbc5d94113894c3be63e6a0eaa78b944caf2670c53c820b1a687de8a54b998df371d11f8b46b1c4e348bead1a66ce23707e02f86a34c1258fdde754b564aae79cd4536cda7ac5b3ae17c82c1af518d2d406c38b1defe8404a40c762b7f38b25037dda6b0784131d4da2735c6118d1b4
+de068dcdcfe2243791dc30d657f3f9ae0859e458be107a96204096fa5427dc763542cf1e87f994d0c67cba07fa26b605fd1f27fafd1dd4ef1ec6f1d76930b121c4e2791a914650bedc4cbed048f8a877a048d20ede5adcc0b87d7f25ea5a94ec0f8dc8eca2307ab2a0d98a8947bf8b5be2d793b2b6183ec35db38c1d3e5f40
+78e4d5178ab8fa36cf239e561c81b95a46655f11a43ceebe3ac762344a551c4e6358b943cb667a4b2de4f9f7f12f8d7f1b655076cf77ec115796d0470ff54d26db7e155839232a54898766fa03888b378b2e600fbad5613f0b09a9d07c1965c13734f5c678b2c236b4ef6cacd4e2b4dbabd69d5df78450ae14e6311a37de72
+ad54be4ff1f0650690808d7f699e4ed39ee0d2752bbd07dffe96815754a0babbbc8ac0a4cf3f2452f92ce72a2570184f794a6c932fa3849b782c2a0bf9e6e4b0cd0e301a5306a191ac79c9d709f21541cbb35154d3ae8aa8ac721181bd5032c215bf834585d7df29811707c500fc8240cec005ded2190d4e497267bc1b57ad
+ce81880c49ce082d47d0d22a2bb7748653f2473e20790697880c4a3a34c3444ed12382d7f2da965d50e18145a9c4792a819fcd16ede8ffc9de2ce783e8d9600113dbfcc05210df22eaf4fbded7d3f6153d4a7b8a271520b8e4ee91457250bc82b3dba929f09a95bf93798a975ab5d11f4a24b77917dba13783b1456a84bb63
+6d86df0b0c631ce1c56bfd80c85a8f92f37b3f8aee7d4cb0ec3ac88b89a34bc2293800a7a56591e4f88949de7ca2d359a8b765b9c8f0292e5008362735b803d54738350ee653bd7b2fe2902c2a90f5daead13e95b4cb72511bebb45b240435458653930362510822e0744eba54ceaf9d2d7039fb01b56e6b8aa3da917d6e8a
+6773d86b61874e30ffbc61f28eb8434595618ea6d4fa941ff2ce7a80ff8edc1f5fba4554f942fbd2403b954a8cd71b6a65bd7d396e76d83ad2cfa48041a33841fd3bc29cfbe3c69c77b8ef2598a96934d3ec7453a2e728b04f6671db5494bdf4c364e7d8d356acad2d1ed7e2efa6a67a76542b614ac0f791b753a2b1a2c755
+e54b3333ba72b932b6bb843bcbd14fe4df9b19eb9eb33a5393fe5a0903b3dcc125784f09f2cbeea3f92577bbae102155e090fcf2be95a24a2b0b509581c891c20195b82af9d707f30e4850b4b270990980628b007af7cff19577cc7e5cad2c069d0fe2da4e0dc4088309890b215927353266d201b829c2be7ae637148ba502
+adf9d2d689a99a9d43d7aa6b82683c5b13cbb41229f74d4963b828c9bd861e65059803505c10cc52ee2e669975fd7c6e27bcaf98693d8790d1b659ea307c10ab46196e7868ae642880673699addbb1991ec395d00e86e48c0b88ffc715a7c59e4ea45f6898f075d8480b4baa4cc7d154e2d239b850783b9719d21674e563af
+40d77a3dd00798be4df1c00d6ee23c4f1c592af7e3611f6d650b438a96d583b68336ba6291fdf189f591b66d5805345238fd71d3b119abaf891cc9e999287e2f754b7f4e0cac0aab57c942e75b1ec9f49de5192403a5e770fb5b370c74f239dc546e56953d068ad94b51fef63bc6dd635a9d49b767fb9fa52d6eb64fda3362
+6f0e9e6c348c17167384430531af663b57b61b42aad800c28e1edfd5511dfc8275a0a6b50a9b2a9083d5e78fb70fa29708444365a0ce9d668616fd44a6c50f419c72123b92faf44b6426af0e4a167b901c79f11208eb03fbb0858fb807bd5d92dc2984f4085931dba69152641c8893918e71274fdb9888798887481a9c536c
+1270aec13cbd8c3c76345188cc81113ec8590a8cae306d799b02b20000d68b3313502bcc880a7d1704a286fd394f588f995f1aa461e88def58e23be9b129b83b2e8c6eb9e45618b274a4519cb48ed1bcf737d7fb55e203c2c60b1a073d31ccce703cf59716bc46a145125a92be1ea039b6b32440b7efe1f784f6bf6746ab20
+cf3e0af7267c4b5c5c6ad8ec418da49f71ef9c4c14156d216228d0805fd1965e5e1b100922fc025329f6f3f3dbec35b47c77b8e38769fd6b9597395a72bf613488776482b9dfc35777b9f6886aa9ac573b4de7be7ace63f58add64a0a82c179cbed927e8802c8a93f0d6dedf18d89be10b396961832c4978fa7b1c78344ab0
+32d3ff72e4840f502c26fd6e5912223184098fecc3f2efccd48b0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+%%BeginFont: Times-Italic
+%!PS-AdobeFont-1.0: Times-Italic 002.000
%%CreationDate: Thu May  1 14:20:19 1997
%%VMusage: 37530 44422
%% The digitally encoded machine readable software for producing the 
%% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 
%% 1997 Adobe Systems. All Rights Reserved. This software is the property of 
%% Adobe Systems Incorporated and its licensors, and may not be reproduced, 
%% used,  displayed, modified, disclosed or transferred without the express  
%% written approval of Adobe.  The digitally encoded machine readable 
%% outline data for producing the Typefaces licensed to you is copyrighted (c) 
%% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. 
%% This data is the property of Linotype-Hell AG and/or its subsidiaries and 
%% may not be reproduced, used, displayed, modified, disclosed or  transferred 
%% without the express written approval of Linotype-Hell AG  and/or its 
%% subsidiaries. 
%% Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
11 dict begin
/FontInfo 10 dict dup begin
/version (002.000) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def
/Copyright ( The digitally encoded machine readable software for producing the
 Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990,
 1993, 1997 Adobe Systems.
 All Rights Reserved. This software is the property of Adobe Systems
 Incorporated and its licensors, and may not be reproduced, used, 
 displayed, modified, disclosed or transferred without the express 
 written approval of Adobe.
 
 The digitally encoded machine readable outline data for producing
 the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell
 AG and/or its subsidiaries. All Rights Reserved.
 This data is the property of Linotype-Hell AG and/or its subsidiaries
 and may not be reproduced, used, displayed, modified, disclosed or 
 transferred without the express written approval of Linotype-Hell AG 
 and/or its subsidiaries. ) readonly def
/FullName (Times Italic) readonly def
/FamilyName (Times) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle -15.5 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Times-Italic def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 43148 def
/FontBBox{-169 -217 1010 883}readonly def
currentdict end
currentfile eexec
a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e
+7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7
+353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5
+cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1
+fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380
+1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7
+f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529
+e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7
+7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc
+30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79
+2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae
+a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa
+72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208
+cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e
+935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd
+8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2
+78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6
+667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa
+458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a
+64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697
+60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da
+b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60
+b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff
+2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2
+cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6
+5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c
+736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4
+92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d
+91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63
+e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0
+77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3
+447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e
+a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335
+ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832
+1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378
+501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e
+c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840
+0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20
+474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66
+4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8
+1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70
+2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922
+27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2
+78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47
+3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924
+0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4
+8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d
+12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c
+748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e
+b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7
+1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107
+28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0
+a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e
+12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c
+b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e
+8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738
+268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6
+8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31
+2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d
+c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f
+fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814
+17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a
+f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77
+da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0
+f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca
+d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0
+1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb
+380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7
+2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3
+db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21
+fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de
+5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8
+d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a
+697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23
+ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07
+a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb
+b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520
+61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee
+8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6
+6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c
+2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2
+7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c
+73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2
+773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4
+d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1
+c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219
+3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722
+c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7
+54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370
+58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165
+0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70
+e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a
+d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2
+e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0
+af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f
+c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640
+a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec
+47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d
+1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b
+882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855
+f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa
+64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911
+c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33
+f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3
+d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509
+9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb
+31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19
+42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45
+27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72
+c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34
+f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1
+481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86
+04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b
+837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae
+cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e
+cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e
+cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e
+ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5
+6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826
+a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753
+10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596
+0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8
+58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9
+e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6
+5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783
+8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb
+c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee
+b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6
+e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130
+a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e
+bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb
+fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f
+76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb
+8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99
+604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a
+9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93
+237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42
+cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d
+8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41
+a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290
+572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223
+b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26
+44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f
+7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1
+41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09
+730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f
+3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2
+cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823
+6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d
+cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400
+6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd
+5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3
+637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c
+a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419
+9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909
+e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42
+a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb
+428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a
+d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca
+638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e
+423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de
+10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4
+645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693
+5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa
+118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0
+9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19
+d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a
+3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b
+f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418
+1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec
+5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1
+5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13
+c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1
+19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62
+09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8
+0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc
+5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835
+b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f
+1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239
+bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65
+0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845
+ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5
+6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827
+e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c
+8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2
+079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976
+abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29
+de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3
+d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9
+a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6
+953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc
+1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8
+4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28
+f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6
+5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3
+d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be
+4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188
+0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3
+1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02
+b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79
+4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71
+50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411
+aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6
+1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1
+e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6
+f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795
+ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b
+d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e
+db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef
+b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669
+267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54
+73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967
+486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d
+7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058
+7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5
+b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7
+cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21
+9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895
+06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4
+f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3
+139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d
+3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869
+25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2
+27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5
+a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6
+ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46
+a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e
+e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019
+cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6
+29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca
+15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536
+c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1
+114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1
+1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702
+01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b
+7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9
+2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f
+45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083
+97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d
+69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057
+e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4
+9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592
+8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94
+222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445
+25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2
+bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0
+2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c
+bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a
+8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4
+9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6
+6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5
+d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642
+a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955
+eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308
+109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d
+3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd
+48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784
+5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad
+7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e
+5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1
+05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748
+0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858
+25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4
+2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c
+b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e
+744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96
+6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2
+799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee
+42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857
+2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9
+a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd
+7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c
+e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c
+e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a
+d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124
+085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f
+a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd
+d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457
+a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67
+419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a
+fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd
+0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043
+436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019
+9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02
+92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058
+588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c
+e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095
+12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3
+43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59
+8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd
+4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52
+b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2
+0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266
+52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83
+b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392
+949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09
+4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0
+afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134
+9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984
+7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138
+c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283
+2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0
+dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035
+610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae
+0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30
+17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82
+3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27
+1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705
+2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb
+5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+setpacking
+%AI3_EndRider
+[
+39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis
+/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft
+/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark
+/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar
+168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring
+/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla
+/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave
+/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute
+/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde
+/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
+/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute
+/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex
+/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute
+/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Myriad-Roman Myriad-Roman
+[/_Myriad-Roman/Myriad-Roman 0 0 1 TZ
%AI3_EndEncoding AdobeType
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Symbol Symbol
+[/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/exclam
+/universal
+/numbersign
+/existential
+/percent
+/ampersand
+/suchthat
+/parenleft
+/parenright
+/asteriskmath
+/plus
+/comma
+/minus
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+/congruent
+/Alpha
+/Beta
+/Chi
+/Delta
+/Epsilon
+/Phi
+/Gamma
+/Eta
+/Iota
+/theta1
+/Kappa
+/Lambda
+/Mu
+/Nu
+/Omicron
+/Pi
+/Theta
+/Rho
+/Sigma
+/Tau
+/Upsilon
+/sigma1
+/Omega
+/Xi
+/Psi
+/Zeta
+/bracketleft
+/therefore
+/bracketright
+/perpendicular
+/underscore
+/radicalex
+/alpha
+/beta
+/chi
+/delta
+/epsilon
+/phi
+/gamma
+/eta
+/iota
+/phi1
+/kappa
+/lambda
+/mu
+/nu
+/omicron
+/pi
+/theta
+/rho
+/sigma
+/tau
+/upsilon
+/omega1
+/omega
+/xi
+/psi
+/zeta
+/braceleft
+/bar
+/braceright
+/similar
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/Euro
+/Upsilon1
+/minute
+/lessequal
+/fraction
+/infinity
+/florin
+/club
+/diamond
+/heart
+/spade
+/arrowboth
+/arrowleft
+/arrowup
+/arrowright
+/arrowdown
+/degree
+/plusminus
+/second
+/greaterequal
+/multiply
+/proportional
+/partialdiff
+/bullet
+/divide
+/notequal
+/equivalence
+/approxequal
+/ellipsis
+/arrowvertex
+/arrowhorizex
+/carriagereturn
+/aleph
+/Ifraktur
+/Rfraktur
+/weierstrass
+/circlemultiply
+/circleplus
+/emptyset
+/intersection
+/union
+/propersuperset
+/reflexsuperset
+/notsubset
+/propersubset
+/reflexsubset
+/element
+/notelement
+/angle
+/gradient
+/registerserif
+/copyrightserif
+/trademarkserif
+/product
+/radical
+/dotmath
+/logicalnot
+/logicaland
+/logicalor
+/arrowdblboth
+/arrowdblleft
+/arrowdblup
+/arrowdblright
+/arrowdbldown
+/lozenge
+/angleleft
+/registersans
+/copyrightsans
+/trademarksans
+/summation
+/parenlefttp
+/parenleftex
+/parenleftbt
+/bracketlefttp
+/bracketleftex
+/bracketleftbt
+/bracelefttp
+/braceleftmid
+/braceleftbt
+/braceex
+/.notdef
+/angleright
+/integral
+/integraltp
+/integralex
+/integralbt
+/parenrighttp
+/parenrightex
+/parenrightbt
+/bracketrighttp
+/bracketrightex
+/bracketrightbt
+/bracerighttp
+/bracerightmid
+/bracerightbt
+/.notdef
+/_Symbol/Symbol 0 0 0 TZ
%AI3_EndEncoding AdobeType
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Times-Italic Times-Italic
+[/_Times-Italic/Times-Italic 0 0 1 TZ
%AI3_EndEncoding AdobeType
+%AI5_Begin_NonPrinting
+Np
+6 Bn
+%AI5_BeginGradient: (Black, White Radial)
+(Black, White Radial) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 1 0 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Nova)
+(Nova) 1 3 Bd
+[
+<
+08070707060606050504030303030303030404050506060606070707070707070707070707070706
+06060505040403030202020202020304040405050606060606070707070707070707070707060606
+06050504040404040404040404050505050606060607070707070707070707070707070606060606
+05050505050505050505050505050505060606060606070707070707070707070707070706060606
+06060505050505050505050505050505050505050505060606060606060707070707070707070707
+07070706060606060606060505050505050404040404040404040404040404040404040505050505
+05050506060606060606060606060606060606060606060606060606060606060606060606060606
+06060606060606060606060606050505050505050505050505050505050505050504040404040404
+04040404040404040404040404040404040404040404040404040404040303030303030303030303
+0303030303030303
+>
+<
+0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223
+24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849
+4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D
+6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D
+8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC
+ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8
+C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2
+E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0
+F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5
+F5F5F5F5F5F5F5F5
+>
+0.9137
+0
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9
+D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4
+B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291
+908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171
+706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353
+525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938
+373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121
+20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E
+0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101
+0101010000000000
+>
+0
+4 %_Br
+<
+030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20
+20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A
+3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163
+6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3
+A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF
+>
+<
+F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC
+ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7
+F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC
+ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7
+E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6
+>
+<
+E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8
+C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281
+7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241
+3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A
+1A18171515131210100F0D0C0B0A0807080707070707
+>
+<
+00000000010101010101010101020202020202020303030303030404040404040505050505050606
+060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718
+18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E
+1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606
+06060505050404030403030202010101010101010101
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A
+>
+<
+00000000000101010101010101010202020202020202020303030303030303030404040404040404
+04050505050505050505060606060606060606070707070707070707080808080808080808090909
+0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D
+0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112
+12121212121212121313131313131313131414141414
+>
+<
+000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D
+1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A
+3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758
+595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576
+76777879797A7B7C7C7D7E7F7F808182828384858586
+>
+4 %_Br
+[
+0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs
+0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (RGB Rainbow)
+(RGB Rainbow) 0 6 Bd
+[
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+[
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Steel Bar II)
+(Steel Bar II) 0 3 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+0
+0
+0
+<
+FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391
+8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250
+4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827
+272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F
+0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404
+04040403030303030302020202020202020202020101010101010101010101010100000000000000
+00000000000000000000000000000000
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 40.45 %_Bs
+0 0 0 1 0 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Sunrise)
+(Sunrise) 0 6 Bd
+[
+<
+EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7
+F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4
+E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC
+DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1
+>
+<
+35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303
+02010100000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+1
+<
+131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+<
+00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D
+0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A
+1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728
+28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333
+>
+<
+666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D
+8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5
+B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD
+DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F
+505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576
+7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E
+9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7
+C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8
+E9E9EAEAEAEBEBEBECECECECEDEDEDEE
+>
+<
+05050506060606060706070707070708080808080808080808080908090809090909090909090909
+090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B
+0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313
+13141314131414141414141514141414151414141515151515161616161617171717171818181918
+191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221
+2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A
+2B2D2C2E2D2F30303131323433353435
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7
+F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3
+F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB
+FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC
+FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000001010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010202020202020202020202020202
+02020202020203030303030303030303030303030303030303030303030304040404040404040404
+04040404040404040404040504050405050505050505050505050505050505060505050606060606
+06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C
+0D0D0D0E0E0E0F0F0F0F101111121213
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8
+E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0
+CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8
+B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0
+9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888
+878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070
+6F6E6E6D6D6C6B6B6A6A696868676766
+>
+0
+4 %_Br
+<
+07070707070707070606060605050504040404040404040405050606060607070707070707070707
+07060606060505040404030202020203030404050506060607070707070707070707070707060606
+06050504040303030303030304050506060607070708
+>
+<
+64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C
+3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413
+121211100F0F0E0D0C0C0B0A0A090808070706060505
+>
+<
+F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4
+F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA
+E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9
+>
+<
+01010101010101010100000000000000000000000000000000010101010101010101010101010101
+01010101010000000000000000000000000000000000010101010101010101010101010100000000
+00000000000000000000000000000000000000000000
+>
+1
+<
+999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0
+C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9
+EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB
+DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5
+B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887
+878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B
+5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736
+3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120
+1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B
+0B0B0A0A0A0A0909090808080808080700
+>
+<
+2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222
+22222323232424242525252525252626262626262626262627272727272728282828282829292929
+2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232
+32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C
+3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849
+494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859
+595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262
+6263636363636363636464646464646400
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101010202020202030303030303030404040404040505
+05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D
+0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414
+14141415151515151515161616161616161717171717171616161616161616161616161515151414
+131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707
+06060606050505050404040404030303030303020202020202020101010101010101010101010101
+01010101010101010101010101010101FF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D
+4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273
+737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697
+9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9
+BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9
+DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6
+F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF
+>
+0.6
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2
+B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C
+8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968
+686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746
+454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726
+25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09
+0908070706060504040303020201010000
+>
+4 %_Br
+<
+EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3
+F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA
+EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4
+>
+<
+B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F
+7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442
+403F3D3C3A3837363534333231302E2D2B2A28272523
+>
+0
+0
+0
+<
+333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A
+5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283
+8485868788898A8B8C8D8E8F90919293949596979899
+>
+1
+4 %_Br
+[
+0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs
+0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs
+0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs
+0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs
+0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (White, Black)
+(White, Black) 0 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Azure Rings)
+(Azure Rings) 22.5 22.5 58.5 58.5 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1.75 w 4 M []0 d
0 XR
+40.5 58.5 m
+40.5 48.5586 32.4409 40.5 22.5 40.5 c
+12.5591 40.5 4.5 48.5586 4.5 58.5 c
+4.5 68.4414 12.5591 76.5 22.5 76.5 c
+32.4409 76.5 40.5 68.4414 40.5 58.5 c
+s
40.5 22.5 m
+40.5 12.5586 32.4409 4.5 22.5 4.5 c
+12.5591 4.5 4.5 12.5586 4.5 22.5 c
+4.5 32.4414 12.5591 40.5 22.5 40.5 c
+32.4409 40.5 40.5 32.4414 40.5 22.5 c
+s
40.5 40.5 m
+40.5 30.5586 32.4409 22.5 22.5 22.5 c
+12.5591 22.5 4.5 30.5586 4.5 40.5 c
+4.5 50.4414 12.5591 58.5 22.5 58.5 c
+32.4409 58.5 40.5 50.4414 40.5 40.5 c
+s
58.5 58.5 m
+58.5 48.5586 50.4409 40.5 40.5 40.5 c
+30.5591 40.5 22.5 48.5586 22.5 58.5 c
+22.5 68.4414 30.5591 76.5 40.5 76.5 c
+50.4409 76.5 58.5 68.4414 58.5 58.5 c
+s
58.5 22.5 m
+58.5 12.5586 50.4409 4.5 40.5 4.5 c
+30.5591 4.5 22.5 12.5586 22.5 22.5 c
+22.5 32.4414 30.5591 40.5 40.5 40.5 c
+50.4409 40.5 58.5 32.4414 58.5 22.5 c
+s
58.5 40.5 m
+58.5 30.5586 50.4409 22.5 40.5 22.5 c
+30.5591 22.5 22.5 30.5586 22.5 40.5 c
+22.5 50.4414 30.5591 58.5 40.5 58.5 c
+50.4409 58.5 58.5 50.4414 58.5 40.5 c
+s
76.5 58.5 m
+76.5 48.5586 68.4409 40.5 58.5 40.5 c
+48.5591 40.5 40.5 48.5586 40.5 58.5 c
+40.5 68.4414 48.5591 76.5 58.5 76.5 c
+68.4409 76.5 76.5 68.4414 76.5 58.5 c
+s
76.5 22.5 m
+76.5 12.5586 68.4409 4.5 58.5 4.5 c
+48.5591 4.5 40.5 12.5586 40.5 22.5 c
+40.5 32.4414 48.5591 40.5 58.5 40.5 c
+68.4409 40.5 76.5 32.4414 76.5 22.5 c
+s
76.5 40.5 m
+76.5 30.5586 68.4409 22.5 58.5 22.5 c
+48.5591 22.5 40.5 30.5586 40.5 40.5 c
+40.5 50.4414 48.5591 58.5 58.5 58.5 c
+68.4409 58.5 76.5 50.4414 76.5 40.5 c
+s
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Blue Tablecloth)
+(Blue Tablecloth) 0 0 12 12 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 6 m
+0 6 L
+0 12 L
+6 12 L
+6 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 6 m
+6 6 L
+6 12 L
+12 12 L
+12 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 1 Xa
+ 1 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 0 m
+6 0 L
+6 6 L
+12 6 L
+12 0 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 0 m
+0 0 L
+0 6 L
+6 6 L
+6 0 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Camouflage)
+(Camouflage) 1 1 73 73 [
+%AI3_Tile
+(0 O 0 R 0.3922 0.6039 0.1451 Xa
+ 0.3922 0.6039 0.1451 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 73 m
+1 1 L
+73 1 L
+73 73 L
+1 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4039 0.4 0.0745 Xa
+ 0.4039 0.4 0.0745 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+18.5449 73 m
+18.5449 1 L
+46.7832 1 L
+46.7832 73 L
+18.5449 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.8 0.1059 Xa
+ 0.8 0.8 0.1059 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+11.9512 1 m
+11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c
+9.2314 10.2334 4.25 10.2334 4.25 13.8735 c
+4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c
+10.0313 24.832 10.208 24.832 10.208 28.5654 c
+10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c
+5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c
+11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c
+7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c
+5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c
+4.6631 69.1636 11.9512 69.3184 11.9512 73 C
+27.9268 73 L
+27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c
+22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c
+28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c
+25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c
+28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c
+22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c
+26.3945 24.832 24.4248 24.832 24.4248 21.0991 c
+24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c
+20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c
+24.6055 2.8813 27.9268 4.7129 27.9268 1 C
+11.9512 1 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.0784 0.4157 0.1647 Xa
+ 0.0784 0.4157 0.1647 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+41.875 1 m
+41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c
+42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c
+40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c
+41.5742 24.832 43.6484 24.832 43.6484 28.5659 c
+43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c
+39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c
+39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c
+45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c
+40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c
+40.6289 69.1636 41.875 69.3184 41.875 73 C
+59.0752 73 L
+59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c
+53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c
+55.8945 55.502 61.0059 55.502 61.0059 51.7886 c
+61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c
+60.5635 40.897 59.9277 40.897 59.9277 37.2842 c
+59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c
+56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c
+61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c
+52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c
+55.7461 3.978 59.0752 4.6484 59.0752 1 C
+41.875 1 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Clown Attack)
+(Clown Attack) 5.25 11 41.25 47 [
+%AI3_Tile
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+17.5 18.25 m
+17.5 15.2119 15.0376 12.75 12 12.75 c
+8.9624 12.75 6.5 15.2119 6.5 18.25 c
+6.5 21.2881 8.9624 23.75 12 23.75 c
+15.0376 23.75 17.5 21.2881 17.5 18.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 1 Xa
+ 1 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+22.25 34.125 m
+22.25 31.2939 19.9556 29 17.125 29 c
+14.2944 29 12 31.2939 12 34.125 c
+12 36.9561 14.2944 39.25 17.125 39.25 c
+19.9556 39.25 22.25 36.9561 22.25 34.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+30 31.625 m
+30 29.4854 28.2646 27.75 26.125 27.75 c
+23.9849 27.75 22.25 29.4854 22.25 31.625 c
+22.25 33.7646 23.9849 35.5 26.125 35.5 c
+28.2646 35.5 30 33.7646 30 31.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+23.25 24.5 m
+23.25 22.4287 21.5713 20.75 19.5 20.75 c
+17.4287 20.75 15.75 22.4287 15.75 24.5 c
+15.75 26.5713 17.4287 28.25 19.5 28.25 c
+21.5713 28.25 23.25 26.5713 23.25 24.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+36 22.25 m
+36 19.0742 33.4258 16.5 30.25 16.5 c
+27.0742 16.5 24.5 19.0742 24.5 22.25 c
+24.5 25.4258 27.0742 28 30.25 28 c
+33.4258 28 36 25.4258 36 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.7922 0.2078 Xa
+ 0.8 0.7922 0.2078 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+24.25 16.5 m
+24.25 14.8438 22.9067 13.5 21.25 13.5 c
+19.5933 13.5 18.25 14.8438 18.25 16.5 c
+18.25 18.1563 19.5933 19.5 21.25 19.5 c
+22.9067 19.5 24.25 18.1563 24.25 16.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 43.875 m
+37.25 39.5264 33.7236 36 29.375 36 c
+25.0264 36 21.5 39.5264 21.5 43.875 c
+21.5 48.2236 25.0264 51.75 29.375 51.75 c
+33.7236 51.75 37.25 48.2236 37.25 43.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.8 0 Xa
+ 1 0.8 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+38.75 26.625 m
+38.75 25.7275 38.0225 25 37.125 25 c
+36.2275 25 35.5 25.7275 35.5 26.625 c
+35.5 27.5225 36.2275 28.25 37.125 28.25 c
+38.0225 28.25 38.75 27.5225 38.75 26.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.4 0 Xa
+ 1 0.4 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.875 42 m
+19.875 41.1025 19.1475 40.375 18.25 40.375 c
+17.3525 40.375 16.625 41.1025 16.625 42 c
+16.625 42.8975 17.3525 43.625 18.25 43.625 c
+19.1475 43.625 19.875 42.8975 19.875 42 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12.75 28.125 m
+12.75 26.8135 11.6865 25.75 10.375 25.75 c
+9.0635 25.75 8 26.8135 8 28.125 c
+8 29.4365 9.0635 30.5 10.375 30.5 c
+11.6865 30.5 12.75 29.4365 12.75 28.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+43.25 33 m
+43.25 30.998 41.627 29.375 39.625 29.375 c
+37.623 29.375 36 30.998 36 33 c
+36 35.002 37.623 36.625 39.625 36.625 c
+41.627 36.625 43.25 35.002 43.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 43.75 m
+13.25 40.9883 11.0117 38.75 8.25 38.75 c
+5.4883 38.75 3.25 40.9883 3.25 43.75 c
+3.25 46.5117 5.4883 48.75 8.25 48.75 c
+11.0117 48.75 13.25 46.5117 13.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6.5 22.25 m
+6.5 20.7314 5.2686 19.5 3.75 19.5 c
+2.2314 19.5 1 20.7314 1 22.25 c
+1 23.7686 2.2314 25 3.75 25 c
+5.2686 25 6.5 23.7686 6.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0.4 Xa
+ 1 1 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+34.4883 32.75 m
+34.4883 31.9277 33.8223 31.2617 33 31.2617 c
+32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c
+31.5117 33.5723 32.1777 34.2383 33 34.2383 c
+33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 43.75 m
+49.25 40.9883 47.0117 38.75 44.25 38.75 c
+41.4883 38.75 39.25 40.9883 39.25 43.75 c
+39.25 46.5117 41.4883 48.75 44.25 48.75 c
+47.0117 48.75 49.25 46.5117 49.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+42.5 22.25 m
+42.5 20.7314 41.2686 19.5 39.75 19.5 c
+38.2314 19.5 37 20.7314 37 22.25 c
+37 23.7686 38.2314 25 39.75 25 c
+41.2686 25 42.5 23.7686 42.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 7.752 m
+49.25 4.9902 47.0117 2.752 44.25 2.752 c
+41.4883 2.752 39.25 4.9902 39.25 7.752 c
+39.25 10.5137 41.4883 12.752 44.25 12.752 c
+47.0117 12.752 49.25 10.5137 49.25 7.752 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 7.875 m
+37.25 3.5264 33.7236 0 29.375 0 c
+25.0264 0 21.5 3.5264 21.5 7.875 c
+21.5 12.2236 25.0264 15.75 29.375 15.75 c
+33.7236 15.75 37.25 12.2236 37.25 7.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 7.75 m
+13.25 4.9883 11.0117 2.75 8.25 2.75 c
+5.4883 2.75 3.25 4.9883 3.25 7.75 c
+3.25 10.5117 5.4883 12.75 8.25 12.75 c
+11.0117 12.75 13.25 10.5117 13.25 7.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+7.25 33 m
+7.25 30.998 5.627 29.375 3.625 29.375 c
+1.623 29.375 0 30.998 0 33 c
+0 35.002 1.623 36.625 3.625 36.625 c
+5.627 36.625 7.25 35.002 7.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.6 1 Xa
+ 1 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+39.6533 16.0381 m
+39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c
+37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c
+36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c
+38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Pyramids)
+(Pyramids) 1 1 19.5 19.5 [
+%AI3_Tile
+(0 O 0 R 0.8 0.8 0.8 Xa
+ 0.8 0.8 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 19.5 m
+10.25 10.25 l
+19.5 19.5 l
+1 19.5 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.2 0.2 0.2 Xa
+ 0.2 0.2 0.2 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 1 m
+10.25 10.25 l
+1 1 l
+19.5 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 0.6 Xa
+ 0.6 0.6 0.6 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 1 m
+10.25 10.25 l
+1 19.5 l
+1 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4 0.4 0.4 Xa
+ 0.4 0.4 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 19.5 m
+10.25 10.25 l
+19.5 1 l
+19.5 19.5 l
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Red Stripe)
+(Red Stripe) 37 19 73 55 [
+%AI3_Tile
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 18 w 4 M []0 d
0 XR
+37 37 m
+73 37 l
+S
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+0 0 0 Xa
+([Registration]) Pc
+0 0 0 Xa
+([Registration]) Pc
+1 1 1 Xa
+(White) Pc
+0 0 0 Xa
+(Black) Pc
+0.6 0.6 0.6 Xa
+(Gray) Pc
+0.8 0.8 0.8 Xa
+(Light Gray) Pc
+0 1 1 Xa
+(Bright Blue) Pc
+0.6 1 1 Xa
+(Light Blue) Pc
+0.8 1 1 Xa
+(Pale Blue) Pc
+1 0 1 Xa
+(Violet) Pc
+1 0.4 1 Xa
+(Light Violet) Pc
+1 0.8 1 Xa
+(Pale Violet) Pc
+1 1 0 Xa
+(Yellow) Pc
+1 1 0.4 Xa
+(Light Yellow) Pc
+1 1 0.6 Xa
+(Pale Yellow) Pc
+0.6 0.2 0 Xa
+(Brown) Pc
+0.8 0.4 0.2078 Xa
+(Light Brown) Pc
+1 0.6 0.4 Xa
+(Pale Brown) Pc
+0 0 1 Xa
+(Blue) Pc
+0.4 0.4 1 Xa
+(Faded Blue) Pc
+0.8 0.8 1 Xa
+(Faded Pale Blue) Pc
+1 0 0 Xa
+(Red) Pc
+1 0.4 0.4 Xa
+(Light Red) Pc
+1 0.6 0.6 Xa
+(Mauve) Pc
+0 0.6 0 Xa
+(Forest Green) Pc
+0.2 0.8 0.2 Xa
+(Green) Pc
+0.6 1 0.4 Xa
+(Pale Green) Pc
+0 1 0 Xa
+(Bright Green) Pc
+0.4 1 0.4 Xa
+(Light Bright Green) Pc
+0.5922 1 0.6 Xa
+(Pale Light Green) Pc
+0.6 0 0.8 Xa
+(Purple) Pc
+0.6 0.4 0.8 Xa
+(Periwinkle) Pc
+0.8 0.6 0.8 Xa
+(Lavender) Pc
+1 0.6 0 Xa
+(Orange) Pc
+1 0.8 0.2 Xa
+(Light Orange) Pc
+1 0.8 0.6 Xa
+(Light Pale Orange) Pc
+Bb
+2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(White, Black) Pc
+Bb
+0 0 0 0 Bh
+2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Black, White Radial) Pc
+Bb
+2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Steel Bar II) Pc
+Bb
+2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(RGB Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Nova) Pc
+Bb
+2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Sunrise) Pc
+(Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Blue Tablecloth) Pc
+(Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Pyramids) Pc
+(Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Azure Rings) Pc
+(Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Red Stripe) Pc
+(Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Clown Attack) Pc
+(Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Camouflage) Pc
+PB
+%AI5_EndPalette
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 0 79 128 255 Lb
+(Layer 1) Ln
+0 A
+1 Ap
+0 O
+1 1 1 Xa
+0 R
+0 0 0 XA
+0 J 0 j 1 w 4 M []0 d
0 XR
+472.584 48.3843 m
+B
u
u
493.2539 623.1951 m
+570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c
+610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c
+F
0 Ap
+610.7964 319.4712 m
+609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c
+611.2656 326.2822 l
+616.1279 327.6709 l
+614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c
+f
488.791 627.2578 m
+491.6006 626.1252 495.416 625.0828 498.312 625.0205 c
+493.8398 622.6619 l
+491.9102 617.9883 l
+491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c
+f
U
u
1 Ap
+0 R
+0 0 0 XA
+[12 ]0 d
493.2539 623.1951 m
+570.5947 552.7881 610.7168 456.6304 610.7168 343.8013 c
+610.7168 334.7676 611.8232 334.3691 611.2114 325.4922 c
+S
0 Ap
+0 O
+0 0 0 Xa
+[]0 d
610.7964 319.4712 m
+609.9404 322.377 608.3892 326.0156 606.6406 328.3247 c
+611.2656 326.2822 l
+616.1279 327.6709 l
+614.0786 325.6235 612.0425 322.2319 610.7964 319.4712 c
+f
488.791 627.2578 m
+491.6006 626.1252 495.416 625.0828 498.312 625.0205 c
+493.8398 622.6619 l
+491.9102 617.9883 l
+491.5771 620.8655 490.1821 624.5674 488.791 627.2578 c
+f
U
U
u
u
1 Ap
+1 1 1 Xa
+555.3281 468.4214 m
+555.3281 402.4556 528.4761 351.5308 477.3071 322.8345 c
+F
493.4214 603.6865 m
+F
0 Ap
+468.6987 318.0063 m
+471.959 321.8828 475.6377 327.437 477.3262 332.082 c
+478.4375 323.4658 l
+484.4551 317.6074 l
+479.9136 318.7563 473.5381 318.6738 468.6987 318.0063 c
+f
485.3345 609.4517 m
+490.085 608.2456 496.415 607.4502 501.0435 608.0864 c
+494.4834 602.9292 l
+492.5322 594.4902 l
+491.3086 599.2964 488.1978 605.2339 485.3345 609.4517 c
+f
U
u
1 Ap
+0 R
+0 0 0 XA
+[12 ]0 d
533.7319 323.271 m
+S
404.1377 592.7217 m
+S
U
U
u
0 O
+1 1 1 Xa
+[]0 d
328.2549 143.6665 m
+297.2422 128.3174 262.3071 119.6855 225.3574 119.6855 c
+97.0942 119.6855 -6.8828 223.6646 -6.8828 351.9287 c
+-6.8828 480.1919 97.0942 584.1694 225.3574 584.1694 c
+269.292 584.1694 310.377 571.9697 345.4097 550.7754 c
+F
0 R
+0 0 0 XA
+328.2549 143.6665 m
+297.2422 128.3174 262.3071 119.6855 225.3574 119.6855 c
+97.0942 119.6855 -6.8828 223.6646 -6.8828 351.9287 c
+-6.8828 480.1919 97.0942 584.1694 225.3574 584.1694 c
+269.292 584.1694 310.377 571.9697 345.4097 550.7754 c
+S
U
u
0 O
+1 1 1 Xa
+345.4097 550.7754 m
+412.6563 510.0894 457.6001 436.2573 457.6001 351.9287 c
+457.6001 260.6143 404.8999 181.6079 328.2549 143.6665 c
+F
0 R
+0 0 0 XA
+345.4097 550.7754 m
+412.6563 510.0894 457.6001 436.2573 457.6001 351.9287 c
+457.6001 260.6143 404.8999 181.6079 328.2549 143.6665 c
+S
U
0 Ap
+0 O
+1 1 1 Xa
+481.1245 626.0842 m
+-6.8823 356.9585 l
+B
1 Ap
+340.8975 349.9883 m
+340.8975 285.8589 288.9126 233.8701 224.7798 233.8701 c
+160.646 233.8701 108.6582 285.8589 108.6582 349.9883 c
+108.6582 414.1226 160.646 466.1108 224.7798 466.1108 c
+288.9126 466.1108 340.8975 414.1226 340.8975 349.9883 c
+b
0 Ap
+246.2617 395.6626 m
+B
0 0 0 Xa
+172.7188 362.2793 m
+F
u
1 Ap
+0.7843 0.7843 0.7843 Xa
+288.062 351.9248 m
+288.062 307.8833 259.9897 272.1899 225.3555 272.1899 c
+190.7285 272.1899 162.6533 307.8833 162.6533 351.9248 c
+162.6533 395.9639 190.7285 431.6606 225.3555 431.6606 c
+259.9897 431.6606 288.062 395.9639 288.062 351.9248 c
+f
0 R
+0 0 0 XA
+2 w
288.062 351.9248 m
+288.062 307.8833 259.9897 272.1899 225.3555 272.1899 c
+190.7285 272.1899 162.6533 307.8833 162.6533 351.9248 c
+162.6533 395.9639 190.7285 431.6606 225.3555 431.6606 c
+259.9897 431.6606 288.062 395.9639 288.062 351.9248 c
+s
U
u
0 O
+0.251 0.251 0.251 Xa
+1 w
253.2305 381.728 m
+253.2305 370.4004 249.5908 361.2153 245.1011 361.2153 c
+240.6094 361.2153 236.9736 370.4004 236.9736 381.728 c
+236.9736 393.0605 240.6094 402.2441 245.1011 402.2441 c
+249.5908 402.2441 253.2305 393.0605 253.2305 381.728 c
+f
0 R
+0 0 0 XA
+253.2305 381.728 m
+253.2305 370.4004 249.5908 361.2153 245.1011 361.2153 c
+240.6094 361.2153 236.9736 370.4004 236.9736 381.728 c
+236.9736 393.0605 240.6094 402.2441 245.1011 402.2441 c
+249.5908 402.2441 253.2305 393.0605 253.2305 381.728 c
+s
U
u
0 O
+0.251 0.251 0.251 Xa
+213.748 381.7271 m
+213.748 370.397 210.1108 361.2134 205.6211 361.2134 c
+201.1294 361.2134 197.4917 370.397 197.4917 381.7271 c
+197.4917 393.0571 201.1294 402.2422 205.6211 402.2422 c
+210.1108 402.2422 213.748 393.0571 213.748 381.7271 c
+f
0 R
+0 0 0 XA
+213.748 381.7271 m
+213.748 370.397 210.1108 361.2134 205.6211 361.2134 c
+201.1294 361.2134 197.4917 370.397 197.4917 381.7271 c
+197.4917 393.0571 201.1294 402.2422 205.6211 402.2422 c
+210.1108 402.2422 213.748 393.0571 213.748 381.7271 c
+s
U
u
0 O
+0.251 0.251 0.251 Xa
+200.5894 322.6997 m
+200.5894 320.2388 198.249 318.249 195.3643 318.249 c
+192.4756 318.249 190.1377 320.2388 190.1377 322.6997 c
+190.1377 325.1553 192.4756 327.1504 195.3643 327.1504 c
+198.249 327.1504 200.5894 325.1553 200.5894 322.6997 c
+f
0 R
+0 0 0 XA
+200.5894 322.6997 m
+200.5894 320.2388 198.249 318.249 195.3643 318.249 c
+192.4756 318.249 190.1377 320.2388 190.1377 322.6997 c
+190.1377 325.1553 192.4756 327.1504 195.3643 327.1504 c
+198.249 327.1504 200.5894 325.1553 200.5894 322.6997 c
+s
U
u
0 O
+0.251 0.251 0.251 Xa
+265.2295 323.0908 m
+265.2295 320.6299 262.8911 318.6377 260.0015 318.6377 c
+257.1172 318.6377 254.7769 320.6299 254.7769 323.0908 c
+254.7769 325.5474 257.1172 327.5415 260.0015 327.5415 c
+262.8911 327.5415 265.2295 325.5474 265.2295 323.0908 c
+f
0 R
+0 0 0 XA
+265.2295 323.0908 m
+265.2295 320.6299 262.8911 318.6377 260.0015 318.6377 c
+257.1172 318.6377 254.7769 320.6299 254.7769 323.0908 c
+254.7769 325.5474 257.1172 327.5415 260.0015 327.5415 c
+262.8911 327.5415 265.2295 325.5474 265.2295 323.0908 c
+s
U
0 To
+1 0 0 1 441.3438 268.3198 0 Tp
+0 Tv
+TP
+0 Tr
+0 O
+0 0 0 Xa
+%_ 0 50 XQ
+/_Myriad-Roman 12 9.9719 -3 Tf
+0 Ts
+100 100 Tz
+0 Tt
+%_0 0 100 100 Xu
+%AI55J_GlyphSubst: GlyphSubstNone 
+1 TA
+%_ 0 XL
+0 TY
+0 TV
+36 0 Xb
+XB
+0 0 5 TC
+100 100 200 TW
+25 TG
+0 0 0 Ti
+0 Ta
+0 1 2 2 3 Th
+0 Tq
+0 Tg
+0 0 Tl
+0 Tc
+0 Tw
+(\r) Tx 1 0 Tk
+TO
+0 Ap
+1 1 1 Xa
+0 R
+0 0 0 XA
+19.7302 371.8618 m
+43.5864 381.0112 52.9358 359.7275 37.1704 356.6313 c
+B
0 To
+1 0 0 1 50.24 366.4585 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 Xa
+/_Symbol 30.7945 30.7945 -9.0228 Tf
+0 TA
+(a) Tx 
+(/) Tx 
+/_Symbol 25.662 25.662 -7.519 Tf
+(2) Tx 
+(\r) Tx 
+TO
+1 1 1 Xa
+0 R
+0 0 0 XA
+428.376 547.7837 m
+B
0 To
+0.3568 -0.9342 0.9342 0.3568 556.2471 621.3533 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 Xa
+/_Symbol 30.7944 30.7944 -9.0228 Tf
+99.9275 100 Tz
+1 TA
+0 0 -5 Ti
+(p+a-2) Tx 1 0 Tk
+/_Times-Italic 30.7944 27.1914 -6.6822 Tf
+(acos\(\(s) Tx 1 0 Tk
+/_Times-Italic 22.4682 19.8393 -4.8755 Tf
+-3.7447 Ts
+1 Tt
+0 TA
+22.4682 0 Tl
+0.0225 Tc
+(d) Tx 
+/_Times-Italic 30.7944 27.1914 -6.6822 Tf
+0 Ts
+0 Tt
+1 TA
+0 0 Tl
+0 Tc
+(/) Tx 1 0 Tk
+/_Times-Italic 24.3405 21.4926 -5.2818 Tf
+(2) Tx 1 0 Tk
+/_Times-Italic 30.7944 27.1914 -6.6822 Tf
+(\)/c\)) Tx 1 0 Tk
+(\r) Tx 1 0 Tk
+TO
+2 To
+1 0 0 1 -4013.5 4715.5 0.6909 Tp
+0 Tv
+221.9375 343.8013 m
+8.9431 357.915 l
+N
TP
+0 Tr
+0 O
+0 0 0 Xa
+/_Times-Italic 12.0005 10.5964 -2.6041 Tf
+97.7054 100 Tz
+0 TA
+0 0 0 Ti
+0 Tg
+(\r) TX 
+TO
+1 1 1 Xa
+0 R
+0 0 0 XA
+477.2744 343.8013 m
+B
u
u
1 g
+5.4883 357.0415 m
+8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c
+12.2998 356.5776 l
+13.6924 351.7168 l
+11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c
+f
225.021 342.0898 m
+222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c
+218.21 342.5537 l
+216.8174 347.4146 l
+218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c
+f
U
u
0 R
+0 G
+219 342.5 m
+11.5095 356.6313 l
+S
0 O
+0 g
+5.4883 357.0415 m
+8.3933 357.8999 12.0308 359.4541 14.3386 361.2046 c
+12.2998 356.5776 l
+13.6924 351.7168 l
+11.6431 353.7642 8.25 355.7979 5.4883 357.0415 c
+f
225.021 342.0898 m
+222.1162 341.2314 218.479 339.6772 216.1709 337.9268 c
+218.21 342.5537 l
+216.8174 347.4146 l
+218.8662 345.3672 222.2593 343.3335 225.021 342.0898 c
+f
U
U
0 To
+1 0 0 1 128.2715 319.4219 0 Tp
+0 Tv
+TP
+0 Tr
+0 0 0 Xa
+/_Times-Italic 30.7945 27.1914 -6.6822 Tf
+100 100 Tz
+0 Tg
+(f) Tx 
+(\r) Tx 
+TO
+2 To
+1 0 0 1 -4013.5 4715.5 0.6909 Tp
+0 Tv
+693.478 69.2178 m
+480.4824 83.3315 l
+N
TP
+2 Tr
+0 O
+0 0 0 Xa
+0 R
+0 G
+/_Times-Italic 12.0005 10.5964 -2.6041 Tf
+97.7054 100 Tz
+0 Tg
+(\r) TX 
+TO
+u
u
1 g
+224.4756 342.8623 m
+227.3735 343.7437 230.999 345.3267 233.293 347.0957 c
+231.2905 342.4526 l
+232.7217 337.603 l
+230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c
+f
598.7783 320.3433 m
+595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c
+591.9634 320.7529 l
+590.5322 325.6025 l
+592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c
+f
U
u
0 R
+0 G
+592.7539 320.7056 m
+230.5 342.5 l
+S
0 O
+0 g
+224.4756 342.8623 m
+227.3735 343.7437 230.999 345.3267 233.293 347.0957 c
+231.2905 342.4526 l
+232.7217 337.603 l
+230.6563 339.6338 227.2471 341.6406 224.4756 342.8623 c
+f
598.7783 320.3433 m
+595.8804 319.4619 592.2549 317.8789 589.9609 316.1104 c
+591.9634 320.7529 l
+590.5322 325.6025 l
+592.5977 323.5718 596.0068 321.5649 598.7783 320.3433 c
+f
U
U
0 R
+0 0 0 XA
+[12 ]0 d
893 459.2793 m
+S
0 To
+1 0 0 1 391.7344 305.3076 0 Tp
+0 Tv
+TP
+0 Tr
+0 O
+0 0 0 Xa
+[]0 d
/_Times-Italic 30.7945 27.1914 -6.6822 Tf
+100 100 Tz
+0 Tg
+(c) Tx 
+(\r) Tx 
+TO
+0 To
+1 0 0 1 684.5 392.5 0 Tp
+0 Tv
+TP
+0 Tr
+/_Symbol 12 12 -3.516 Tf
+1 TA
+(\r) Tx 1 0 Tk
+TO
+0 To
+1 0 0 1 -0.5 570.5117 0 Tp
+0 Tv
+TP
+0 Tr
+/_Times-Italic 12 10.5959 -2.6039 Tf
+-2 Ts
+99.9275 100 Tz
+1 Tt
+0 TA
+0 0 -5 Ti
+12 0 Tl
+0.012 Tc
+(\r) Tx 
+TO
+LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_pattern_AI5 /terminate get exec
+AGM_Gradient /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/doc/equiangular.gif b/doc/equiangular.gif
new file mode 100644
index 0000000..a7c89b5
Binary files /dev/null and b/doc/equiangular.gif differ
diff --git a/doc/equilinear.ai b/doc/equilinear.ai
new file mode 100644
index 0000000..b93fcbd
--- /dev/null
+++ b/doc/equilinear.ai
@@ -0,0 +1,762 @@
+%PDF-1.4
%����
+1 0 obj
<< 
/Type /Catalog 
/Pages 2 0 R 
>> 
endobj
2 0 obj
<< 
/Type /Pages 
/Kids [ 3 0 R ] 
/Count 1 
>> 
endobj
3 0 obj
<< 
/Type /Page 
/MediaBox [ 206 296 406 496 ] 
/Parent 2 0 R 
/Rotate 0 
/PieceInfo << /Illustrator 6 1 R >> 
/LastModified (D:20010228225046-06'00')
/ArtBox [ 208.5 298.5 400.5 492 ] 
/Group 182 0 R 
/Thumb 185 0 R 
/TrimBox [ 206 296 406 496 ] 
/Contents 187 0 R 
/Resources << /ExtGState << /R1 4 1 R /R2 23 1 R /R3 33 1 R >> /XObject << /Fm1 25 1 R /Fm2 40 1 R /Fm3 48 1 R /Fm4 54 1 R /Fm5 58 1 R /Fm6 63 1 R 
/Fm10 82 1 R /Fm14 107 1 R /Fm18 178 0 R >> 
/Font << /F1 46 1 R /F2 88 1 R >> /ProcSet [ /PDF /Text ] >> 
>> 
endobj
4 1 obj
<< 
/SA false 
/OP false 
/op false 
/AIS false 
/ca 1 
/CA 1 
/BM /Normal 
/HT /Default 
>> 
endobj
5 0 obj
<< 
/CreationDate (D:20010212143412-06'00')
/Creator (Adobe Illustrator 9.0)
/Producer (Adobe PDF library 4.800)
/Title (equilinear.ai)
/ModDate (D:20010228225046-06'00')
>> 
endobj
6 1 obj
<< 
/Private 7 1 R 
/LastModified (D:20010228225046-06'00')
>> 
endobj
7 1 obj
<< 
/CreatorVersion 9 
/ContainerVersion 9 
/RoundtripVersion 9 
/AIMetaData 8 1 R 
/AIPrivateData1 9 1 R 
/AIPrivateData2 10 1 R 
/AIPrivateData3 12 1 R 
/AIPrivateData4 14 1 R 
/AIPrivateData5 16 1 R 
/AIPrivateData6 18 1 R 
/AIPrivateData7 20 1 R 
/NumBlock 7 
>> 
endobj
8 1 obj
<< /Length 1445 >> 
stream
+%!PS-Adobe-3.0 
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (C:\\ctsim\\doc\\equilinear.ai)
+%%CreationDate: 2/28/2001 10:50 PM
+%%BoundingBox: 208 298 401 492
+%%HiResBoundingBox: 208.5 298.5 400.5 492
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 5.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 219 -283 805 483
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 200 200
+%AI5_RulerUnits: 2
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: 23 607 2 1345 943 26 0 1 11 225 1 0 1 1 1 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:219 -283
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 0
+%%EndComments
+endstream
endobj
9 1 obj
<< /Length 9666 >> 
stream
+%%BoundingBox: 208 298 401 492
+%%HiResBoundingBox: 208.5 298.5 400.5 492
+%AI7_Thumbnail: 128 128 8
+%%BeginData: 9068 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD3CFFA87DFD0BA87DFD04A8FD68FFA8A87DA87DA8A8FD11FF7D7D
+%7DA87DA8FD5FFFA87D7DA8FD1CFFA8A87DA8FD59FF7D7D7DFD24FFA87D7D
+%A8FD52FFA8A87DFD2AFFA87DA8FD4EFFA87DA8FD2EFFA87D7DFD4AFFA87D
+%A8FD33FF7DA8FD46FFA87DFD37FFA87D7DFD43FF7DA8FD3BFF7DA8FD3FFF
+%7DA8FD3EFF7D52FFFFFF7DFD39FF7DFD3FFF7D7D27FFFF7DF8FD37FF7D7D
+%FD3DFFA87D7DFF7D27FFFFF8F87DFD35FF7DFD3EFF7D7DFFFFFFA827FF52
+%27F827FD33FFA87DFD3DFFA87DFD05FF7D27A8A8FFA87DA8FD31FFA8A8FD
+%3CFFA87DA8FD06FFA827FFFFFFA8FD32FF7DA8FD3CFF7DA8FD08FF7D27FF
+%FFFFA8FD04FF7DA8A8FD2AFF7DFD3CFFA87DFD0AFFA827FFFFFFA8FFFFA8
+%A8A87D7D7DFD28FF7DFD3BFF7D7DA8FD0BFF527DFFFFFFA8FD08FF7DFD26
+%FF7DFD3AFFA87DFD0EFF7D52FFFFFF7DFFFFFF52A8FD29FF52FD39FFA87D
+%7DFD0FFF527DFFFF7DFFFFFF527D7DA8FF52FD25FF7DFD39FF7DA8FD11FF
+%7D52FFFFA8FFFFFFA8A8FFFFA87DFD24FF7DA8FD37FFA87DFD13FF527DFF
+%FF7DFFFFFF7D7DA8FFA87DFD23FFA8A8FD36FFA87DA8FD14FF7D52FFFFA8
+%FD04FFA87D7DFD24FFA8A8FD35FFA852FD17FF527DFFFF7DFD06FFA852A8
+%FD22FF7DFD35FF7DA8FD18FF527DFFFFA8FD05FF7D7DFFA8FD21FF7DFD34
+%FF7DA8FD1AFF27A8FFFF7DFD05FF7DA8527DFD20FFA8A8FD32FFA87DFD1C
+%FF277DFFFFA8FD05FFA8A8FF7DFD20FF7DFD31FFA87DA8FD1DFF27A8FFFF
+%7DFFFFFFA8FFFF7D527DFD1FFF7DFD31FF7DA8FD1FFF52A8FFFFA8FD04FF
+%7DA8FD21FF7DA8FD2EFFA87D7DFD21FF27A8FFFF7DFD05FF7D7D277D7DFD
+%1CFFA87DFD2EFF7D7DFD23FF52A8FFFFA8FD05FF7D7DFD1FFF7DFD2DFFA8
+%7DFD25FFF8A8FFFF7DFD05FF527D527DFD1DFFA8FD2BFFA87DA8FFFFFFFD
+%08A8FD1BFFF8FFFFFFA8FD05FF527DFD1EFF7DFD2BFF7DA87DA87DA8A8FD
+%08FFA87D7D7DA8FD16FFF8FFFFFF7DFD05FFA87D52A8FD1BFFA8A8FD29FF
+%7D52A87DFD11FFA87D7DFD14FFF8FFFFFFA8FD05FF7DA8FFA8FD1BFF7DFD
+%28FF7D7D7DFD17FF7D7DA8FD11FFF8FFFFFF7DFD05FF7D7D277DFD1BFFA8
+%FD26FFA852A8FD1BFFA87DFD10FFF8FFFFFFA8FD05FF7DA8FF7DFD1AFF7D
+%FD25FFA87D52FD1FFF7D7DFD0EFFF8FFFFFF7DFD05FFA87D527DFD19FFA8
+%A8FD24FF7D7D7DFD22FF7DA8FD0BFFA8F8FFFFFFA8FD04FF7D527DA8A8FD
+%19FF7DFD23FF7D7D7DA8FD24FF7DA8FD0AFFA8F8FFFFFF7DFD05FFA8A852
+%7DFD19FF7DFD21FFA87DA87DFD27FFA8A8FD09FFA852FFFFFFA8FD21FFA8
+%A8FD1FFFA852FFA87DFD12FFA8A87DA87DA8FD11FFA87DFD08FFA827FFFF
+%FF7DFD21FF7DFD1EFFA87DA8FFFF7DFD10FFA852F8FD042752272727A8FD
+%0FFFA8A8FD07FFA827FFFFFFA8FD04FFA8A8A8FD1AFF7DFD1DFF7D7DFFFF
+%FF7DA8FD0EFFA827F852A8FD06FFA87DF8277DFD0EFFA8A8FD06FFA827FF
+%FFFF7DFFFFFF7DA87D7D527DFD17FFA8FD1CFFA87DFD04FF7DFD0FFF7DF8
+%7DFD0CFF7D2727FD0EFF7DFD06FFA852FFFFFFA8FD05FFA8FFFFFFA8FD16
+%FF7DFD1AFFA87DA8FD04FFA87DFD0EFF52F8A8FD0EFFA85227FD0EFF7DFD
+%05FFA827FFFFFF7DFD05FF52FFA8A8FD17FF7DFD19FF7DA8FD06FF7DFD0E
+%FF5227FD12FF52F8FD0DFFA8A8FD04FF527DFFFFFFA8FD05FF7DA8FF7DFD
+%16FFA8A8FD16FFA87D7DFD07FF7DFD0EFF5227FD14FF52F8FD0DFF7DFD04
+%FF7D52FFFFFF7DFD05FFA87D27A8FD16FFA8FD16FF7DA8FD08FFA8A8FD0D
+%FFA8F8FD16FF5227FD0DFF7DFFFFFF527DFFFFFFA8FD06FF7DFD18FF7DFD
+%14FFA87DFD0AFF7DFD0DFFA8F8A8FD16FFA8277DFD0CFFA8A8FFFF7D52FF
+%FFFF7DFD06FF7DFD18FFA8FD12FFA87DA8FD0BFF7DFD0DFF2752FD06FF52
+%52FD08FF7D527DFD05FF7D27FD0DFF7DFFFF527DFFFFFFA8FD04FF7D7D27
+%527DFD16FF7DFD11FF7DA8FD0CFF7DFD0DFF7DF8A8FD05FF5227277DFD06
+%FFA8272752A8FD05FF277DFD0CFF7DA8FF7D52FFFFFF7DFFFFFFA8FFFF7D
+%FD17FFA8FD10FF7D7DFD0EFFA8FD0DFF5252FD06FF52275252FD06FFA827
+%5227A8FD06FFF8FD0DFF7DFF277DFFFFFFA8FFFFFF7DFFA8A8FD17FFA8FD
+%0EFF7D7DA8FD0EFFA8FD0DFFA8F8FD06FFA8FD0427FD06FF522727277DFD
+%06FF527DFD0CFF7DFF277DFFFFFF7DFFFFFFA87D527DA8FD16FF7DFD0CFF
+%A87DFD11FF7DFD0DFF5252FD06FF7D52275227FD06FF7D2752277DFD06FF
+%7D27FD0CFFA8A827A8FFFFFFA8FD05FFA87D7D52A8FD14FF7DFD0AFFA87D
+%A8FD07FFA8A852FD08FF7DFD0DFF27A8FD06FF7DFD0427A8FD05FF522727
+%2752FD07FFF8A8FD0CFF7D277DFFFFFF7DFFFFFFA8FD05FF7DFD14FFA8FD
+%09FF7DA8FD08FF7DFF7D7D52FD06FFA8FD0EFFF8FD07FF7D52275227A8FD
+%05FF7D2752277DFD07FF5252FD0CFFA827A8FFFFFFA8FD04FF7DA8FFFFFF
+%A8FD14FF7DFD07FF7D7DFD05FF527D7D52FF7DFFFFFF52FD06FF7DFD0DFF
+%5252FD07FFA8FD0427FD06FF5227272752FD07FF7D27FD0CFF7D277DFFFF
+%FF7DFD05FF5252527DA8FD14FFA8FD05FF7D7DA8A87DA87DFF52A8FF527D
+%FF7DFFFFA8A8FD06FFA8FD0DFF527DFD07FFA852275227FD06FF7D275227
+%7DFD08FFF8FD0DFF27A8FFFFA8FD1FFFA8FD04FF52A8FD05FF7DFF7D7DFF
+%27FF7DFFFFA87DFD07FF7DFD0DFF27A8FD08FF27272752FD06FF7D272727
+%A8FD08FFF8A8FD0CFF27FFFFFFA8FD1FFFA8FFFFA8A8FD06FFA8A8FFA8FD
+%057DFFFF527D7DFD06FFA8FD0DFFF8FD09FFA82752A8FD07FF275252FD09
+%FF27A8FD0CFF52FFFFFFA8FD1EFFA8FF7D7DFD07FF7DA8FD13FF7DFD0DFF
+%F8FD0AFFA8A8FD08FFA87DFD0AFF277DFD0CFF52FFFFFFA8FD1EFFA852A8
+%A8A87DA8A8A87D7D7DA87DA8A8FD0FFFA8FD0DFFA8F8FD20FF527DFD0CFF
+%52FFA8FF7DFD1EFF7DFF525252FD0AFFA87DA87DA87DA87DA87D7D7DA87D
+%A87D7D7DA87DA8FD09FFA8F8FD20FF7D52FD0CFF7DFFFFF8272727FD1CFF
+%7D5227F87DA8FD19FFA8FD04FFFD09A87D52FD04A87DFD04A8FD17FF527D
+%FD0CFF7DFFFF7DF8F8A8FD1CFF7D52F8277D7D52A87DA87DA87DA87DA87D
+%FD0EFFA8FD0EFFF8FD09FF7DA87DA87D7D7DA87DA87DA87DA87DA87DA87D
+%A8A8FFFF7D52FD0CFF7DFFFFFF2752FD1DFFA8A8A8F8A8FFFF7DFD09FFA8
+%A87DA87DA87DA87DA87DA87DA87DA8A8FD0CFFF8FD0EFFA8A8FD0EFFA8A8
+%277D7DA87DA8A8A87DA8A8A87DA87DFFFFFF52FD1FFFA8FFFFA8FFFFFF7D
+%7DFD16FF7DA87DA87DA87DA87DA87DA87DA827A87DA8FD0CFFF87DFD04FF
+%5252FD09FF277DFD0CFF52FD23FFA8FD08FF7DA8FD14FFA8FD0DFF52A8FF
+%FFA8A8A87DA8A8A87DFD04A827F8527D7DF8F8A8FD09FFF8FD09FFA87DFF
+%FF52FD23FFA8FD09FFA87DFD13FF7DFD05FF7DFD07FF527DFD0EFFF8F852
+%A852F8F8A87DA87DA87DA87DA87D277DA87DA8FD06FFF827A852FD23FF7D
+%FD0BFF7DA8FD11FFA8FD04FF52FD08FF7D52FD07FFA8FD05FF7D7DFD04FF
+%A8277DFFFFA8FD05FF7D27FFFFFFA8A87DA87DA87D27F8F827FD23FFA8FD
+%0CFF7D7DFD10FF7DFFFFFFA852A8FD07FFA8F8FD06FF2752A8FD0CFFA8FF
+%52277DFD04FF277DFD09FFA8F8525252FD23FF7DFD0EFF7DA8FD0EFFA8FF
+%FFFFA87DFD09FF27A8FD04FFA85227A8FD0EFF7D527DFD04FF27A8FD09FF
+%A8FFFF7D52FD23FFA8FD0FFFA87DFD0DFFA87DFFFF7DA8FD09FF5252FD05
+%FFA8FD11FFA8FD04FF7DF8FD0DFF527DFD23FF7DFD11FF7DA8FD0CFF7DFF
+%FF7DFD0AFFA827FD1CFF277DFD06FF7D7DFD04FFA87D52FD23FFA8A8FD11
+%FFA87DA8FD0AFFA8FFFF52FD0BFF277DFD1AFFA8F8A8FD05FF52FFA8FD04
+%FF7D527DFD24FFA8FD13FF7DA8FD0AFFA87DA8FD0BFFA8F8FD1AFF5252FD
+%06FF7DFD06FF7D7D52FD24FF7DFD14FFA852FD09FF7DFD0EFF5252FD18FF
+%A8F8FD07FF52A8A8FFFFFF7DA8277DFD24FFA8FD16FF7DA8FD08FFA8FD0D
+%FFA827A8FD17FF277DFD0DFF7DFF277DFD24FF7DFD17FFA87DA8FD06FF7D
+%FD0EFF7DF8A8FD15FF2752FD0DFFA8A8FF27A8FD25FFA8FD18FFA87DFD05
+%FFA8A8FD0EFF5227FD14FF5227FD0EFF7DFFFF52A8FD25FFA8FD1AFF52FD
+%05FF7DFD0FFF5227A8FD11FF52F8A8FD0DFF7DFFFFFF27A8FD25FF7DFD1B
+%FF7D7DFD04FF7DFD0FFF5227A8FD0FFF2727FD0EFFA87DFFFFFF52A8FD25
+%FFA8A8FD1BFFA87DA8FFFFA8A8FD0FFF52F852FD0CFF7DF852A8FD0EFF7D
+%FD04FFF8FD27FFA8FD1DFFA87DFFFF7DFD10FFA852F87DA8FD07FF7D2727
+%A8FD0FFF7DFD05FFF8FD27FF7DFD1FFF7DA8FF7DFD11FFA85227F8FD0527
+%F8527DFD10FFA8A8FD05FFF8FD27FFA8A8FD1FFF7D7DFF7DFD14FF7DFD04
+%A8FD12FFA87DFD06FFF8FD28FF7DFD20FFA87D7D7DFD29FFA87DFD07FFF8
+%FD28FF7DFD22FFA87D7DFD27FFA87DFD08FFF8FD29FF7DFD23FF7D7DA8FD
+%24FF7DA8FD08FFA827FD29FF7DFD24FFA87D7DFD21FFA87DFD0AFF7D52FD
+%29FFA8A8FD25FF7D52FD1FFF7D7DFD0BFFA827FD2AFF7DFD26FFA852A8FD
+%1CFF7DFD0DFFA852FD2AFFA87DFD27FF7D7D7DFD17FFA87D7DFD0EFFA827
+%FD2BFF7DFD28FFA87D7DA87DFD11FFA8A87DFD11FF7D52FD2BFFA8A8FD29
+%FF7D7DFF7DA87DA8A8FD08FFA87D7D7DA8FD13FF7D52FD2CFF7DFD2BFF7D
+%FD04FFFD07A87DA8A8FD17FF527DFD2DFF7DFD2BFF7D7DFD23FF7D52FD2D
+%FFA8A8FD2BFFA87DA8FD21FF527DFD2EFF7DFD2DFFA87DFD20FF5252FD2F
+%FFA8FD2EFF7DFD1FFF27A8FD2FFF7DFD2FFF7D7DFD1DFF277DFD30FF7DFD
+%2FFFA87DA8FD1BFF27A8FD31FF52FD30FFA87DFD1AFF277DFD32FF7DFD31
+%FF7DFD19FF27A8FD32FFA8A8FD31FF7D7DA8FD16FFF8A8FD33FFA8A8FD32
+%FF7DA8FD15FFF8FD35FF7DA8FD32FFA87DFD14FFF8FD36FF7DFD34FF7DA8
+%FD12FFF8FD37FF7DA8FD33FFA87DA8FD0FFFA8F8FD38FF7DA8FD34FF7DA8
+%FD0EFFA827FD39FF7DA8FD35FF52FD0DFF7D27FD3AFFA8A8FD35FF7DA8FD
+%0BFFA827FD3BFFA87DFD35FFA87DA8FD09FF7D27FD3CFFA87DFD36FFA87D
+%FD08FF7D52FD3EFF52A8FD36FF52A8FD06FF527DFD3FFF7DA8FD36FFA8A8
+%FD05FF7D52FD40FFA87DA8FD35FFA87DA8FFFFFF527DFD42FF7D7DFD36FF
+%A87DFFFF527DFD44FF7DA8FD36FF7DA827A8FD45FFA8A8A8FD35FFA852A8
+%FD47FFA87DA8FD32FFA87D7DFD4AFFA87D7DFD2FFF7DA8FD4EFFA87DA8A8
+%FD29FF7D7DA8FD53FFA87DA8A8FD23FF7DA87DFD59FFA87D7D7DFD1CFFA8
+%7D7D7DFD60FF7DA87DA87DFD12FFA87DA87DA8A8FD68FF7DA87DA87DA87D
+%A87DA87DA87DA87DA87DA8A8FD30FFFF
+%%EndData
+endstream
endobj
10 1 obj
<< /Filter [ /FlateDecode ] /Length 11 1 R >> 
stream
+H���o��{��ڇZl�b;I�`_�6��@����u([M�ږ�,�/�I�?�E�
+[�H��H���O7wG�D��Qt�c�{?�pj���L��"M��D
�
��q���ѣ'�Y�R�|R/�#����E��V�2_I�>d�W�ʦ�O'�-U�����A~�T�r)̱P��
 �LX`y8�a���7���%��t�'*_��W �X8
�>��!��M���{��������ӑ���dno��eY��T�r�N�"g�b
+�}�i�_�,�s��\�h/�F���Vg"��?��m�ҩ/U&ˣ�����WR&2�D���2���`D)�;��T��4|�.,8Y�	ۥ��B��(6[O�c�wt��F$
+6��7��8
�
�.z��V~�w
a�4y�՛Dq��s	ay��r�  c�� y��*����lp쐑��
��qL��G2�NZ
��Ť��Ŭ/�%8�|+׊̃ �ס˘�}'
�@؄A@�tՙ|Ujݞ����=dά�1%q
a���
F
��� �[�_�p
����>77g�G��=և�~���)�
\ʬH!k)���,�َkR8����
����z���ȯ�Y	�D�NؕΥ?���w�ֆ^
}[����
+�)$��9�R'2�PX{��T�Qv����X
+���*�,��Q��U��$�KD�7�.d��?��a^;A�E�q?b�;� ���x�ȍ���<��k��*��r�=ވB�[��Q���1��"h.A{��#�
"�F%m$��l�
d����?o#x
�1��?ϓS����T�!�sȇT�q���Jd]�~KU���"�>ۛ5�]�+a��[�>�{��}��]������g�
�
DDU��}�ߋ��K��,�+�l<���	��,�D)��J���
nIU�
+b�'b��ƿ`���@F?��+���]�"O�],���� ���'˯�,��lD�<CBll�%����� k��Qn���eU�H��L��y�ݦ�YK�hhR�R�`0� z
X\2^"/
�<���y��ɐ��~�6G�M
G���.�^�I�d�rhpXprp��E�k�7�b#sn�� Ƅg"F���p6���Ϊ��U�8Mi���H��D\Yɳ
+j�	���$-��JS��r6
�P&ʸJI���T� 7"}r{xdɂqȧ j�v�vNs��;m���|:�^>'v>'f�2�����Z�-
�EC3�~E��k�p��;
�N��/�
V�_�)��}mнc��0�7\���r�
D��~!�P+�p��
��nk��!y\�C:v�˖DɆO9*�Tg
��HpG�6Ԏ\�:���$
_�^"�3*�Z���
}��g�-9c[����sw�
���,���\��#՗y
k�C��ms��y?�U�C�n��/�$JX-�U�嶐�C
�Z7
�g~
	��'�����dD���k��
�&W/P<x��U��O�uNX� fi	��+L��@�<AiU���h�e� SYEz���|�~�%�bhJ��Q�t�$�H
tx�F��O����j�'�B�.�
+���V����b
�mR��r��1�H	u-[�G�4ts��H��צrO�b��Τ���F��L�4��-����B8�洺��`�6��(�?�l��ಂ�>�AA������v�A��Ԛ�.��7{���[����{S��'`eD�,�?���'md�R�� ���I��9v�ؠ�mH�Fx��1ٝx�F���k�G��?`	�~��Hkod!
{�B�D5����%oT͎��xEނ���FݨP7�0�J�)g�?S�WF��m�s�n>��:
��
|��	�0�E,��ei��0S"�Tz6��}*h�bc��JS���?ec��FMU�I�_s�ݵ+,M#G#v��P�Y�'Hnt�
*�J$(�2QOh�kpIe��1����B�^ �r�ŐFm��֜���l]��
�t����õ
�|���Rh�\�l�D޶�W	} ~�P���!�
[
�g�v[��
+{T�?�-\V���^��AU���A��e�r�z�K말����9}E�����8$Fׁ�����{�ͧC����*�m����Em��N���'�4�N���5�ib�7Ng�-��d���q^Bc���
�ܼ��͡g��1ԗ�-�3��f���;� �v�Dݙ7�r��f�J�Ӗ���IO��^��SL;C�ZO����v��0���ѴkZK�Et��e��
nڱ��n���(�mi���u�*���ŠTŬ;�����;����v;>�
+7PT-}�^��c6˻>�&�`�������QV�[@��p�M4������^���+<�_�.�@b�Q�;0���É��$�{S3�S�3�9�9)��B��
 � ' �`
0�����48��f�a��0<��p����,���~ Qԏ�0:�F�8�F��4:���-:�����/�
9n#
��?��@r1��� �l6�\r��9l�Ȁ
$?OU�==�#k#H�2�����X|ߧ&7;�
.��%������&'?{烏~��g���+���
|a	)䰅�`�q�>���5n�ĺ�˼�%.i�KY*ۙ�O1�iK;řW��u]���1�
s�[�۴�-n��7,�L�ܾ�E����ƚj��ַo��=Qk��}�ݕ�-|"T�gg���}�˾�y_�D���ݓuާ}܇R�^J�J.kIe�#��+s�(���m�ʶmy[��-�/�J�ͬv܆\�
��ye
{	ٳ�9O��]뺯��fv�օ�����!��=*��OJ
u
+T�Q���
K]v��Q˕��F*�����
b�;u�b��9

�2�PC�a���a��9C
�9�t��W�s�g�r�
'��fza�tF�C2}��H�x�g��F7�u�鮍.[�6�H���ч�8L��,�h�W=�^O���8
c��
�����
���͘�#�(*�qr�(9���p���/�Z���'��ė�����	��ջ��1FïQcz��
��y��������� ��s�?˓�4F���9f�������`��$�ܹHphi b8��!��<�@�[
�tG��������{�������#^��S�Ӯ_��������	�xV�U��~����v�<^[��Ւ�5{z
� ��
�
�Sn��Av�k�hmX�P�@m8�0�����
���@�
��N?���40���H`jE��tHe�0�^ZDU�zT��\�쨘���
�
��jc����h{��zV�ƹ ��g;�� H�,���=l�����"�Ƅ����I�d�K�dV�f�r
+�Su��"��-�)�N>�bY�
V��
���g��(�61;���׆
��c��8���b��
���&R�a̵`�x��S#�;a����Y�qdS�X!���v���䅉�X9C�>c��
�R2,��Ӿ��|!X`!�ڣ=�������%���C;�:���
C��C��j�'X�[`�!�ip��5�Q�yě�y@�{�i���M�3� ;
uN�s�ܐ�C���
|:�t����R ��!�0��z�0d8ԁȐȠȰ����H���!�@R�$%�j$�$�d�$�d�$�d�$�$�$�d %%%Ů�������*dR���
+
+X�XY��������AcŮM�+�&
�%���	���tڐԬ�~��������&afi���י3�1�t3�v��
�!�%ha��O�b3��L�˝I�M�jbf�
���]d=Ԣ\�6�8F=�Y�H�=���Pb
���Ȩ��
Fc�9`
jbbbbU�_�_dU���T�E�M�M֧��*�&�"��!�&�&�*��Te��Trf���	��E���*�خ�8��$w?ɭIlS�nn.�dž	�!�!*���������WyYk[c~��i�K,�`�j@=�K�
��GƳa�֙۷˓buȽX!b/֘�y�Ή�*���j�r
"�^8k��};�`W�3��{-B��$��.���6�
'��VzQ�`ArE�6 at 3���: ��C>�H&�Z��T(�ވC"�I7��*��
+c�Q5D�Pn�Mo"��/���DD�D�D�L�����оh���
���a���[����٥��Am>������Dx:��m�댻7�׶��fػ��ϵ2��Z��a���9tc�P��'X�����e&p;/�=4�s��<�J=A��s�Q�騃��
�܁�
�!G��
oXcÛn��`ӱƠ��������
kT�1�1���L
]�v�K�����z��x
,�#i��r	�3dL�X�D��v�r��5v��>Ƶ(����7�
�%\�S��7މ�w֏�o��4�E`_�xt	�*½&�l��7֙�u:�t�Y�s��0N��6�kU���$.:�U�����E��� �����L�L�rE�ت
1�"�e'�MgG1
�|Uw��|�ʪl4r#f%$�
�Ef\nN��p�!���
9
%�k;k�U&0
+�^�1��b����2���2/_S͉��wo�|����_5�8.�0,��a?�D��ā�ӿ�	�Vʧ�IV4E/?�Yޛڛq��rޞG�O��i��wg���������o~����~|���N���?������w�~�_�������_����Wv^�zbטN1
1ܡ���h���X8L��F��
����C���C���ن�Ƭh%vafaV!F1
��
�E����� �`����
��A7�nff�� �.٪�o�/�o�/�jT���BWj��L���V�-��%�0���M'�t`C�&m��!C9͎�
+
'Tx>/N_����U�U����
wq��[G��7�?�p�K��4�[������7��v
��4V��O=Tо�5>V�j����
����Ӭӌ�l�L�
��>��(��8�n��
�
�������
�
+��
5B�A3�E
����o<��l�L�,�
o�fY�Z���\39����,��
+hn��NC
 ��8'�
���BZ�'���
����hUD�ʕQ���U�� �G�"��P�
0��W#j8��
md� vB-3�Y�Ί
�����z�5��	��@{�U�kD�g�أ��N�uF��.V�Q{��-���,���H=����2>a����c��O��2���@��8�Y�����hAλ��;�Կ�4��Di�
a�o�q���
ڸֺk�Vϸ!�q̭�
G� B
du�sr2_P��
+���Vޓ܋��-�9���8p P��t��r�0�3}����[X�v1Y�|��r
%�ڌS#�u�z���fOz6�&��Õ�
�W�xރĐ�t39$�js&�?���1�q-|�� c�����X܌�E�-ckK��3���Ȱ�'&&��X�ؤ�ո6��F����͏۶���?x��� )�xx�DIE�Yv�A��E����s�%�˞q� )`�:��5�2y�;�X�T�P�L�H�D�@�<�8�4eaRYZDi�$���)j!C"B=h������Pt�1JNG���)4"3
$FF�E�%�쵰ԫ3��HS���Xj����?���=�����͔����HC�\�(+���5���sЄ�t%l6%n�)p̹N��iJCgL�ӧ�i=k97��c
+�!EP��0��
��Q4�,v�����FF�!I�R�c
+�F�)2���X�iWjS"�BjH1���p�
���U�����R`mY�Z�V����芼��5���{L�h�E��S��ed�e�AVc��X�	����U��c`��Z����L��j+�W$��r�l)�����K���#*[������X�
͘�{���So>�@�#�
Q�w9+K�C���ފ-�
Պ�LT���)���X����nt���`����yp=���+e��b�����+
����R
ِ
�0+�}R�HpCd�R����m�.�%��e[�a��e�d�1�X�[A� r0��\D�ʃR���+d��*�^�C
M����w�:�Px�#�!c"�"t�Y�+B0gב)B��ă$�P�
�?�
�%G�ƖW���Q�,i�g��o0A߽c
����0�����qu�ik1u��afq�D�����Ɯ��V��Ŕcz�@�D�Xu�	&`*��
j�l�l࠽��`�
�����R�e�:���yaL��N��25x憁�abv��
L�>%����*Ex�,A��i��g1�.��"�s�p��uJ6勐ƨ~��o���@#Ϥ10kLH�F���"�
)w�L
U�
�����U#��.�hЙҩ9w�r��s'!�7��Ӡ��3��b=����f��d\����x�\�T`6n��4���y�l
M�z&�TLŨ4Ũd��2[ɲd� [...]
+�z-�o�T��xP�k6��W���>
��鰾�s����
�Ad�2�����7�������LA�O�?���4�
�Ya�'�0�=��W��vq���	 � r0{ ���n �fh�#���
�w@����¬M�����=c��THF��0��#�d`��Rc$j8�$
'z��g����Vb��=2Z�����3`XF��!cf̈
A���2j4
3�Fd�-�B�;Z	
�D���g��R iS�SJ
q� 2_�"�qV[����\Frٳr�

��{U������
�QףZ�K���w���;n{
��]�
�1��"�y��N�}v���j��6�]|BݔR�7$F-�@N�
%ǖ
{z
��Qر&G�Ʒ��W1�c���!� 5��Pf
�2/H
��!��3c!�KyAb��c&�J
�/��91�-�mGt�#�=�
D֕��)�RU�?allN�>���Ss������w�_�y����ϜC�\��+�j^��
�_��<&+���k�H׸u��ץ�j��O��m���K�h̻��up'=o��\�l���S׺�ʺʯ/�򅛦�^+=��7�[�~zz��Ӈ���O_�+��_��k��~y������������__����v�ix�y�����
U_�$���lj+����^�=+H�c ,{"o �|#�7��T�5A((T
+��D�"��*3
3

 Q7Rq	�	���
+njF�`Q�(H 
+'A!���
 ΀_
�u�� ���:-@�q
��5
����
��+ \3�e��`
� VU��!b�2&��c�=��c�}&�3q���L<7ٓ�
�dĀ��`T�!���
{l�ŝ��ƀ
4���c�,���ElN�mi�[2b;6�bjl�,����o��\�[[�ZR�.r^b]`��y�_���/.�ղ�i��"�2�"!-vG�bӒ��(��$ǙfGm�&�!�HM�Z�$ʜ*S�,��:�Ok��
�eӷy<o&38�y��g7y�>�����}&���l0��l�����9Y�RU���ׯ޼����9���)ŷL�����=�`��M㫟��9�x�k�OO|������Kzex���S~���/��������__�*?��;
��8t�#����T��U�����
W��p�-�Y
+ۉ�ֲ�h������Ž�7��
�"]%�}�L�w)�{I5���/���l�9�I�IA������UU�Q,�}�y�&��0kX�	 �\jZ�����W
p��h�
�?y<o�~LG�`�E��@f,-OL�4���,�9�;/��~�o�q�oU���"�B��խ�W7��^}��~� ��)GǑ)a���ks}4��eX��X
˳K�I�]
X������V��ks}�,ò,��X�,*
��=�x�"G��He�Rf��ks<�
+�DQo�S��(�-z
+��@Qo�S����"=�I�q�㕇+��T�[��?3\أ٭>�-|W�疆K
��=�p
���M��x�~uۀ\
|���e<dK8
-�ی�b��I�
�D����22�f�!���5�EG
����������A
�T�':�Rc��TB�
+�:��ٖg*J�)ϥ��O��+Օ�8�z���P�q���<O��s�@�O����3��
�Ԧ�)g�NJd��I��3qJDŽ]E�8%�K6�g����Z���F'�
T���I��5����(u��[m)S��B���̪���>݇�I������RS���ߖ+�R��v��xX�A]x��7~<�qce��Q�:
��O�+;6������2煎��
���r{^����Ƚ�˭�\lf��
�F�l�&���y�9�<Ł���%cN̘Cɘ�/5j�S�C����g����pl&H^�2�PH#堘�� ��E�P�

+롴�k��
�G|�&Ghs���j�6��^T=B�{����;����7p�1�D��
.����
�C�W@����=|���pp
��HT��g�Pz8C뜅{i�k�{�&}�|N����|,
P
'Tc,f��4�+8����A��}��5��pX�Vhq��]�Lo���l&�#@��S
D'Z�KE=�V�`
�樁)b&r���S�3
|�y��q������_5=��F�����H.QE1�3�9�)��.
�'�y��HQj�l�d`�0*�cw�K��}��=u�N6j�BM�
/ɜL��	�
����$PA�B_$(
I�L�a���j)�x���Vh1d	�]�/E�`LQ�R���jh�)�sX#q'�S�y&
'CE�
+��CE�`Q�(xTD:J��Ű)�T|
+B��R�i�D�P�Vë V1
��
+r��^�V

�ǂdŲ�Y�,�VL;!�3A�J�=Ӂ��p�8P~A�4��Li�CeMo�
�
�+ �c��.�ZH��ә��]��S�8_����0_�2FX���\�Y�y�}�dX�V����ì�=�=�[�qVK��k�+�u6X����Ό[[�ߩ��
P}-Vs�Ɋf�����*�ؙ[#�s�|����:���r|�:��GR_jV���=bϪ+LmV��ځk�CR�9US�&TI�8f���a�̠y�'���q����Y(q7Y(9!�`"����U����
.��n@^� *
��$Ђ��G:ڏ�|�B�J��x��"	�l;v�
��P˱)��W
E~��P��?)C)?��QsTe8X`)�Vf*�
-#fc���	��I�`bGԐ�)�I���hka�ɘM�m(�̬x���
GI��^����&c=e�d�+�f��RVC~͵��n��
�$i��rqc��
�y���bUCU�w%��d5W�X�V[�"j��-
g��|�I�R�U����Xj���e�7#�Z���R��-�챝\�
+�у �xk ��	(��U�<��2C3�����˗Fz�"G�P at G��hEf���Z	G5U��O���T]]��F靯�t��^�=�0t
��y�7S��0-_�(��4ת���%�W�'�E��.��(!��\���S�R�cM+�IJ��f��B/�D.�e=�������
�Q�qY���3Ǔ�x��'6�t�,6�v��
ܫT;�tg�Jbs������1:I=B5i�%}��@j�H+��q�;m5����^9Ž��q\uT�s�8n
��Cz�"�.!�L��d�f;�&�/��C�
if�X���iG����qxi
�.�r� �2��x�l롈���TG�u�Zg�U�����aP�U|sg�]��R�53�f��;�����hjć�+^L�Xwi�ԓ�+k��g�y7&M=��4�i
}����s��aÇ
n�psb6�<�C��з��j�Ӻʣ�Cë�iK2�G��?w6a�+���Cö;L�ѥ��>
��;�1%sk=��n���l�k�vϖ]�b�M\� Hf��ﶚ{ſAI��+)�3��)>N�nϚǴI?�SGW�ε8�=u���N.����۸�7�@��[S�hvm�9��ײ[s�D��bÁ�tȤ�
3��S��"G�옳A��#��,H�q
+��K�͹b�=m�YC��&{ZZ�������d/
i&m�6��aU��(U�
+B�#��J��
+,
+w
� DA�bP�'�k�:���M��8�	�_
�'����H$a��"A�h����f1�����{��~
Ԋ�R\�U���J'�j�
}(ꀱ��p�m]�
�
��N���O͓�?�s˿�S�M#����~|�����'a��&��s�3��]�7�gLJWu}�7�
(x'�q1����5�Մ�ܻ�z��?��m�ӟ�����9��4>qm}�M�?����)���>m�}�K���|�
?h��������x��|r�30
ʭ-o
�?���x�t�`|~�~\�}��?}�����'�ן��?�������O�����g����?~�t�1�1}QV�N)�\���aS����GǏ�v��wo���5���0��������=��
�������
 b ,T!��s�0P��ba@�@j�44
+4h0���
�
	���	b�c��
+j�$. 0�m�r����A����9 at H���c�	�&�F8�
)*�]WbE�h��ڷ0� J��1#1j�a�e��h
�<j�
���G-�,�!D�FɐC	cI��UtAPZ��A�Qec\Y-�Hhњ,��
0(�\��D-n0C�-oer��ʵ�ˆ�VK���Tj�*�%��Kp�+���)Y�"tl/��}W���
�>X�U>X�UޑU:�g�j0�L�X-B^
ޮ���h��f�3o�c(�Xg���_�`{�[��}�����!�
V��ӱ
+
_��Ep
�v�/�>��6����N�
�b�c��7{�K�
�����i�t���K�Tg�}�]�"������Jfk(�*�Yfǃ̞�v�Ď��+��� �a5Y�%��"�����RJ����RDM@)�&�*�"�8A
+g�E����\&�`"�L J��bOI��F���PUw�kM�VʝH��\Oq���r�P�T���,\"Y
�j�8%JR� ��4���3RP"%�3�p*���d at i?�|��_�߄��7G;0�#
;b��/G��mm6p��S<��܈�'�c�z�k�
��� Ek�?�=&� Q���x� ю؁����'
�f�
��c��.bvrŽ.�Y���
;
��g�p�d�I����qj�q�	�9��,8�
��p�
g
p�X#P���	�X��
[���'G	x����ڠ�x��] �"p���	�\�O�[�X��7�	x����ޠ���@~�DLB�DL�����
&�cr&k�$%L��`�6h�üyL]��ELa�4N��
�s�+p�V��
�߈9N��	��`ƱF���
+�X�덇Æ�ۦ�UT�1 
+
+�EF
�8����28^��8
�� �x-4
X�
��(jXd`(4
Ob�� P���k���������^y�7���\
����m���@�I+_���HC�F.
t�J�L��Y�j�JV��o:�|����

+
_���u�<t��Z/�
:�����YF��[Wn�#H8���
+t��As��=k�y�3Ȍ��3;O�sq���������or��=
+��
���@�
_p���p��G:W
�؅ƒ��7s����Hߩ��U����h`�馎4��P*j�c4i$��N�o��W�x�;To]��j�Bz��I�N�9�[��N
��>y�2
Nd]�s�rRN�̉9�~�mA1�����.��)��-+�k��9���QfWr�V_*�u$�ߊ�2�
9_5b$m%R�@u�I`�0t�E�
����F�#3�ّ̰ABg�̔ʄ�
����ȫm5��
�@T
H���� ��ԁ�`o2"���/��H�+���/
6Ģ_��qp�Yc���Db�$�Y�$}�=�����k�7k%hj%���T�T�{��	-0 ���#Ɠ�
�rz�M-VC��h1b0b/b.b-b,��nC[SKC�H+V#���������}�y�u��A�0��=�~b�y�3�n`�_9�s����ʢ�Z*�&@=�e���Uͪ[R���g�R�#9���ZޙS�I�@!d�''���*�:M�̈́5n��μ��Uͪ��ToE�5Qo�+[g�$P��[��@� [...]
6�� VW%;�9�go�
���
�<�Y�ӄ�͆B���
4m��:�vfhû3;���i�X��v]ڨ8j�Fc�����
m��U�
6¿VxW�j�Y�X�;�j �W�S�t��5�;��*��x�8�����x�8�����x�;����>����L��xN���4+\F=F
F���rzwoi�+�*+
E����������xe�R$5�0��4�E���� ���1~�����?2��3�:��MK������S�o����Ah����%ro���%����„N;�2:�G�*�щKtd�AeA��PKzv��j��k�Y���#�,��	�~@��P�
��Fm���
&��&�rC�194��5]2?�(��12Et�
|�f�( �+��D1�/:�� ��$Y4X#��
w�0:f���Q2g�L�F/i$�6J捕�cb��+���0yT�=$}��Hk���Zci����pq�L ÚKu�(�Qġ
/��X�dxd��b+�o!�k/-V�Kʂ$0LE9��TJ*���re�
,[Fˊ��/�m�`f
�&��D�q��<T
��*�� 
�B$v�s�T���@%��_��9�����r�~���G��#�� D"����P�we��z�ag������c��/�a
�n���}X)\�n�f7�dt6�;t���
hw\aG��k�0��#��
�{0��w�h׎ �%��D�4�~�8r��9@�o?c���������->rO���or�)�6˳?yVfA����OO^�ȵ�O����}�^W�u�n��/�Y�2�x��v��u�%:C��[��0�zއ�4�4_g�	M/�-��/�k�ݒ
���+o����}���]|H7���yG��W���|9\|u�����pc�����ڗ�g?
�~�����KY�~~zr�˼�xA��_�q5�D�h�h�����~�Q�KD�%G,.�aDRI
��HR2��I�I!�-�W*YJ0a4�<=a at YP�55�HLi�4�yJX���0��Jd�K�6�Ȃ�B�آD��e��\
.%�n��2Xp�؂�J� [...]
+e��ت![	Y	[��߂dU
Y�����L�#3��٪2�r���yj�WDŽ�E�¹
4e	g)e	c�Й3VA��6��UE�jD�P4�m;Y���pU���UR+K���PոQ�Ԣ3K
+B�J�j"W��*%��d%lՐ�6���)�1�W�Kg
+m����i~����UK*V.
��&f����	�bzSJƼ���`�<1��iYxY��>^��3E-�̜�f+����7v&=�k8=�<[gh���H�<�"��<:Ru�핓W�v�v����Q�1��l��vO�V�v����Nע�U��Tv�/L�����(4M��sn��G�ha��ژP�0tG��YWt��Q�n����-u%	���.-W=7Ozx��h�J�`����	:f�j#���>�BB̑�v�%=Mn�=5���Q�'
�(l�[�y�ڐ{�6&������`����6j
��ʆ��qSs
�CƼS
42�#���B�훻�l
��|ž
�����qJ����
���?�!����97����:E�b�
�N�yEAґ�!^�?��8��ƀ�1�;f��j�QHd?ў"��&�[FR;L��
��/yMP���Ӑ�:��8��
��Z*�
;����n$
�'
�J�K��S�N�SrhuҥZ�{v0���g��x��ɼeҿ6n�m�/̅���u�Є�+i]a[3Ƅ)�U�X�-mV9��W�,r��"F��d:l�
^�/
+�
j	�Ʌ�<a��{l�
W_��%�+�p�i���c��z��5��I��vXoN����C$��$_c���cN���Nd����4�S��΍����N�M$y��\�B�W���[�

�������|g4��B���Y#�O�=�
����N�* (H�++mf�	��R;�}���h���OַH
�_i_Y�$�;�/	ϧ��n�N����:r��\A�U�kʡn\5�
��i��z9V�k%��7%Q�P�%��t��*#�B5��P=�
+S�j�D-�$ϩrӀ*`��b���w<o�g<��N{�I�YwvΚ�J;�Ų�v�z�r���r�v��y�Yz����[š��H_,����O���n�%��;��+�w�u�ٺ�@"�֐�IR�(
�J��W�����[�v&-#˳�,�ێ�)������
+�J@:��|z���	�;�x����P��Ѻ*��s|4�֗��I�;��R�����r����������^/�_
��/���������e�����o����s��B���=�-��-֋���R��3�mT4Č���7"�L����
��"��C�����3��(IPe(e'�&�Op���T����4����41iR�-!	��桞t�рZ*rLg�ge�	�9#N���2�,�
�3-���
���V8\�߁հa
0 �wv˄M+�@(��^CG~����
~�7N�X��|��:�}>�x��I�·=������y�2���yS��\�<7�[w[�Z8-j˝V}V]6�ú��h�E/�x��c�HL
+��o���o��2S�+ȓ���|�������8|w}u��:��⋔��wNO��'߫�����\^�Vÿ���^㚟��ҧYY��:�%+��TV[���ٛ������������ʳ
^�浼�M�c|�I���q��)/�f�Y>=p��J�}h�3��:�v�͠k�S�5gm�~����o���i���\�gu���8��
;nx���@���ncd�Mr��1N��E���D�#�Ɔa����d�,Q�d���� �
�%-NI�Ѳ�JC��
�R���'Z'��B1�������� _9+�1�CW*a��~o�[m�x��0�0—�	[g�W�F�)m\��~�l���I*�̺���
�M�Oա�ܶ�/��G���Ɔ�tY����
�F�/��6m�N+me}�gq�5�����NoU�*D$���M
s��9���WI�uV���;m+�x�j�m� ڳu�k�ж�E��̎��>ڢZc
+�ld��e�wڦ��n�����Y��ޓ}�;�Ua��/#�s6���~�l�ka������^�i���Θd���qT���ߴ����}�������㯗�o��޾���~�y�E��Ջwx�m�J����'/�z�����{�+�"��Ĕ<ey�?~
y
�EA�]����/I��Qձ|g#k��]J#y��o\��
+�s���W
Yn�����������緗^�2D�����(F��|@
�F��1p5�aŨ ^�G]:^���G�Yi���:-�ߓ
+�}n,�����n�!�<9�*篑2͔ip�)K�q^Sꖌ1'J��v�;���P������#���W��aX�B ͡Sf�0�@�;|äGt��KF
+�t�@aS�.�
C��|�k��w�a�.�#n,��@:p
�w
���%����
�%'u6���WLK���,�'
�y�����#�
�Yl�Ӆ�N"��|.�
�qk�3_�\(�%H!] R�{�� )
+/�|z�,�
+�(���N[w_��%�ZR
�|����	~���
��ǧ��S��T#�B36��������
9_'^+(F�2�4
�/��4lC���
+B�,�X08R>�;5Ni�W��
pն� D
����GH�|�����
R��1�>��*l ,C��0�j�c���Ƀl�jc����PR�ђpJ0vy�0I�l at -[��RS���������&���Ț+dw�[#�8�����ݬ1NM�!�Pq��
+K��>ZTs:�`���SFUz9�vT���)���'^�u�ࢌ��x9b��]��P&N�PK�L0��0����JG���J �9�]H��k���1�C��$FL{Ǟ���[m�+/F�x�4��	0 +���
endstream
endobj
11 1 obj
16237 
endobj
12 1 obj
<< /Filter [ /FlateDecode ] /Length 13 1 R >> 
stream
+H��W[oG~G:�a^"���_��
@Dh-E���:�O"��������/���=US�����F����2>�-jŴW�h��?<��]gj�K�BQŦtJ��l��U:өt�BT.F��mQ��"J��N����;�*炗�i����-X�
{:(m�(u�Q��r*�hvtR�� :�s��L��)�ͫ���~ YoTN0�����wo/���G�����������Qϯ>\�������~>n���.������JoAհ7x��Od��k8ӛ������'<����o?o�����*w���F��t�'��Y�)#'	3q��^Uo�v���/8
洰LR�40s3h�5���7c%��C�~V%Z/�8)�n�� �"��&:։9~�b͕�K����V=��F�q�`K?��C�v^�v,��bq8.CpV�8	YA��𾾱C�6c,2��S�]��`cL��xb�D!�K��Ɍ�'���1.�:���b;H�Z�q-�=�(����l�g�-ٗ���u[�b
G8�H�)�.�n�>��x�

+P�F��	��
������E���I����ۜ!�Y]�R(
=��D��9i�	��@
���klw��{�,�H4�x�c�ʅ��ȝuQ~#����kC�6�}ƚ�I�YN,T9�]S�[d�J���l�x�R���]��6���^��*Y��
I
S���ҕ��
��D{�����r8��ە	�9��ozB�t�Q�q�u�2�5��.
gnқb��]pS�z�RmƮ�����4��	�
�]w�@�
�1jhTB
v�����kR���He�L�
+V̒�Dw�u�:q�
��%�
�jَ��b�.�
\K�2�" U���8���5iH�譀��{"kՊ6���u��ci�s�K��%�1{U�h���j�̤QF3z�Ou͢�3ڄh�ƅ�3
BWR6�NҒVg���n
�{�����29xZ#�}0
+'b�su��9r�@񱘨n�lh�dN�j���͠�3"��Ӎ�g>���V�]��0�z�N�
�)>�P�.�jm�W��T
+�^no�n���HO�!�����D�q%Ś��'�%��n�!s�8AEk6€pΎʅ�'�����s
B�Y�&�|�J��1Q�æ6�Gf�Eќ��C:
��<U��ۨ�}p�t#�R�������&�,IT��
+f
\�.�d@��X�=Aռ���	�u�J�,p�/XleB+�~�%ٶ���L����V�F*�x�"Xeɵ�����=v��¨L�zg�h�\��؆��޷��r�� ՗�
+C ��
T�O��k3CuQu��e]S���	�ͱ�^UO-^с�2- ���ٲb��u�+�� 
QŦ`����4�{Q�b{x���.�C'��%9��=�����1�͚n�;�� PM�̖�lZ<7�U���7�mi���[�n�@�;���m����†��M>-؜#��bG�t� >&��X����|��0J��:�ޘ5�c>�a�
���̢hN�~u��y��i��e��湙ǹnJ�^��YF�n��y��i������׵Zv�8��5!�gID!��5f��H ̲�yl��"�D�
+��*���_�Ҝ�d������,���A!l�<	�:U[RYh������'���
���޽8^������=
+��Շ룰��
��r{qs}���ã�\Q�3
���'�pŅ%l|����?����������vY�����,����Y�#�=
��W����-t��я�?~��
�-@��1h���q
��$�q�)
+�2�Mǟ�)
��L��y›����
��_��vc�q'?��k�s�|�	sѓIW�����|����2vo�
��7W��/w��]�&�F�)[r[�Ǩc2[`�!UM�G�
�	sos_��{v/����P����x�cM�/_KN ƻ�
_�^ﮏ�>~M������_�]�w�o?���n��˫ϛP6Ȭ��������=M���M��U:ì���x�F�U�
+
�+r��)��*��O��&�G{�ZQ���|`ųS�b��N��S`����5���$:����oe{�d;�����C-ʻ�
+h�?+`�A9�6�p��

�2Ϭ��ʉ�I�
֤��R���g�`:��}��T%�,��E�ƽq�3�
&'13�E0#�~
�`g
k&3�;I6C"aj�r�h��&/
+�T�cv0�
d�9�uᨊwA��>��)�-dt;�ٰ�C!o ���x ��f�nZ`�6p��H`&�2m��tg:
3s)y���c ���A��݉���{*�c:�Y�[�� ��r���� w�����\���_J�
\)�o8Ϩh�|/$p.0�q�M1-�
�81?>���޶gܶbI�9
��V�
�l.QB��n�"���@�G�����N1
�O@��Z0c$OQh��aE-	[cVԂ��;؂��2��E������I�
l��9���g�%w�B-1��
�)��7�������l��ŧ�uv�n�|���`-ra^j�a�n����+tm�:젋�b2e�.��‚]$!�M=�.�K+v)c�ff�.�w��8�W��L��E�)v�]�
y�;�F��݄��]�F���}�?��V�ib)+t�jjmg�n�5t+t�4́\�"����g�0�(3Β:r�D��v�E�Υ�"�Tr^�
f)����j�#��'�;�	�H��X�>�߳3�:�
��ݳ�ve%Ҕ8l(
+/�B5��u�PY
ԝ���E]Ir޸+��.��x7��k�P�;y���1
�E
h�

�Ε��� +鼓����E^�� ���b�_r��ޅ�ًt�x�w.�;ث�7/������Rس}�p
�N_�׸?�

�>�;�p^��+��}s��E_Trn;}qF��]>>�蝾x7�;}b��}���|��=l���ҽ�����н��
+
+�P΋���R����
E���[�
7�"���I_��A_K����
�u�/�� jw��/{��%��]��
`C�/�"3�|}��͋� ���>�
\H��F�rg�ݺ���^���;؋�.�<�;p�+�̜��M_��X�������/�j��w�
��;}��\��/>9eꝾySg�A��6����4
8枚�����/�.`��݉k�f�qap�Q_�5�R�A\+�ȃ�к�u,ޢ,:��[� �0
��/�&���wC�Ǐ��������䱄��
H�h�@@��w�������V
���}��R�
�n ��SxZ�ߚ�|�A���"���t���Pe"D蚩<�����0V���J�0�.����s�k��o�S�F�ܨb��[����
D�?�}1���4?J5
eƽ�7n ;��;�$
��#m��H!�_+w�Hv�
+,�O�A1�p1��Ռ�����F�&�$�jD�[7���-��
N���l��$^7���Uo<��\�RW
]�C��H
n��j;����"���
n���(��-'�oY�j~U��O>�TMѭ}��	�{�c�s8� �L�oP��
�W���d��-����&[�Hb#���ݨ`�F���F��m|�&ۙ���v�Z�:q����j�m�tϸ����]�=�T)�G�X����fu�M>�a9�`���<N�!�0P�G���_��VbД��[b���`%&�0�?�nW+�ꊾxR�RE�`"�Rz#��c���|��1`����k-�'U�����X�����x���r�
tɎx���1/��_��O�{��F��#W)Kᤓo��<��y�MQ���x��ɂ2�QD�*V�d���{�B�����E���C�ͽ �w�����J�� N�L]�,Vl��
ؑ�
�|�1�j�m�����'�oA�i��~��X�J�"��F	eIJ��>
�i��3�k��^�kl��w\�ׇ�n�� E��Z���
&�p<��������3�w��ц
�D�����x�"����P�(\��(}����0���Ɗ�Ԟ`/Р}�v7_l�Eh>�(���y��M)7��N�[��0�(6�x|
��1#�Һ��R��
3p�8p[˺�[��R|G�KJ
�
�ݜ ��@��s�g���5P��]�h�fˆ���j� �S*�;�@ƞµ]����Ƃx������!��C$�oFl>A<�f�c��c}���!�F.V��U�ݐ�/���bAjp��o��'Q�E���Í�g���kB�?7�+�
+�B
me
+�b�C�Z†���B]��뎄�����^*�S0���n��h�Y#���f��h�ӣ�׵ ������-�-G��(�j�I��*#0
�؊᭰.��� A}�5�|@�EK�}��Ú�B_ڢl׹�5�ٳlb�h�Y�?'��kq��;�u�a�/jp��N�ɾ�
�����6�w
9#@k�%1�2B=j۝(�X�lg��3ir VD}'qrZ/�-�@F�+d��5t:�q�6.T36��)a�m��{+�"���Nf���OcnȦe��X`�#����a
�َ���\D�
85���z��#�zz�
�
�ڎ�� �����X �:Z�Y|z�F���ə6�T��+m4�l
~C��T�`�����C�al\� ��'���2�T�.���S-�>3�
�S�	F����S�i	B�����ì�sB!W�p
�L�s���N���_Uk9v��Y	4jL9��Lr� =�
&I>�Z�����c�CK0�>����^M	Z�3�Uڢ ��aަ�Z�b���_g{_�5�G=S����>�zMv�ƺ�|�<�?�4)?����<����@�����L+H5
	
+����y��u|�{��/-��<
+�ð�b�a��zQ�WU���Oୈ������
�,� ��"#����{<^1��Uf� (� +{���XGQ��V�j(���z
+
+��A�7f�(�A�x&TxO$2���ߡ�;腹��h$�a��ߔV�A<|��L��a`Ț�8
+	��γ���x,� [�ڃ-�}���Y���9�0���a��;��G��iOf4�w5|b��q�Q�'��=�SD�
E󃍼��L��Ձ�`q�E����Sƈ4SU/>8v����u

+%<j�/��C/�� ۨ֙�
1�V�w�����1@$ K����Z��L�G(��+��n�'Q־W��Y2�Rf�V�B���x;��xj��ϻu+^��qC
��SZ�r][śej5���U�Š�=��Ǚ�6v3
��O��Ȱٴ��4=��W�}Vc��L��_i0�����a�8��s��
���²o����m6ѻ�΀�y��ʚ)�
]N&�۝	<@k�^�#���0	�q� ��7n�
D#w�������'�����H��
�
>�������<k
�)1b ��(}/��v����$d��>������!�ljm��aQ�z�Qk$h�\/���
ԇ)���CX��O<y���\P�X1��6E! 5
>��E��㞭�F$n@�r�u���G1�0{��
+Yc�Ts�;$�j
�P$K����k����u?<?
?C��W3
+�1���,�zh�^�<����v?g㒝'��W�j\W}7�?��
2�}��<�N
:$8�B0Yvl�(&?����g���x��a
[���:u]�
+�O�v3[ϐ���d}\������KH�2�-�J�1继gߦ��
߼�{��/��'}q���q�?;?
/o��
Z=�=Q�����N
zP���O��O�}
����˯jx�g.^�V���|+z)f��0
�%��|��w;��8�Ť(hYG�rF��
8�����~E��W��iD���:>�*�����zϨ�t13�3�A�Ƶb�vi&Ȑ9.���}���Wgw�_����������(��g�)�_�t���nx����������/���×����J��!b���o�e"��
�o���WPx���yԆn��Q@ŀ{���r�IԔ�z�d�
1�!KPϺ(�L�,j�k��Җ�y���"�%�$a=�U�'��zCa"E�bWQQU�o�V�j�qb�J�
��-�ƿ���#��y�#,$]Y�����%�2�����/0ڊ|9BCiLJ*���6���0��n,����P�Qm���47��xV�U�'�/ũt���ƅI��.�p;+�K��;l�|Xw�h�9.�{X���B�s\H�s$@��>'$�hyt�h��t
����,B7d���dh6zq��V-����wyx�|��y���j!��ZY	���D��-�%P�����'��>��w&�[ɋ [...]
�8_��
+������	���5N&]W�fH���.xg�d)��9p�}P�=�!�~���x2�]2��bⰴ��@�'�
��G�\���\(����謫�'Dž!�1u�a�O�t�����y��
�{��Se䋇�:O%=u��;��#�䛈��}�ߧ!����/R���1/@O�񪭘�GH
~X���Y�	��q��%���-k^�س�@H�
+�W3#���x`L
���a5�F�)V��*�P���d���_AW!2}X�-w�Z
���Dq� 8"N��Ú8���
�Xr�v [P{��
97�#������'�
�LF�I�8k
�*g�P~�S���)2��*f"��y��䇍.M0`e-�_���1&��l�H�OK

N����
���aD+
+��b�U*)��X97	s���/��3(|lo���5�)[�B�[@n&F�u���LE_��x�<'�f�M]
�(�/�kǹ��
^;�%���9��0��!��%����y]{9�kp�_L9�8D�f��]�,���Rg6 d%>(�
+f�d-?V�R߈f�Y�FG
>�8Lh42U]m���)i��R=��q�XYK��$(��y�_i
�$�x�iω�)�)	W��*�uHv���eHAu�i	T��c��R��a���,����0v9(�2䭍�Y#SBq�2
+�J�n�{`�.��Z�;�Z���۸�h�-�&��	{]X<a�\���\������z��L�s���H������� ;`�9������hPJ at oʺHD���K
`;���]�+��W;\�\��x��Bh'����*L���&ԕCA��V���P�v [p�zܤ�r�`�D��F��z�L�����gǠW.3�I�.��Y������T�1��Iq���È����-]�#�;�.:A@�й*�
��:~0
E� U�Y
9�6�B�&b�$\t]#\����M��+Q�c�s<�.6"'\�Q�\N$�Z7�_���P��I���
�{�2[�
�k��?r��:Ş��?ᄉ�hT��6O3�*qC�`�#�_.��T*��a��-|��dy��+�}�b Asf@��
+�
+l�Ӕ����"pe�m�� �T�q��-��v����`���̢��������o��kI&t&�}��G��ʉ��љ�qdd5d7��#>�l�k�8�9l���7?m�l��-Z�V�px�U�bMc�@y�T��0Uy� (_��S�x�{z�mz���͋��?~��������#������)���x���~3h�
	�vO
v�Zv��������`7|?�����WuV˖�B�R�Q2�>b�]�'���ߎ���,
���+��>.�ꭴ�
+��[�5�/L�,W�c�u�D���e7�b2�@�Lb6*\-��;-�;�����a@��n��O�Y���7p�Cb�צ��+gy~�SO�z����/�C�%�ݗ�a&׻w.~.r��U[��tONA�/�i
���^z��_���&��xc(~�,�,�"\�BS^�B��]
.
��(/���4B(�0$��Q����Y�3�������V[I�D4�ow�<<{>\����j8���t.ynd9B<������n�ؔQ�F��~^���ڏ�
5��b-�C�mÚ=-~q)�vL844+>H�Rt
+7����2$�����HsPZ,Q���v���
��8@H��p��|

$�x�g��ױ�k����
I7�^@Ȥ����
�l��rmQ��irP��<<0byJ����r4�c�&�%g�/L��z:�E�l�S�C!�Ն�Ѿ�7^�}�Y�*o�E�b�X��o� V�\K�f�VS�V����{�+6;h��V�r��W~u4VS�Y��J.��r�[nF�0fN?%�'^R�	�5~>���2-�3���ru��Q���G&��t��Q��{�d��/�{\X�e
;
GG���=|��g�F�:D;?�`���],jS04L0�A
�h�1�m[]SV��
+�ӻ	��z
C[�ʴ�CV
*�JJa�pܻX��&<
�d�6�
�;5U!���ׁ���
B��
+z�x�����ji��8�����&`o�~?�����! "!��HlF��-B�}NuUwW�7�0�X:����S�}�$\��͑M#�V1�
+\u����a���a�R���X��UTpc���
�]�;B�^
V�����
��#�f;l|�b��(i�
���K
�T;���p*SZO���@��&���]�s��pGǮ��-quɾ2�S�+l]B�V��S!7��Z���;�����r0�s6�Ht���o��z�^�Hi�МbT"�t�0��
+-�!�d,\�y���Y�`ܗk$6�p���p�ݠIA�+]Zq�q��e��k"���`���R�
��A5���`MK�
�

�Ml5^[,��?ΖG��
�A۽_�N^a�
+�н�N�3U��)�v
f��齺��ش��0�Ճ4�
���4���Z/?���,�)x�^f[irg`�T�{��Ҥ|U���hX<}�-ϵ�B�FV���� ���.Z�R��6�o
D���Y)&��(���R�z��}j	�h�`�W��3���
��4�_b���N<CTݤ��X�:@fe�%L��RY
"�o
�����i=��v����MY-^�6qv��,��°?���R�L*NF
�@�LZ���L�1��p@�
��a��%HUiG����ǽfK��U�
R�u�H��v<��8���
��
_�<����9\��Y�my�R��0_��U�c���KՀ��M� ��ͻ��@S6�Ϻ�l�JaiWe�\Sζlt)Q�]6���1ت
�
%}K�=��V��2��t;�$�
 !��29��Tl�����0�b�$�@�x
+�����H�C�%Ð�7Ak�tK�-����������rb@�x���+�:ը�c��f@�~�`)
J	06cfl
+F�
>� �T��N�*Ӎ)@eh9
��Uk��`Y��2"��r��0�%���P�!�o�Daʼno�E9�=�
uuxŶy C�"�+�g�xE�O�	0�i��5����X�]w;-�
�m�5���݆Xu��A��7�z0.֤���G_&��h�
���:�A����r�jUa�k��%#�8oW%��!,8^�a�O�?3��-i	k��w�5�����<
�R��A����Q�G��r��
r������$�=�t��f��r/�J,������#�\�����q���>�
QR�
�B���_�
W�:�lH���o���P
+���h���Ԅ���,U5�Es0��0�
+^ZI!S��o��ȴG
��M���5bmF�G�D�
г�<�
�i.,�`�v�_
g|-�dܐ~�m��<昌��%��̘�sӸ�}4�N?HXlW�=�
�6�g�{��#U4jL�+����8�9�J3���-��sJSF�^�i�V��
��!8���N��s�1
�Rv?��p
&Ny<
+�rEHk1O+�[�&�|$��؃H,�
p�Rh����gi��"Rj�(䧣p}����e�^�;R �V�5�ʸ\���$��o��p��aF�^�ص(X]���.��F�͹Ɨ@U�����u%變`��S}Q�Т�z���&ъ��`L��� ����$~ZA�)�6���K�]��<���}8 <H���^N��iq3ո�6�;	�3��h1)W�.I��
G ��/���EBĥK�!�t8!q�ż�
G�&4P����>��)����]t�6v�0?Ky�,�'�I�U��\�$�Y��;
Ԟ̨�\�;w�
Gx��*��	��P@��Pl��5S����x��8�4�Ih^��y煽HE!��� c)BÙ3���3�j,;B�����<
s��L!�w���%ΡQp3F��jEA�YL� 
���0�r�h��(��0��|	��O�(�k +3��ȏ�) ��4͏2�]��>6n&4CaJ@
�;�8��X
+�,c
A�t���1I3��/���
�I�bd�$]�o�����|�B�̇ �
դaL_(U
���O$ �j�%�` ��Q���0���*��_O娙�7�
�F�c��@��)
5�J��F8j�6s�Gŝ
s�Q�Z�:����C�P�rT(��̴rT�m&��
�ތpP����p�k�+"
A
aÞ
�A���m~���l���۩
T0��f��K�r�L�W�
����QKp�H
+h�>��(�h�ʶf)7X6�QA�[�(G�O���r�J�ӲQ�J85*�}1�(~
�ဠ�t(G���V��
�e����r���r8�W5��0��
`����
�l1�Q{�ԶuO=��F�y���ڗ���A 8=��A5@
����f�c���S8���ah5otUE��)����)��Ū���U!3;� ��becԶ+.NM��Ax�eoˆ#���p�:!��(�]�o,�����Pt�z7����vպ�DL�ݨ �C9u��ib&�Шd7��8
��
�:�a�
���߇�ǶRh������i� }���mT��%λ7⿓�"~��y��U�i!���Jr0�~�$G�����,Q.�m�wlP��	N���k����E῿L?��KJ�F��I���8��6N��

p€#�,��̤�

l�e��"A�lH\
LI�8[9���AIa8��+>��|
�rd&���P�u!V�Ku�����F=�U��96�O^R�i�s�
Ɋ�02S�Q�b�aBb*�0@��`�*PrX���l�w����Z�Gn�;�Q�u)f�k}����܆e��.�
jqy0sb����
�+!�}@x
1�!O�������'��\nM��MO���:����^��t���Q��V\;{���`$�s]OK 
a?� �
�+�8��l9a5������W��ϭ�й���Q���U�K}����=�����|{������������O/����������~�����a����O/������/�?�}�������
�޾�X��χ��g��g`����_�����™c��?��b�q��{�~�}c�L"���\Iv.�Q��`���	��_]���k�5�
+Bb�M����:���D�R:#��3 �Bq�
޷��w�Á/`˽�U���b��r��ˆ�����Ԋ�!'�7��‫s�?}���Ȟ�h��pw�]x��z���[��Hf�&&2ь����@\!)bg{�<�G��[*�3#ȣP����T

1�D�� �9
Ζ4[��"���s!)�����A�-�v��m�GB�����9�U���MB�N�~��6��k�$*����.&[�
 �C��žf���
�9[�m���T�f1��V9-q�[Xs��Ԣ�+����{',� ������ZFV���΅�9]�0r�5��S]���屐�
+��"n���)򮮺
��6��%�~�j9b
�ix
��F��>�Y�9�M���>���&G�X��.� �f�h�Y�e�N�@τ�{���:��z�{�/[
ёB�MZ�73����P��<c߅,��t����
���wlg4�M�S�L�oʭfH���t���X\&��k�mW��6��#54I��9����~���4V �8�[+H��Q�V��Sr��߄�`�m�(��n����6���� ���J
h�/[�L(; �rΛžO
z[<��rV� �
P��dp���@#��I[�OS����˷��A[q��6Ĩ8�m�rX�\�e&�}�/=o([2�	�����R��H��@A��P�s:GlE_��
�]=�&؅_kx�/�X�Ņ}q�wM&D�jlr�Pt;7���M8�baX��*��&�36�<�M��bʠ���;,�p�r���0��_!��86ha�!�~U�/�s�;�M(
���x��.=�Db�R�̵f|�B��XK>�������9�G�Z�����(x
+��b�l���e[髚%���z\/;sA���W�#LN	y�7��Mk�R�ʌ����,�i�q�ʝ����{!�5q��:��g��.Ə�rɪ*��������:��}�!��[h���p��8ioH�
+����G.<{�$�W��ħ
ߟ
.��cj���Pq�&*~܍�q���6w�I=
+�1��15���������h�R�s%8��:�j�=Z��*
�=�dY\�J{/&K���e�2 }[��n�b��H���s9��W�
u��

���<��6�)�,�C���[7qj�"E��|�}��婞?9�������'��Z���ݷ�߾�����ݻ��ޝ
5����ܭ��˻�׷�}{v�	e��ӣ�'��^�?�~�_�
?���s8y����[�y����U�ͤ/=�2�z��G�oq��
+t�_|�
+�S�Ǣ��A4(��e�QX�e��V
p����f�Cb�J�7�[z�5�7erWcZO�"�v�=�?�C	uQ�~Q�)l �0�דB��U�"��2~���Y�[
]�g+jRYYb�>���h5�qχnsz���-C[HJ|�	O�[Xf��e:H�;��g�X�i
�g�GE�N�:9͹%ʄR�;�צ��@�?3���i�`��*��3b|�{������u�|Kڞ��C�
��Qq���~˚v�Ԭg�y�8�ȓ�M6���yc��b��T����y�
+�Ѓ�5]��ʄ+kc���xGׯ���
+���fq�M#�<�1B���q�Yf�~�
�4���,�� ��B�;q�������,V���o+V��1�sz���8&'�m
=�z����
�6��9\C��Mȹ�}VF�QC�r�%l[Z�~]u��\����*+hau��&Χ�S�Pc%]ռ
�&���"��h� '���ڷ��-'A��u'�x��1��v�YpEA�c�?
�J��P�����4��w�Uw�%�}|UO��,��Q��B�p�U�UBM�J%e���Jm,��9��VP��֪��R����Z�R��B��A��"WL2�w�^Y5kE�����N�;�9��*���V6R?����3۵�盥)���B{�=��k'$|ܷM���,n�̮��Ơ{�M�+��[�b?�
���G�yUt�Oy�$����V�,�+
��Ӫ����ZxW[eH�)�pn��p��šF-5��Ӫ
\5d}�Z��r	0t���*vr%y+��E
SfV���.c�ы�c�n��-y�Eͫd��_%�
 [...]
+_z���y��3J@��u��S��)�c�
�2���}|9u��ӱ&���<��
hk%��m����Q|�t�7
Z�Gƶ��n8�
?e
���].�������b�./�&���������֪�;ON*3�/1���QckA�)Ȁ���j�~�1�d?*850��}
�
+�[�u�*=���`et�
N.��w�'+���_�!�l�U��JތL*F:Y��@	�^�l�ь�����8}B9<�~we�O�����w_��y�槻�o9�	n����ST�\ӓ�g_�{������ϟ�ܼ���w�i��h����
���P����_�)��m�C�:��
[X %Sӗ��mNlЅ�0vq��}�O�C7�x�\D*
O�T���ɢ�M�;x�=�/E9�y�wH�G�$�c�����HA-�Z�H���$���|�<R���׶r���1]5�1��8N�2%�В\t,Ы8p���QG
ej�/��M24UR���j5��
s�qu�t�LGm���`6�!����m���rF��p��i�塯����:
+�m�^��࿚)Ws�(�e뵴��G�
�}6|�y�M���>��n:i�t�oh:
o�ͪ�(��Gv�#K��@"�c+B?�� i��vu������XH�UV���A,�}�o$
,���@&[����K���J*�_~�V at 0@g��o�����J�^�7�+a,A�*8~ ���	�QiRC�R�U�r�*^���T��A��UC��^�j��?GQt��$*��
+��_��;89;1k��xD�/V��[� B�z��f����e�:T9��tj?�

`��0��4���9j��O!�^�9�OG�$+>����2�Ѿq����"E�
�ζ}��%�ͣ	���]`�~5>�"sJ��������� �RZ�e���x�⼩�� ��yY*��"PD��s�`�1��94��
d�N���
��,6�Y�r��/$��
T�<�����z�
��3�-Y ��0Є)�V��Q&�Yg��W���#ۍƋ!����O��E����
�&=��8Bm���<9M�n��c�1�������{&���ح�3�Y� 
�\�5��:��7Lh��R�MW�E����������
���L����ɪ���t]S{��]k
��a ��O
�{�R�5�������d��u�]�i}�i�5�U�pEY}��_B����C���GG��D������AŽޒ6¨ϳ�}}F at Y���9z��Q%
<�+4Bq�t)V�z��\,�Ee5��
����hۆ���'O X���3sz�V�����l*��A��C[J�>3�m�w"��޻;/L�k����� B���(C� �
~�Mo��q
�6Q���$�k~r!���|�dS�K�D��w�c�%
�ü��ic�3��<<7�U���)n�B��*�#���Vʠ�A��С1B�(2�tPQ at d�1wo\������h�1<�]�wΪ���W���ޣ۴�=��*k��W �m��!cId �K|�ݻ|�@�`��^���Q��4��BK�j�O��K���ETx	=�{w�)�
+�����h���.�
+�
���
��}b��8�,� ������"	��1�sr)����\]�4ݿ����مp	����^,���}T�t
,f���Q�D��5@-�r�����Q����=�062�ǀ�~�&u
l�qα b5�<���
�9�ҭ���o�埣d���$c�������G
6�<�G����O.�zQ���T׊c��C
�A���Jo-�U\nj�𼅀��
��v�������hs  �Yo��M�w4�
+��b=b�!�y�ƋՎ�f�Ƭ}]F�
�X��
Zi.��U��*5�ŧбpq�˯�ȝ��"`�����~
˞�٪?������������\|��
�0U��{@e3�\L��p_�ڴ�ىQA2��
���</
�����L
���ޞ^���Y�D�R:='�,����"��}���k5s
��+s�l�i�F{�F���(�s��a���u}�����
!(���y��i~~W�}LJb<$|�)�i$-(u�Z���^�:�b�F�IMj�����o�$��=�L�=���=�]�O����
@
�Z��`R�@f�Pa���
ʫD
.�;M@/�����&Q��,b-��n�MD�A%�
�0�����JW��/\��w]�ĩb�%���k���x>z���[_cE�0��
����G-��G������m�u�{K^c��w�t�5��s�bs:MK��&�z+��n��T&�h��@8���ǿ�gݽ�F�Y�����!�0���"$�_�;$=f[Z8�ݡR�fZ�Z?v��.P����2�5Yp�2�x�/��wУ��.�q~���u
+�*�E}�GA��;����찊����a3)�w�
�xa�g���a�y�M��
6=��)�	4Xc��v�+�j�
ش
�]X�j��-�ӳ���y�`�_��e����[��}H
�Kd<��j��c%��r{A�!�|9�}Aue	�,��1�?�C#����ɉ�
NRWp(�;�Ošx
,��P��g�d0��
�lm��1&V��>g����
HI�3t�w��u���������3�.ؘ(L���|�䛁b�L6Mu;�W-��b�� �)[�c#m�

���*zŲ9ń&������rXޣ��Y ��-����A�� D�m$
����gY�赊u�Xtn�u�ErP��������1���W�=,�T̤j{�6�8;���SK{��xX�\w����#����5��^r ���E�n3��r����FW����
��]�/7z	4]����21�}Υ����Q)\�G!��$�AB��y�\�xF�0ʴ��/
޶��wº�<Eb��"
+j��nW�4����*7~�
r�F�v��)�9
+���*1��䆘̑�h��#b2�����R��#��
Yr%�<K�:.��)~��Z��
4%	����g�)^=
W�j�NW��MX
w����@�
	+q�U2B�w<)�-ͷ��⩎)5�}a���Q{�\h��y��	��7R��b�r�,1)�w�I)�c��X��J�*jK.��D�U
:֢���XK1H�d�t��|�N�6*��]f�܁�����+
����h2{�r�&�T��Iԉ쫎I�]2�����,8��
�x��X?�'m��
$��T=�

�"-kE���l�H�.�)>���D'��`[4��(!)
�/�������!�bƕ��8ډt�U�b�����n�H�8&�.z9�z�.vokEޣkO$m:+�餮
�����ڣ�U�f=�}�N�S����(�	�Z?�%j[�t�c�U���w�M���a@u9̾�RZ-
�(�I��bg*�?�v,Nm���L#.5~�{'�}�l-%�δ�,��U�D���I�Bic���ٮrd;r�� [...]
+�,�����`�
4����R
;M��?4?~���
(�Nu�Ȱ�Q����81������sy%BZ�Jp�z7կ�q��Z�C�0u�[fY�u ཆ$����7L螥c��"��J�;��ũ�.?}\�̭~bM%��_���-��Ĭ ��B�� ��;Ĝb�
���^�`���
+�2���9M_4��
�nRP�R�'�]秝e
ARg�ܯ���4ۋ
5W=XǭZ9�\�@?�ȿT� �;��3,�����*|P�@IJ�k�,b���&
-�R��x�5,18+�~)(��<�pr.{�WY$�\�/�(��WM��S��80[�tOJ[f� g+�85ܠ^�����[
:�P����9Z
h���_�N���@��L��IvO7P�K���LJP;e�w҂��I��_A(���
��k]k�{Y��x
`k�
F���P+����0<��j*�b�_m�MG�Ҵ�Bt���'� ��`ԅ;/��{�(H�7,i����[����
+4��{
3��6��1���_�qT�8�1�P��v����Q���It��FC>
�r���D� �e�&
���x,=��:����#�1Z0���>��W��9X�L���p&�n�D9g��ŋs�x�_��5LuO��?9*��'pץY�qc
�P ��G��EĖ)�s:��tQ9�;T
�.Նݳ۠�V�D?3�
�P��$�Z�=?,=H��:�̀����
D!���)�5�|��'�Uqs+:��p�GF���Wc)��U
,�ydI�����">��[Pk4�Y��
�#N�KXy�2�0���S3+�a8a��N{_��AE�B����X� ���!��t�#A:������x2�xrY�	[�@�x\"~��#��'QSjی Ԙ�6#�v��?�^m��9���c����1��D�響;d�����#����)���
���<�c�

+�������p��1�;ꀻb��

�ڬm�-a��b��6v�
f[r0����;�Z
+��ij(�ڟ�vPb���V#��/�Y�y;�4�����Zy���(מ�V�=O ]�#��EKz��1'�
{^ p��seu/�GM�ې� �����b�=��h��Ďo�]
�`�,�V������h{�6f�wL�&�c��ū�D��	;
E��L��:lI0�()��j� vW�  �;g�
endstream
endobj
13 1 obj
18784 
endobj
14 1 obj
<< /Filter [ /FlateDecode ] /Length 15 1 R >> 
stream
+H�lW��m9
+�[����f��M��t��J�u8�?��6^���:�^����Wo�>T+F��ɝ��_LR���i�
�����_��R{�Ù'֞>�8V35K�z. N�8=,�.�R
����)��_vA{���G���L��)}�==c����G
+�r<#��7n�1��
F
�
k�e�:R�<�3�����hU��
ddW�

�J�>G�����,��`�C=�uCzHh� O�c~�ȩ5��|
�g*�c��s����-��mt}���K�����Th]в�{a�8�׆�t�'{�r� �u�sAG
/O�zk�2_�J�?��z0�=Z%�z
EQ+WǪ�g�%��zj��3^�7D�� ���`�ͱq�������@#~]��ف��kٙ�
+6�
F�z+�:�20�%�to�	� /���L����(�
+�S��p���󒾿]J��+Ѻ��^����}%�w�����*��W91���,�^�
J�󢂿�y��
��s�OƠ��`����^�3�aC�
+�7�U�SBR�Ԭ 'pI�Rs{@4Ό�fD#�H��2�C���[qy���7c��|���9cp�hŒN���a�o�<
+�˄}c��!�+�7������l���UR6�n�	C�}EVV�2.),�2�^
���8�X_�q�
�r�QJ��R��M��K�
[�nœ`�	��6a1��~%V�x}���9x���h��Y��Y�Ǚ����҇�c�m����ۻg�G:���,<��I�1��&L������m�Y�z�;��w����p�*@����+ xxa�Q�U,�BX
+J��W��Y�*�7
I�6ac\�j�p+���B@�\O
/:V7ŕ��H�\S�r�<�[�&Kja��}L�n֠���XSH�� ���Ol+����6:��@D� ���R�;A
�Ћ|���K��
����
� CܝlŘ@n݅X!�z5`�i�����y�ڍ!����w L��
�ܩ��9�j+�9 .�
!4ԅ�Ws ��k3߻��^��t��Х�~.{Bsk�?T΄�:���ƹ��p�[���;���b�u������ ����݁/�;X�\J��NVs'��
��cJ
��^&��TөX����Bi��]8�AL����y��/���+��7���[I_E�jj��l]��ԍ̭leB��o ��݉.�b����V��VF������Si�J7�3p�dg	�ݭ�+��'i;yf�Y�f�dSr����b:oP�ۡ��ҥ�}�W֠
���ਲ਼XL,�i4B7\��+��Ҝ��͜�Y�QWA
�v���� ���0
�ѯӴ��Ü @���ڛa��},��"�Z�L�j��YP,�es�'�*�G�b�w�g���i��K1ֆ����
+`�P+
��EJ(�UT,y�W��ԁ�Y.�w��q����U+2L\����i�n�hf��w��Ԋ�U^�N�ܢ�S�'�4�b���|���>�6^�O
��jO��o
A�(��&��:��V���"bӫ�n[{*
[�]�x�ya[$~��B}�R��}XC"m�2�=��i�e)����bl
=�jR�R��v���V
�%s~�t�K������P�������
+�m]��� )�[1K��>����넩���q��԰�R;	����,�?ד��Ah/p��l�C)�
���g�q�t�j9's>61��$�s�gM�}ˏ^��~����~���K	d*PZviJ�ӿ�8�~d�:��{�̇:��"��2��v	Up��X�~��
+F�g��uP/��
��8�����Rr,CzL"�T�3u�� ;�f��U�̪��t��Z�^/e
dl���U����"*��Bp��
R�#1*C,x�Y�۔j��g�)�h�G�AM���	*)A�~3@W
�+U��˕Np���
I@�+�WnW�]i��Ґ�vZ� єi���ɴ��Z��<}*4z–Ո%�on ��_N���c=i�[܅��`9��ʒ�ֺ�śː;��3��Il�+�+�2��Gc���T�nDyRű��'z�	z�ۓF0v��f	�nOC��4Ļ=i��x�P�k
+L�,��T
�~�O4��@ݖ���+m�l�pl��g�ݖF0�Ҁ�vSA���Uڧu	��ҜB�c�k����O�Tjݗ��l��%��D�N4���ǘ��oc��2��-�1
�~�i�1�a7���mLcј�p[솕�6[�����
+G�!�?�/#����:�u��B^,ѷ�]nSY���濯Po˄���Z��;�R•�����
-V 3_Ia�".~�O� �Q�d�Yx �������u��L��Gэ>�T�P���|�QDD%�[��7�ε��8�����S=a��X�ՓJ
S�`!d�*t�)n|��r���n�"�ߪ�k��}�%�;j⫽���>��H�k���%t��w�\<A�Ka at jR��Ka4��e)�5�Y���Q_�";91�
+��cL����
�{M���^9s��b���r�SR���AT�{(�-~��i���M�z���K������k���stPj��<�CQ���Ç ��%�#A*����p ���+������xf0��8?��Q���/~�`��n���E���
��N�mlL���V"=Խz�ɶV�!
Ҽ�ov"^��Ee��I�*��<ʴ���
'u-5��TFqv���
Jgx��*P�w��A�K}���tW��e�
�
�?th;��w<i��75
8����H���n0��
���bUY�ߥ(�F�=�� w>1>���
f�g�W	��|��ޕV���x[����~����N��1u�a�X��"�iS~�~�G��]Zh�A�<X[��*ݠ
C5������V�� +
-��῀�.8�34�ࣵ
b�n�u�D.��1*�O`'׊z�v�9{��H�D�ӕ
+F' sn��'����'=_a`�@_L>|�v5>q!Bq����5w���PHׇ��<d��(x.]G������e-
+<1*��++�
�C�,�?��'�'[�^�G �j
vB<��Iz�90��z ��ߥ}�\
Fx	�
+`4S�� ���J ��^ܮF(A���w+���Ё�r��dU�
��,c��+�yq�+���'ভ�lGo{�A��~����_cg��t���a��]�\�K�w�.��n]�j��Ǚ<�r�(�ԧ �������'c�J8�"�)`���<�$�=���̵3��~{�-==����O>gA�f�Aܮ�w�A(��_.qK/�=��b Fg.Z�=��QdH��iX���Ϫ5r4� $�ǘ �X���w�p��� �zq�����'�a��cL�b{�;�Ŵ�CBܩ�
#�č_<q�a�:���un�4�+( t7���R��G.�iy}?Z�/�H(7B���u��Զ$���̢Tr��!
����[H�	=�'��OL=FB1���D�+� Z19��d�#�БQLp;F��Y�XBC��wK�~uMj."v�Y��ךM��	��
+��r��C^gG3Q�x%�=��3k���ą���
K�:B�&2�N�'fM
�8З@���=��X�N,ZG'v-��@�$k�u:F���V��e|�Tta�C<M��9>h�}�ā�O
����fK�8gK,6gK���Q0������wAXI
��
R� �+�9�V-�k�R�R��q��c�3��Z���^���
k�*.�u��OAB�:L��r*T).���z�����C��	��h��9s�+e��V�o �a�t�
�:�=^uO��gMו�
�c֗�����W�oP�͕��(I�����r[�gG+�hr}�Uf���e��z�7���u�ݨ W�YAT�^�~�Z}�̦Z����V��bFi�D��Zl�[g�JmJ�B�`��� [��v��A������u+�t���NF�R�T� ��w!6�kE�H�&T at -g9H��Kc��I\^�tj���̥)�-V����.^���D�A�Ch����ig�o
�S@�o^�`!��v80���mR�;�[��T5��PX�y�kO��	VꞐe^�PE
W.̉ �
f�*�"�]N3��@ou�}�w�
�C���㽽�/���N
p� ((.��1'��<�d�U3���dW3�}
+��L��(B?
˖������;���@c%�x�7����i�	�XY#
%�@�'�<���}?��B�V
&��V@ �?��V-��%�
@ڎ#��
����)���� !�e*�
�KCqI�庪�h��2,��,���m=�4	e�Fv�u�0�6!s�~X�:LX:
u�hX
n���2gXP���*�J)��ٿ�cAU�e��Q�C�0h5�s�DZ�v̧9`��V4�X[��N�
��U�aq��a��_�`�_�k��
��l�ׯ �uV�@�4Pk2��;<.|��H����?�+	��'�K�B����Y,P����
+7GòeS��ߊ��N9� ��,�]�^��`�4,
�װ0H�a�+�[[^��"��Ek��]���,�
+�����,�~��W8�M^0t!r�����Ƭ�ծx����7h!��G�'0��xX���g %V�2<���e�)����P� �Q���l,f�$� 7ج�<��SCiM/7���2��]��r�]���jcc��0?<�z��[�E@�	�'~m;��X_������������Z���!��ď<���;�/
����9��N��lÚ?O�&඼���Ԏ]�
��
:�k��� �ӗ���9��%�)M.�
���Aҧ�� 
+,�<�{�41���t<X
'�*J�?
wB��i��%_���m)�Z��f>!k��
1�4sښ�42��ަb�[w�(�Tv�7P̬��-�[�G��t0:fn2�{��Hk��3תV4�;����{�l����K�M/���\�
��:�ER��S+�_��
��
=
�5���	�j_
+���|
,: �6J�Tվysnu!�	��!�œ�ma� 3�+֭ba�R^���Lj���UǸY�0��c7�T����
g;�6��Y����")J���!�������E
o��8Q

�����}�u��!!�@I�G%��n�����W�X��i�)�g��PMɉ�ϡ36���<xϧ��|F��F�VR��Ɩ����"f�����í�=�4<�b (�v<����������=|!�^� �}�>K9��z�����
<اFا,n����b�ر&�s
�4K����L(��?���ʊ�r���P�3�Ժ�6G�/��O� ֺ�jL5�Rr�ﲋ����tgH�����}>p�%�����J���y���
�$�:RH�иk�p�M]�36��
�-�Jַ���!�o9�‡
�I��!'iŁ`�D:��Q.���W�*�u
�0��(va-ϑH
��|Ƒ
�
*��%��!D�$VsT6��ו�x<��B����-h�$%��O�
�������3�
��DK	&O]�����U� TF�X�Td{��	=5�u�}z�1�s�0�
dq
9���u\� 0,h�<
�\v��*�˶��`*�t`�7�:���~��<�D�r�Ŋ�1X�^g"ڒr�%��X��U��44�g��rL��p
fj;��l�'Li9�v�/� �z3^X�SG��-�H���يN��g�ʑ,�q��ݡ�1*���2��	d�9���F��dUT~>k"q-�v�:2{��U����~
�G����N%�2�̽�W�L��ɓR�?@�\x �q�ڭ2HU��K`�/���n��n��Vk�!�
�W�~L<�e_�+VwZ�Bf+R=�S�󢆺W?��7ܚS[+ʘb���q�����{C�
6��Iۥ�Pm�1�Eg�u/�#���q��&v�j��ۆ}c�YГ���C�{n'Ͳ-�~
x�a�!U�Зa{�i w�ft��=�
x'�:<v

m�:��9P�Ϲ!pP�懡K�G
+��&X'K�?���R�%RN/g`���,2�Z��
����
+v%��]�H�o/ۍn��Q�=��MƇ���
/x:煽���O�^co�'�$�3u`���3�;G�M��:j}��I]Pe�&�.�aMA�vOt�j�n��K��bp��Ao��� ��?ޮ�}燡��iƱ�!���;�ߙ!���I��U����ҾӔ��"��0
�iFɳ��7�<�Y���P��m&sm�[���8-?���`�FQ�$���^��g���,K� T�n�����#�S�)h�X��%��� �&��X�Y�g���E������6j�p̻���C���q�|���Y+ʚ�
��ku!��G7c£ե����3�
 �˷�
�,��B
+�z8�$
�
�6�<���E��{e;)L�C����KA�u���S�p;59�}w7�a�u�0��9�Gӌ(;&XZ
��.D�	�ø��.3d��$&�h��r��}�����x����j�����<��;6��Ե�eT@��{�Q����2�`��2����
�t��<�h6 /��ڳ�f���5��IS�t�Q	�`��g��m���%�n���Ξ�Դ4?A�p�`'FXƒ�Ė<��yBÈ o��aP1�m$l��$��� �W�\_.	�f�
J��h�=*��0�Z		�ﭿ����>E���g��|$�^
��Y)�<����s�	
2�=u���@~�_��^�����}��WaoS������/:��Yk���U�j2�@
�����`�:�,�n�.��
:}��6��
���k�VG�AL��*]��Jl��ĿǑ�����N('�> y--��� �j�^�����{P|[��J4[����ݨ=�Y�g] Nm���j
�S?Lg��$�m�>b
�
+�����]ځ��tY��KD��������t2x4�2=��k��2qr���Te�v� 
�s2 +a�3FP����8�ЁI�G�,F츟K��������Yd=��O�<�zm���Ѯ�Y�3Ŧ�Ho��* E�}��M�_i!Xx4�
��/q�<(?��R��uUv���v���s�֣�$�`�W�͉Q@��L��
+S�ՔF˺���3�m +�a�����
�
k���6�
6-�A�u�E�5�j6su��r�����wP���� ���)%Ϻq�w7���<�2�U�Ϙ9��e7�l��ػ�&�Ҝ:�+_j�tª�H;��X�XMKjd�3�J
+"�/y�
�5���k��l�
,��k�v�Q���k3GK8��Q6l\�0����=�ʶ?'���6�ho��Q�VT�*�lh�ib
}��
�x��@�T$M����1�~?(�΢Ӱ�Qy�6*�t
+}�ȕ]/
��F�L����T4��¢�e��@�1"8c�1
|Ȉ(\s�|�F�Ҙ�����ң��F��T)s=����ʃ!���!�j�8��L
ou�� E0�V�OP�Y�{��r���
�Y�)���B�D�Q
A��㭐<���*�Q�$φ�L�f�2ߑ:
�g1����$I9���ŷɒY�f� э���_͞!�a�j�`Nj
�u1w��[�T�ֿ̽̄E���CHC-[d!=�:�a�H��
'�nWս">�M�Ǒ����h�p��v0{�s�Q�U�:,,^��6�:�K3
���x»�J���ڶ��sm@�[��5X$;U��z�!���|�DH��tP"ً�y!"[��%�J�F㖒���G�5�ǁնM�
e\m�ƒ�ZU��ڷ�n
�hr�\�l���qo��r�Ӌ�i�=��N���Wp���v��K[�������/��8�ӊ�v���	1�.��uw�똈��8f��p��)�r'�y� �>"	'c0vu�;9�p�����upx�V蒮"
Sy���;p���V��vF�����i��,�:t��.�f,����
\�tL��ٱV �)KE�s
��u�	��2�W>ׁ��c!�
�B9b`�a�Qg���m��W�=
�vO Mm���s�Rq~�I
z
�M�s���
��:	Z�d'et��w��)id[�슥�����N����1]b��7��PqeuP�˟�Q�>.���Z�,�UFO>w
+�}
+��ۏ�n%!Ŀ�nۣ=�A�cAZ2s=�P��q���T����%�����ѐ��D���:�m��M�lF��`}
X�r�0"�}Ɯ�s��h���H x꽟���Ʊ�
�1��U-"�mQε�Hԭ
�߇G�m�	�s���e��;GYF��5
���؜D
����((�\aƈ��Ѫ��Y�]�ݴ]�66��6-��yiA���\�{�e�.;�h���~�\
�&�Bbuԥ ������u.�\��d����R/�@�5Se��)`7n�^�U�	��eC��=�G����IoFL� �q\ �L����u-^���u1�|?fݦSM
6[�@��b
����+�jc
���xl�6�d`��n�+��R����=~�6G`���S{� %45ڴ��h/��bŐEZ��[�����Ҏ�\Xɪ{��Q�f���
I�,cM8�L֠!QJ�	��BQ6S}�n��k��)�[��!��,M��5jd
|���o
ƫ*�%�Z�m<��vP�,�:6[�m�ꝱ�hs[
+�4�:��?�U�dW�}E��ۨ���=c�;'PD{2���ظ���g� $2�s���>GUX!ᯂ�
+��K�F�4R�ˤ�f
�]�2�-� �\��� w!�W�cRj^�1�F[�N:�ƯmM�n�[m���w"���Q����K*ü�`

�Sn�m���2%v���������|�����0���~y'�. ���)�~��ؘ
3����l����� �(P6^�]K�ŌP"��b���!U�"�r"��1[ѷ����� �D��T������#�ej�{��+én��O�i�J0؁j�V�n�/w�}�
��"�`:Q�0 Rx������Sf�`�l��5�t|�
+O�;}	�[��T���o*
�����%�a
��a`1��ۢ���$g�r/�1ʳ�r���"�*�
,&y��7
|r9/
��y�y��(�Z�
�5�eH��gf�=����𼰶?^X�l�S�N�V�z�Ij�]	��+���0�]/T��%+��S��J��B%���ИI��l����/z
Z�M�ÂO&�.l�t�v\
+gV_�:w�A�Ǭ�t亿�� ���$Z��:�K��)1�P�0njFLB':un�P�6��
,�& �n;�����.�e�a�k?J���v?��G��0��CM��v)��su�
GV ԫ���Ѿt�����gG�=�	-� �^�g!�Za/-��)�9dSZA��$�`�	R�c7���p��8
&���nE���|��V�RS��
`u�m��̓+d�4�ξ�d�#�c��"(���s�l�2��^���ډ��6�.�K�]P�ϖ��
�u>j
Sl��
mJ�DL�`"�� ]9<�
i�L_�*����Z�%�
ty����
轴�rm7�{bw��%=��A��.#��E�'
�!\�7�3
�H��
/2F��~�����h�O$������*����g �}-)9�ȶ�}���D	�Ce)JZ��	�"���/�D�	w��������4������iN(��U'M����cj@�M`@ڼ�mmHh{��_|�
+Ȥ����
���+RgiZ9�—�&���u:=��y���g���™%(O���Ey����'x/5_�' ����l��
��2�\��
��g�K�Wzo�N�$�KJ)�yg����z�@-�.��x�q�=�P�_�W���bH.� �س�z�+���7X(�ųnT!g�� 3���%�B����>�
�ܯi$`��c�Ž�ql���y��
�P]��Y��u�w�����jN��#]�b10�cT#��%�ڼ��;��Ѵl4r�l��CX8�����S#����~a��+4�"�w%�5(!_�Z�J

�������|��(��0���޲��s�)`�j{1)٧0����0Ā��������U�_�L;�yW��E�����
�tts��<<�
;�p
 ��&� �0�
��P��N���F/��t�	��~��E��u�
zo�gW���ʸ� R�nJr����)�\�u� �Z�c
5�H�
�:���v�.
�b�
����N��DK]��D,y1l�:�DA1��
+��5%})F��I!���Q��$
��j������&>P�@T�`���d_�
suS��" ���)�v+c����w-�.���U��S��K��n���S]���N�����P:��U��k�`
��Y�[J��@
+f���S�r�� ��Ub����F`�
+�uElZ=��<5Mj��V�M�N��A�5tW�t-�~@�
�R���7���"�68��!��q}ˊ4&2wd�҂E�{�Ԓ�@�M�y�d������5EdU\�p͖[�b�"u`.�Z�� �>�VէVxW���s5�������A��
�p|��?N
�$��H�E�٥bme��@P*9��������h�Z�o1υl�
l4vs�\�}LfQ��%��,�����H���ͫ��F��n���9'�4
�ċQ����T�W�u+�
6S8-a&�^�<�ߡ�+��,&y�f`
e���A"���`R�j-�\�.HS&���c
��1�5��?�hx��yG'���>��R��G[߻|����珿���#[���1u�;����8�
m�K@���<��"~�D��� ��R�M � %
�T��E��1C3,�Z7������j�̠Ԕ����lg$�?G��x+M�U̍����
�+K�
+=`q��V�_
cu����Amm�#2��!2�W�LLJP�yK���]޲�<l�/Fya�o���ʬ%tiqYK���5�b���~;�
k����.6\��<��g��W��yn|Ti/@���S��{l��kI�(��etyŖk���*[^��X�v枟-g̣��퉵 }>��w
�
��#�V��P�M����2��C<ߦR�p��<�ޠ�ù��g ��<�u_y�g����Q��Lmn �UJ
+Y���*� ����m+O��m+�qv���<��V
�
+���/��6K�0���@CN�y
׾ka$��R�n
�#~
+��;��V
�^��x��V
��m����W��2�7����u9�#��Y
�ng������i���9���~�VM�J���|� �]e�3
5�f�
#m��_#����
+Һ��R����ܙw��(�}
�ى��
d�Z�k)��%�Hx�l�"s#�ZA���
���{��YG�1ޡA��
-p�Y�d������=��zxNW~)�� ���kD��p�l��M1�tzm�*�@��в�ǖ絬Ŭ-;�t���ls�c�p���5�	��$Z��
�~(���_�R`q�D���!�؛
�U�NQP��Dۘ�d��QA�&�RFĦ��Ѵ"0] �RM�`�5���YM���,�V���ͻ����[�Ck�U�Ns�1J^7pbJ�V�9i�T����E*#��I�s[��ci^�I" ܝse٭����E�B�:6/�࿄WK�^�
���6��@L�˙K		3����؋ɘ��RKj�Ϲ��]�OG��JU��'
�F��k:S XRt)H�D̬�b6�V��
��9v��d�]�TS��S�����d�Yn���,Aƞ�Xh����
����
��23��.�����Yef�}*�?ou�Mz=:[P�5S�P�t�I����"�^T�� ��X;e]��v-g��X̜�ܽ�ݵlۻ
@�1�&�2���.+�U.���ј���P�Ox��f�����/�}=��m>k ��N�ybh�Y�WA�p�
�}.B���9����*���2��#|	�b:
��ފh1��3�H�*N�K'�q�h�n���H�q	�E
���k$Gw��Q�N�|
��{���8F	պ��F�5\X��

�܆�u�;���X:��"�F��.��(y%�x������\�3=��H�C1���(���y""�~��To,4��Oh/��q����).�ш&p���j$bwr$��t?
+��o�CF�j3Uy��Y�t�����pE�jp��Xn��F/�A#��'{sŷ�s�3��r;|����Hwe��V
5���f^]����g�bη� >{�� d9�~������vhL�L9�4{�u],�x��8b��{�pVg��D�=���N���ɦ���/��
i,t~�(�%k�6.8
�2Q�
����Ku��r%�a�q�<
��3��]C����۸$��M��<�
An�.w��9H&�|Y�4-ܲ�v�ɲ
McXfz
ۜ6�+(��|Y�H����ES|>9���$l�Yt]bo�� o��me�r�'E�
+�e4��8�d��S�'K�\t,a��7��Ա�ֵ�$L�4a��ф��E���l��G��t�g��
���Ho'a�o��`�L_��8��m��!�񜟇=Z��ȕ|T
�f���͕�#b�
M��;i�L��	���&�n4]G��F.��&\�F�J�rkm�
_����ߛIG��6S���x��<��	��Z�	
<a�i

n��>笃���ߞ~�36n#v	�O���Lh����f�J���UT掹�<I��
���ke�75M�{�g�5�+/�3j:gi�CQgz��?H}3J?�k�7E��zj�Lut�<�1�a�����c�h	��0%��!7QMx���
d�4Q}��g`�����ؚzaI̟��X��D������DT�Vթj*VM�X��C�\���� �r l��䤆�o��B˖���z_�Uh[�z3ƹe
`8�@�E��3��6�|j�,�߰
,�ob씋�K�Y����GJQ�
+)��Vy�m�/xrC֣���:������
�6�6j�G�
�
�
+kb8��G
5U���
�`�L'�Dp�áE�RJ] �d~1�Y�{���/�N`�F*Se��|�L�r
�2���B�(2�ىI�����u�<y�	(Df�p�64���(Z
+��Z�n���6�
+xޠB
��(�^h�,�خ�U"
+J#�1?�`M,Hl�ta���!;�,r:å�m�vB��z<�Lh�Q�,�������v���"p�1�ʒ �G�j�P��Foj񤑟��e��fg5�&MN��X��Ys�kJ#M.Av�΋>e<��*ׄa���E��Q& ��ām8d�S���q�İ��m���gp۸��e��\��|8��@�`�}�c�P�M
<ll���}�^����@'&�-� �2X�m�A���c���|\�`�vf>"�X:��Ǫ�xc�<\@�
���y�4�y�
�˝݌�<PX�X�o~�D����s��r>!D� �P,һ{�!�G��Q�^�)mcC�p�
yb�����.1G�
-�U��2!�5�>�΃��|�y>�΃�~u
'X����<|��<|�y�l���WJ�U;�,��׌���|G��|y*?X��Q���z7��;<�}��A��CO��=�&�>�j�iH���1(i�j�u��+��
���u+0��m�� �1{iW [...]
+���ϻ��[��_���(��=������3��H郝p�Օ���!x�X�xρŞ�z¯�#��@>��~O�П��{�}U�:Hg`�}R
v�	ޗ
X`Y�@
�
X�#���+ʋja�.ֵ[_����[ �a2>�A�J1%L��(������O��
��[4��x1��
��Q����3���(��J�&t��X`^�I�f-�%��fS(&
�n{���A��U�&�m��s
�/q��*(��y$�����S�/3�`�z��4�qq
+�i���pޟ�T��
[`��$��H8�� �XHX�` {J��`�����%�p!�mz8w/9h��ܭv�
Jv�k����L:�e	�����p�pɳ��3�Z՝��:��;
[��� �Zv`
�	XZ�m�
���Gd�$X��Mj�3��*d,���[�6=�
�Q�.� �)
�- �r�V0/~���u�mE#��C�`��P��z��H�Fe2��n��aU���SUP�RdY�Aϖ��K��
��(�_{F:x���%C\�}��lPD��� :q��2�(^F�Ӡ�4Fa�I��[��*58�?|�6
�Ԗ�
0�s�U4�
�I�V��i����
���b�a��/�p�@�:�#�
�c_��v��q=KuOX���^��_��
+��#��(]�t8��Vb���Kq{�܌p�J��8�V� �C�L7�o��I�e�@^�t�-�=��KD��PZB��z��̳T�bT��ajO�٢UoJCs�S�]ş�d����"��y�g	���.�&�
�Y5G�U9�~/�Du�z�"K��/&���*�%	#��t
���oD�M��
ԭĥUX7������I��x=��i:�pq*�c�}\�l��tDM"Vsi���ϵ[ַ��=x�Nj	��~������*ɖ$�aW̸�m��<-c�D����O�t�Y�aU��RS�  >�&�
E�u���pV�zk����0p����� (whw޽����in<N���h�b#��tp�Eu;-�˃[+��
<|v�s���� $�u�S�����n',��ږe�
������r]�����}q�s!�P3��LFUuE�#|U�B&�nX�p����� mq��y�頖��6KE|��%���<l��C�`L,@ȥ�"\ ��8�Ҍw(V���'��|�M
��a� AJ-��& [...]
�����S��
���}
����ǫn?����+q�p������M�
��uˠ�:��]<��5
^5���� m����F(�n;ǟ�#�y��_�
�`	�&n��G���˛�j�q�c�[lbł�
;Q��
!^����-n|��+�Ւm�{��0���f��~׸Ϗ�q]��x�a(�
��"���r�S��=�Twi�
��ɍx���w���ƶ�m-�`k�E����2A�l�gE�1��
��
�b�T�|]=��"X�M⦶���<X��b����8�8�k�:X�ߨ3Z�m�/��K���[w(Kם�$"t���Z8S��*U$ġw��pQШ�[���~�F�l��
��U��
+=���zeh#o7RA ��ckxo�#PR�9r����av�XLZ��h�A���f�������?	�u6sS,\�+�!�-VL�ܳ~�Zr�G�tF*z�¬�c~_��~�4
ЩS
w��^�5�
�����U������]\t$U��Ϣ-�
�Eգa��
�����o��}ZJQ'Q���X]|�[V��=��L��
�h�E�Y>y�ԋ �3���I�6OD��� 
y��a���¸dIY��'`0@
�e
�N:���"",kT50|�υt��
� V�&l�o�:�m虾��q��l�e�'B9Z�}$�y�e[�S���� R[��R�*`o>��)�4F�<��:A.�
�V�3˻A�Њ�؊į0x�:mL��<�^w���*�x,�[H�	���I���(��>V?�h��
c�
V�Έ�=~�S�٥�l�x�EʠP�G�`�l�>SOΞU+�� J|���p0�f
J�,�L\��
�a���/�NJ/�P��[�W�W��q&j
�qB��Cm�V��.8��(|&�^[���4b)��F<j�L�u���#�p��k��������#�ժ��f�� �R��e�6{w�h<
�\ߓ5v��
��)�ƠX���A�`͗
c5�G��Q2��[���Ox�
+�@j1�Dqc�M�d�~,N��b��b����w���X"�4OW໨)PRa E���nvL{���s\�,w

G���8��l���@	4u=�]�c�
g�p����&A�5�e'U��;<����
�B}�zy2 lP]Z�L�a�%>������d����Y�[P(�_h��y��#��,
n��D��?� ��E�C�G�0)�9�{����0
6��3NS�Ф \Glxh
���4�s��
+!��]�B�{��Y����	4/ԻCm�Ⱥ�H|��p��
��
+tli��I|��<��0��L��v�3?�d�Dm����Z�w�8�U�����i��7�Ŏ�f��-��2
+������� �����+_`�O6ڬ��>MK2d�![ G��n�$f V�\����"ާ��h���g=��q�e�VT��ra��3��&G��(�QF�EnkE�5���6��ܸ����H9!�<�.&
KD��#��7��d�d�/@c��j�3��/��]/Q���J
���y�^��{aG�
f
�Z�5��� ��~�_���
+
���	���Rf
kZ�}�2�꾩���������g�#� �r����C�
�^/p�2xbվ�u�u+t�҇�{�Eު�e)��I�~`���	/@�.r�ȏ��
7Z�O�0M�8�(ug
^1�{�%�8�	��b�;l��p 

��,�ҁc<��c�!���p�3����I
︮l��ke4>zQ�ރi���pܦ̪'#�۸�}k��L��,
��m�/��X�������s�
+|M0B��5�<
�g�M�Rm�
`���ɟp�T���T��c��*G����Z
+
��T����r���T
����ʟR��
��Z
s`E�y��5��
Ct9B^u�`ܶR�uW�;w�z`�ɂB
l��%�����;�q�v�Ks�����s�!����/��	p<�o����sY4��T{�:�VR�v	,�6�
��ʣ���
K���`;�1�\�8��B`����2y��d���Yb�̹ݖ"���$�bf��R�ً#��yT��&��,c�ʷ2�:�Z����W͐
�SO�?
��"�s^$�!F�e {�
gu�/�5��?�ޅjI��4����1���k=�
p��,��_\�{9�*�n|�cն�3?�9W��
�m�Y0J
��~�������~m!#��+fvj�CY ��*ѻ� 
[+pD�<<���F�� e�{�Mx��V���
j]�W���û��,��>�"un*
�$@x}dY��
+���xs�֎�o�"�
�,������C�7M��63i(+님1�xD�
����b�ͽ+w!- ��R
+�o?~�
+��؛z�!�b.�ZnX6ra���kc
x
9����n��� W����'�C±ȣ�˓K.�!1�3�
���[1{?��[M~?z�f\� �YL"W?|cP�
X�a1�/x�*�{���1\�����^8�bX#g�-�_0�~p�Eo먚�8����x8��Q"��;���f
<�-��3
��g��+ԅ�����r��1����ӂ,�-F�R~�e��B}�a��:}(/MLUm�1	�iq��ǭn��˅���զ|

��$��,h�u�]ၥd�
sA����:0�v*2�� �*Vr
ⲫ��OA)��P�
�񼭝5T�A�n5���܅�ar��Pia"�]�n���Y��QnpU)�<mSu>[�:�xъj�g�b�F�F��͇+l^5/N]��FǐQ��+��
`o�9!��(�
T��Bʇ���Pz
+,� ��
���Kx���v��bo)��B��
Q0��.cB6�
��i�x����S��
[�򭭜�A�
���Ǝ�	
҈i�O�C�oj]|�i�ͳ�K�?a�_]���O�f���T�@�
�`?��{��g��F�B���,S��`��zt!u?`��T�n`���~� i�`�ql�v��g,�^d��qWooo-�a�r�8|�8E ���<u�v�T���\/6�.~�yf1���H�jJ�9<�Q0+?��K�
+y����cE�5|��
+��
+�mE�~��]�F��k�w��%Sj[�
宻�}�.��O
����tO�.�9S
��'k�n�8]5ώZ )
Q�~�
U�Sj����7K/�"7rr���b*��5|�]�'�~8y
��?7���^rB�]�xv�-cLe3�1p(_���X���w(���3����4�6��9�xVj˂������Ӹ{���Oh�� ������g0��T�36���֘�D������:9�H��ڠ��z
!:C�9�%<�/���c�R���.�؁x��

��X�윹P <E���Gل�
Z�b��3��%\������»�
�7b���#'qhľ���KF��-`�0��TLy�^D�mK�ƔV���p
��S
,���.�����2�r�|e
�t�co��r�8��� %	������9��ǁ~5����l8�-/8{�Y�m��}���z����[�'
˞�^�b���̢��0�w
pWqVu%� �
+��SS�G���A�<��ķ��@7G�5��97
+��NNW�1�@�EC�w���<~�f�B�ܔ�÷�[%���	����	�O�
w�A0���K�o`�"�R�
�զBl
!�K
+�<�<��֣���,'8;Y����\�`�U�T�0{��pn��f!b���3y�z���-�����%�!,�ݔ����,���$ކ�53�z��Z� ��.Α`���B#�U�uj�ϰ\��D���*E�f��=B�_�͠�e��E��T ��� ���y��SQ�G5� �f煐pRL8��b#W
n�5��^E����55���l%�m,E4���2Զ�/CG�C������6m��4���Gv?��`��֧*/�w�N
+!e4�
_�6��]|oy8���-#IW
�_
�O�?�	��
oЇV��(p��;
k�e5�'JX�6�G�P6-���
��ue5- at p�'�Ͼ]�
]w
+l7I�a�L����j
+�y��x��{}c��d�F�^��{����.�J
�8��
��]�?�g�y��d8��������cL9�"�l	�]����[p�j�l�J��=H�(�=�
ve'-��|�jj�	
5��d���팭9�S�;�
�O���^��Y�*�A�q����:��"h�TqcOIy~.;҃M�R�W.Ҫ�O ��������~X
H�AӜ�
�P.����dp�
+SC����`���-
��%�殺^ϊ�Ŏ����G4�@���F�
�M�i�ka�1	�p����Y�c�%
�Z2�0
��19+@m
+�F������C$�t�>B�@�LE���z�%��a�7�W(�D
`aɀt�~S0}
��z�F��
M��z��
�9��>�`��KA�qvK
}y�
9썳O�A6\8G]!3#T�p.����)�� �*��HF�=4��m{��'��
dd�m���	����W�����|�J=�НvC�`Y�
����,Py�[awY4�=��1[����i�� �\d(v���О[��u������m�����F*�j�D��Ŭ&wt���>�鶯W�NT������,�[Y� �����i֏���?;�~�W�[2�<?+�u�
 ��S��Z�%
#+
D�
�����du��4�5
��UQו��zs	�[��&c����`l$��:��r����L�e#�׈�|N:8|Ye��랃\P��g9cC���&:�~��A[�W�\w�����C
+�����(��s��g���jG
Rr2Z
���k醻���C���,�W;�:��T�?��RM���7�t��q8�'{{T�K��P�C��+k��

���
_U�m�ڨ��¨���*���ϒ_��.��|,�)}�g��Tl��
b�
M�hj�}��:�Ժ�o�� �󔮺Ny�}$i�a/
+
�M���޾�+ 
��(T�6�B�6E!�?�!1���˼o��f�)�p98����4���T�ӿw�U���G�)
��?�Ւ�@î�@`�g�m���
v�HU���M��
�+`���52��"5a��a��U����� q}�@v�Q
:m*�+��o
+
�
BE�

��5	���l1��̎�8Ɔh�o����&��mk	���\4v��uz��]��'�ף�C�*٬b,�%K�i8<���e�9p�ѷ�Ζ���j�?��z����&�
�.m��
+q�A�>��Nh}�?��ɼ�kmЖ+�5	�"�0��M��V�q��O���a]JT���U��q��S����[ƴ��:)`<Փ��a罢q�q֍�������S*�
 �N�
endstream
endobj
15 1 obj
20419 
endobj
16 1 obj
<< /Filter [ /FlateDecode ] /Length 17 1 R >> 
stream
+H��Wю\�
}7��p_�E3�DJ��'{Ӈ�Ha�AQ��M]`7�v�"�C�ԝ�;/���su)�"��^�@)��מy��]=�z�R+�8o7Yp�cǟ�����};_�qȥ�ۖ%6�F&��!5��@Ið.c8�k�u�e���+�0�#��kK��`������]v�%7w�G
+��MD
��p�Y�ő�fFr
��r.�
Op�:v��]��{�:��[��1�P�~N����'w�r�p��Z>�|����7go2���
�+��2
�z&��P�C�#;��
+�D�?�{s|zE�`_IE|��R�}�4�7k=�0\J�#��N
L-%)�&�m�@4��B4�qF1U��:X�hM�`��R|G�� ����
z��$���y
�Pz���&߬J"w ��r
���{�q���w�~�9Sx�$�QE�ȁFd�LҖ��� sX��a�y�Aiv2: �Z���[%��/ŐZx[��i9Օ�2���x
��Qu� ��m?[tPcfX���J^_g@���
�R�"��r�^��I�nd?Hj��K�-�<�%qxV�{ހC��-j8�J��Q�H�&-
��4�ɏ �E���#��Z��G at 7vXs�	��ЛWui���\�l�LrHd7����+Q��3�e���׎
�/_M�"q
=���
��g�y*����Y"CR��[���>w�;[�L�BQ,�iC�N1�T��Qk|Պ�֧&�*�>:ޤFBΌ�&]r�舄{����xu�S8�� Hw�[/�=�x
�#
Q)� 1{G� ��h�̳H��:�����L���1���,�J"��=�h���5�ZX������p'�U��W��� ��Ի�
�^�0����
r�52��i�h��Xʩx�e�mr1�Z��B�@v�[�Įࣙ� {x��1�b*P
����1��•dm��9@�w4��c +���xW��)�"G.���l�����j��C�v[D��/
y
��)���$G���{>f
��
,{[E�//�)�33!C�2�t�*Daj���o��J9/Q;�U%
j~��C���F�Ƣ�Y�*�Nyʍ٬��a���Uo�V���
`��]�~�`m�-��AS�`k&��h�?���}(�Lft�m�q@���w��.��H�I�Ҡ��|���bmֱN�D6\]q�_��ToaX�Son@����ENؠ5��H�*=bB�D
֑�QdFo��QY�
e�K�@޵6p1������0�z�T/�A
���nVT���M�E�Y%���-B��
��=@��]W���k^�`�P��v1Z�'3������)�q��V�Tb#\c���.$BK5�!�u��`��OM�U
oz˘t�������d



�
 [...]
+R��$"Hk���!&&�:ק��86Tn^�~9V-��D!����6g*��a_� ��+K̉��I(:x�d%���+-y
k�8�,�����2��x�X���=���c��&b�
Ҭ�/,f��n
��-h'R}�+2�뀃X
�a	St�ql*j�0}�Z���ksq)-C���k��
�{�jWJ�̾Gnf��vR�2
P���
wr�3�v�t���"t��}C��(����p�Mxl96�F�c,������ر����F ^d�$�;%��3H���`��q�j��P�
~
H��#[/���n��䦋I3�o��@����Z
�a�i�܃��7ɕ"f�I�b�hT1�N3`�:|��Sv0
�Vo��˹�B+O�i 2!t9�J��/.1S�f���nalO��2
��)+:�U��e2@"v~��'���k~�t��"���1L8ML���%��i�ܷ�u�X��u8Zx�HQ�d�3 ����iۙ
9��/��xfg.*=���
�Y9���둎A4\A�d�4c�e0���
�
+v�
m
7j��K��R�����:�c���m�Vdp�3]�Fօ��J��MT�9Y��w3tK���Ա�k�~Xe���Y�jZ^.:F���PL����
TJNͣ

�����p���ͱ�&�נ������$X�I ��K[�t�
��\A����vу�}N����@��s��R��{xu�@���Q>j�֝����-�=__������W�N
�z����O��_=|����������ճ�������S�����ww�o�B��˫g��>]����7��_����o����L�{H�7���v�X��vR'`H�t
ߜ„���s�����#3��5m�k���
�dhx�i���#��Y<� ��Ӑ�o�]v�
+i�&S�k^�2���lJ.i�aK&�'ؓO��F�lkR���=+��:*pʒ^�4���$�IKx�H�h%1IOS����y��gg�i���o^><~��������
~����x�
�ɘ3�����>���=������~|�k_l�ו��4��4�9�h�u��"�Զ�����9
+x�vq=��	p�v��k�4Ƙ�~����ci��L��E��5^)���pN 
+jq^<��o#��2�B����%�H�
��Vl�Sf1�y~]J��&�8N{���-���jk��8���?̋A2����N��u
b6$�(QA���(dנH1��>u��f>]����=ꩮ��:uJ�2 at Y^�u
+2�{�(u‚S+c�_��_,�Nd�2�
+4����,�S�
���Ԑ��Ȼ���	U���a��,�څק��#��t���#�r���q
| S*�@)(��K�>�d*R��레��1J�Gy�u�Ǐ���\�:?[À캡�)�\
�!��
Ǎ��� �.�&��>hG�R��}�ef���!��D�1@	C,Jnl���0�E��2�
�`%ά�mՔ
(S�
T(�n�>G��s̪�s��sD�p��1
�
�HE����<jCV�e��.I�b�w�������u��u9�@a��
+�m�t�`7�� D��Ҙ��C ��9${f�h�"%�e_���e~��+\��
X��lP	��u|!
�e�@��
hy>.�\�nB��j5��CR��,���c�Kj�	
+�0�'��2��y=��Һ��ڟ�h�+!F��7��l-�P��
��ipE�֘
��)
+f��j��5�Ucq����\&�J�FH�'��]�W�/4W]Khn͗�oMtqh�u��u1�y�f+
?�_=�ox��n���� 3��W���agU|�
�+���0
+���Ώ�շ�`R���OJ��%�J!�l�4Y��O+/՚쩭9�"U�q-�EaɊ��Q<k�ry�x���Q�x�@z2"�)<lzRP�^��o5K��gC+���t^�6��fw	�{*�hu�1�ĪbBT�
�yە������>Z^'��.�<�o�׹�"��i%�$�$�#.C�Rv{�>����Z�x�嗿�m C&�,���>�����ؒ�D�Zj��j�
+�I����-3���uD�b3/�6�3Ϯ>��/�tpˑ7=G��l��6$�H8�m�ZK�n!
+_��@�>�8Q9�u%(?Z�5�\p\+�0Z�
FYIc�5'�����|͢r�V90E4C�3�s���E;�EKBG�c�d�HJ����Yh,��f~��&Fшٷ�n� xf�2���l{����i8
[:�rkz��˭�EI@'p
+�[+Y�����
��LwyR /nF��,�=���
��!�Qe�)���kp������|��Ԫ�8�8��r�+����)60y�PңІ���;iA
�x�*�x\���"N9�!��0=��;F�v��k����h6R�5?\
v]MbNBtf�Wp4i�(��O�,+F�F�:�vY��'%S@�l��=&8�j2�A
+�ru!�Gop�XG
�!��Q�D�R��8�fV�V鲕~H

j�s��멫�����������/��O_<�}����O߾��?���ݻ��ޝ
�������>��{u���<�zrz�����~|ˀ����'����/`?.y��򷿇��	��L��a�<
[-�ۯ8��=�q
�����;}��'o�}���ݛ�^��i�
b|�ϒQ	���շ�޾��~y��铛����~x���>Z~�'��pHϘG\���f����rB�픖O�
������A����3������{)0bE
�,�ٯuU�J䐎��h�x�g�
�%�,_��
���|s���=��=/d��\�y at b&�8���%�sC�%��n��s�	bPy^���
��.M9��1��uߖ4;�G���
mX
�,�8�x'��Y��<�oJ��WQ2�����ε�=�VE����P!%
���A�RkA����zz���dq,,��Q�@���a7Ǯ��Z
')?�0E��+5sJU�LD����8H~���{�9�M�[�n�O!�u���s�,	7��o��dݘ�I��u3��d��F���&�`l#m24-�ҳ'Ce)����%Γmc��X�p-�1�M�A3��C�࠾G��t
Ɗ��2s`�b�9DE��T�F��\�yZ��\�T��7��U��s�ڕ9��"�����[פ�j]�*v����\�1�ӕS��
[���
���S� P\I�N-�A�+���4�o;
+
��H;��@��5���~ؐܗ��X�i1!��g�op������:hʠ����=��p�}����E
_Gݿ����Z_
�B`�@�JU4�$^�����9H�.��dv�� ã�
 ���e�=����
�g�TԲkYS���V
dE~�����Z+��-x�3^��
�v�Ve;��,�F
`��
�e ��;͸��ku
I� ��܂M2o����B3
����
'�94�%�.��R��ϒ���0Hc��}�b��fx�!�k�� +��YVG;Fҕ[(�
cW����I�q$3!I,Y�c,�AP� }���-h>
�7�j����
�'�ˡQ�ހͯਵ��u
p֩��bS��
 �xyZ�z� �U�c�T�̚���9��x��ZH!�e;<�����	��U�\��0p���@�y��Y�a�Q�局(�sn˃��{/��+�x�=�����A4A��)�7
��A,�T�aV� �L����f��

�I	�O�05
=>�l��,D\<6�];L�s�i	����S0+_�C�Ac�I��+n����
��7ld`�iOQ[\⟺b�l��Rq�Xy��V�a��tf:�z!�4e�íb@��(��U[�-�}n�mHe̓5�x�y&�S��Xs�~�
_�8[�sr�ƞNX
3�
+�������-s!�����Ju��1�t{�[����X���,
l���T��Q��3�ň�E�	�]Ca<��e\e:cI���]g~�ǵ϶d�
�U��06
I�`�Xwh=GL
W��A�Ǡ�
�����q`�V����f���_��>�
��M&46��/�z	xM��A
+qsX����¨�G)&
�}g!EmT�!��3�U�$i��2'�CZ�r����� ���tTd�C� I.��-t�������Fq�Wv�B��P��1��F�]Bl� H

+�PnZ�t��k5&��d�`+�sf:ɱ<��
��8�Q��~
H��
+���
�[����ݣ
�xPt/a"ta��
�����z�
+C)�/��t at x�y�h�!���K-�m�"����Zg�4�b�و���P���ky�Y�91Q���b�Ϻ�8v����00J
a�z�Jv�B�D�&j�%���V�9�B�*\]��"�j%_��@%�j٠�ŵ���8��R�d�
����2j��'���q箋	c��{��X�˅?
?�e-��վ��
rm����=
�U=@'RU�Fv W�wz
��mA��T���o	��E��9f-���.��dp69�5� �S�7�j�/���lv���
J�-ݥ��ږ���v���
+��εUl����+}�������"�
+��O|�rv�f�7��
+ E3�rh�>.��q{�;��~NtI�:��V��U�UM��!��r�)�a`n���g!\�;��m ��^��Um��
�
.��������|
"

�����\�<���@Y�x�i�&|�v��r}K�IL�Q���~�G��}�|ː��k
��
��k&� I�����bitby��)_�{�8W�j�2e�
ա�S���x���=�ɔ��a�?�3����d�n Djm��X>grnL1���\Ac
,��?j&9(����G�hk���Bh������2��:���FAd�
+��6��Mƕ0W�>Fs0�g�ļD�em3]�3J';iC����k��c,�ly��`\9L�a
��`�3�-g�$F��k�_�W5 �]�a���pF]'*�s�V����M'���(����h�+'$�
�&�%�Y1�μ�Ծl�SP�i
4<�l�g
`s*S��x
,��=k
t�?Nm8Kw��QE�i[+���|��
j;� ��L������ɆpGLb��L�8�^@c{���4!�M5����=����@!��=���W��b�����N�
+������}�
�
��75R����9����
N>�A�1��Y_���l͡4|,���]�W��汯����C<f!� ���H�?G�
�]h-�X�?/��۝}���o<2Gˇc�_�E"i��KH��_����cҰ's�&a�AP��\%��f��v�=Y��`��}g��Ɣc ʙ��E2��@�T�J>���	l5��:�;��u5���U,:�@�>K����j�hzO��5��'��.�]�z~
�
+�?HY�hmy2�=�����+X�
�����D��n�
���hމ�H
C��G).[��e���Ulp`�Ͻ�?�T~?"�f�s at tq��L���Ʋ{F2
{VH�V��;�%j�aԯ �
Ӽ�u2�mm����@��Q��)g G��l�O�o�x�ͧ&�w(1�Wn�_�
$a~w�5��t*q�n�Ǩ�
cb�:�
L$�W��,\��<�B*{�*{�H�=
堹�
%�|/r�π������0ҝbq����m�Я��1�
cC���
+�ze�[����(�6�gv����`���u�u�����{\&R<���&�N�x
O1�_�$�K�i�o�TQpegcB��휽)@��˺�@��<�\�sMO�(}8�;,�*
C���Oq�
+
+`u����J��
�ܵgd�����0��c�e�����Y��c �i��y�s�xv����R3V�ו�'���W�-d���ѻ�(�x�
+�:�
�V��~�DLL��:w����]��n�Gp.Z�m�Ӄ�5
+�̖�m���es��E�(��C�k�)N�f�����Վ�pp�=�q��L�r�'M� \����Qs?3�Z4� �݇fw1LJs�2[A�����[���������*�	����;��?Ұ��@�t�VȞ���8��Z<�P
?�
+�~D-&�ҽ��߿��������0��M����%vVR��հ�#�����2�_o�&Fo��Ho�ji<ܫ	�M8�zU�y��K۸��Ww"��u�	��.��
p�x�L��L5Y�S͉`{�po����zݻ�`w1f��F���/?[�8f�BѼ����`�U'�R�+�g#�Ҧ
�]���m:�U��ۖh���(���� ��>XE(f�\�]�88�

Ԥ*#�ǻi�
|�b��R5����k
s_�t4M�WEl����^Ŷ] �5�I.�e�8�f4p'�c��^A���\1��8+��ާ��i|�W�z
L[�^��BO�����q�χhA_�q��;��x����%ñ¼�&W�EM�brR1��l�� 5&.J+�H
M\��gv8{ӣ�~�7�H�
DM�]3�9>���UQ���R �������O��V��u
Y	�C�:�u+
ॵ��n��FE%��
+�QNEeS��k_^[������j��7�
���4ƺV�ܤJ�v3��U��h�+�0��4
�,l<,)@�n6,Խ�*\� 
e��,�3��,�<~n��x�aM�{~�Ũ�1���2�4zˡQq���y������,���AkR�[� ��xܵ�
�u����T{y��=)6z�õ�A��B�
��-
+���K�E���˵
ϣ��َ���w+��J!������}3�ˏ4
�"�0l&
��h�d����JU��L����U{�3��9��+7f���vz
"��2M��599.���W at Tf����

�f?��^����1?�
�E���q�(t��z
l%s�ǀ�۳�g�m�
o��_g-~�aW�W�*W/��«
K�
n孠�� ���ƝSn��� �fV�)�*�����
� 4�gr��jW��5�id|���Ye�C4Mu� x˨+��
�X��X�D��z^��:���Z&J+�h�B�|hx������B�3��o������F�"
=��Y���5C?�wê����������M��i[��2�V����J
*9�5�U+z�5���=g�Ġ���(�
��v��=��v�.�������K���>&O� W
+F�*��(�@�&Y�f��2�:0yG_p�+
Uۚ4�aکW��Ԯr6�D
���m9��
y�
+�4�)
�%^;4�L�q6�V�F��>���^���-��$W�J�-\ò_�
����0PV%p�
O95�ǿ�E�'F������A3�'��yĕ�
L2>�n�#	(��L�P�A�>�Q�{:2^��fe*�	��
���B��]+��⭃R�OUVV��L}�8�,��jx�1��\
��8y�W���((f���+@⊛��7/�@=� 
|��	��<Ec
�1�%?P�α�T
�����_��<�
����4<gv%����Gx"p��W��J�&��먆7���6�N��`��_�u���A:��
ᩈ����Z�b��'��X�bcn
ش2qa��T�S*.[�0Qw��Y�҉ƥ��)#X��?a
��-�_'xϲ�*l����,��Ϣ�->T�/M�4E~��n�ρ�3�
+�U0�%�0��oV(8���
e&�t�8w�
�v�i�.$��3�8�>\~���Mi
�*³�\x�.m|{����o�\j��+(_p��%�mH�3ܯc����XBs�U��3� �×��
+�*p��za(`?8�1���|
����氠���h�
O�M��	���f��<�Y�i
��<
�
A�]�fj�G�=�T�'�gt}�i,Ӻ�x�1q�ݩ�iTa��) لU������5���kQ�
�d k�e�8#ER�^�χe�W����?2*�LM
S5!ٚ
q
)ឞ)/'���#jo_ �Oa�C�r���6�I�:}DY�k�������'��
ǝkk�.��5?%��M�)��5`?
+�����%P8u��V2��3 ˑ��+g��>���,�P�k�Z����*�8�$Z�`U��6� �s�b�`,K
�~%����<��_�n�VP�c22�K��e�c���;�Ļ���
�?�X�>կݮ�y��\V��z�
�-�_��4�}�xm|�ݙ�o�KI��+K�&�� �E$��n�ޏkH���R0L
!�%�ƶE���
���fYׯ�c
@�^S����h��5p�n
+AA�g��Zh��j�!���c-��ѭ���:}�O1�R�
2%[�Q����ܲ����#�G�b�y	E�T
ޜ3��o(��� �l�

O�P��}�q�T�A�j����W2��ǃ�F�Y٭��+�m}����c2��
�v%F���Rp��t�T:(��uFl�˄�ܨ�8������S
Y����R�S���\����U�
T�H���G7�x֥E�S��p2g�2Wr�c]	�����L�%����EO���,+
q5&
�"��hL�k^��l7?QkLO��q�8P"�!���;9�"����P���i�+н�´˱�XhbQ�K����ճ{.|�e�Xf�<���WjJj��[�K�?�A�-`�{_}
+�}
ֽB����˶z��V�q�yn���OW�#�",sf����׶ivu�Cz)��X���݀nY|/
^��
ǡ���F$n�
+l
��_�:�J�?�^k٦y�����)el�Ӊ[�#��zE^��i�N�]��})臞�Ͽ:�'��Z���q��-�U���1L�! �%I'�+4��6wU�_054��b5(���.��d �� �y(�iĺQ
���@��7�0S���1׋.�v?7e2}�m
/G�yھ� �^/�4RǛ�ez2
���	��G�*
+���D�lo�
ƻ��_���� vl5�,�|�“�V�W@�
S
+��4�S�v![ðJq�
xwӺ.���4�G9܆���[�q�V5j���E~�x����pL��g�^�7�89&�)Y´�\�<t��P�k
�\K;H\���?����%�7��^�k�2]8!y1cO*���~le��TYp�+�-.Ш�S�[�A|�:�nk�8��;��jW�<�u��:UC6�������d�%�����ɀs�����lˈ�� �b����T��\��
+�MN
�g*أ��,��*q= (��4�k5}�p	/'"
��
[����Z��6b�f�W�����(���gG��M�:l"�fp�4�GB�9
��Sb�O�x�@�
�ͣ�=���~��{��9r��#��	PӾ-ޅ1ܐۓ�/��^ܞ��J {:���
��\7�SIځ�2�l�TsN�Iv�Z�_�.<�������a��pИ�
+*=~��-�W���k.��	K24��lV;��]�%c�R��n��=5�~�a��N7`���� \��Yzkk]��8��,���pI�n	O� .֩
+eX�q@��En����|y
���c�PQq&�lb`i�ZP���V[����&U�w���ʭ3�܂�>�\��~��%`��
��#�L3�J�0�j��(�6��}�̱7��X�d�!�S���C[)F�AbA��#��1^�jL�<Z������QYL]]�� 
>���GL�	z���[�ƩE.Z� ��#�m�w��Æ>6�N~���7� o��#��	 �Y'
j�=�
f*G��a���E
ٖ�ٜ�A
�D���#�\��q(��@A�r�i-�����i_$3_Uw8찎�� �υ�_�_
M؂��j��	�՟�fhCe\FX�-�
�H���(�dz�ˌkG�P��u�m�:��>���Cۺ���#t���g�O��;K
���I.��Ŷ,���֩�~��ޙ�\�m�
�
+[#
8'�m�r�z�Cr?����Yn�X�Z���Lt8F)�IZ�K`/�_���|��a�����J,g%��%V
ZPm�:�{*X`IR
�_��Ƙ�g�FD�Z�d(c��$�E�w�ͮɀ+C��7�קo8�FA�M�ӭ����k\���A�gv� ȑ�Qy�}�8�$�gQBX�'G��@k
]����ט*����o�������t
7`�_�~j#�-��Z���Qi-ڔ�nt*�1n92o�b��\]�ۈ�[H��r��� o-��+x]p�2D�H��)��7�S�x/

4��\��`M�%0h�c�D~x;L��ۆ�Ƕgj���g}����e���1���voH�i�)̤H[��~h!{�-X�5
Dɨk�m 
&K/^ޒv�Թ!k
��}8|�{����B���t
lG��Y���¿6�o5�W2a4������E���=
D�DZ0��/,�eP
�w��
+�w��:�C���NF�y��
�m-a�} �a�0P�����

�\OFE搟�b��vc�e� �PӾ�%m�

R�͏���`浸��|T��[1]����f�/�$���vz�=�
�d}:��8�/�ĝw��	dX�qOIZ_iwn�5�~��-���r�����z�R��Z=�FVWzuȖ�m
�N�m�Z�Ee�%�[
+
.�qBO�
M离}>�
�������2Z-go��>

�3&���
/�i�h=˴BN-�=��-o^�y� q.<�{뎆�2c�*x賈�٫+w���kg�pC��
�%�D'�"�ĭ�b�ha!�����2-hU9����]p�
sеk`X(ko��g�p��
�é2�EZ���B���/�G�?��7�F<2�����ox�ucZf����������E�Q�Rb)D©��o��)�}���	8
+�[�����8��rM$���ã��Q��{U{���lO�~�u�]6VPuF�ѭZ��$ӶZI~m���T
��+WX��N�2}�AC��]:�$�����������
�Z�rK�R`����R�3気9���Z+��jd�m��Bh�gf�_�yf��>c��k��׮մ��ZM�z,.�1z��v�>�w�a�����Ri
J��l��a�����f?��i��g/�=
%{��8L=\~�`dg.ѓ�y�Tm�KH����T��*�^
���tf�0
�ءhd��X
+�^��U�� ǥ�[�w5iI��z��9
�h;����Ü
��
��|p�=�3
Q
��`EYUX19�mCN��`y���p,��S�~�4Yi��uM�);8KY�e[~
fY	��y�x�"+�aaG����'
��ϡ r�4xڏ=�vZ��\����ʜ^�u�G6�Qʨ��ӝyz}

����O�ϴT��h��z<F����4_�k�u��d=���H�W�<�->�/gY�7蘌�R>�r�E��om�<�e�V�������W��P�#����
����,}d��f0����yM.K�#�p�3����͇yV
ή�
���LY�K��"y�
��k\	 W
+
�lʹ������i�\nU�
��?g=p�
}�\.R��,�.��q-
+���������{��i���]y��������)"��������C��g��=�����EWo�'�C$Nq���X1
.b�Kf��%?���8�1T���q��g�¯�K���9,5��f� ��K��g
+?�uL�X� K-�~
����i����� ; 5�Y��W|z��>ܰ���OX��p�Ty���������1XvM
FeeL}�LE�@n� E�Kd�Bvݡ�Ќ�F���q�S\=���ӆ��WK����pU��:7�&�
��˵�tGA��@V'
�;&�w8T��N�
+YI�R',X{	���������-��a eZ-Iv1�o/��j�\` ��j#l��v��#r[p��a
���
;��|����X�f�v
k.��׾]�8_õ�;X�v����v�����0�f���˱??wF�8]
�B{j?�!���
+.�/��W3��Xnٳ���P ��^{�<l�fM,�t�eA���a눍gM�:S�<K������g��wC�H~~ؾ�-EB���Aȵ�nl��}o�\�e�_����{3�.	��g�
I�ó��KΫbtq�~�rx�s�2V<��p����V��s���Ū�b=��:��cH��6�ce��<"��8,۰�yyv
Si�ҝCi?�
�sş���΀9�>;#Uƞ����YJ��W,aq�����.���x�묔Azѯך谤y
\�{�\�Ft�z�x
J^#Q�b\��+�-
�nI��ϑV�5p�(
���0z~��[�ܖ��E'%
y����$�!vvb����R}�K�w���"@$Zx���ͦ&�H'�n�f�ÖK
&,��J4a��e�=�6/6<�bu��J�4��

�vu
Z���:�u	A�)o�p�^z�7�m�G9�a3ޕ��5��.V$�B �
+�z
Hp;��H��I#<h\��`��cai�g6�0��Ư�L�K�g�ܼK��}+
)����p��e��
!A�{ѧ������t��L9
ͣrSY3��)W�%.�������]�X��*lGsl�K��������'�]U�ͨ}U��~��^>���7���w��`��|c�X�`���;
"�
�5D����Ʀ�P��"�:�ȼ�ӿ��$��Y�!yy^��Q
מy�f�b�zסR�b������jc[j]�43/���|M�=�,
+�&��Kdtv�r��n��>�ŕ�~�Z39
3��F�ŭ��(@������ͧx$�~ÿ�G梏�\%�۵[���A�:�h0pڶ�;<�E���z�dIn�hqֶ֧
=�`�>w����常�9}X���L(�چe:��\�˦Y ��FH����Ҧ�L�t�ù�b �f!(���VN�����T
+7�F��V��`o����Y
�[g�U��:��E?o�45Z�XQ�_��PN�4��� ��Ď�D\}mkp�N�1��	�A2߳���	V%6�,����b �p�}WU�
Ek,��v5sV�{�i
ݽsu��G7!�P+ʢ���u�츊�!�Y�tbƿr�f�Ag�a��[`�	��/�|��-^-�~������c��c�`5�J�p����s�T�:)s�
7��9�𞕦��x��X�Q�9޷���):�k��:f�!.�*O~&E�7'�Y
Ӝ���ת�����;�&���x���!F�U]>�Cr�Qe��2|?s�^U\���
����Q{>�G({�
p-�T��>���L�
����,)�$C+ɥ�%�1���{����"�ׄ6L�!2
� ��7~���d`Kq�ڐZ���E;�۞�f~ChE<���ט{��p�k(Ɣ��_8g;@��^�s&V�(,�˕�f�A<G�0
ۗHvu�Dp��{�,
n��z�v�d:u�0� [...]
+O�
;&M7hS�ع��0��E�-$j�� �a����� E��i�'/Z,{�fU/h�Jx��~�����
�G~�b)���w:�

�Hn
_���
��r�S���:#���,�Ų����#��:O�¢�����#��ؗ�ڪ�Gw�(\��
�.�B�yD��o�/x�l<!�}���ү6�YHմ���Fa�G�S�<��j�Y��5o�=
�V�`N�*���t����Uu����KAj����C�_.%�8&x�1�ws,��'�KE�6��#��[4쉅Jw
��qa�]Rd��B�,�X�p�d5pd*"�����I�!��"�� �p%�c��cN��$���-�x���
+�`��_���3���l��
R0@وo��jH�x�W��_�\�#f��ρ�[����	�Yg�4�B;�*����LH��ݎ4�
������T�
��`1�}�O�P�m}C5��8���*�}L���`o��J�؝���|�*<=�R��	ǽ�4�p�	ɨ�V�ϸ1���"�B�L�݀I�끘�
+
v!@n� 勵v��XU��r
�p��
�٫��C�|��[.ּ����f�_
�DO�D)g~�U�"���">xyuB�t��*L�ş�
 ?�\�v���"�^�cMU>�3ϋ7��9�!h86��

���Yk��&:�����h�
ki���MI�k
���V����g�����8AJDh���8m08�����
������I�����
㰰�y[ �=y6�����7��#h�1W�

���3{
��Cι\7�����/�*Ò;���[�5n1QW�]1�8>z
w�l,.����.~No^�8;k?�gpoQ<xN�
d!wm��h�:��_�=�͏������Z� �T�`
��`{�Z�@�.��2�@��z��o98���9���S�s���>
�����i�C���A*0Y����� �[����3����8+��̭�߫
�j�Ϸ�d"�����������fEn���|�Ӱ����Y��2������Ǽ���D�$��s�=B6;���N���=rSm�GÒ1
�:�o1Jjp�Sg ��8�gݜ��?:���Wk�f�
e*lx�Sޝyk���ڞ�Oqh�
O� /6l&T��i=�l�Q���~�!q������R7!�a#j&��@W�f��W���v0g��o
��f��`��k�Ŵ���G�I��cR�C��uL��Im�8g�����|��|o���@��]
��؇��G
4�B�k`y
ҝ;�G��S-��GF�}Y��to��6�o[EI��n����`�Wd��IY{�랓��o�K<��~
2g�S�G�u���b�C&
Ĵ�u9
���[�y��?�e8��;�d~�ȗ��%Q��WR�Z��_��� #^���ԧp�<��u���Y=K��R�AY���>C�
7k� �fR�lG�W؍+��M��a�x���[�6v��	�2��?~/����&�~�b��o�"��3��oE�d������WdՍ���~y
|)V0�c����%$�u���t��Œ��fD��c����t��
�&\�t>fʭ;�O)��b
�C^�
��/P� XJ��vp�g�Q"�G��k�$�j��m� (Ͱ�D-�{�$�Rĵ*���
���6�

���![J�7����G1�d ��s�I��n�u5̢mQ����-�@�3��r��7[|����{���u
������ A�����<i�<�(8H8VAL$�QЌA��������`�
FX3Z�]]]�U�L�HFQ(��
�$S�

I)�J�q��y�
Q"�ۼ�6D�]�x]�[�
�t��2����yg�<�iy�aH6��
+V�^M��^�Udq
�,�Ɨ�=�����x�嗀�ս�|/��*I�q6�q�Q��:;����+��5񱿧����-�e��s�G�gᰰw�rY�%����R�߆��2�$�l�L��(���f����
tz�����ҟ����M� .:m�ݍ��k�\���#��m��9��S;z�7��=z����pv��O�<^������O���_/���}�:�)z���W���o��..߽����Yڞ
�>
�F[�?�>
�~�/����e��?��g^�P�F�z�7�[+�ʌ:��f�?��gQ�3��n�>������A`u�d��$ɾP�[Z�D�BR��
�/���.�=/�/����g�Ix&��q?J�,QVe�J��V��U�LZ������>%�������d�� =G Y;��5�\&z[2�SP��W@5��
7�P��<�e?|�g�:�É�Mғ?���da����,�/�N�a)����A$9��a_�B�XmE�%��>�h��`:7�����
+�j�eq����`3fq-k�0d}��`��spg�q\�$*x�J�3��:
�v�����9���tA�MMS�8�d�Oǐ�f
+�<��
����Rb8ө*���-��
I�:�e
+���2P(&ґ�i#�ʾ�

�`�#�m*GF4��J`
Bu��K�lo�ʫ�Hv��T@�"b/��"��u�ԋ�*^��{upt�,k
�[��.�b��x�!�ya����
s� �t�]��{%{�jϣ�L��<
�� � 
޺OF��D��ۂ����zC��E>\�aa��
Y%	ZK6�5���jv��ګh!Y��{���	�45��z��,��l���Y	w��!�X��`�R*&:(U`�d
n�2�ۥe�s��,�a"��x��\��
[gd�,j� ��|�6�KQ��s$CE�ZU�tl�j[&���@���z�O�
�hգ+�
�U
���g[VϤ��
+q�<�_�&�H�H *ε6�
�FN�)�}ߚ9�ҞCY�%ӓ��`������� ��I�թt�0`
��/�Jo�Dڊ�[��4b��us`�wY��NX@���z2
+�5�H2�{����R+�r�)�
0� )+H!W`�����dU
�.C�G��
Q
N.#z��9;��	xѶe�b�
J���Nk��%�Z�<�Kdg����
m��N]c^EY`��
��*ۆ�B��#���l�5E��Cd�Me;���=
���.�d+��@J$�D2N] �ZcY-�vK�v�1T��8�ڨ3E�dV2�n��!��*ZP/ݗ9�U�gdU-�_��̢���E~MqF]lMUwU�����s��X ˩h����w�U^���m�מ<Uh$gv3hn,Y�Y�#�����]!��ZM:��B��
+j��S���n�d{n_>E`�(v���@�6��{Z�lЪ�"���>���l���������/��l݄�Gb���qm.���!�O���
��
R�]���M�����;T����~\�}�k�����ލ>�p�y����O?^�������_]|���
�~�H�`D��ۗ/�?���n{t~��͛O�/����������?�_v8���,T�G�S\h�����!�Ҽ}u���
��1n?�
�M+�
O����J��w����N��iI2��@�`6�
~~��h��{Y���\��_�Z/���!�e7�
�g��X��ujc �E�2�$\�I�d��~8��}3���q�z�?W��,
Pݯ��6��
,6[�x,���"�k������7q�A�
yw��
I�; v�(@���\���x7��c����6	�T�0vz��mY]�~�p�
"�Ȣ\���
�	f �t���USK

��,,��V��D�R�=u�� 
+.
+��A�*�&��BD�x
��f��r�t��Z�|�r��z��Ӛ��3:o�
+�7�r8ES���}_G�m(w෋��"�D��E�����#4��׎�h�^�����
K�o�@� sZ虞�LZ]B��`�f-+e���i �\�$B��p�[��9�e�Ȥ	H5�V� v ҊB��z<G�G ���VaZl�"�{b��@I��,�nU�.7Q���jݣx��n�n���z���^�	��u/䆽�<�m��*�4c�d&�!�L1p�3
�
�Sϛ��4N*欢^#�Dz�{@i�7�{Z��tuM,]��������:��N�1v���i!=l���=HaЮ
+��p�d�dLA��
Y���w;[��҂�K�h`?��qb��;��%P�r1\t��� 9i���8
,-���6��O�����;���y��Bv"�ŗ���`?4�%w
3	2�O&^>@��fB��~�q��,\�;���Yժ�p�܂��)�,ܙ���2���=�N��W&��>����
+R7�
2�,��y�
��[F
ǂx��ʻ��2�<���vg

���2�JN�R�͟��NTJƵ^]9���|+�Z��sm�sI�ϖ�W�{s����R��rY��l.�m�	�������]ێ'I�gX��ϦN��%N
+��PB���� R�x�4���r���P
�
s
�#::��\������K5b����
���WKY/�U��IJ?���n:L��^�W����A�X��gP
+v��q��tG)�P"���AX+)��i$3y���!������UòX�F�f�J��&���$�����49׭K~/���6�+�Qb����t�~�@6]m�Y���E�_���Z�ɿ����q��\F=	��ɳ���%
LU�ۇ�s5x�E�
:d�l����6�~��K�j
+�
H�NP�z`bZ�Y n�LE3���"��;�� ���-s�B�o��	6���>�
������_�BL8�"?_�&�V�0����6�L��}Kg�;�Ӧ�ն�9q�\�S[u� \�K�
��Y���
���7��W��V�w���g1�
���x�]��3�"����;�*��,ط�Yx�"a�̑��%.��3^
/ph?����Ǥ_*x(��`�Y �xkz�b���qD�[��� �p�>Rk�����S�C�
������yQ��K�Q����2�O.�
[luZl)�H�Ȏ��
�*1�oC�s
�p������!fn�$�v1<p�/�੏wH@�����"�` �m��
endstream
endobj
17 1 obj
19860 
endobj
18 1 obj
<< /Filter [ /FlateDecode ] /Length 19 1 R >> 
stream
+H��W�n�}����~I�$;Nv�k�:� 
�����H���p�>����B�t�A�谦��tu��f~|t�O�R�7�G�*gs0�1C�o�U���ڤ\M�U2
{����&ƕO��VG/��
&Ն�
����F�z2��&���Lkg�����jU %d^�E��[m8
�O%x�r}?FX�b�[�#��
�Xn�ɱp�[�;��K��#]��j�xb�g�Ԉc��4a�U�,�zb��EtΔ�ic�֌�nmp�A���w���P�	���
+@R�`�4�zq�M�D	ձ,f�����J^ƶ����6��>���3�=d��.Z�����Lj*h+	:acB�m(��C����6�\�j�z�31�4�uFBp޲��
��Q�BRI<`S�
R��JrY;-�ʚȅ��&;ǘ��!��6�r�v���;�ό
���u���PΜmr�0�=�@�j��Ju�P450{pm�Z�UVW0D[�2.UGS"��3 I�h>F.� �q�3G}
+x�g�xS
�VgYL�������C�������غ$�&Z'�
+����
��MA
h��j �2�2�
+�k�9l}���
BЂG��q��-�RC�!p@.K�A�T�c�q!��
bhr��a��~�_Zo�{���NN6���ާ<��W"��9�z��F�v�ON�J�(���>	G^�AhU�b�Ѷ$��|�`m�F{@�ˡz��FbPA<�D�̘5I
�������Dø1>Ȧ���Sn���r�A�Q�;p^�jXr�4�x�kTZ�R�zOc�u⥺��6H�тܿWc��,��d��rh���C�ScQW܂��t��Ŕ�2��G��;�,%5���c<�?��~9~���b�}��o��l����ѳ�'��9�N����f��؜\^^��wo��ٞ6 �?џ��2Yi�AtW�`�d%\*
��62�c�Z�+HM��2�׺�dg�f�mַ�W at ck;
���sY�ft/mBߓw����4�=���i����gߥ�^�\n
n_϶�n���^v�)~�v���u7M��O��Tsq|�x�ݨ����g��ӯ�>5�����Ts�wo���ΛhxYF~�" [...]
:[P�Cc�9FD1#+~�x�kƀ����h.j#JP�S�������$F�E���M=�╅�#��yv.j��*&"�hd;$48}��B�
U���쾻\v����w/��N��E��>�w�BTe{�f��
��5� �eW�PC�A{E��B*j
�
�X���1�p
+�\TL`�����e��
�J. �1�($e��
���܀�pa�4�
����PA��xd<Jyp����� SE��h1T��Z�4�J�ƶ=���-���E�n��c�-����H3�@���3�=k���(m��>G� L���2q��TP~@E$�>ԑ�(���S*�� ��,q�+3�����uVi�޴e�:�5�����$I�ʅ2@&���A��=�.35�;O��
�B�c�AI�����,�*(1������OH��
�!�<f
邡/\�X"��k#N
:��.
1YHF[;�W�eH"@ڏ��H��Ըta��^G G <0���f�5����B%���v�k�u�����
�5Cr�yf=�}���R�B�����2��VRbRf1�z���,�݉1'w���(1�LV\�n��;�{=���C��xHm��	�KQ$�JC���2t
��	�K�F�H���<

��܈�vq/5�]�j��D])œ
�=�F�`L�Ƴ���_V6\C�
y�������C�#�!���'��
�D3����bꊨ+�����e扮 [...]
+AΤf/�ϩR�4<��_�W�Q
[�ٙ��2�������v�z���W~��[�N.n�:���8[�>v��js�mN��e��>�-�������b.�?����&4����r�m���6������q��ly�65�t�}�����!T��y�~\�
L���UM��^��v+�Um/��]���}���/����g7�`ƾ��u����-���������BV��l_�7���z;�
�x��a�]�-��
���v1_v}hvW+�Q���
|�Y�kžz�緳�|=l�~�/�F�kl����������f�\6���Ȏ}�F�]���\���s���ݝK}}��
��~���w�z��
7g7��r�uZ9��ӳ�
���
+�N1�xts�v���u7���!�V~��<j=��}"�b�S�L�!?��:���
�pFvB�
*D+��I�FL1
�ı�[dQD����P�
�	Z4)N�$P��4�ߐ�%�X�i~��+�K��B6�*�&~�؇6�C�>/�
�����v�?�s��$~�膖(ѽ�>���h]�-?������|V�
+U�-Ȭ�yԕwXe{ɀ§P!Q��'� �fuk�%
LsA�ƌN��N��o����)�:h$�'u����jmjɢ�S��Й��2�AV뭤f�l6�e��lfgSm����%ɰ�a~��n=,[�`�l�Y���s�M~�(Z�<�{bm
�2��r�*��(�t.nR�����mA�y�V����X��D�l�Kz6h�T���M͂a�IҖd�
�m��;�����y6��ed�GA���2V�|W2ߍ�1p�Z�h
@b]��ԃ�������rf<�]]|5� �U
jI�*���3燌�R��"1R4]Cֺ㬤Y���`�
��T�G���T�V]��^���L�HQه����Ҋ��
}�("EDF$���S��*�~��]+�
�k���i�U���C��v�Z�n�(	�i�n-�:�\A�
>&�<H��d��Am���~���z�.C���
 ��DFoa�7���w������v�|��Eђh� ����ۀ<�����!��I`����o�z��_�3?^��9�A{�%�
�=��m���_�,7��O=6��ݱ�·���[����)"�5��n���.�W�=z�
+u2w
0�#.z�]F�
�;Ҩ�(+��-
]��Ɖ��3�.N(��Z��Zs;,yysM������؎�����1�Dʜ^d?�r����܌ J`u~
��Y�FA�@ <�`�=�G�svy4ɏ(�Q �F���ci�'kCҸ��,h�|�vJ�
D,v�_gy^ �
�
UhXE�wV��^ڡSd�էn�:l��vp����NfXi�Hc'�
�o�8�p��y�	��?�c���0�yB ��B��B�$�Ӓ�yv�I�@�M���H�
|uaKM�� ��@7�7��CR]o�]�H*�H�b�T��(`��ux�Xe�P�G��-Җ"-n�v�8�&�� �jJ
eU1�
)Ȧ�
������&*���a]��Z�m���h[�mh���=���=�Q4��)u��3�;�@��~��'�
�41B'�ٽ�C��U�
R	���3��
Y!q��$K��p�F~4X&�c��<LU�o����$�
PDӨ(!R�%�l݆��=q�ܘ�T�)���flrsaY����b9݇��R1�:"���S�6��"�
<M4��WM��SXBMp�
ha�&{�����%�m
(����A�����Ju>ۓ{2�3
G�ɤ���
*�Nx�Ϥui$�&&��s�!MgR"D�aG�<�S����aۚ��Y�Ps$x� �� #�� �'��]���	�"@z@�]L����Poz�P��!��bj��iCuI�)��f�0 [...]
�D����l�f��	����W����|��
�Us���.U�u�E�
��}j��-�;����C�-���ԟ�m�~cE��P�6����w���f�݀ߠ�n��!z[<Q����qßh�=
�c�0C��C
+UQy )\>��.�YE
+UDU�
X�i�i�yV�X0
U+`��=yٿ�
+3��+�	>uLܐ�-�j�T��5�������\��B�X6uC$
�CQ%�dOY�����i‚��gV�1�L
ޏ�P��!(�!CD(��?��hޛef�f�Ó>B4��ۃ��f�x
+��ӽ+��*R�։K��5�pN�%9t�����+g��Ef��e�ۤ/?(h��]DZ�`􏋻�̢��
+'�N��+��N�
u,�
��
jGP�w18=5�#:�,~�o�����N��Or���㯟������6v�y��Ɣ�hh�f`tUl��5, k������'�.,�w������A�7�?'�o{�=?�F�� ܯڭgy#���$4�|��A>–�bϊCl��SQwH	�{�"%j�N����@1gS�pߟSt	�^�(�
�5�oȪ�Ⱥ'�HLM�,�i���AQ �>�vO�F_�0�uT͠�9��{֋
�)��Ed f��9LI۝�Α
�
r�����ҋ��+ݦ�n�!��Y�ɯ`T�P�.\����c�Fs�n[�J�1��
��eqN���`��ɲ\2���=j2S�7�R�����J��,e{)�
��AIF,���N	!SɥA�$l4LF���C�Τ��:�kע����������ZL���tB�ꇩ���\��_;��A
����ꆳ54y*����
Cb�kj\�(�:	�w4�{��CHڑw��
b[{��O(�ٚp��t[;��#f����(�n5�~BL�ן�M�~]9�@����X��*s���M�|���P�Rg�6�Ќ���n-����?�9��wCС((�$�,��PQ�4%�Y�����E�"3x�2�,�ˉ�<)>���1�*��|���DƉ����Z$$I_������]
NO
���=����������W��'��ާ�g፵x�������m�c�����قߴ���4�w/(A$# ǨO|tz��J�&A�y�t����>X�!�)�{�7�����R?ȇ�Ҵ@�Yqh��R�*�)���eσ5R�$Q6y��`U�_
����O�1�	b� �
nATd����#H�$E
�Q03��X�U��
�M�TWr
���;B{�Ω���v�]��d���y��.Ӓ���&gWW
�9	��d���b��dP�&SV�MT��hg�
rRԂ��)Ɉ')q�c��� �}8&��s�!Mg�CA���֎u�����b���Ɗ�@ɋ�o�F�]���QsɃŢ�" ��k�Rl/����oyM�kʕ*:���M=?��t��a��z�
O�GXø�
$�/�{��.�,}���"6�r
+��1"jbY��MP*���dQ�*|�Ŕul ���fd
�w.�rg�����h8�6����; �b)��?����6rĿ���	�*bz_|!�R���:�j�F`�D�bC��Y��wv�oI�����'��y���of�0K`���ۡ���Oq1��1�V���(v�+�]��
+�')�?�
��d����d���,���_��i��3�����
��nCw��gRz'�����Z^��
-k��T��/�ӯ�]����:7
����p*ki��(�]{�Z���2DX
`�Ĕ�'æ��cpfۈ
Z����k�s8�H�r
uʏ�x�Χ‹?/'���>�-
k�m/�j{U�>����k���\�]��q�ɧRLS⹘�[�\_ӯd������d��� ��G���^�/�
���h`�G4���<��#
+M�����ر�
�ܦT6,�R
f�.a��u����E��8P|G(���P{��j���#�]@
� ����4�k�5���jI��QF�E�8;����V_F��I��B���h{}����g��qJ�K!%Z�La�lWw�t"~@��
Y�\��?��O�I@y�}l"�y0��5"���w��"Y#��������{�2�I��Hɔ���8% D�}��A�g�������_�W�%BF�c_-}X� tF�U��?
2��ZmT�r �-V
fRW�jV������e�ê>J�u"nK1�8r� ����
�v����N��i���3jz��J�0���7�+F�I���^��1�[�j+ʏJFƽ%��-]uU�8��
+bHR��"�U2��JG��2�D�]�'%崜�1�U �yc������BK:Y:�V�
+~5�ꈔ���	
)��U[�:D߰u�]=O
V
Z�{TeC3���l�:*�.-�C�2��l6Q�|\
� ��(of�)暖4�*o�"+
+�μΤabSg�0T��
�?+������ȦX.0
iW��hu��m�,1U���4�˗T�5��"�<�\�Rn�B�qn߈��r�e6�AU��?N�T�S߯B���;�G�<Z"B�[� u*�(Nk;S-��f�
+��� ��U����NT'*��
+��,Dݍ��~�,��
ʭ�mI�by2���
��КS�J^?	>ѧ�[KLW.�,Ty&�}O6��T��
+�H3�o]w
��![�8T�Qo�#W�2��i̩��U��c9F�N�
-����)
�e�˶U1�Z�C<�*�j�R��Lx�7*^)���<��
E���7*k37���
�� K�ܠ�Żf���بH35��GI����Q�IY����$��i�%��/�>��*!�jt��Y o
�訹��`�'�"����o	(��0�&���NC�_)x�/B�,�jv����V"fq~��-�h�K�a=HV�b=A6g����D�Z9������eʂ�B$q�<���#�N����X��tL�ơQ�y ]
++!LqL ��q
IZQ�h��S�8�d+|�]k����[�;�R�
�
+�J�P"y*��|���{9�4*+�O~6�*/4�����hc�S�N�r?�e? hq\�}@cH3e�;��m��WF۹
�9,�N�|~
]Ų�x
����dAӯH� �$�)����
*_�•��5L�t����R�b�2�Fv��� Fo#��e�C�$X�lc�b^e �K��Dy�Ju{�R�,Q�YW'��;�'�̏�#�Ak|zyX��T�yqɭ&X�	S��10�$�l
��C�8���DNz϶b����v�c5�*^�r��
6�6}�����+h�!�)#��ď&�`1�P,JM
!c�s.��4�塐q/x�3_\o�l�*����P��Qi
�
!b����PD�N�
+eQEP1蟹����7�ZU �۟�#
�������a�*��������q�g�u�ۛf�7���L�_�Dž�ˮ���*�
�0eM�K���@�=:
��8>v�#{�Z}O��������/����B�<Ѥ��
��H�����=y$���vfvfvfvf~B35��7	�����?Fo�Y0+��9\1�-�f��1�9�?[^��i���[�7�Q|�'s9%� �^>��i��j�Ռ
�sh�Q�����
�;��S )
���D��Io� R]���"�	5Mx1%�d
3��F��N"�g5�:3[�s(o���a�w
+�_�x���h���{
�#�� �ķ�
W�B�>���ч[��w��X��8z�.>b��`��Ln��F
;��
̀ƩA�ˁH
Ӷ(b�10f.���a�D���%��A0
��Xq��p��4����s��ئ��.1�J�~fư�0RR�
n��ep�
�@�e2��m�זR�`Sg��I����F<
Ԟ�{���Ƽޞ�����{5���#P�j�0sn�O�����#ߴק��P��� ��潭��™&2���6L��L� �
�:�I7���wA�:nwj_&]���$/��5M�{��k
X������
i�.��pjI���1�k

+(��

��a��L!����
+gE�lñ�s`{�)n�R�H
N�� O)�e��Z�a;�ՔҞ����)1059�Tq.q*�A�t�U�T:^)Z�ȍ{:�
�Ll;�,f��
{��C"(
.�*�]��d�-a�<Q�lx`bʇ�p�y�8P�	�d(%
pW%��ٖ��2�
l�
YԠX��ȯ��8j(�����yA*q�c{l� Q� ��EB�6�Њd��~=�9�ܲ�jw�۪����s�g��c���yDx�Ħ)�e��P�w�pc
�He3E��s��n�ܷ�Bm���ּ��f�|����\�&
�
Ct/"p�̤�3�@�s���b�
O!���|"�4�!�/l
��_��ON6K�(��hL at kI�H*i�zF��w^R\'��\BlIzAxyQX����LP����
)
E�Q�(5�$S�j|��[@�S	�j#��lM�Ӊ6�=Iν�zÂ3�xSԌ��ȁ�\zXuA
�<��)h>3�Y�b���.�A�;�F���l?�h��c��k��j?���
���Q[P��c�3�١����@�
�7�x�{d��["N�3���Ug2Ī39bՙ,�s�>7qJ�kI�ʠ-�{�q�5L!x�
N�h�q�LM7.]Un�
F)����Z ř�u�Sƣ�
,9��pw�]ֆ�	uQCۓ�'	��
�o���;1���C
k�#�C�G���v��e/
0���D��ȧ3�d����m��!"��G�2n(��yg��:�x|�[���7�Jo��K��cAD�
���L=��>���c/:��ޏV��P�gqĪ3Y*���f��~�*Ӣ��M�0ec9�>t�L� �x+"W���u��[[q������S�8����������7��Mm�N*��#[/߈�{xհ���y�6�j�W��|��wϯ
nߞ���U���l^�
���_}/�~���Q<��e�X��}����L�
,����D{�OS�����`A���G�]^	�R��ų�ᆲ��-�?�ً�����������inʘ�6aqC���*o�.62Y��c$�������%~�$��/9�#����66<��|�p��ח7W���;��Y�[��n�Ԙҳ�1	Y-m��I��Se���Q��(G�1Q���g�JT4��LzP�K���&�X�mI�������$]�����������1�!=��<pޅ��g���J�*m�y��J|� [...]
H�3pDYթ&J�ABc[�%.��B�_
xp$�/D/
�5F%�p}�J[�zŠIht�B	�PЩ5��KI-֕�
���d� �
Ow9L�о��ð�\Ddh���!@ 'ߥج��L���[� ~�Y�
endstream
endobj
19 1 obj
9335 
endobj
20 1 obj
<< /Filter [ /FlateDecode ] /Length 21 1 R >> 
stream
+H��U�n7}_`��/d��x��Or��:H���z-
�v��ډ��gH9�Ui�@�L
�̜��!�
lSJ.�
LG��:w�%7Q+���zX�B�d�*`KGͽ���eqU~.�,�]��B��˲pl|�.�)�{�x
0ZRz��Z�%�������R���Z����we��J�<h����&�ݕ��CZ��}��> R��t9_o���l�6�IŤ�6��&t:��UY��N��+�b�cu�����*n�[��Y�YYh�Q��򴳩Z˕��>��$ �RW�r&{���t\BS?
K�SH�Z�W�S�=Q�V��RgXFQn�^Q4�#f#�W�4*��9.}<
C��Ϩ�a O'�A��{�ef���&�h��^�;r�Ng�d��	�R�H�,�Yg
&8�!���K�K�cB�]6�i�)�VR'�A	�sZ$N�����q�M�
�C��3�F߈@�ۧ����C�h.�M at 0�!
�	`��B��$Ƌ��/��
U�WS�8yq�G���\�úk�~�~#�Xr�3����Я������v��*ž�_	�;}�(�Ĉ}�hD�?���@G��}{Dw�:�.9�	�<�==�!���N��i��c�s%�e!F��
<�_��q:��*+H�����
����t� J��&�'
�xB-+N�,
��h<�M
�H(����$��Q|(�S-�r�*=^B�u:0n��4 ���r�ѥ��F�*��R��L48h$��\"��B���~��
6?�����m[m�K&�����Іn��<�S������Qx
+B�3�|�^���M?��0�P��y_�7
R�v�]ê�%�47�b���
]߰�u��,���av���,�6����W�-��M��߮[�`�f`�צ��K��p
�G����-��!o��푼��Z�둵i�c���M�ꫛ���j��(�6�]�Q���ޜ�-�� �
+��
endstream
endobj
21 1 obj
949 
endobj
23 1 obj
<< 
/Type /ExtGState 
/ca 0 
/CA 0 
/BM /Normal 
/AIS false 
>> 
endobj
25 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 218.75537 396.89893 361.16992 477.57861 ] /Length 26 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 32 1 R >> 
stream
+1 1 1 rg
0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 360.9248 477.1426 m
219.0005 397.335 l
B
endstream
endobj
26 1 obj
118 
endobj
32 1 obj
<< 
/Type /Group 
/S /Transparency 
/I true 
/K false 
/CS /DeviceRGB 
>> 
endobj
33 1 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
40 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 229.74463 396.60156 238.8335 404.36279 ] /Length 42 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 43 1 R >> 
stream
+1 1 1 rg
0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 229.7773 403.5112 m
235.5 403.75 244.5 405.75 232.75 397 c
B
endstream
endobj
42 1 obj
138 
endobj
43 1 obj
<< 
/Type /Group 
/S /Transparency 
/I true 
/K false 
/CS /DeviceRGB 
>> 
endobj
46 1 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /NWLTXZ+Symbol 
/FirstChar 0 
/LastChar 255 
/FontDescriptor 47 1 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 713 500 549 833 778 439 333 333 500 549 250 549 250 278 500 
500 500 500 500 500 500 500 500 500 278 278 549 549 549 444 549 
722 667 722 612 611 763 603 722 333 631 722 686 889 722 722 768 
741 556 592 611 690 439 768 645 795 611 333 863 333 658 500 500 
631 549 549 494 439 521 411 603 329 603 549 549 576 521 549 549 
521 549 603 439 576 713 686 493 686 494 480 200 480 549 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 750 
620 247 549 167 713 500 753 753 753 753 1042 987 603 987 603 400 
549 411 549 549 713 494 460 549 549 549 549 1000 603 1000 658 823 
686 795 987 768 768 823 768 768 713 713 713 713 713 713 713 768 
713 790 790 890 823 549 250 713 603 603 1042 987 603 987 603 494 
329 790 790 786 713 384 384 384 384 384 384 494 494 494 494 250 
329 274 686 686 686 384 384 384 384 384 384 494 494 494 250 ] 
>> 
endobj
47 1 obj
<< 
/Type /FontDescriptor 
/FontName /NWLTXZ+Symbol 
/FontBBox [ -180 -293 1090 1010 ] 
/Flags 6 
/CapHeight 672 
/Ascent 1010 
/Descent -293 
/StemV 120 
/ItalicAngle 0 
/XHeight 771 
/FontFile3 191 0 R 
>> 
endobj
48 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 395.25 476.42041 395.25 476.42041 ] /Length 50 1 R /Resources << /ExtGState << /R1 4 1 R >> >> 
/Group 51 1 R >> 
stream
+1 1 1 rg
0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 395.25 476.4204 m
B
endstream
endobj
50 1 obj
97 
endobj
51 1 obj
<< 
/Type /Group 
/S /Transparency 
/I true 
/K false 
/CS /DeviceRGB 
>> 
endobj
54 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 219.04004 309.00781 354.85059 398.23438 ] /Length 55 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 56 1 R >> 
stream
+1 1 1 rg
0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 219.3135 397.8159 m
354.5771 309.4268 l
219.3135 397.8159 l
h
B
endstream
endobj
55 1 obj
141 
endobj
56 1 obj
<< 
/Type /Group 
/S /Transparency 
/I true 
/K false 
/CS /DeviceRGB 
>> 
endobj
58 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 219.28906 390.50098 358.27441 398.31543 ] /Length 59 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 60 1 R >> 
stream
+1 1 1 rg
0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 358.25 391 m
219.3135 397.8159 l
B
endstream
endobj
59 1 obj
112 
endobj
60 1 obj
<< 
/Type /Group 
/S /Transparency 
/I true 
/K false 
/CS /DeviceRGB 
>> 
endobj
63 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 245.25 400.75 245.25 400.75 ] /Length 64 1 R /Resources << /ExtGState << /R1 4 1 R >> >> 
/Group 66 1 R >> 
stream
+1 1 1 rg
0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 245.25 400.75 m
B
endstream
endobj
64 1 obj
95 
endobj
66 1 obj
<< 
/Type /Group 
/S /Transparency 
/I true 
/K false 
/CS /DeviceRGB 
>> 
endobj
68 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 222.46973 387.50098 312.53027 393.99902 ] /Length 70 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 71 1 R >> 
stream
+0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 222.5 393.5 m
312.5 388 l
S
endstream
endobj
70 1 obj
96 
endobj
71 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
72 1 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
73 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 310.54199 384.78516 316.7168 391.42969 ] /Length 74 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 75 1 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 316.7168 387.7422 m
314.6875 387.127 312.1494 386.0215 310.542 384.7852 c
311.9463 388.0342 l
310.9482 391.4297 l
312.3926 390.0068 314.7773 388.5996 316.7168 387.7422 c
h
f
endstream
endobj
74 1 obj
220 
endobj
75 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
77 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 218.2832 390.07031 224.45801 396.71484 ] /Length 78 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 80 1 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 218.2832 393.7578 m
220.3125 394.373 222.8511 395.4785 224.458 396.7148 c
223.0532 393.4658 l
224.0518 390.0703 l
222.6074 391.4932 220.2227 392.9004 218.2832 393.7578 c
h
f
endstream
endobj
78 1 obj
220 
endobj
80 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
82 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 218.2832 384.78516 316.7168 396.71484 ] /Length 84 1 R /Resources << /ExtGState << /R1 4 1 R /R4 72 1 R >> /XObject << /Fm7 68 1 R /Fm8 73 1 R /Fm9 77 1 R >> >> 
/Group 85 1 R >> 
stream
+q /RelativeColorimetric ri
/R4 gs /Fm7 Do
Q
q /R4 gs /Fm8 Do
Q
q /R4 gs /Fm9 Do
Q
endstream
endobj
84 1 obj
82 
endobj
85 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
88 1 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /WXPZXZ+Times-Italic 
/FirstChar 0 
/LastChar 255 
/Encoding /WinAnsiEncoding 
/FontDescriptor 90 1 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 
500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 
611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 
722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 
500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 
500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 
250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 
333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 
389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 
675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 
611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 
667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 
500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 
500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] 
>> 
endobj
90 1 obj
<< 
/Type /FontDescriptor 
/FontName /WXPZXZ+Times-Italic 
/FontBBox [ -169 -217 1010 883 ] 
/Flags 32 
/CapHeight 653 
/Ascent 883 
/Descent -217 
/StemV 76 
/ItalicAngle 0 
/XHeight 441 
/FontFile3 189 0 R 
>> 
endobj
91 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 365 395.2373 368 473.5127 ] /Length 92 1 R /Resources << /ExtGState << /R1 4 1 R >> >> 
/Group 93 1 R >> 
stream
+0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 367.5 473.5 m
365.5 395.25 l
S
endstream
endobj
92 1 obj
99 
endobj
93 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
94 1 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
95 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 362.21777 391.02637 368.87207 397.09277 ] /Length 96 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 97 1 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 365.3916 391.0264 m
364.7051 393.0332 363.5107 395.5308 362.2178 397.0928 c
365.5137 395.8042 l
368.8721 396.9224 l
367.501 395.4287 366.1797 392.9951 365.3916 391.0264 c
h
f
endstream
endobj
96 1 obj
221 
endobj
97 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
99 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 364.12793 471.65723 370.78223 477.72314 ] /Length 104 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 105 1 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 367.6084 477.7231 m
368.2949 475.7173 369.4893 473.2192 370.7822 471.6572 c
367.4863 472.9458 l
364.1279 471.8276 l
365.499 473.3213 366.8203 475.7549 367.6084 477.7231 c
h
f
endstream
endobj
104 1 obj
221 
endobj
105 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
107 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 362.21777 391.02637 370.78223 477.72314 ] /Length 108 1 R 
/Resources << /ExtGState << /R1 4 1 R /R5 94 1 R >> /XObject << /Fm11 91 1 R /Fm12 95 1 R /Fm13 99 1 R >> >> 
/Group 112 1 R >> 
stream
+q /RelativeColorimetric ri
/R5 gs /Fm11 Do
Q
q /R5 gs /Fm12 Do
Q
q /R5 gs /Fm13 Do
Q
endstream
endobj
108 1 obj
85 
endobj
112 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
122 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 320.9707 385.00098 355.0293 387.99902 ] /Length 126 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 130 1 R >> 
stream
+0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 321 387.5 m
355 385.5 l
S
endstream
endobj
126 1 obj
94 
endobj
130 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
138 1 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
142 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 353.0498 382.28027 359.21777 388.92578 ] /Length 146 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 156 1 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 359.2178 385.252 m
357.1895 384.6318 354.6533 383.5205 353.0498 382.2803 c
354.4463 385.5322 l
353.4404 388.9258 l
354.8877 387.5059 357.2764 386.1045 359.2178 385.252 c
h
f
endstream
endobj
146 1 obj
220 
endobj
156 1 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
164 1 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm17 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 316.78223 384.07422 322.9502 390.71973 ] /Length 166 1 R 
/Resources << /ExtGState << /R1 4 1 R >> >> /Group 176 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 316.7822 387.748 m
318.8105 388.3682 321.3467 389.4795 322.9502 390.7197 c
321.5537 387.4678 l
322.5596 384.0742 l
321.1123 385.4941 318.7236 386.8955 316.7822 387.748 c
h
f
endstream
endobj
166 1 obj
220 
endobj
176 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
178 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm18 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 316.78223 382.28027 359.21777 390.71973 ] /Length 179 0 R 
/Resources << /ExtGState << /R1 4 1 R /R6 138 1 R >> /XObject << /Fm15 122 1 R /Fm16 142 1 R /Fm17 164 1 R >> >> 
/Group 180 0 R >> 
stream
+q /RelativeColorimetric ri
/R6 gs /Fm15 Do
Q
q /R6 gs /Fm16 Do
Q
q /R6 gs /Fm17 Do
Q
endstream
endobj
179 0 obj
85 
endobj
180 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
182 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
/CS /DeviceRGB 
>> 
endobj
184 0 obj
/DeviceRGB 
endobj
185 0 obj
<< /Filter /FlateDecode /Length 186 0 R /Height 128 /Width 128 /BitsPerComponent 8 
/ColorSpace 184 0 R >> 
stream
+H��=kO��7H)V�
H�,�BlR���vG	�M#
D1	ߢ�_J1�)S9��� !�U:-� ��={?g�������ξ�<^�aw���=�}�oI2~�{{{��"
c��߿�6|,o¡ �I^|����Ǐ�
=]���;t	�5�|�74Z��_G����ݴ��Ah�hC�Pi�mC�%��
��|g� ��zAjkg��qʼ ��T�q���m`܅����[�n�[�Ӟ-~ �<~�x|�;��;;;��������6mr�XG��y��y811���:~.�
k��8�n��� �Ϝ9���&�m+!���
ះRŸ墛Ú�ֶ!�R��+��ۦ��CgUaGi�i�� ů_���

a
�w�Y377�n����B���������Z[^�j���s��B�he+�0v�K����sQ�?T�y�/�q�t�x�/�o���]u^! {nIAMu��_Zd-0�W�a���8I�O-�
��t�u;�<�"����������
�݋�E������U���wȲ�S���/ ����
+�
��P0���\
u��R��?���q�]�)_LOO+ڳ�K�����@��ףDt
���sa�� E�:"��uH\���0��S�(�_��$e
����t0��S���7���_҂&i���k�'z���4���~�OZS	�Z�8O���?�C;��&�'iSQ�ξ���Z055e�����TI;̈́y��<E��*a8����^����TH�=��췿��7���/���v����C������ׅ̀ץA��*̓�2����O�E�s҇�~�:J>���;�$�/�OsЖ�I0��ի�<�|��/�O��y���-ȯ���m_��C>�7z�a)7�sp����f"�ϭ���x�5:�'�y�%�㈈6I�Ro/�-m����~k,�v2�Lqm��[$!��������Z����~[�E���[�j��v.�7j��y���_��%ի��c����������ܜo�d�"b��K���/��4�n}���
H��\�KXM��:�s7��0������9
�D
�8�{���
�}
�K,�"מ�����X#@�䃮���%�s1
��W��L��{qwA6v�E������|�\O�
+R���|/�w	�w���OVR���YH>�|��
ºF�5��;Y���O\�rE%�*�"~�����j�I����\
+��z2���'b�S��l���]�x
+�ܘD�p�4_TժT�ɨDA0�j�*]��'���4
���\�~=�\�����������s��
J�Sv�Q�$���
+���v�͞�
���������}
�ȿ��ϟ?ƿ8T'�t(Z��~,�SyKl����L��t}Y��tf���)jA6$�9�����t���
�@+��K�޿�(2�!�������] ��&?B;2�97�
$�Dq�c�}#%��m�4f�#i��M�E{�`���i�-�
�T������P)?2O��R�%\��P4��u���R���8�`�����	��������"+1ȯ�d���
+r�(��(�Y�U��?��Ǯ�#X�>���&�vww|���	���\���O~�M>��ׯ����O-�݄����%v��4�Eok)��?��<�������pqߒ\ǧ�y�?��ȝ�/*�GGG�^:����U���ו��b	+�^��h	����_4O�3z$)��z�/�A^��%�A�E�z��$y�wd��ŋ�:`8��oI�p(��g\��BB/I������z=K�P% �^q�����v�y󦺮�	.�<U��� >���/`Ȣ�K��T~-;��c<6�?�{���?J�Ǽ��������7
�[��J����.+<x���XI�w��&��/^��q�F�H ��1������џ�͘���u�"����ɓ$園q�ҥ����̃"�7����޽��뜋�������k׮YDў/�I�~{)jj�޾}�s���ٳ����u���TD�?��4��[U�����Pד��E3]uH��HB@섊�T���k�?��������jC�gϞ��nccC������\?�p4sU��
�jX�u��U�Kw�a�hf��]�����Ғ˲((2I&���Ӿy�
�RX��s��"�"Q������/N��S�W�V	�l�����
��`0(m��^�'�1�T�O�>��Ç�/_V�����8G��}�SVB�HR%�����~�Ȯ�|h�>g�=991
b���
�h�T�k�����>�&v?�?����"�A����paa���8w%��g�!�������:z_�QfffVWW��p���!"`�e�
=�UBM(տ��{J76��oYL�<

y�/��܄#T�W��S��tlS����$�^p� [...]
v�� 
�� )��],�
�?��\=Hg�0�a)H��Ҽ'貏�^�8�!�z��B�
�2��"�K p(��tQ%$����N��$F��;��X�KQ,����R8.�'m��w���\��,�^!����h��ln��$^85�`�U�I��
x�+�8�Z�
+�uT
N�o�\@��M�B��r�aX+���:#��o��u�LG�b���:�1��C�@TqS�=\F6��&�
�?���Y{z����Pk�+1.�zs��?
�i
���'7
��K�;	IJ��H+�ܹ�b����?�9߾}���("?i���J�t������QG�w���-��� I��޽{
�@��\�z��ɠ��*�ܹ����������
����)�T��?J"Z__�5�aв�]���C@ ���ݻ�;�t���u��VB@@Q&�AQb��%��t�����\	��a;�"Ggx�Q.�q�bD�ҏ	�h����
��~="Z
A6o��+�P�� ��;�ˠڶ�}K,t��$={,]U����X�)�oۄ���@X\\��
�B�����#��d!�Z���']�B��*}f�ɿ~�V��#��2*۶�D�@�,�I��:B�:$�E��z�^�}j!�M \P]��ÖKiu mT4���'i;�Y$�a,�O:@`���t�� ����.kj at MCPD�6��d��O��)8�8�fwp43 ���e͘��]�V�C&��q�`0hΚ� ǖ
+�
�ع��i��"�� r��x�
-
���t�/�h�/�ɿ��rڴ&*D`�OG*h~�o�/�5�~]��~���H�w�
;;;�/[U ��)�!�q)U����n8`������@�KѤ#�F8ݩ�
��द���iw䨠w��%��_�
�I�"
cM7E��  ['!^
endstream
endobj
186 0 obj
3411 
endobj
187 0 obj
<< /Filter /FlateDecode /Length 188 0 R >> 
stream
+H��W�n7���>�(�� A��NZ�
�ZB^�<(�ș@K:
g���;�,��$(�TC�4<�����-�7ն�U���'Oʫ�m�gS��[�J���T��My}���
?S�a":���SvyU�,�T
V��v]��n��i�����i����WM���>�ѳ��]L'�m[���e��`�Z��0�حw
�J��w�9k��c���M��Yl�>,�j���18y~yQHF���fEy]ai���כ�m�%kjL(v{Ǵ5�
ϴ<�`٦�Fqi"\�[�|	\
���i��0�{^�I.|�!e�V��BD˕%1
�	��ذ�D��0���ւ-{@ύ��1:0���j͌�x�
�V�>׿ ��a/0x��o���n(���l���$"���A'��Q"lϥ�x0�?�p�J�B�^����w�g�߬�֤�|���rW�Օ�D�єM�8M�y

��u�E�1�k�4Ҫ��nPd�95����'G=#�[�"g�(Ʌ��
��!��0� *dri��
�
Ƕ,�煆�� ��!�gJ�UV �W���Cˆ��f���i_��t%M�
�w<FR�<��r�+A��9��
�2�S��@R����(�����%i1x�T4��4���ޛQ��8)9��r�H;p籄=��l���ke at t�
+8"i�)
�ū��/�IDz��:3�C��\IlD����3�4"�
��1�"8?i
͚���N8��JC�i���
�
� �_f���j
C?-)�#��Gh���E���d#o��
+S)lB�멦��h]�uNcG4����ހк��D��|�t_�_�G����Y�ĉ4�8ߺ�
=����p�c��V��@�ۏ�Η�
�p�!{%$��ef�D��&�
G
+��X(�ޟAfp9�9��*��*r
-��V�r�N7` ��ke�����Xݟ~S��

NK3��_�ȩ�������$)�Q�EWM��h/#�n�j�<4
Ʒ_�G>���r^}nq}��}�3Z��S�sAP�@]y��k��j�z�X��˫�;qQ<��i_�R_�M;�PéUgPH�o�
��͂����o��j�B/����ݢ�����U��������]�u�E��
S^:_��[yYߵ��B"Xy�����Y��p��FZt>���B��%ܙ� Η��~VH꾍K����o�����=z2�a�MqR& �ɀ"�������)d�!{
�\�Bw
]σ
��=[�B�蠳��ww�4J��E}
�)���������tꐮ�������4M���P�^���]�hQ��j�(~�l�}��}�=XS�jzTĬ�J��Fa����(��AqFQ�g��!:��"�
�!���G?|�]=���dw�8TK��>I
�Zg��&��C$��MT+�-`p�H���CM,kꗴ�t΄����=�FO���T�
�g���>)�D2k���
�,� ɴ���������n$;VJU[
�C� ��n�
endstream
endobj
188 0 obj
1487 
endobj
189 0 obj
<< /Filter /FlateDecode /Length 190 0 R /Length1 1218 /Subtype /Type1C >> 
stream
+H�,�}Lw��Z�(JN�Y_���X�	nJ�9�icN�
D!2A����+�J��XJki7^��`��
+t��w�ecL�0dC4���0�-����c�
+���'O�������X�
�q|ɞ��{����a0�ͫS,�b�vN_%�0)�^�I�\Z�N��
�������"��S���KÑ!-X�+��G��uk�ju�`�
�>ZïM�_��
7�3a�	�y��s������
+�Eo4�)%ZA4	�Ƣ׭����b~�\��ߥ7�Ų�:*o0��"jtz�F<�
��
%��¤_�Mt%m�5%�XA�
A��P�٠3hD����]�w,88�-�±������m�ҰL,<�$L��{X-�9v_�w��
+d��w�O��X�X#.N�y���ٰ���s�"�CK�
C����Q�W�A��(v3R�f����g�k�8�&��h��a!��FHg`�	�$C[� Ng��晸J��(v?Z����OA��=e`���
n�9%R@@�q0�0�0���&oY ъo���a<�F9K��HL�H$(�=��$.ɦ�ҫ�)
l����1	�A�bX�w�3��Y���5"u&�SO��zbFu(탢�tģ
@�:
+�	�>�=&Q�NkD�cȚtt҃t���2w�U�R
ihn|�z�s�^�
L�w:ks	�s��S�h5JC+K�����/n] ��q���C��.�x�˳wo��
۔33��a,=��+ώ�A�QA����G=����
|`�'rx��R[����J5^���l��]ݎ*�V�P�X:���z�|������Qh�#�nN��Xj��H�Pދ����7��H�r����'�GJ�Cu����������We
\n����|�fPa7`=P>��$ '���ȱ����X��^�>�؛M��]��ݕW�Qć(�R6�����$f,��8?u�!]H�Ky��9 
��\՞��
��K�E˩}�K�a]�oA��tV�=�6�VQz����l�)F7E^���KC
+Zw����a�g��
ݯMBN3S�1]?3tg4��>/�_=���	��o���VW[�kE����ѡ�
+���luB}C���v45(���G4V��V1F_m�7�.�ckZ��ba�Uew��yݞ&/����$U���D�v8�BB�w��Qh��������
+�h��j
+�/��Pr.���_ ��
endstream
endobj
190 0 obj
1183 
endobj
191 0 obj
<< /Filter /FlateDecode /Length 192 0 R /Length1 528 /Subtype /Type1C >> 
stream
+H�bd`ab`dd��
�	�����M������a�!��C��
�q��
�w���������� ���3~Lb`add���K�)�H400�30�p�/�,�L�(Q�H�T0��0���`�DZ�Isǔ��T������bϼ������Ē�=ǜ
�1�
+E�ũEe at A��������>``a�e(`4����}U_c��I��+E����a�g���W���GG��z���o3~��G�wYѺ	�>)
)ҿپG|�y����w^��Jƺѿ�s���
\���3���

c�CT4�����d��!�����rmΥ�ʅ�|�?Gx���?�E���v�	�i�T��bu����1�'4�9G�7:��f��4n~���
Ug��L�9�Ɋ����Y�5;cq�ܪ���.[8uSϼ�c�l�u]�ee99�K�T̫]޼�;�����~�^S�]U^UZQ�T�S�[7�ta����m+��thҁ�ۖ�^�|�cU+���.�X�8�vR$_ż���~��`{��� � ��
endstream
endobj
192 0 obj
532 
endobj
xref
0 193 
0000000022 65535 f
+0000000016 00000 n
+0000000069 00000 n
+0000000133 00000 n
+0000000674 00001 n
+0000000783 00000 n
+0000000973 00001 n
+0000001052 00001 n
+0000001335 00001 n
+0000002833 00001 n
+0000012552 00001 n
+0000028871 00001 n
+0000028894 00001 n
+0000047760 00001 n
+0000047783 00001 n
+0000068284 00001 n
+0000068307 00001 n
+0000088249 00001 n
+0000088272 00001 n
+0000097689 00001 n
+0000097711 00001 n
+0000098742 00001 n
+0000000024 00002 f
+0000098763 00001 n
+0000000027 00002 f
+0000098844 00001 n
+0000099205 00001 n
+0000000028 00002 f
+0000000029 00002 f
+0000000030 00002 f
+0000000031 00002 f
+0000000034 00002 f
+0000099226 00001 n
+0000099317 00001 n
+0000000035 00002 f
+0000000036 00002 f
+0000000037 00002 f
+0000000038 00002 f
+0000000039 00002 f
+0000000041 00002 f
+0000099398 00001 n
+0000000044 00002 f
+0000099778 00001 n
+0000099799 00001 n
+0000000045 00002 f
+0000000049 00002 f
+0000099890 00001 n
+0000101079 00001 n
+0000101304 00001 n
+0000000052 00002 f
+0000101638 00001 n
+0000101658 00001 n
+0000000053 00002 f
+0000000057 00002 f
+0000101749 00001 n
+0000102133 00001 n
+0000102154 00001 n
+0000000061 00002 f
+0000102245 00001 n
+0000102600 00001 n
+0000102621 00001 n
+0000000062 00002 f
+0000000065 00002 f
+0000102712 00001 n
+0000103038 00001 n
+0000000067 00002 f
+0000103058 00001 n
+0000000069 00002 f
+0000103149 00001 n
+0000000076 00002 f
+0000103488 00001 n
+0000103508 00001 n
+0000103584 00001 n
+0000103665 00001 n
+0000104127 00001 n
+0000104148 00001 n
+0000000079 00002 f
+0000104224 00001 n
+0000104686 00001 n
+0000000081 00002 f
+0000104707 00001 n
+0000000083 00002 f
+0000104783 00001 n
+0000000086 00002 f
+0000105169 00001 n
+0000105189 00001 n
+0000000087 00002 f
+0000000089 00002 f
+0000105264 00001 n
+0000000098 00002 f
+0000106484 00001 n
+0000106713 00001 n
+0000107042 00001 n
+0000107062 00001 n
+0000107138 00001 n
+0000107219 00001 n
+0000107684 00001 n
+0000107705 00001 n
+0000000100 00002 f
+0000107781 00001 n
+0000000101 00001 f
+0000000102 00001 f
+0000000103 00001 f
+0000000106 00001 f
+0000108248 00001 n
+0000108270 00001 n
+0000000109 00002 f
+0000108347 00001 n
+0000108745 00001 n
+0000000110 00001 f
+0000000111 00001 f
+0000000113 00001 f
+0000108766 00001 n
+0000000114 00001 f
+0000000115 00001 f
+0000000116 00001 f
+0000000117 00001 f
+0000000118 00001 f
+0000000119 00002 f
+0000000120 00001 f
+0000000121 00001 f
+0000000123 00001 f
+0000108842 00001 n
+0000000124 00001 f
+0000000125 00001 f
+0000000127 00001 f
+0000109181 00001 n
+0000000128 00001 f
+0000000129 00001 f
+0000000131 00001 f
+0000109202 00001 n
+0000000132 00001 f
+0000000133 00001 f
+0000000134 00001 f
+0000000135 00001 f
+0000000136 00001 f
+0000000137 00001 f
+0000000139 00001 f
+0000109279 00001 n
+0000000140 00001 f
+0000000141 00001 f
+0000000143 00001 f
+0000109361 00001 n
+0000000144 00001 f
+0000000145 00001 f
+0000000147 00001 f
+0000109827 00001 n
+0000000148 00001 f
+0000000149 00001 f
+0000000150 00001 f
+0000000151 00001 f
+0000000152 00001 f
+0000000153 00001 f
+0000000154 00001 f
+0000000155 00001 f
+0000000157 00001 f
+0000109849 00001 n
+0000000158 00001 f
+0000000159 00001 f
+0000000160 00001 f
+0000000161 00002 f
+0000000162 00001 f
+0000000163 00001 f
+0000000165 00001 f
+0000109926 00001 n
+0000000167 00001 f
+0000110392 00001 n
+0000000168 00001 f
+0000000169 00001 f
+0000000170 00001 f
+0000000171 00001 f
+0000000172 00001 f
+0000000173 00001 f
+0000000174 00001 f
+0000000175 00001 f
+0000000177 00001 f
+0000110414 00000 n
+0000000181 00001 f
+0000110491 00000 n
+0000110893 00000 n
+0000110914 00000 n
+0000000183 00001 f
+0000110990 00000 n
+0000000000 00001 f
+0000111083 00000 n
+0000111112 00000 n
+0000114667 00000 n
+0000114690 00000 n
+0000116257 00000 n
+0000116280 00000 n
+0000117574 00000 n
+0000117597 00000 n
+0000118239 00000 n
+trailer
<<
/Size 193
/Info 5 0 R 
/Root 1 0 R 

>>
startxref
118261
%%EOF
\ No newline at end of file
diff --git a/doc/equilinear.eps b/doc/equilinear.eps
new file mode 100644
index 0000000..cf3d34d
--- /dev/null
+++ b/doc/equilinear.eps
@@ -0,0 +1,11288 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(TM) 7.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (equilinear.eps)
+%%CreationDate: 2/28/2001 10:51 PM
+%%BoundingBox: 208 298 401 492
+%%HiResBoundingBox: 208.5 298.4941 400.5 492
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentFonts: Myriad-Roman
+%%+ Symbol
+%%+ Times-Italic
+%%DocumentSuppliedFonts: Myriad-Roman
+%%+ Symbol
+%%+ Times-Italic
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.1 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%AI5_FileFormat 3.0
+%AI3_ColorUsage: Color
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 219 -283 805 483
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 200 200
+%AI5_RulerUnits: 2
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI5_OpenToView: 23 607 1.5 1345 943 18 0 1 11 225 1 0
+%AI5_OpenViewLayers: 77
+%%PageOrigin:219 -283
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI7_Thumbnail: 128 128 8
+%%BeginData: 10188 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD3AFFA87D522727F8F8F8272752FD0427F8272727527DA8FD66FF
+%7D27F8F8275252A8A8FD0CFFA87D7D5227F827277DA8FD5DFFA85227F852
+%7DFD19FFA8A85227F8277DFD57FFA827F8F87DA8FD21FF7D52F82752FD52
+%FF5227277DA8FD27FF7D52F852A8FD4CFFA852F852A8FD2DFF52F827A8FD
+%49FF272752FD32FF7DF827A8FD44FFA852F87DA8FD35FF7D2727A8FD41FF
+%7D2752FD3AFF7DF852FD3EFFA8F827A8FD3CFFA82727FFFFFF52FD38FF7D
+%F87DFD3DFF7DF85252FFFF52F8FD36FFA82727FD3DFF7D2727FF7D27FFFF
+%F8F852FD34FF7D277DFD3DFF2727A8FFFF7DF8FF27F8F827FD33FF2727A8
+%FD3BFFA852F87DFD04FF7D27A87DFF7D52A8FD31FF2727A8FD3BFF522752
+%FD06FF7D27FFFFFF7DFD32FFF852FD3BFF7DF852A8FD07FF5227FFFFFF7D
+%FFFFA87D272727A8FD28FFA8F87DFD3AFFA82727A8FD09FF7D27FFFFFF7D
+%FFFF7D7DA85252277DFD26FFA8F87DFD3AFF27277DFD0BFF7D27FFFFFF7D
+%FD08FF52A8FD24FFA8F87DFD39FF52F87DFD0DFF5252FFFFFF7DFFFFA8F8
+%27A87D52FD25FFA8F87DFD38FF52F852FD0FFF5227FFFF52A8FFFFF8527D
+%52A827FD25FF277DFD37FFA8F852A8FD10FF5227FFFF7DFFFFFF5227FFFF
+%5227FD24FFF87DFD36FFA82727A8FD12FF5227FFFF7DFFFFFF52F87DFFA8
+%52FD23FF2752FD36FF52277DFD14FF5227FFFF7DFD04FFA852F8A8FD23FF
+%5227FD34FFA852F87DA8FD15FF2727FFFF52FD05FFA8A8F827FD21FF7D27
+%FD34FF7D2752FD18FF2727FFFF7DFD05FF27F85227FD20FFA8F87DFD32FF
+%A8F8277DFD19FF2752FFFF52FD05FFF827F852FD20FF2752FD31FFA852F8
+%A8FD1BFF527DFFFF7DFD05FF7DF82727FD1FFF7D27FD31FF52F852FD1DFF
+%2752FFFF52FFFFFF7DFFFF7D2752FD1FFFF8FD30FF7DF852FD1FFF2752FF
+%FF7DFFFFFFA8277DA8FFFFA8FD1DFF277DFD2EFF7D2727FD21FF2752FFFF
+%7DFD04FFA827F8F82752FD1CFF7D27FD2DFFA82727A8FD21FFA8527DFFFF
+%7DFD05FF52527DA8FD1CFFA8F87DFD2BFFA852F87DFD23FFA8F852FFFF52
+%FD05FF2727F827FD1CFF7D52FD2BFF522752A87D7D522727522727277D7D
+%A8FD18FFA8277DFFFF7DFD05FF27F8A8FD1DFFF8A8FD29FF7DF82727F827
+%5252A87DA87DA87DA8527D27F8F87DA8FD14FFA827A8FFFF52FD05FF5252
+%F827FD1BFF5252FD28FFA827F827527DA8FD0EFFA85227F87DA8FD11FFA8
+%27A8FFFF7DFD05FF2727527DFD1AFFA8F8A8FD26FFA827F8F87DA8FD14FF
+%A827F852FD10FFA8F8A8FFFF52FD05FFF827F852FD1AFF7D52FD26FF52F8
+%277DFD19FFA852F87DFD0EFFA827A8FFFF7DFD05FF27F85252FD1AFFF8A8
+%FD24FF5227F87DFD1EFF2727A8FD0CFFA827A8FFFF7DFD05FF7D27F852FD
+%19FF7D52FD23FFA8F82727FD21FF7D277DFD0BFF7D27A8FFFF7DFD04FF27
+%2752527DFD19FF277DFD21FF7D27F8F852FD23FFA82727FD0AFF7DF8A8FF
+%FF52FD05FF5252F827FD18FFA8F8FD21FF522752277DFD26FF2752FD09FF
+%7D27FFFFFF7DFD21FF277DFD1EFFA87DF87D7DF8A8FD10FFA85252272752
+%527DFD10FF5227FD08FFA827FFFFFF52FD21FF27A8FD1DFF7D2752FFA827
+%A8FD0FFF5227FD09F852A8FD0EFF5252FD07FF7D27FFFFFF7DFFFFFFA827
+%272752A8FD17FF7D27FD1CFFA8F8277DFFA8F87DFD0EFF52F8F8F8527DFD
+%04FFA85227F8F827FD0EFF2752FD06FF7DF8FFFFFF52FFFFFF527D7D5227
+%277DFD16FF277DFD1AFFA852F8A8FFFFFF277DFD0EFF27F8277DFD0BFF27
+%F8F8A8FD0DFF277DFD05FF5227FFFFFF7DFD05FF7DFFFFFF7DFD16FF27A8
+%FD19FF52F852FD04FF5227FD0DFFA8F8F852FD0EFF7DF8F87DFD0CFFA8F8
+%A8FD04FF7D27FFFFFF7DFD04FFA827FF7DA8FD16FFA827FD18FF7DF852FD
+%05FFA8F8FD0DFFA8F8F87DFD10FFA827F87DFD0CFF7D27FD04FF7D27FFFF
+%FF7DFD05FF277DA827FD16FF5252FD16FF7D2727A8FD06FFF8A8FD0CFFA8
+%27F87DFD12FFA827F8A8FD0CFFF87DFFFFFF5227FFFFFF52FD05FF7D27F8
+%7DFD16FF527DFD14FFA82727A8FD07FF5252FD0DFF52F87DFD14FFA827F8
+%FD0CFFA8F8FFFFFF2727FFFFFF7DFD06FF52FD18FFF8FD13FFA852F87DFD
+%08FFA8F8A8FD0CFF7DF852FD16FF7DF827FD0CFF5252FFFF7D27FFFFFF52
+%FD06FF27FD17FFA827FD12FF522752FD0AFF7D27FD0DFFF827A8FD05FF52
+%52FD08FF7D527DFD05FF27F87DFD0BFFA827A8FF7D52FFFFFF7DFD04FF27
+%27F82752FD15FFA827FD10FF7DF852A8FD0BFFF8A8FD0CFF52F87DFD05FF
+%5227277DFD06FFA8272752A8FD05FFF827FD0CFF277DFF2727FFFFFF52FF
+%FFFFA8FFFF27FD17FF527DFD0EFFA82727A8FD0CFF7D52FD0DFFF827FD06
+%FF52275252FD06FF7D275227A8FD05FF7DF87DFD0BFFA8F8FFF827FFFFFF
+%7DFFFFFF27FFA852FD17FF277DFD0CFFA827277DFD0EFF527DFD0CFF7DF8
+%A8FD05FFA827272752FD06FF522727277DFD05FFA8F827FD0CFF27A8527D
+%FFFFFF7DFFFFFF5227F87DA8FD16FF27FD0BFFA852F87DFD10FFF8FD0DFF
+%F827FD06FF7D52275252FD06FF7D27522752FD06FF27F8A8FD0BFF525252
+%7DFFFFFF7DFD04FF7D27F82752A8FD14FFF8FD0AFF52F852FD06FFA8A87D
+%52FD07FF7D52FD0CFFA8F852FD06FF7DFD0427A8FD05FF5227272752FD06
+%FFA8F87DFD0BFFA8F82752FFFFFF52FFFFFF52FFA8FFFFA827A8FD13FF27
+%FD08FFA8F827A8FFFFFFA8FFA8FF527D522752FD06FF527DFD0CFF7DF8A8
+%FD06FF7D52275227A8FD05FF7D2752277DFD07FF2727FD0CFF27F852FFFF
+%FF7DFFFFFF7D277DA8FFA827FD13FF7D27FD06FF7D27F87D7DFFFFFF2752
+%2727FF52A8FF7D27FD06FF27A8FD0CFF27F8FD07FFA827272752FD06FF52
+%27272752FD07FF27F8FD0CFF272752FFFFFF52FD04FFA82727F8277DFD13
+%FFA827FD05FF27F8F8272727F8FF5227FF2752FF52FFFF27A8FD06FF27FD
+%0DFFF827FD07FFA852275227FD06FF7D2752277DFD07FF7DF8A8FD0BFF7D
+%277DFFFF7DFD1EFF7D52FFFFA87DF852A8FFFFFFA827A8A827FFF87D52A8
+%FF7D7DA8A8FD04FFA827FD0DFFF852FD08FF27272752FD06FF7D272752A8
+%FD07FF7DF852FD0BFF7DF87DFFFF7DFD1EFF7D52FF7D2752FD06FF2752FF
+%A827527DF827FFA8F8F8F8FD05FF7D52FD0CFFA8F87DFD08FF7D2752A8FD
+%07FF275252FD09FFF87DFD0CFFF8A8FFFF7DFD1EFF525227277DFD05FFA8
+%2752FD12FF7D52FD0CFFA8F8A8FD09FF7D7DFD08FFA87DA8FD09FFF827FD
+%0CFFF8A8FFFF7DFD1EFF52F827FD04F8FD05277D527D527D7DA8A8A87DFD
+%09FF527DFD0CFF52F8A8FD1FFFF827FD0CFFF8FFA8FF7DFFA8FD1CFF2752
+%272752FFFFFFA8A87DA87D7D527D525252FD0527F8F8F8FD0627FD04527D
+%7DA87DA8A8FFFF52F8A8FD1FFF2727FD0CFFF8A8FFFD04F8FD1CFF522727
+%F82752FD17FFA8A8527DA87D527D527D272727522727F8F8F82727522752
+%527D527D7DFD05A8FD10FF2727FD0CFFF8A8FF52F8F8A8FD1CFF2727F8F8
+%2727FD05F8FD04277D527D7DA87DA8A8FD08FF7D7DFD0CFF7DF8A8FFA87D
+%A87DA8527DFD0452FD0427FD04F8FD052752527D527D7DF8F8A87DFD0AFF
+%F8A8FFFFF827FD1DFF5252A8F8A8FF7DF87DFFFFFD04A87D7D527D52FD04
+%27F8F8FD0427522752527D7DA8A8A8FD06FFA8F87DFD0DFFA8A8FD06FFA8
+%A87DA8A8A8527D527DF8FD0527F8F8F8FD0527F8FFFFFF27A8FD1DFF5252
+%FFFFA8FFFFA82727A8FD11FF7DA87D52277D5252FD0427F8F8F8272727F8
+%FD04527D7DA87DFD07FFF87DFD04FF5252FD08FFA8F852FD09FF7DA87DF8
+%FD22FFA852FD07FF7D2752FD13FF7D7DFD0CFF7DF8527D527D5252FD0427
+%F8F8F8522727F8277D7DF8F87DA8A8FD06FFA8F87DFD08FFA87DFFFFF8FD
+%22FF7D52FD08FFA852F8A8FD11FFA827FD05FF52A8FD06FFF827FD0CFFA8
+%A8F8F852A827F8F8FD0427FD04F82727F8277D525252A87DA87DFFF8277D
+%F8FD22FFA827FD0AFFA8F852FD11FF27FD04FF52A8FD07FF27F8FD07FFA8
+%FD05FF7D7DFD04FFA8277DFFFFA8FD04FFA852F8A87D7D527D52FD0527F8
+%F8F8FD22FFA827FD0CFF27277DFD0FFFF8A8FFFF52F87DFD07FF52F8A8FD
+%05FF5252A8FD0CFFA8FF7D277DFD04FFF827FD09FFA8F8522727FD23FFF8
+%FD0DFFA82752FD0EFF527DFFFF7D52FD09FFF852FD04FFA87D52A8FD0EFF
+%7D52A8FFFFFFA8F87DFD09FFA8FFFF2727FD23FF27A8FD0DFFA852F8A8FD
+%0CFF7D52FFFF527DFD09FF27F8FD05FFA8FD11FFA8FD04FF52F8FD0CFFA8
+%F827FD23FF27A8FD0FFFA8F852FD0CFFF8FFFF52FD0AFF7DF87DFD1BFFF8
+%27FD05FF7D5252A8FFFFFF7D2727FD23FF5252FD11FF52F87DFD0AFF527D
+%7D7DFD0BFFF827FD1AFF52F87DFD05FFF8FFA8FD04FF275252FD23FF7D52
+%FD12FFA82727FD09FF7D527DFD0CFF7DF8A8FD19FF27F8FD05FFA827A8A8
+%FFFFFFA8F85227FD24FF27FD14FF7DF87DFD08FFF8A8FD0CFFA8F8F8FD18
+%FF52F8A8FD06FF2752A8FFFFFF277D2752FD24FF27FD15FFA82752A8FD06
+%FF7D52FD0DFF7DF852FD16FFA8F827FD0CFFA827FF5252FD24FF27A8FD16
+%FF52F852FD05FFA8F8A8FD0DFF27F87DFD14FFA8F8F8A8FD0CFF5252FF27
+%7DFD24FF7D52FD17FFA82727FD05FF5252FD0EFFF8F87DFD13FF27F8A8FD
+%0DFFF8FFFF2752FD24FFA827FD19FF7DF87DFD04FFF8A8FD0DFFA8F8F87D
+%FD10FFA8F8F87DFD0DFF277DFFFF2752FD25FFF8FD1BFF2727A8FFFFA8F8
+%FD0EFFA8F8F852FD0EFFA8F8F87DFD0DFF7D27FFFFA8527DFD25FF2752FD
+%1BFF52F852FFFF5252FD0FFFF8F8F87DFD0AFFA827F8F87DFD0DFFA827A8
+%FFFFA8F87DFD25FF7D27FD1CFFA85227FFFF277DFD0FFF5227F82752A8FD
+%04FFA87D27F8F852FD0FFF277DFFFFFFA827A8FD26FFF8FD1EFF7DF852A8
+%F8A8FD0FFFA87DFD0AF827FD10FF5252FD04FFA8F8A8FD26FF527DFD1FFF
+%272752F8A8FD11FFA87D5252277D52A8FD11FF5227FD05FFA852A8FD26FF
+%A827FD20FF7DF827F8A8FD28FF52F8FD07FF27A8FD27FF27A8FD21FF52F8
+%27A8FD26FF5227FD07FF7D27A8FD27FF7D27FD22FFA8F82752FD23FFA827
+%27FD08FF7DF8A8FD28FFF8A8FD23FF52F827FD21FF7D277DFD09FF7D52FD
+%29FF5252FD24FF7D27F87DFD1EFF2727A8FD0AFFA827FD2AFFF8FD26FF7D
+%F827A8FD1AFF7DF87DFD0CFF7D27FD2AFF5252FD26FFA8F8F8277DFD16FF
+%27F827FD0EFF52F8FD2BFFF8A8FD27FF52FD0427A8FD10FF7D27F87DFD10
+%FF5227FD2BFF5252FD28FFA827275227F8275252A87DA8FFFF7DA87D7D27
+%27F8527DFD12FF7D27FD2CFFF8A8FD29FF7DF87DFFA87D7D272727522727
+%277D52A8FD16FF7D52FD2CFF7DF8FD2AFFA82727A8FD22FF27F8FD2DFF27
+%7DFD2BFF7D2752FD21FF5227FD2DFFA8F8A8FD2BFFA827F8A8FD1FFF2727
+%FD2EFF5252FD2DFF7DF87DFD1EFF527DFD2FFF277DFD2EFF27277DFD1CFF
+%2727FD30FFF8A8FD2EFF7D2752FD1BFF277DFD30FF7DF8FD2FFFA852F8A8
+%FD19FF2752FD31FF7D27FD30FFA8F87DFD18FF277DFD32FF2752FD31FF52
+%277DFD15FFA8277DFD32FFA82752FD31FF7D2727FD14FFA827A8FD33FFA8
+%277DFD31FFA852F87DFD12FFA827A8FD34FFA8277DFD32FFA8F852FD11FF
+%A8F8FD36FFA8F87DFD33FF52F87DFD0FFF7D27A8FD36FFA8F87DFD33FFA8
+%2727FD0EFF7D27FD38FFA8F852FD34FF7DF87DFD0CFF7D52FD3AFF2752FD
+%34FFA82752A8FD0AFFA827FD3AFFA82727FD35FF52277DFD09FF7D27FD3C
+%FF52F8A8FD34FFA85227A8FD07FF27F8FD3DFF7DF87DFD35FF7DF852FD06
+%FF5252FD3FFFF852A8FD35FF2727A8FD04FF7D52FD40FF52F87DFD35FF7D
+%F852FFFFFF7D27FD41FFA82727A8FD34FFA852F8A8FFF827FD43FF7DF852
+%A8FD34FFA8F852F852FD45FF522752FD35FF27277DFD46FFA852F87DA8FD
+%31FF7D27F8A8FD49FF27F827A8FD2CFFA87DF827A8FD4CFFA852F82752A8
+%FD27FF7D27F827A8FD51FFA852F8277DFD22FFA85227277DFD57FF7D52F8
+%27277DA8FD19FF7D7D27F8277DA8FD5CFFA87D2727F827527DA8A8FD0CFF
+%A8A87D7D2727F82752A8FD65FF7D7DFD0427F8F8FD0627F8F8F827F85252
+%A8A8FD2EFFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+	put
+	/packedarray where not
+	{
+		userdict begin
+		/packedarray
+		{
+			array astore readonly
+		} bind def
+		/setpacking /pop load def
+		/currentpacking false def
+	 end
+		0
+	} if
+	pop
+	userdict /defaultpacking currentpacking put true setpacking
+	/initialize
+	{
+		Adobe_level2_AI5 begin
+	} bind def
+	/terminate
+	{
+		currentdict Adobe_level2_AI5 eq
+		{
+		 end
+		} if
+	} bind def
+	mark
+	/setcustomcolor where not
+	{
+		/findcmykcustomcolor
+		{
+			(AI8_CMYK_CustomColor)
+			6 packedarray
+		} bind def
+		/findrgbcustomcolor
+		{
+			(AI8_RGB_CustomColor)
+			5 packedarray
+		} bind def
+		/setcustomcolor
+		{
+			exch 
+			aload pop dup
+			(AI8_CMYK_CustomColor) eq
+			{
+				pop pop
+				4
+				{
+					4 index mul
+					4 1 roll
+				} repeat
+				5 -1 roll pop
+				setcmykcolor
+			}
+			{
+				dup (AI8_RGB_CustomColor) eq
+				{
+					pop pop
+					3
+					{
+						1 exch sub
+						3 index mul 
+						1 exch sub
+						3 1 roll
+					} repeat
+					4 -1 roll pop
+					setrgbcolor
+				}
+				{
+					pop
+					4
+					{
+						4 index mul 4 1 roll
+					} repeat
+					5 -1 roll pop
+					setcmykcolor
+				} ifelse
+			} ifelse
+		}
+		def
+	} if
+	/setAIseparationgray
+	{
+		false setoverprint
+		0 setgray
+		/setseparationgray where{
+			pop setseparationgray
+		}{
+			/setcolorspace where{
+				pop
+				[/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+				1 exch sub setcolor
+			}{
+				setgray
+			}ifelse
+		}ifelse
+	} def
+	
+	/gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+	userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+	userdict /level2?
+	systemdict /languagelevel known dup
+	{
+		pop systemdict /languagelevel get 2 ge
+	} if
+	put
+/level2ScreenFreq
+{
+ begin
+		60
+		HalftoneType 1 eq
+		{
+			pop Frequency
+		} if
+		HalftoneType 2 eq
+		{
+			pop GrayFrequency
+		} if
+		HalftoneType 5 eq
+		{
+			pop Default level2ScreenFreq
+		} if
+ end
+} bind def
+userdict /currentScreenFreq  
+	level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+	{
+		/setcmykcolor where not
+		{
+			/setcmykcolor
+			{
+				exch .11 mul add exch .59 mul add exch .3 mul add
+				1 exch sub setgray
+			} def
+		} if
+		/currentcmykcolor where not
+		{
+			/currentcmykcolor
+			{
+				0 0 0 1 currentgray sub
+			} def
+		} if
+		/setoverprint where not
+		{
+			/setoverprint /pop load def
+		} if
+		/selectfont where not
+		{
+			/selectfont
+			{
+				exch findfont exch
+				dup type /arraytype eq
+				{
+					makefont
+				}
+				{
+					scalefont
+				} ifelse
+				setfont
+			} bind def
+		} if
+		/cshow where not
+		{
+			/cshow
+			{
+				[
+				0 0 5 -1 roll aload pop
+				] cvx bind forall
+			} bind def
+		} if
+	} if
+	cleartomark
+	/anyColor?
+	{
+		add add add 0 ne
+	} bind def
+	/testColor
+	{
+		gsave
+		setcmykcolor currentcmykcolor
+		grestore
+	} bind def
+	/testCMYKColorThrough
+	{
+		testColor anyColor?
+	} bind def
+	userdict /composite?
+	1 0 0 0 testCMYKColorThrough
+	0 1 0 0 testCMYKColorThrough
+	0 0 1 0 testCMYKColorThrough
+	0 0 0 1 testCMYKColorThrough
+	and and and
+	put
+	composite? not
+	{
+		userdict begin
+		gsave
+		/cyan? 1 0 0 0 testCMYKColorThrough def
+		/magenta? 0 1 0 0 testCMYKColorThrough def
+		/yellow? 0 0 1 0 testCMYKColorThrough def
+		/black? 0 0 0 1 testCMYKColorThrough def
+		grestore
+		/isCMYKSep? cyan? magenta? yellow? black? or or or def
+		/customColor? isCMYKSep? not def
+	 end
+	} if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+	Adobe_typography_AI5 begin
+	Adobe_typography_AI5
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+ end
+ end
+	Adobe_typography_AI5 begin
+} def
+/terminate
+{
+	currentdict Adobe_typography_AI5 eq
+	{
+	 end
+	} if
+} def
+/modifyEncoding
+{
+	/_tempEncode exch ddef
+	/_pntr 0 ddef
+	{
+		counttomark -1 roll
+		dup type dup /marktype eq
+		{
+			pop pop exit
+		}
+		{
+			/nametype eq
+			{
+				_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+				put
+			}
+			{
+				/_pntr exch ddef
+			} ifelse
+		} ifelse
+	} loop
+	_tempEncode
+} def
+/havefont
+{
+	systemdict /languagelevel known
+		{
+		/Font resourcestatus dup
+			{ exch pop exch pop }
+		if
+		}
+		{
+		systemdict /FontDirectory get 1 index known
+			{ pop true }
+			{
+			systemdict /fileposition known
+				{
+				dup length 6 add exch
+				Ss 6 250 getinterval
+				cvs pop
+				Ss exch 0 exch getinterval
+				status
+					{ pop pop pop pop true }
+					{ false }
+				ifelse
+				}
+				{
+				pop false
+				}
+			ifelse
+			}
+		ifelse
+		}
+	ifelse
+} def
+/TE
+{
+	StandardEncoding 256 array copy modifyEncoding
+	/_nativeEncoding exch def
+} def
+/subststring {
+	exch 2 index exch search
+	{
+		exch pop
+		exch dup () eq
+		{
+			pop exch concatstring
+		}
+		{
+			3 -1 roll
+			exch concatstring
+			concatstring
+		} ifelse
+		exch pop true
+	}
+	{
+		pop pop false
+	} ifelse
+} def
+/concatstring {
+	1 index length 1 index length
+	1 index add
+	string
+	dup 0 5 index putinterval
+	dup 2 index 4 index putinterval
+	4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+	dup type /arraytype eq
+	{
+		/_wv exch def
+	}
+	{
+		/_wv 0 def
+	} ifelse
+	/_useNativeEncoding exch def
+	2 index havefont
+	{
+		3 index
+		255 string
+		cvs
+		
+		dup
+		(_Symbol_)
+		eq
+		{
+			pop
+			2 index
+			findfont
+			
+		}
+		{
+			1 index 0 eq
+			{
+				dup length 1 sub
+				1 exch
+				getinterval
+				
+				cvn
+				findfont
+			}
+			{
+				pop 2 index findfont
+			} ifelse
+		} ifelse
+	}
+	{
+		dup 1 eq
+		{
+			2 index 64 string cvs
+			dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+			{
+				exch pop dup havefont
+				{
+					findfont false
+				}
+				{
+					pop true
+				} ifelse
+			}
+			{
+				pop	dup
+				(-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+				{
+					exch pop dup havefont
+					{
+						findfont false
+					}
+					{
+						pop true
+					} ifelse
+				}
+				{
+					pop pop true
+				} ifelse
+			} ifelse
+			{
+				1 index 1 eq
+				{
+					/Ryumin-Light-Ext-RKSJ-V havefont
+					{/Ryumin-Light-Ext-RKSJ-V}
+					{/Courier}
+					ifelse
+				}
+				{
+					/Ryumin-Light-83pv-RKSJ-H havefont
+					{/Ryumin-Light-83pv-RKSJ-H}
+					{/Courier}
+					ifelse
+				} ifelse
+				findfont
+				[1 0 0.5 1 0 0] makefont
+			} if
+		}
+		{
+			/Courier findfont
+		} ifelse
+	} ifelse
+	_wv type /arraytype eq
+	{
+		_wv makeblendedfont
+	} if
+	dup length 10 add dict
+ begin
+	mark exch
+	{
+		1 index /FID ne
+		{
+			def
+		} if
+		cleartomark mark
+	} forall
+	pop
+	/FontScript exch def
+	/FontDirection exch def
+	/FontRequest exch def
+	/FontName exch def
+	counttomark 0 eq
+	{
+		1 _useNativeEncoding eq
+		{
+			/Encoding _nativeEncoding def
+		} if
+		cleartomark
+	}
+	{
+		/Encoding load 256 array copy
+		modifyEncoding /Encoding exch def
+	} ifelse
+	FontName currentdict
+ end
+	definefont pop
+} def
+/tr
+{
+	_ax _ay 3 2 roll
+} def
+/trj
+{
+	_cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+	/Tx
+	{
+		dup
+		currentpoint 3 2 roll
+		tr _psf
+		newpath moveto
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		dup
+		currentpoint 3 2 roll
+		trj _pjsf
+		newpath moveto
+		trj _ctm _pjss
+	} ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+	/Tx
+	{
+		tr _psf
+	} ddef
+	/Tj
+	{
+		trj _pjsf
+	} ddef
+} def
+/e1
+{
+W F 
+} def
+/i0
+{
+	/Tx
+	{
+		tr sp
+	} ddef
+	/Tj
+	{
+		trj jsp
+	} ddef
+} def
+/i1
+{
+	W N
+} def
+/o0
+{
+	/Tx
+	{
+		tr sw rmoveto
+	} ddef
+	/Tj
+	{
+		trj swj rmoveto
+	} ddef
+} def
+/r0
+{
+	/Tx
+	{
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		trj _ctm _pjss
+	} ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+	pop _ctm currentmatrix pop
+} def
+/TO
+{
+	iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+	pop _tm astore pop _ctm setmatrix
+	_tDict begin
+	/W
+	{
+	} def
+	/h
+	{
+	} def
+} def
+/TP
+{
+ end
+	iTm 0 0 moveto
+} def
+/Tr
+{
+	_render 3 le
+	{
+		currentpoint newpath moveto
+	} if
+	dup 8 eq
+	{
+		pop 0
+	}
+	{
+		dup 9 eq
+		{
+			pop 1
+		} if
+	} ifelse
+	dup /_render exch ddef
+	_renderStart exch get load exec
+} def
+/iTm
+{
+	_ctm setmatrix _tm concat
+	_shift aload pop _lineorientation 1 eq { exch } if translate
+	_scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+	_tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+	_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+	_render -1 eq
+	{
+	}
+	{
+		_renderEnd _render get dup null ne
+		{
+			load exec
+		}
+		{
+			pop
+		} ifelse
+	} ifelse
+	/_render -1 ddef
+} def
+/Ta
+{
+	pop
+} def
+/Tf
+{
+	1 index type /nametype eq
+	{
+		dup 0.75 mul 1 index 0.25 mul neg
+	} if
+	/_fontDescent exch ddef
+	/_fontAscent exch ddef
+	/_fontSize exch ddef
+	/_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+	/_fontHeight _fontSize ddef
+	findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+	pop neg 0 exch
+	_leading astore pop
+} def
+/Tt
+{
+	pop
+} def
+/TW
+{
+	3 npop
+} def
+/Tw
+{
+	/_cx exch ddef
+} def
+/TC
+{
+	3 npop
+} def
+/Tc
+{
+	/_ax exch ddef
+} def
+/Ts
+{
+	0 exch
+	_shift astore pop
+	currentpoint
+	iTm
+	moveto
+} def
+/Ti
+{
+	3 npop
+} def
+/Tz
+{
+	count 1 eq { 100 } if
+	100 div exch 100 div exch
+	_scale astore pop
+	iTm
+} def
+/TA
+{
+	pop
+} def
+/Tq
+{
+	pop
+} def
+/Tg
+{
+	pop
+} def
+/TG
+{
+	pop
+} def
+/Tv
+{
+	/_lineorientation exch ddef
+} def
+/TV
+{
+	/_charorientation exch ddef
+} def
+/Ty
+{
+	dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+	pop
+} def
+/T~
+{
+	Tx
+} def
+/Th
+{
+	pop pop pop pop pop
+} def
+/TX
+{
+	pop
+} def
+/Tk
+{
+	_fontSize mul 1000 div
+	_lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+	rmoveto
+	pop
+} def
+/TK
+{
+	2 npop
+} def
+/T*
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	Td
+} def
+/T*-
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	exch neg exch neg
+	Td
+} def
+/T-
+{
+	_ax neg 0 rmoveto
+	_lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+	_ctm currentmatrix pop
+	_tm astore pop
+	iTm 0 0 moveto
+} def
+/TS
+{
+	currentfont 3 1 roll
+	/_Symbol_ findfont _fontSize scalefont setfont
+	
+	0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	setfont
+} def
+/Xb
+{
+	pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+	pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+	currentfont 5 1 roll
+	dup havefont
+		{
+		findfont _fontSize scalefont setfont
+		}
+		{
+		pop
+		exch
+		} ifelse
+	2 index 0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	pop	pop
+	setfont
+} def
+/T^	/X^	load def
+%%EndResource
+%%BeginResource: procset AGM_Gradient_Sep 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient_Sep 5 dict dup begin put
+/AGM_Gradient_Sep_private 100 dict def
+/initialize{
+	AGM_Gradient_Sep begin
+	AGM_Gradient_Sep_private begin
+	_compositeJob{
+		initializeSinglePassSeps
+	}{
+		initializeMultiPassSeps
+	}ifelse
+	initializeSeps
+	AGM_Gradient_private begin
+		/_fillSD newSpotDict def
+		/_rampSD newSpotDict def
+		/_nCustomColorSD nd
+ end
+	AGM_Gradient_Sep_private 
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient_Sep
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop	
+ end
+}def
+/terminate{
+	currentdict AGM_Gradient_Sep eq{
+	 end
+	}if
+}def
+AGM_Gradient_Sep_private begin
+/initializeSeps{
+	/currentoverprint { _of } def
+	_noImage not _level2PS not and{
+		/linealFill{
+			currentoverprint{
+				0 0 1 1 rectfill
+			}{
+				mySave
+				8 setImageParms
+				_color{
+					_nCustomColorSD begin
+						cyan magenta yellow black
+	
+						_spotColor{
+							spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put
+							spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put
+						}if
+				 end
+	
+					4{
+						makeByte8 4 1 roll
+					}repeat
+					true 4 _nCustomColorSD ncolorimage
+				}{
+					_nCustomColorSD/black get 1 exch sub makeByte8 
+					_nCustomColorSD bwImage
+				}ifelse
+				myRestore
+			}ifelse
+		}def
+	}if
+	/_whiteBytes 1 makeByte8 pt
+	 /knockOut{
+		_noImage _level2PS or currentoverprint or{
+			gsave
+			false setoverprint
+			1 setgray 
+			0 0 1 1 rectfill
+			grestore
+		}{
+			8 setImageParms _whiteBytes /_image load 5 execImage
+		}ifelse
+	}def
+	/newSpotDict{
+		11 dict dup begin
+			/nSpots 2 def
+			/spot1 7 dict def
+			/spot2 7 dict def
+	 end
+	}def
+	/initSpotData
+	{
+	 begin
+			/name nd
+			/tintImage nd
+			/tintValue nd
+			/spot_C nd
+			/spot_M nd
+			/spot_Y nd
+			/spot_K nd
+	 end
+	}def
+	/initSpotDict{
+	 begin
+			/cyanInk nd
+			/magentaInk nd
+			/yellowInk nd
+			/blackInk nd
+			/cyan nd
+			/magenta nd
+			/yellow nd
+			/black nd
+			spot1 initSpotData
+			spot2 initSpotData
+	 end
+	}def
+	/copySpotDict{
+		/_dst xp
+	 begin
+			cyanInk magentaInk yellowInk blackInk
+			cyan magenta yellow black
+			spot1 spot2
+	 end
+		_dst begin
+			/spot1 spot1 maxlength dict def
+			/spot2 spot2 maxlength dict def
+			spot2 copy pop
+			spot1 copy pop
+			/black xd
+			/yellow xd
+			/magenta xd
+			/cyan xd
+			/blackInk xd
+			/yellowInk xd
+			/magentaInk xd
+			/cyanInk xd
+	 end
+	}def
+	/setCustomColor
+	{
+		1 index /Black eq{
+			6 1 roll 5 npop
+			1 exch sub
+			setgray
+		}{
+			6 1 roll _ccAry1 astore exch
+			dup null eq{
+				pop 0
+			}if
+			setcustomcolor
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		
+		_colorStyle 0 eq{
+			0 0 0
+			4 -1 roll
+			1 exch sub
+			_spotColor{
+				/_colorStyle 3 pt
+				/Black
+				1 index
+				1 exch sub
+			}if
+		}if
+		_colorStyle 2 eq{
+			3 npop
+		}if
+		_rampSD _fillSD copySpotDict
+		
+		_colorStyle 4 eq{ 
+			pop
+			9 2 roll 3 npop 6 -2 roll
+		} if
+		
+		_colorStyle 3 eq _colorStyle 4 eq or{ 	
+				
+			_fillSD begin
+				/_spot1 spot1 pt
+				/_spot2 spot2 pt
+		 end
+			
+			exch dup _spot1/name get eq{
+				_spot1 _spot2
+			}{
+				_spot2 _spot1
+			}ifelse
+		 begin
+			 begin
+					/name xd
+					1 exch sub /tintValue xd
+					4{
+						tintValue mul 4 1 roll
+					}repeat
+					_spotColor not{
+						/tintValue null def
+					}if
+			 end
+				/tintValue 0 def
+		 end
+		}if
+		_fillSD nsetcustomcolor
+	}def
+	/renderCMYK{
+		spot1/name get null eq
+		spot2/name get null eq and
+		dup not{
+			pop
+			spot1 spotConverted
+		}if
+		dup not{
+			pop
+			spot2 spotConverted
+		}if
+	}def
+	/currentInk{
+		true
+		_inRipSep{
+			currentcolorspace 0 get
+			dup /DeviceGray eq
+			1 index /DeviceCMYK eq or{
+				pop
+				currentcmykcolor add add add 0 eq{
+					pop false
+				}if
+			}{
+				/Separation eq{
+					currentcolor 0 eq{
+						pop false
+					}if
+				}if
+			}ifelse
+		}{
+			currentgray 1 eq{
+				pop false
+			}if
+		}ifelse
+	}def
+	/currentInkN{
+	
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		{
+			currentInk
+		}{
+			gsave
+			_spot1 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			_spot2 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			grestore
+			
+			or
+		} ifelse
+	}def
+	/fill_ /fill load def
+	/fillOvp{
+		currentoverprint{
+			_inRipSep{
+				currentcolorspace 0 get
+				dup /DeviceGray eq
+				1 index /DeviceCMYK eq or{
+					pop
+					currentcmykcolor add add add 0 eq{
+						newpath
+					}if
+				}{
+					/Separation eq{
+						currentcolor 0 eq{
+							newpath
+						}if
+					}if
+				}ifelse
+			}{
+				currentgray 1 eq{
+					newpath
+				}if
+			}ifelse
+		}if
+		fill_
+	}def
+	/fill{
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		
+		{
+			fillOvp
+		}{
+			_spot1 begin
+				gsave
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+				}{
+					1 setgray
+				}ifelse
+				fillOvp 
+				grestore
+		 end
+			_spot2 begin
+				name null ne{
+					gsave
+					true setoverprint
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					fillOvp
+					grestore
+				}if
+		 end
+			newpath
+		}ifelse
+	}def
+	/expandSpot{
+		_spotColor{
+			/_len xp
+			_rampSD begin
+				spot1 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+				spot2 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+		 end
+		}{
+			pop
+		}ifelse
+	}def
+	/rampImage{
+		currentoverprint{
+			rectImage
+		}{
+			_enabledSmoothShade{
+				fillRamp
+			}{
+				_color{
+					_rampSD begin
+						/cyanInk _cyanData 0 ne def
+						/magentaInk _magentaData 0 ne def
+						/yellowInk _yellowData 0 ne def
+						/blackInk _blackData 0 ne def
+				 end
+					
+					_nSamples setImageParms
+					_nSamples expandSpot
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 _rampSD ncolorimage
+				}{
+					_rampSD begin
+						/cyanInk false def
+						/magentaInk false def
+						/yellowInk false def
+						/blackInk true def
+				 end
+					_nSamples setImageParms 
+					_blackData _rampSD bwImage
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/nsetcustomcolor where{
+		pop
+	}{
+		/nsetcustomcolor
+		{
+			/_nCustomColorSD xp
+			_nCustomColorSD begin
+				4 copy
+				/black xd
+				/yellow xd
+				/magenta xd
+				/cyan xd
+				4 copy
+				0 ne /blackInk xd
+				0 ne /yellowInk xd
+				0 ne /magentaInk xd
+				0 ne /cyanInk xd
+		 end
+			setcmykcolor
+		}def
+	}ifelse
+	/nsetcustomcolorend where{
+		pop
+	}{
+		/nsetcustomcolorend
+		{
+			/_nCustomColorSD null pt
+		}def
+	}ifelse
+}def
+/initializeSinglePassSeps{
+	/_decodeNorm	[0 1] pt
+	/_decodeInvert 	[1 0] pt
+	/spotConverted
+	{
+	 begin
+			name null eq{
+				false
+			}{
+				tintValue null eq tintImage null eq and{
+					true
+				}{
+					_inDistiller{
+						false
+					}{
+						false
+						currentpagedevice/SeparationColorNames get{name eq or}forall
+						not
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/dictImage
+	{
+		20 dict dup begin
+			/Dict xd
+			/Decode xd
+			/DataSource xd
+			/ImageMatrix xd
+			/BitsPerComponent xd
+			/Height xd
+			/Width xd
+			/ImageType 1 def
+			Dict
+	 end
+		/_image load 1 execImage
+	}def
+	/bwImage{
+	 begin
+			gsave
+			currentoverprint{
+				blackInk{
+					[/Separation /Black /DeviceGray{}] setcolorspace
+					_decodeInvert dictImage
+				}{
+					5 npop
+				}ifelse
+			}{
+				/DeviceGray setcolorspace
+				_decodeNorm dictImage
+			}ifelse
+			grestore
+	 end
+	}def
+	/ncolorimage where{
+		pop
+	}{
+		/ncolorimage{
+		 begin
+				renderCMYK{
+					cyanInk 
+					magentaInk and
+					yellowInk and
+					blackInk and
+					not
+					currentoverprint 
+					and{	
+						pop pop
+						gsave
+						cyanInk{
+							8 copy
+							[/Separation /Cyan /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}if
+						magentaInk{
+							8 copy
+							[/Separation /Magenta /DeviceGray{}] setcolorspace
+							4 -1 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						yellowInk{
+							8 copy
+							[/Separation /Yellow /DeviceGray{}] setcolorspace
+							4 -2 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						blackInk{
+							4 -3 roll
+							[/Separation /Black /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}{
+							8 npop
+						}ifelse
+						grestore
+					}{
+						/_colorimage load 10 execImage
+					}ifelse
+				}{
+					6 npop
+					gsave
+					spot1 begin
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							4 copy
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							1 setgray fill
+						}ifelse
+				 end
+					spot2 begin
+						true setoverprint
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							4 npop
+							1 setgray fill
+						}ifelse
+				 end
+					grestore
+				}ifelse
+		 end
+		}def
+	}ifelse
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_renderCMYK not{
+			_rampSD begin
+				[/DeviceN 
+					[
+					spot1 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					spot2 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					]
+					_inDistiller {
+						/DeviceCMYK [
+							spot1 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 1
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							spot2 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 2
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							5 1 roll 6 -2 roll add
+							dup 1 eq {
+								pop
+								8 /index cvx 1 /exch cvx /sub cvx
+								9 1 /roll cvx
+							}{
+								2 eq {
+									8 /index cvx 1 /exch cvx /sub cvx
+									10 1 /roll cvx
+								}if
+							}ifelse
+							4 1 /roll cvx 5 -2 /roll cvx
+							8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx
+							3 1 /roll cvx 4 -2 /roll cvx
+							7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx
+							2 1 /roll cvx 3 -2 /roll cvx
+							6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx
+							5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx
+							6 -2 /roll cvx /pop cvx /pop cvx
+						] cvx bind
+					}{
+						/DeviceCMYK {}
+					}ifelse
+				] setcolorspace
+		 end
+			/_nColorSpace currentcolorspace pt
+		}if
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C0_Space _nColorSpace pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C1_Space _nColorSpace pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/initializeMultiPassSeps{
+	/invertXfer{
+		[
+		{
+			1 exch sub
+		}/exec load systemdict /currenttransfer get exec /exec load
+		] cvx systemdict /settransfer get exec
+	}def
+	/ccThrough{
+		gsave
+		1 setCustomColor
+		currentcmykcolor
+		grestore
+		add add add 0 ne
+	}def
+	/spotConverted
+	{
+	 begin
+			_isCMYKSep not{
+				false
+			}{
+				name null eq{
+					false
+				}{
+					tintValue null eq tintImage null eq and{
+						true
+					}{
+						spot_C spot_M spot_Y spot_K name ccThrough
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/spotChannel
+	{
+		_isCMYKSep{
+			pop false
+		}{
+			/_spotDict xp
+				_spotDict/name get null eq{
+					false
+				}{
+					_spotDict/spot_C get
+					_spotDict/spot_M get
+					_spotDict/spot_Y get
+					_spotDict/spot_K get
+					_spotDict/name get
+					ccThrough 
+				}ifelse
+		}ifelse
+	}def
+	/getChannelData
+	{
+		_isCMYKSep dup{
+			pop renderCMYK
+		}if
+		{
+			_blackPlate{
+				4 1 roll 3 npop blackInk
+			}{
+				_yellowPlate{
+					4 2 roll 3 npop yellowInk
+				}{
+					_magentaPlate{
+						4 3 roll 3 npop magentaInk
+					}{
+						3 npop cyanInk
+					}ifelse
+				}ifelse
+			}ifelse
+			{
+				true /nonZeroData
+			}{
+				true /zeroData
+			}ifelse
+		}{
+			4 npop
+			spot1/name get null ne 
+			spot1 spotChannel and{
+				spot1/tintImage get dup null ne{
+					false /nonZeroData
+				}{
+					pop false /noData
+				}ifelse
+			}{
+				spot2/name get null ne 
+				spot2 spotChannel and{
+					spot2/tintImage get dup null ne{
+						false /nonZeroData
+					}{
+						pop false /noData
+					}ifelse
+				}{
+					false /noData
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/renderChannelData
+	{
+		/_tmp xp
+		_tmp /nonZeroData ne currentoverprint and{
+			pop
+			_tmp /zeroData eq{pop}if
+			4 npop
+		}{
+			_tmp /nonZeroData eq{
+				{
+					invertXfer
+				}if
+					systemdict/image
+				get 5 execImage
+			}{
+				pop
+				_tmp /zeroData eq{pop}if
+				4 npop
+				knockOut
+			}ifelse
+		}ifelse
+	}def
+	/bwImage{
+	 begin
+			gsave
+			dup dup dup
+			getChannelData
+			exch pop false exch
+			renderChannelData
+			grestore
+	 end
+	}def
+	/ncolorimage{
+	 begin
+			pop pop
+			gsave
+			spot2/name get null ne spot2 spotChannel and{
+				true setoverprint
+			}if
+			getChannelData 
+			renderChannelData
+			grestore
+	 end
+	}def
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C0_Space /DeviceGray pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C1_Space /DeviceGray pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset AGM_Gradient 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient 20 dict dup begin put
+/AGM_Gradient_private 201 dict def
+/initialize
+{
+	AGM_Gradient begin
+	AGM_Gradient_private begin
+	initializeVars
+	
+	/bd systemdict/mark get def
+	/ed
+		_level2PS 
+		{
+			(>>)
+		}{
+			(counttomark 2 idiv dup dict begin {def} repeat pop currentdict end)
+		} ifelse
+	cvx def
+	
+	_level2PS{
+		initializeLev2
+	}{
+		initializeLev1
+	}ifelse
+	
+	queryDevice
+	
+	initializeRectFill
+	initializeShading
+	initializeOps
+	_producingSeps{
+		AGM_Gradient_Sep/initialize get exec
+	}{
+		initializeComposite
+	}ifelse
+	_illustrator{
+		/f{}def
+		/F{}def
+		/s{}def
+		/S{}def
+		/b{}def
+		/B{}def
+	}if
+	/image where{
+		/image get /_image xd
+	}if
+	/colorimage where{
+		/colorimage get /_colorimage xd
+	}if
+	AGM_Gradient_private
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop
+ end
+}def
+/initializeAI
+{
+	pop pop 
+	AGM_Gradient/AGM_Gradient_private get /_illustrator true put
+	AGM_Gradient/initialize get exec
+		AGM_Gradient begin
+}def
+/unload{
+	systemdict/languagelevel known{
+		systemdict/languagelevel get 2 ge{
+			userdict/AGM_Gradient_Sep 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+			userdict/AGM_Gradient 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+		}if
+	}if
+}def
+/terminate{
+	currentdict AGM_Gradient eq{
+	 end
+	}if
+}def
+ 
+AGM_Gradient_private begin
+/initializeVars{
+	/_d255 256 array def
+	0 1 255{
+		_d255 exch dup 255 div put
+	}bind for
+	/_d255- 256 array def
+	0 1 255{
+		_d255- exch 1 _d255 2 index get sub put
+	}bind for
+	/_sSave nd
+	/_dUserSpace matrix defaultmatrix def
+	/_bUMatrix matrix def
+	/_imageMatrix matrix def
+	/_saveMatrix matrix def
+	/_xm matrix def
+	/_ccAry1 5 array def
+	/_bbox 4 array pt
+	/_level2PS 
+		systemdict/languagelevel known dup{
+			pop systemdict/languagelevel get 2 ge
+		}if
+	def
+	/_level3PS
+		_level2PS systemdict/shfill known and
+	def
+	currentdict /_illustrator known not{
+		/_illustrator false def
+	}if
+	
+}def
+/initializeOps
+{
+	AGM_Gradient begin
+	currentdict/Bc known not{
+		/Bc{
+		
+			_renderFlag 2 eq _enabledSmoothShade or{
+				6 npop
+			}{
+				pushBSpace
+				_rampIndex 0 eq{
+					pop pop
+					setCStop
+				}if
+				linealFill
+				popBSpace
+			}ifelse
+		
+		}def
+	}if
+	
+	currentdict/Bg known not{
+		/Bg{
+			10 npop
+			/_gradName xp
+			/_renderFlag xp
+			/_enabledSmoothShade false pt
+		
+			_renderFlag 2 ne{
+		
+				_illustrator{
+					_of setoverprint
+				}if
+		
+				/_enabledSmoothShade 
+					_level3PS{
+						_usingSmoothShade
+						_producingSeps not
+						currentoverprint not or and
+						_noImage not and
+					}{
+						false
+					}ifelse
+				pt
+				
+				_illustrator _eo and _renderFlag 3 eq or{
+					eoclip
+				}{
+					clip
+				}ifelse
+		
+				_gradNames _gradName 2 copy known{
+					get
+					mark exch aload pop
+					/_gradType xp
+					1 sub dup /_rampIndex xp
+					/_maxRampIndex xp
+					mark exch aload pop
+					0 0
+				}if
+				pop pop
+				getRampData
+			}{
+				mark mark
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bm known not{
+		/Bm{
+			_renderFlag 2 ne{
+				_gradType 0 eq{
+					linealRamp
+				}{
+					radialGrad
+				}ifelse
+			}{
+				6 npop
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bh known not{
+		/Bh{
+			2 npop
+			/_yHi xp
+			/_xHi xp
+			/_radHilite _xHi 0 ne _yHi 0 ne or pt
+		}def
+	}if
+	
+	currentdict/Bn known not{
+		/Bn{
+			AGM_Gradient_private begin
+				dict /_gradNames xp
+		 end
+		}def
+	}if
+	
+	currentdict/Bd known not{
+		/Bd{
+			AGM_Gradient begin
+			AGM_Gradient_private begin
+				/_nColorsBd xp
+				/_gradType xp
+				/_gradName xp
+		}def
+	}if
+	
+	currentdict/BD known not{
+		/BD{
+				currentdict/_gradNames known not{
+					/_gradNames 20 dict def
+				}if
+				] _nColorsBd _gradType
+				]  _gradName exch /_gradNames xput
+		 end
+		 end
+		}def
+	}if
+	
+	currentdict/Bb known not{
+		/Bb{
+		
+			AGM_Gradient/AGM_Gradient_private get /_illustrator get not{
+				AGM_Gradient begin
+			}if
+			AGM_Gradient_private begin
+			_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin
+			}if
+			mySave
+		}def
+	}if
+	
+	currentdict/BB known not{
+		/BB{
+		
+			/_tmp xp
+			cleartomark cleartomark
+		
+			_tmp dup
+			_renderFlag
+		
+			myRestore
+		
+			_producingSeps{
+			 end
+			}if
+		
+			_illustrator dup
+		 end
+			not {
+			 end
+			}if
+		
+			{
+				2 ne exch 0 gt and{
+					2 eq{
+						s
+					}{
+						S
+					}ifelse
+				}{
+					pop newpath
+				}ifelse
+			}{
+				pop newpath
+			}ifelse
+		
+		
+		}def
+	}if
+	
+	currentdict/Xm known not{
+		/Xm{
+			_xm astore pop
+		}def
+	}if
+	
+ end
+}def
+/queryDevice{
+	/_inDistiller
+		systemdict /currentdistillerparams known
+	def
+	/_inRipSep
+		_level2PS{
+			currentpagedevice/Separations 2 copy known{
+				get
+			}{
+				pop pop false
+			}ifelse
+		}{
+			false
+		}ifelse
+		_inDistiller or
+	def
+	/_noImage /lv1Fix where{
+		pop lv1Fix
+	}{
+		false
+	}ifelse
+	def
+	/_useShells where{
+		/_useShells get /_usingShells xp
+	}{
+		/_usingShells false def
+	}ifelse
+	
+	/_useSmoothShade where{
+		pop
+	}{
+		/_useSmoothShade false def 
+	}ifelse
+	/_forceToCMYK where{
+		pop
+	}{
+		/_forceToCMYK false def 
+	}ifelse
+	/_cyanPlate 1 0 0 0 testCMYKColorThrough def
+	/_magentaPlate 0 1 0 0 testCMYKColorThrough def
+	/_yellowPlate 0 0 1 0 testCMYKColorThrough def
+	/_blackPlate 0 0 0 1 testCMYKColorThrough def
+	/_compositeJob
+		_cyanPlate _magentaPlate and _yellowPlate and _blackPlate and
+	def
+	/_isCMYKSep
+		_cyanPlate _magentaPlate or _yellowPlate or _blackPlate or
+	def
+	/_compositeSpotDevice where{
+		pop
+	}{
+		/_compositeSpotDevice _compositeJob not _inRipSep or{
+			1
+		}{
+			0
+		}ifelse
+		def
+	}ifelse
+	/_producingSeps _compositeSpotDevice 0 ne def
+	/_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
+	/_dpiThreshold where{
+		pop
+	}{
+		/_dpiThreshold 600 def
+	}ifelse
+	/_screenFreqThreshold where{
+		pop
+	}{
+		/_screenFreqThreshold 150 def
+	}ifelse
+	/_contoneDevice where{
+		pop
+	}{
+		/_contoneDevice false def
+	}ifelse
+	/_subSampleOK 
+		_deviceDPI _dpiThreshold le 
+		currentScreenFreq _screenFreqThreshold le and 
+		_contoneDevice not and 
+	def
+}def
+/initializeRectFill{
+	/rectfill where dup{
+		exch pop not _producingSeps or
+	}{
+		not
+	}ifelse
+	{
+		/rectfill{
+			gsave
+			newpath
+			4 2 roll moveto
+			1 index 0 rlineto
+			0 1 index rlineto
+			1 index neg 0 rlineto
+			pop pop
+			closepath
+			fill
+			grestore
+		}def
+	}if
+}def
+/initializeLev1{
+	/currentScreenFreq{
+		currentscreen pop pop
+	}def
+	/_byte 1 string def
+	/colorimage where{
+		pop
+	}{
+		/colorimage{
+			pop pop
+			/_blackTmp xp
+			/_yellowTmp xp
+			/_magentaTmp xp
+			/_cyanTmp xp
+			/_cnt 0 pt
+			[
+			_byte dup 0
+			_cyanTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx
+			_magentaTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx
+			_yellowTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx
+			_blackTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx
+			/add cvx /add cvx /add cvx 1 /exch cvx /sub cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/dup cvx 1 /gt cvx{
+				pop 1
+			}/if cvx
+			255 /mul cvx /cvi cvx
+			256 /mod cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/put cvx
+			/_cnt dup cvx 1 /add cvx /pt cvx
+			] cvx
+			bind
+			/_image load 5 execImage
+		}def
+	}ifelse
+}def
+/initializeLev2{
+	/level2ScreenFreq{
+	 begin
+		60
+		HalftoneType 1 eq{
+			pop Frequency
+		}if
+		HalftoneType 2 eq{
+			pop GrayFrequency
+		}if
+		HalftoneType 5 eq{
+			pop Default level2ScreenFreq
+		}if
+		 end
+	}def
+	/currentScreenFreq{
+		currenthalftone level2ScreenFreq
+	}def
+}def
+/initializeShading{
+	_useSmoothShade _level3PS and{
+		/_usingSmoothShade true pt
+		initializeLev3_Ops
+	}{
+		/_usingSmoothShade false pt
+	}ifelse
+}def
+/initializeLev3_Ops
+{
+	/initShFill{
+		/_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt
+		/_rampFuncsArray _maxRampIndex array pt
+		/_boundsArray _maxRampIndex 1 sub array pt
+		/_encodeArray _maxRampIndex 2 mul array pt
+		/_beginCoord _rampPoint pt
+		/_colorSpace null pt
+		/_firstFill _rampIndex _maxRampIndex eq pt
+		/_lastFill false pt
+	}def
+	/linealShFill{
+		popBSpace
+		_xm aload pop pushBSpace
+		
+		/_size _index 1 add pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray 0 _size getinterval pt
+			/_boundsArray _boundsArray 0 _size 1 sub getinterval pt
+			/_encodeArray _encodeArray 0 _size 2 mul getinterval pt
+		}if
+		
+		bd
+			/ShadingType 2
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_firstFill _lastFill]
+			/Domain [0 1] 
+			/Coords [_beginCoord 0 _endCoord 0]
+		ed
+		shfill
+	}def
+	
+	/radialShFill{
+		/_size _maxRampIndex _index sub pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray _index _size getinterval pt
+			/_boundsArray _boundsArray _index _size 1 sub getinterval pt
+			/_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt
+		}if
+		
+		/_rampLen _beginCoord _endCoord sub pt
+		bd
+			/ShadingType 3
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_lastFill _firstFill]
+			/Domain [0 1] 
+			/Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] 
+		ed
+		shfill
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+	}def
+	
+	%
+	/sampFunc{
+		/_tmp exch pt
+		bd
+			_tmp length 1 eq {
+				_tmp 0 get
+				/_tmp 2 string pt
+				dup _tmp 0 3 -1 roll put
+				_tmp 1 3 -1 roll put
+			}if
+			/FunctionType 0
+			/Order 1
+			/Size [_tmp length]
+			/Domain [0 1]
+			/BitsPerSample 8
+			/DataSource _tmp
+			/Range [0 1]
+		ed
+	}def
+	
+	/fillRamp{
+	
+	
+		/_invert _midPoint 0.5 lt pt
+		_rampIndex _maxRampIndex eq {
+			initShFill
+		}if
+		
+		getRampColorSpace
+		
+		_colorSpace null eq{
+			/_colorSpace _rampColorSpace pt
+		}{
+			_colorSpace _rampColorSpace ne _rgbInCMYK or{
+				/_index _index 1 
+				_gradType 0 eq{
+					sub pt
+					linealShFill
+				}{
+					add pt
+					radialShFill
+				}ifelse
+				initShFill
+				/_colorSpace _rampColorSpace pt
+			} if
+		}ifelse
+		/_endCoord _endPoint pt	
+		/_rgbInCMYK false pt
+		_producingSeps _forceToCMYK or _rgbRamp and {
+			_spotColor{
+				_renderCMYK
+			}{
+				_isCMYKSep
+			}ifelse
+		}{
+			false
+		}ifelse
+		{
+			_compositeJob{
+				/_rgbInCMYK true pt
+				_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+				dup length string copy /_kData exch pt
+				dup length string copy /_yData exch pt
+				dup length string copy /_mData exch pt
+				dup length string copy /_cData exch pt
+			}{
+				_rampFuncsArray _index
+					_cyanPlate{_cyanData}if
+						_magentaPlate{_magentaData}if
+						_yellowPlate{_yellowData}if
+						_blackPlate{_blackData}if
+					_nSamples expandOne
+					sampFunc
+					dup begin /Decode [1 0] def end
+				put
+				/_invert false pt
+			}ifelse
+		}{
+			_rampFuncsArray _index
+				bd
+					/FunctionType 2
+					/Domain [0 1]
+					/N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div
+					_gradType 0 eq{
+						_invert{/C1}{/C0}ifelse _C0
+						_invert{/C0}{/C1}ifelse _C1
+					}{
+						_invert{/C0}{/C1}ifelse _C1
+						_invert{/C1}{/C0}ifelse _C0
+					}ifelse
+				ed
+			put
+		}ifelse
+		
+		_rampIndex 1 ne{
+			_boundsArray _index _gradType 1 eq{1 sub}if _endCoord put
+		} if
+		
+		0 1 _invert {exch}if
+		_encodeArray _index 2 mul 1 add 3 -1 roll put
+		_encodeArray _index 2 mul 3 -1 roll put
+		_rampIndex 1 eq {
+			/_lastFill true pt
+			_gradType 0 eq{
+				linealShFill
+			}{
+				radialShFill
+			}ifelse
+		}if
+		/_index _index 1 
+		_gradType 0 eq{
+			add pt
+		}{
+			sub pt
+		}ifelse
+	}def
+}def
+/initializeComposite{
+	/bwImage{
+		pop /_image load 5 execImage 
+	}def
+	/rampImage{
+		_enabledSmoothShade{
+			fillRamp
+		}{
+			_color{
+				_nSamples setImageParms
+	
+				
+				_rgbRamp _forceToCMYK not and{
+					_redData _greenData _blueData _nSamples 3 expandColor
+					true 3 null ncolorimage
+				}{
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 null ncolorimage
+				}ifelse
+			}{
+				_nSamples setImageParms _blackData null bwImage
+			}ifelse
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		_colorStyle 0 eq{
+			1 exch sub
+			0 0 0
+			4 -1 roll
+		}if
+		
+		_colorStyle 2 eq{
+			_forceToCMYK{
+				3 npop setcmykcolor
+			}{
+				setrgbcolor 4 npop
+			}ifelse
+		}if
+		
+		_colorStyle 3 eq{
+			1 exch sub /_tmp xp
+			pop
+			4{
+				_tmp mul 4 1 roll
+			}repeat
+		}if
+		
+		_colorStyle 4 eq{
+			_forceToCMYK{
+				6 npop setcmykcolor
+			}{
+				3 -1 roll pop pop
+				1 exch sub /_tmp xp
+				3{
+					1 exch sub _tmp mul 1 exch sub 3 1 roll
+				}repeat
+				setrgbcolor 
+				4 npop
+			}ifelse
+		}if
+		_colorStyle 2 ne _colorStyle 4 ne and{
+			null nsetcustomcolor
+		}if
+	}def
+	/nsetcustomcolor
+	{
+		pop setcmykcolor
+	}def
+	/nsetcustomcolorend
+	{
+	}def
+	/ncolorimage{
+		pop 
+		/_colorimage load 10 execImage
+	}def
+	_noImage not _level2PS not and{
+		/linealFill{
+			8 setImageParms
+			_color{
+				currentcmykcolor
+				4{
+					makeByte8 4 1 roll
+				}repeat
+				true 4 null ncolorimage
+			}{
+				currentgray makeByte8 null bwImage
+			}ifelse
+		}def
+	}if
+	/getRampColorSpace{
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		/_C0 [currentcolor] pt
+		/_C0_Space currentcolorspace pt
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		/_C1 [currentcolor] pt
+		/_C1_Space currentcolorspace pt
+		
+		/_rampColorSpace _C0_Space pt
+		
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/npop{
+	{pop}repeat
+}def
+/xd{
+	exch def
+}def
+/nd{
+	null def
+}def
+/pt{
+	AGM_Gradient_private 3 1 roll put
+}def
+/xp{
+	exch pt
+}def
+/xput{
+	dup load dup length exch maxlength eq{
+		dup dup load dup
+		length 2 mul dict copy def
+	}if
+	load begin
+		def
+  end
+}def
+/mySave{
+	save /_sSave xp
+}def
+/myRestore{
+	_sSave type /savetype eq{
+		_sSave restore
+	}if
+}def
+/gMark{
+	counttomark 2 add -1 roll
+}def
+/execImage{
+	/_tmp xp
+	{
+		exec
+	}stopped{
+		$error /errorname get /undefinedresult ne{
+			stop
+		}{
+			_tmp npop
+		}ifelse
+	}if
+}def
+/pushBSpace{
+	newpath gsave
+	_bUMatrix astore concat 
+}def
+/popBSpace{
+	grestore
+}def
+/makeByte8{
+	/_tmp 0 pt
+	255 mul cvi
+	8 string 8{
+		dup _tmp 3 index put 
+		/_tmp _tmp 1 add pt
+	}repeat
+	exch pop
+}def
+/setImageParms{
+	1 8 2 index 0 0 1 0 0 _imageMatrix astore
+}def
+/linealFill{
+	0 0 1 1 rectfill
+}def
+/testCMYKColorThrough{
+	gsave
+	setcmykcolor currentcmykcolor
+	grestore
+	add add add 0 ne
+}def
+/expandOne	{
+	/_tmp xp
+	dup type /stringtype ne{
+		_tmp string
+		exch
+		dup 0 ne{
+			255 mul cvi
+			0 1 _tmp 1 sub{
+				3 copy
+				exch put pop
+			}for
+		}if
+		pop
+	}if
+}def
+/expandColor{
+	/_channels xp
+	/_len xp
+	_channels{
+		_len expandOne _channels 1 roll
+	}repeat
+}def
+/blendColor{
+	
+	_color{
+		_rgbRamp _producingSeps not and _forceToCMYK not and{
+			_redData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_greenData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blueData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			/setrgbcolor cvx
+		}{
+			_cyanData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_magentaData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_yellowData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blackData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+	
+			_spotColor{
+				_rampSD begin
+					/_rampSD cvx /begin cvx
+	
+					spot1 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot1 cvx /tintValue 3 -1 /roll cvx /put cvx
+	
+					spot2 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot2 cvx /tintValue 3 -1 /roll cvx /put cvx
+					/end cvx
+			 end
+				/_rampSD cvx
+				/nsetcustomcolor cvx
+			}{
+				/setcmykcolor cvx
+			}ifelse
+		}ifelse
+	}{
+		_blackData dup type /stringtype eq{
+			/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+		}if
+		
+		_enabledSmoothShade{
+			1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx
+		}{
+			 /setgray cvx
+		}ifelse
+	}ifelse
+}def
+/useRectImage{
+	_subSampleOK _enabledSmoothShade not and{
+		{
+			mark
+			0 1 dtransform atan cvi 90 mod 0 eq
+			1 0 dtransform atan cvi 90 mod 0 eq
+		} stopped
+		{
+			cleartomark
+			false
+		}
+		{
+			and exch pop
+		} ifelse
+	}{
+		false
+	}ifelse
+}def
+/linealImage{
+	_noImage{
+		rectImage
+	}{
+		_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get
+				/rampImage get exec
+		}{
+			useRectImage{
+				rectImage
+			}{
+				rampImage
+			}ifelse
+		}ifelse
+	}ifelse
+}def
+/linealRamp{
+	pushBSpace
+	_ramp{
+		linealImage
+	}{
+		linealFill
+	}ifelse
+	popBSpace
+	/_rampIndex _rampIndex 1 sub pt
+	_rampIndex 0 gt{
+		getRampData
+	}if
+}def
+/radialGrad{
+	/_usingShells currentoverprint _producingSeps and _usingShells or pt
+	/_firstShell true pt
+	_enabledSmoothShade not{
+		currentoverprint _producingSeps and{
+			
+			newpath
+			clippath pathbbox 
+			1 add 4 1 roll
+			1 add 4 1 roll
+			1 sub 4 1 roll
+			1 sub 4 1 roll
+			_bbox astore pop
+			
+			newpath
+			_bbox 0 get _bbox 1 get moveto
+			_bbox 2 get _bbox 1 get lineto
+			_bbox 2 get _bbox 3 get lineto
+			_bbox 0 get _bbox 3 get lineto
+			closepath
+			6 copy
+			gsave _bUMatrix astore concat
+			1 0 moveto 0 0 1 0 360 arc closepath
+			eoclip fill
+			popBSpace
+		}{
+			fill
+		}ifelse
+	}if
+	pushBSpace
+	
+	_radHilite{
+		_xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp
+		_rampPoint 1 lt{
+			1 _rampPoint sub dup _xHi mul exch _yHi mul translate
+		}if
+	}if
+	_rampIndex{
+		radialRamp
+		/_rampIndex _rampIndex 1 sub pt
+		_rampIndex 0 gt{
+			getRampData
+		}if
+	}repeat
+	
+	popBSpace
+	
+}def
+/getNSamples{
+	0 exch
+	{
+		dup type /stringtype eq{
+			length exch pop exit
+		}if
+		pop
+	}forall
+	dup 0 eq{
+		pop 1
+	}if
+}def
+/getRampData{
+	/_rampType gMark pt
+	/_color _rampType 0 gt pt
+	/_ccRGB _rampType 5 eq _rampType 6 eq or pt
+	/_rgbRamp _rampType 4 eq _ccRGB or pt
+	/_ccProcess _rampType 2 eq _rampType 3 eq or pt
+	_producingSeps{
+		_rampSD initSpotDict
+		/_spotColor _ccProcess _ccRGB or pt
+	}{
+		/_spotColor false pt
+	}ifelse
+	/_ramp true pt
+	100 div /_rampPoint xp
+	100 div /_midPoint xp
+	
+	dup /_colorStyle xp
+	_colorStyle 0 eq{ 
+		2
+	}{
+		_colorStyle 1 eq{ 
+			5
+		}{
+			_colorStyle 2 eq{
+				8
+			}{
+				_colorStyle 3 eq{
+					_producingSeps{
+						_rampSD /spot1 get begin
+							/name 3 index def
+							/spot_K 4 index def
+							/spot_Y 5 index def
+							/spot_M 6 index def
+							/spot_C 7 index def
+					 end
+					}if
+					7
+				}{
+					_producingSeps{
+						_rampSD/spot1 get begin
+							/name 4 index def
+							/spot_K 8 index def
+							/spot_Y 9 index def
+							/spot_M 10 index def
+							/spot_C 11 index def
+					 end
+					}if
+					11
+				} ifelse
+			}ifelse
+		}ifelse
+	}ifelse
+	/_tmp xp
+	_tmp index 100 div /_endPoint xp
+	
+	_gradType 1 eq{
+		_tmp 1 add index 100 div /_midPoint xp
+	}if
+	
+	_producingSeps{
+		_tmp 2 add index /_nextColorStyle xp
+		_nextColorStyle 3 eq{
+			/_tmp _tmp 4 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 2 add index def
+					/spot_Y _tmp 3 add index def
+					/spot_M _tmp 4 add index def
+					/spot_C _tmp 5 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+		_nextColorStyle 4 eq{
+			/_tmp _tmp 5 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 5 add index def
+					/spot_Y _tmp 6 add index def
+					/spot_M _tmp 7 add index def
+					/spot_C _tmp 8 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+	}if
+	_rampType 3 eq _rampType 6 eq or{
+		/_tint2Data gMark pt
+	}if
+	_ccProcess _ccRGB or{
+		/_tint1Data gMark pt
+	}if
+	_rgbRamp{
+		/_blueData gMark pt
+		/_greenData gMark pt
+		/_redData gMark pt
+	}if
+	
+	_producingSeps{
+		_ccProcess _ccRGB or{
+			_rampType 3 eq _rampType 6 eq or{
+				_rampSD /spot2 get begin
+					/tintImage _gradType 0 eq{
+						_tint2Data
+					}{
+						_tint1Data
+					}ifelse
+					def
+					name null eq{
+						/name /Black def
+					}if
+			 end
+			}if
+			_rampSD /spot1 get begin
+				/tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{
+					_tint1Data
+				}{
+					_tint2Data
+				}ifelse
+				def
+				_rampType 2 eq _rampType 5 eq or{
+					name null eq{
+						/name _rampSD/spot2 get /name get def
+						/spot_C _rampSD/spot2 get /spot_C get def
+						/spot_M _rampSD/spot2 get /spot_M get def
+						/spot_Y _rampSD/spot2 get /spot_Y get def
+						/spot_K _rampSD/spot2 get /spot_K get def
+						_rampSD/spot2 get /name null put
+					}if
+				}{
+					name null eq{
+						/name /Black def
+					}if
+				}ifelse
+		 end
+		}if
+	}if
+	/_blackData gMark pt
+	_rampType 0 gt{
+		counttomark 4 add -3 roll
+		/_yellowData xp
+		/_magentaData xp
+		/_cyanData xp
+	}if
+	_ramp{
+		/_nSamples
+			[
+			_rampType 0 eq {_blackData}if
+			_rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if
+			_rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if
+			_rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if
+			_rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if
+			_rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if
+			_rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if
+			] getNSamples pt
+		_enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if
+	} if
+	
+	setCStop
+}def
+/rectImage{
+	gsave
+	/_sInc 1 pt
+	/_bInc 1 _nSamples div pt
+	/_nSubSamples _nSamples pt
+	/_optimize false pt
+		
+	_subSampleOK{
+		/_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt
+		/_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt
+		
+		_pChange .5 gt dup /_optimize xp{
+			/_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc 1 _nSubSamples div pt
+			/_sInc _nSamples 1 sub _nSubSamples 1 sub div pt
+		}if
+	}if
+	0
+	_nSubSamples
+	[
+	/dup cvx
+	_optimize {
+		/round cvx /cvi cvx
+	} if
+	/_ndx /exch cvx /pt cvx
+	blendColor
+	0 0 _bInc 1 /rectfill cvx
+	_bInc 0 /translate cvx
+	_sInc /add cvx
+	] cvx
+	bind
+	repeat
+	pop
+	_spotColor{
+		nsetcustomcolorend
+	}if
+	grestore
+}def
+/radialInit{
+	/_nRadSamples _nSamples dup 0 eq{pop 1}if pt
+	/_sInc -1 pt
+	/_rampLen _rampPoint _endPoint sub pt
+	/_bInc _rampLen _nSamples div neg pt
+	/_optimize false pt
+	_subSampleOK{
+		/_uRampLen
+			_rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			2 copy lt{
+				exch
+			}if pop
+		pt
+		/_pChange 
+			_uRampLen 0 eq{
+				0
+			}{
+				_nSamples _uRampLen div
+			}ifelse
+		pt
+		_pChange .5 gt dup /_optimize xp{
+			/_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc _rampLen _nRadSamples div neg pt
+			/_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt
+		}if
+	}if
+	_radHilite{
+		/_xBCInc _xHi _rampLen mul _nRadSamples div pt
+		/_yBCInc _yHi _rampLen mul _nRadSamples div pt
+	}if
+}def
+/radialRamp{
+	_enabledSmoothShade{
+		fillRamp
+	}{
+		/_saveMatrix _saveMatrix currentmatrix def
+		
+		radialInit
+	
+		%
+		%
+		true
+		_producingSeps _rgbRamp not and{
+			_nSamples 1 gt{ 
+				pop
+				/_ndx 0 pt
+				[blendColor] cvx exec
+				currentInkN
+				/_ndx _nSamples 1 sub pt
+				[blendColor] cvx exec
+				currentInkN
+				or
+			}if
+		}if
+		{
+			_rampPoint
+		
+			_nSamples 1 sub
+		
+			_nRadSamples 
+			[
+				/dup cvx
+		
+				_optimize{
+					/round cvx /cvi cvx
+				}if
+		
+				/_ndx /exch cvx /pt cvx
+				
+				_usingShells{
+					/_firstShell cvx{
+						/_firstShell false pt
+					}{
+						0 0 3 index 360 0 arcn fill
+					}/ifelse cvx
+				}if
+		
+				blendColor
+		
+				_usingShells{
+					0 0 3 /index cvx 0 360 /arc cvx 
+				}{
+					0 0 3 /index cvx 0 360 /arc cvx /fill cvx
+				}ifelse
+		
+				/exch cvx _bInc /add cvx /exch cvx
+		
+				_sInc /add cvx
+		
+				_radHilite{
+					_xBCInc _yBCInc /translate cvx
+				}if
+			] cvx bind
+			repeat
+		
+			pop pop
+		}{
+			_usingShells{
+				0 0 _rampPoint 360 0 arcn fill
+			}if
+		}ifelse
+	
+		_saveMatrix setmatrix
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+		
+		_usingShells _rampIndex 1 eq and{
+			fill
+		}if
+	
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}ifelse
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.2 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+	userdict /Adobe_ColorImage_AI6 50 dict put 
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize { 
+	Adobe_ColorImage_AI6 begin
+	Adobe_ColorImage_AI6 {
+		dup type /arraytype eq {
+			dup xcheck {
+				bind
+			} if
+		} if
+		pop pop
+	} forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+	/Adobe_ColorImage_AI6_Vars 40 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+	/plateindex -1 def
+	/_newproc null def
+	/_proc1 null def
+	/_proc2 null def
+	/channelcount 0 def
+	/sourcecount 0 def
+	/sourcearray 4 array def
+	/_ptispace null def
+	/_ptiname null def
+	/_pti0 0 def
+	/_pti1 0 def
+	/_ptiproc null def
+	/_ptiscale 0 def
+	/_pticomps 0 def
+	/_ptibuf 0 string def
+	/_gtigray 0 def
+	/_cticmyk null def
+	/_rtirgb null def
+	/XIEnable true def
+	/XIType 0 def
+	/XIEncoding 0 def
+	/XICompression 0 def
+	/XIChannelCount 0 def
+	/XIBitsPerPixel 0 def
+	/XIImageHeight 0 def
+	/XIImageWidth 0 def
+	/XIImageMatrix null def
+	/XIRowBytes 0 def
+	/XIFile null def
+	/XIBuffer1 null def
+	/XIBuffer2 null def
+	/XIDataProc null def
+	/XIVersion 6 def
+	/XIColorSpace /DeviceGray def
+	/XIColorValues 0 def
+end
+currentdict /_colorimage known not {
+	/colorimage where {
+		/colorimage get /_colorimage exch def
+	}{
+		/_colorimage null def
+	} ifelse
+} if
+/_image systemdict /image get def
+/_currenttransfer systemdict /currenttransfer get def
+/FourEqual {
+	4 index ne {
+		pop pop pop false
+	}{
+		4 index ne {
+			pop pop false
+		}{
+			4 index ne {
+				pop false
+			}{
+				4 index eq
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/TestPlateIndex {
+	Adobe_ColorImage_AI6_Vars begin
+		/plateindex -1 def
+		/setcmykcolor where {
+			pop
+			gsave
+			1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			grestore
+			1 0 0 0 FourEqual { 
+				/plateindex 0 def
+			}{
+				0 1 0 0 FourEqual { 
+					/plateindex 1 def
+				}{
+					0 0 1 0 FourEqual {
+						/plateindex 2 def
+					}{
+						0 0 0 1 FourEqual { 
+							/plateindex 3 def
+						}{
+							0 0 0 0 FourEqual {
+								/plateindex 5 def
+							} if
+						} ifelse
+					} ifelse
+				} ifelse
+			} ifelse
+			pop pop pop pop
+		} if
+		plateindex
+ end
+} def
+/concatprocs {
+	/packedarray where {
+		pop dup type /packedarraytype eq 2 index type
+		/packedarraytype eq or
+	}{
+		false
+	} ifelse
+	{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		_proc1 aload pop
+		_proc2 aload pop
+		_proc1 length
+		_proc2 length add
+		packedarray cvx
+	}{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		/_newproc _proc1 length _proc2 length add array def
+		_newproc 0 _proc1 putinterval
+		_newproc _proc1 length _proc2 putinterval
+		_newproc cvx
+	} ifelse
+} def
+/clrspaceissepn {
+	type /arraytype eq 
+} def
+/clrspacegetname {
+	dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse
+} def
+/clrspacegetalt {
+	aload pop pop pop colormake
+} def
+/clrspacegetcomps {
+	dup /DeviceGray eq {
+		pop 1
+	}{
+		dup /DeviceRGB eq {
+			pop 3
+		}{
+			/DeviceCMYK eq {
+				4
+			}{
+				1
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/clrspacemarksplate {
+	dup /DeviceGray eq {
+		pop plateindex 3 eq
+	}{
+		dup /DeviceRGB eq {
+			pop plateindex 5 ne
+		}{
+			dup /DeviceCMYK eq {
+				pop plateindex 5 ne
+			}{
+				/findcmykcustomcolor where {
+					pop
+					dup length 2 sub get
+					0.1 0.1 0.1 0.1 5 -1 roll
+					findcmykcustomcolor 1 setcustomcolor
+					systemdict /currentgray get exec
+					1 ne
+				}{
+					pop plateindex 5 ne
+				} ifelse
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colormake {
+	dup clrspacegetcomps
+	exch 1 index 2 add 1 roll
+	dup 1 eq {pop}{array astore} ifelse
+	exch
+} def
+/colorexpand {
+	dup clrspacegetname exch
+	dup clrspaceissepn {
+		clrspacegetalt
+		exch 4 1 roll
+	}{
+		1 3 1 roll
+	} ifelse
+} def
+/colortint {
+	dup /DeviceGray eq {
+		3 1 roll 1 exch sub mul 1 exch sub exch
+	}{
+		dup /DeviceRGB eq {
+			3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+		}{
+			dup /DeviceCMYK eq {
+				3 1 roll {1 index mul exch} forall pop 4 array astore exch
+			}{
+				3 1 roll mul exch
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colortocmyk {
+	dup /DeviceGray eq {
+		pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+	}{
+		dup /DeviceRGB eq {
+			pop aload pop _rgbtocmyk 4 array astore
+		}{
+			dup /DeviceCMYK eq {
+				pop
+			}{
+				clrspacegetalt colortint colortocmyk
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/makeimagedict {
+	7 dict begin
+		/ImageType 1 def
+		/Decode exch def
+		/DataSource exch def
+		/ImageMatrix exch def
+		/BitsPerComponent exch def
+		/Height exch def
+		/Width exch def
+	currentdict end
+} def
+/stringinvert {
+	0 1 2 index length 1 sub {
+		dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+	} for
+} def
+/stringknockout {
+	0 1 2 index length 1 sub {
+		255 2 index 3 1 roll put
+	} for
+} def
+/stringapply {
+	0 1 4 index length 1 sub {
+		dup
+		4 index exch get
+		3 index 3 1 roll
+		3 index exec
+	} for
+	pop exch pop
+} def
+/WalkRGBString {
+	0 3 index
+	dup length 1 sub 0 3 3 -1 roll {
+		3 getinterval {} forall
+		5 index exec
+		3 index
+	} for
+	
+	 5 {pop} repeat
+} def
+/WalkCMYKString
+{
+	0 3 index
+	dup length 1 sub 0 4 3 -1 roll {
+		4 getinterval {} forall
+		
+		6 index exec
+		
+		3 index
+		
+	} for
+	
+	5 { pop } repeat
+	
+} def
+/StuffRGBIntoGrayString
+{
+	.11 mul exch
+	
+	.59 mul add exch
+	
+	.3 mul add
+	
+	cvi 3 copy put
+	
+	pop 1 add
+} def
+/StuffCMYKIntoGrayString
+{
+	exch .11 mul add
+	
+	exch .59 mul add
+	
+	exch .3 mul add
+	
+	dup 255 gt { pop 255 } if
+	
+	255 exch sub cvi 3 copy put
+	
+	pop 1 add
+} def
+/RGBToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin 
+		sourcearray 0 get exec
+		dup length 3 idiv string
+		dup 3 1 roll 
+		
+		/StuffRGBIntoGrayString load exch
+		WalkRGBString
+ end
+} def
+/CMYKToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcearray 0 get exec
+		dup length 4 idiv string
+		dup 3 1 roll 
+		
+		/StuffCMYKIntoGrayString load exch
+		WalkCMYKString
+ end
+} def
+/SeparateCMYKImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcecount 0 ne {
+			sourcearray plateindex get exec
+		}{			
+			sourcearray 0 get exec
+			
+			dup length 4 idiv string
+			
+			0 2 index
+			
+			plateindex 4 2 index length 1 sub {
+				get 255 exch sub
+				
+				3 copy put pop 1 add
+				
+				2 index
+			} for
+			pop pop exch pop
+		} ifelse
+ end
+} def
+	
+/ColorImageCompositeEmulator {
+	pop true eq {
+		Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat
+	}{
+		Adobe_ColorImage_AI6_Vars /channelcount get 1 ne {
+			Adobe_ColorImage_AI6_Vars begin
+				sourcearray 0 3 -1 roll put
+			
+				channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse
+				load
+		 end
+		} if
+		image
+	} ifelse
+} def
+/colorimage {
+	Adobe_ColorImage_AI6_Vars begin
+		/channelcount 1 index def
+		/sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def
+		4 sourcecount add index
+ end
+	
+	dup 8 eq exch 1 eq or not {
+		/_colorimage load null ne {
+			_colorimage
+		}{
+			Adobe_ColorImage_AI6_Vars /sourcecount get
+			7 add { pop } repeat
+		} ifelse
+	}{
+		dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or {
+			/_colorimage load null eq {
+				ColorImageCompositeEmulator
+			}{
+				dup 1 eq {
+					pop pop image
+				}{
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						gsave
+						
+						0 _currenttransfer exec
+						1 _currenttransfer exec
+						eq
+						{ 0 _currenttransfer exec 0.5 lt }
+						{ 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse
+						
+						{ { pop 0 } } { { pop 1 } } ifelse
+						systemdict /settransfer get exec
+					} if
+					
+					_colorimage
+					
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						grestore
+					} if
+				} ifelse
+			} ifelse
+		}{
+			dup 1 eq {
+				pop pop
+				image
+			}{
+				pop pop
+				Adobe_ColorImage_AI6_Vars begin
+					sourcecount -1 0 {			
+						exch sourcearray 3 1 roll put
+					} for
+					/SeparateCMYKImageProc load
+			 end
+				systemdict /image get exec
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/proctintimage {
+	/_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+	/_pticomps _ptispace clrspacegetcomps store
+	/_ptiscale _pti1 _pti0 sub store
+	level2? {
+		_ptiname length 0 gt version cvr 2012 ge and {
+			[/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+			[_pti0 _pti1] makeimagedict _image
+		}{
+			[/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+			[0 255] makeimagedict _image
+		} ifelse
+	}{
+		_pticomps 1 eq {
+			{
+				dup
+				{
+					255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+				} stringapply
+			} concatprocs _image
+		}{
+			{
+				dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+				_ptibuf {
+					exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+					_pticomps 2 add -2 roll
+					_pticomps 1 sub -1 0 {
+						1 index add 2 index exch
+						5 -1 roll
+						255 mul cvi put
+					} for
+					pop pop
+				} stringapply
+			} concatprocs false _pticomps
+			/_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse
+		} ifelse
+	} ifelse
+} def
+/graytintimage {
+	/_gtigray 5 -1 roll store
+	{1 _gtigray sub mul 1 exch sub} 4 1 roll
+	/DeviceGray proctintimage
+} def
+/cmyktintimage {
+	/_cticmyk 5 -1 roll store
+	{_cticmyk {1 index mul exch} forall pop} 4 1 roll
+	/DeviceCMYK proctintimage
+} def
+/rgbtintimage {
+	/_rtirgb 5 -1 roll store
+	{_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+	/DeviceRGB proctintimage
+} def
+/tintimage {
+	TestPlateIndex -1 eq {
+		colorexpand
+		3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+		dup /DeviceGray eq {
+			pop graytintimage
+		}{
+			dup /DeviceRGB eq {
+				pop rgbtintimage
+			}{
+				pop cmyktintimage
+			} ifelse
+		} ifelse
+	}{
+		dup clrspacemarksplate {
+			plateindex 5 lt {
+				colortocmyk plateindex get 1 exch sub
+				exch {1 0}{0 1} ifelse () graytintimage
+			}{
+				pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage
+			} ifelse
+		}{
+			pop pop pop
+			{pop 1} 0 1 () /DeviceGray proctintimage
+		} ifelse
+	} ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+	XIImageWidth XIImageHeight false
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	imagemask
+} def
+/XIImageTint {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIType 3 eq XIColorValues XIColorSpace tintimage
+} def
+/XIImage {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse
+} def
+/XG {
+	pop pop
+} def
+/XF {
+	13 {pop} repeat
+} def
+/Xh {
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		/XIImageMatrix exch def
+		0 0 moveto
+		XIImageMatrix concat
+		XIImageWidth XIImageHeight scale
+		
+		XIType 1 eq {
+			/_lp /null ddef
+			_fc
+			/_lp /imagemask ddef
+		}
+		if
+		/XIVersion 7 def
+ end
+} def
+/XH {
+	Adobe_ColorImage_AI6_Vars begin
+		/XIVersion 6 def
+		grestore
+ end
+} def
+/XIEnable {
+	Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+	Adobe_ColorImage_AI6_Vars begin
+		colormake
+		/XIColorSpace exch def
+		/XIColorValues exch def
+ end
+} def
+/XI
+{
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		cvi dup
+		256 idiv /XICompression exch store
+		256 mod /XIEncoding exch store
+		pop pop
+		/XIChannelCount exch def
+		/XIBitsPerPixel exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		pop pop pop pop
+		/XIImageMatrix exch def
+		XIBitsPerPixel 1 eq {
+			XIImageWidth 8 div ceiling cvi
+		}{
+			XIImageWidth XIChannelCount mul
+		} ifelse
+		/XIRowBytes exch def
+		XIEncoding 0 ne XIVersion 6 le and {
+			currentfile 128 string readline pop pop
+		} if
+		XICompression 0 eq {
+			/XIBuffer1 XIRowBytes string def
+			XIEncoding 0 eq {
+				{currentfile XIBuffer1 readhexstring pop}
+			}{
+				{currentfile XIBuffer1 readstring pop}
+			} ifelse
+		}{
+			/XIBuffer1 256 string def
+			/XIBuffer2 XIRowBytes string def
+			{currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+			/ASCIIHexDecode filter /DCTDecode filter
+			/XIFile exch def
+			{XIFile XIBuffer2 readstring pop}
+		} ifelse
+		/XIDataProc exch def
+		
+		XIVersion 6 le {
+			0 0 moveto
+			XIImageMatrix concat
+			XIImageWidth XIImageHeight scale
+			XIType 1 eq {
+				/_lp /null ddef
+				_fc
+				/_lp /imagemask ddef
+			} if
+		} if
+		XIEnable {
+			XIType 1 eq {
+				XIImageMask
+			}{
+				XIType 2 eq XIType 3 eq or {
+					XIImageTint
+				}{
+					XIImage
+				} ifelse
+			} ifelse
+		}{
+			XINullImage
+		} ifelse
+		grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog)
+%%Version: 1.2 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin
+put
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+	Adobe_Illustrator_AI5 dup begin
+	Adobe_Illustrator_AI5_vars begin
+	discardDict
+	{
+		bind pop pop
+	} forall
+	dup /nc get begin
+	{
+		dup xcheck 1 index type /operatortype ne and
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+	Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+	dup load dup length exch maxlength eq
+	{
+		dup dup load dup
+		length 2 mul dict copy def
+	} if
+	load begin
+	def
+ end
+} def
+/npop
+{
+	{
+		pop
+	} repeat
+} def
+/hswj
+{
+	dup stringwidth 3 2 roll
+	{
+		_hvwb eq { exch _hvcx add exch _hvcy add } if
+		exch _hvax add exch _hvay add
+	} cforall
+} def
+/vswj
+{
+	0 0 3 -1 roll
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			dup cstring stringwidth 5 2 roll
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			4 -1 roll sub exch
+			3 -1 roll sub exch
+		}
+		{
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			_fontHeight sub
+		} ifelse
+	} cforall
+} def
+/swj
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+	0 0 0 6 3 roll swj
+} def
+/vjss
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index setmatrix stroke
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			gsave
+			2 index false charpath
+			6 index setmatrix stroke
+			grestore
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjss
+{
+	4 1 roll
+	{
+		dup cstring
+		gsave
+		false charpath currentpoint
+		5 index setmatrix stroke
+		grestore
+		moveto
+		_sp eq
+		{
+			5 index 5 index rmoveto
+		} if
+		2 copy rmoveto
+	} cforall
+	6 npop
+} def
+/jss
+{
+	_lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+	0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			false charpath
+            currentpoint
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			2 index false charpath
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjsp
+{
+    4 1 roll
+    {
+        dup cstring
+        false charpath
+        _sp eq
+        {
+            5 index 5 index rmoveto
+        } if
+        2 copy rmoveto
+    } cforall
+    6 npop
+} def
+/jsp
+{
+	matrix currentmatrix
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+    matrix currentmatrix
+    0 0 0 7 3 roll
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+	transform
+	0.25 sub round 0.25 add exch
+	0.25 sub round 0.25 add exch
+	itransform
+} def
+/setstrokeadjust where
+{
+	pop true setstrokeadjust
+	/c
+	{
+		curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		moveto
+	} def
+}
+{
+	/c
+	{
+		pl curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll pl curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		pl 2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		pl lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		pl moveto
+	} def
+} ifelse
+/d
+{
+	setdash
+} def
+/cf
+{
+} def
+/i
+{
+	dup 0 eq
+	{
+		pop cf
+	} if
+	setflat
+} def
+/j
+{
+	setlinejoin
+} def
+/J
+{
+	setlinecap
+} def
+/M
+{
+	setmiterlimit
+} def
+/w
+{
+	setlinewidth
+} def
+/XR
+{
+	0 ne
+	/_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+	closepath
+} def
+/N
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			_eo {eoclip} {clip} ifelse /_doClip 0 ddef
+		} if
+		newpath
+	}
+	{
+		/CRender
+		{
+			N
+		} ddef
+	} ifelse
+} def
+/n
+{
+	N
+} def
+/F
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+			/_doClip 0 ddef
+		}
+		{
+			_pf
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			F
+		} ddef
+	} ifelse
+} def
+/f
+{
+	closepath
+	F
+} def
+/S
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			_ps
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			S
+		} ddef
+	} ifelse
+} def
+/s
+{
+	closepath
+	S
+} def
+/B
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		gsave F grestore
+		{
+			gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			S
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			B
+		} ddef
+	} ifelse
+} def
+/b
+{
+	closepath
+	B
+} def
+/W
+{
+	/_doClip 1 ddef
+} def
+/*
+{
+	count 0 ne
+	{
+		dup type /stringtype eq
+		{
+			pop
+		} if
+	} if
+	newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+	_pola 0 eq
+	{
+		gsave
+	} if
+} def
+/Q
+{
+	_pola 0 eq
+	{
+		grestore
+	} if
+} def
+/*u
+{
+	_pola 1 add /_pola exch ddef
+} def
+/*U
+{
+	_pola 1 sub /_pola exch ddef
+	_pola 0 eq
+	{
+		CRender
+	} if
+} def
+/D
+{
+	pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+	/_i save ddef
+	clipForward?
+	{
+		nulldevice
+	} if
+	6 1 roll 4 npop
+	concat pop
+	userdict begin
+	/showpage
+	{
+	} def
+	0 setgray
+	0 setlinecap
+	1 setlinewidth
+	0 setlinejoin
+	10 setmiterlimit
+	[] 0 setdash
+	/setstrokeadjust where {pop false setstrokeadjust} if
+	newpath
+	0 setgray
+	false setoverprint
+} def
+/~
+{
+ end
+	_i restore
+} def
+/O
+{
+	0 ne
+	/_of exch ddef
+	/_lp /none ddef
+} def
+/R
+{
+	0 ne
+	/_os exch ddef
+	/_lp /none ddef
+} def
+/g
+{
+	/_gf exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_gf setgray
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/G
+{
+	/_gs exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_gs setgray
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/k
+{
+	_cf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_cf aload pop setcmykcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/K
+{
+	_cs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_cs aload pop setcmykcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/Xa
+{
+	_rgbf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_rgbf aload pop setrgbcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XA
+{
+	_rgbs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_rgbs aload pop setrgbcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/_rgbtocmyk
+{
+3
+	{
+	1 exch sub 3 1 roll
+	} repeat
+3 copy 1 4 1 roll
+3
+	{
+	3 index 2 copy gt
+		{
+		exch
+		} if
+	pop 4 1 roll
+	} repeat
+pop pop pop
+4 1 roll
+3
+	{
+	3 index sub
+	3 1 roll
+	} repeat
+4 -1 roll
+} def
+/Xx
+{
+	exch
+	/_gf exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XX
+{
+	exch
+	/_gs exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/x
+{
+	/_gf exch ddef
+	findcmykcustomcolor
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/X
+{
+	/_gs exch ddef
+	findcmykcustomcolor
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/A
+{
+	pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+	pop pop
+} def
+/discard
+{
+	save /discardSave exch store
+	discardDict begin
+	/endString exch store
+	gt38?
+	{
+		2 add
+	} if
+	load
+	stopped
+	pop
+ end
+	discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+	/endStringLength endString length store
+	/newBuff buffer 0 endStringLength getinterval store
+	/newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+	/newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+	newBuff 0 newBuffButFirst putinterval
+	newBuffLast 0
+	currentfile read not
+	{
+	stop
+	} if
+	put
+} def
+0
+{
+	pre38Initialize
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff endString eq
+			{
+				cleartomark stop
+			} if
+			shiftBuffer
+		} loop
+	}
+	{
+	stop
+	} ifelse
+} def
+1
+{
+	pre38Initialize
+	/beginString exch store
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff beginString eq
+			{
+				/layerCount dup load 1 add store
+			}
+			{
+				newBuff endString eq
+				{
+					/layerCount dup load 1 sub store
+					layerCount 0 eq
+					{
+						cleartomark stop
+					} if
+				} if
+			} ifelse
+			shiftBuffer
+		} loop
+	} if
+} def
+2
+{
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		endString eq
+		{
+			cleartomark stop
+		} if
+	} loop
+} def
+3
+{
+	/beginString exch store
+	/layerCnt 1 store
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		dup beginString eq
+		{
+			pop /layerCnt dup load 1 add store
+		}
+		{
+			endString eq
+			{
+				layerCnt 1 eq
+				{
+					cleartomark stop
+				}
+				{
+					/layerCnt dup load 1 sub store
+				} ifelse
+			} if
+		} ifelse
+	} loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+	/n /N /s /S /f /F /b /B
+}
+{
+	{
+		_doClip 1 eq
+		{
+			/_doClip 0 ddef _eo {eoclip} {clip} ifelse
+		} if
+		newpath
+	} def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+	4 npop
+	6 1 roll
+	pop
+	4 1 roll
+	pop pop pop
+	0 eq
+	{
+		0 eq
+		{
+			(%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+		}
+		{
+			
+			/clipForward? true def
+			
+			/Tx /pop load def
+			/Tj /pop load def
+			
+			currentdict end clipRenderOff begin begin
+		} ifelse
+	}
+	{
+		0 eq
+		{
+			save /discardSave exch store
+		} if
+	} ifelse
+} bind def
+/LB
+{
+	discardSave dup null ne
+	{
+		restore
+	}
+	{
+		pop
+		clipForward?
+		{
+			currentdict
+		 end
+		 end
+		 begin
+					
+			/clipForward? false ddef
+		} if
+	} ifelse
+} bind def
+/Pb
+{
+	pop pop
+	0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+	0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+	72 exch div
+	0 dtransform dup mul exch dup mul add sqrt
+	dup 1 lt
+	{
+		pop 1
+	} if
+	setflat
+} def
+/Mb
+{
+	q
+} def
+/Md
+{
+} def
+/MB
+{
+	Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+	pop
+} bind def
+/setcmykcolor
+{
+	4 npop
+} bind def
+/setrgbcolor
+{
+	3 npop
+} bind def
+/setcustomcolor
+{
+	2 npop
+} bind def
+currentdict readonly pop
+end
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_pattern_AI5 1.1 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators)
+%%Version: 1.1 0
+%%CreationDate: (03/26/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/@
+{
+} def
+/&
+{
+} def
+/dp
+{
+	dup null eq
+	{
+		pop
+		_dp 0 ne
+		{
+			0 1 _dp 1 sub _dl mod
+			{
+				_da exch get 3 get
+			} for
+			_dp 1 sub _dl mod 1 add packedarray
+			_da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll
+			definepattern pop
+		} if
+	}
+	{
+		_dp 0 ne _dp _dl mod 0 eq and
+		{
+			null dp
+		} if
+		7 packedarray _da exch _dp _dl mod exch put
+		_dp _dl mod _da 0 get 4 get 2 packedarray
+		/_dp _dp 1 add def
+	} ifelse
+} def
+/E
+{
+	_ed begin
+	dup 0 get type /arraytype ne
+	{
+		0
+		{
+			dup 1 add index type /arraytype eq
+			{
+				1 add
+			}
+			{
+				exit
+			} ifelse
+		} loop
+		array astore
+	} if
+	/_dd exch def
+	/_ury exch def
+	/_urx exch def
+	/_lly exch def
+	/_llx exch def
+	/_n exch def
+	/_y 0 def
+	/_dl 4 def
+	/_dp 0 def
+	/_da _dl array def
+	0 1 _dd length 1 sub
+	{
+		/_d exch _dd exch get def
+		0 2 _d length 2 sub
+		{
+			/_x exch def
+			/_c false def
+			/_r _d _x 1 add get cvlit def
+			_r _ ne
+			{
+				_urx _llx sub _ury _lly sub
+				[
+				1 0 0 1 0 0
+				]
+				[
+				/save cvx
+				_llx neg _lly neg /translate cvx
+				_c
+				{
+					nc /begin cvx
+				} if
+				_r dup type /stringtype eq
+				{
+					cvx
+				}
+				{
+					{
+						exec
+					} /forall cvx
+				} ifelse
+				_c
+				{
+					/end cvx
+				} if
+				/restore cvx
+				] cvx
+				/_fn 12 _n length add string def
+				_y _fn cvs pop
+				/_y _y 1 add def
+				_fn 12 _n putinterval
+				_fn _c false dp
+				_d exch _x 1 add exch put
+			} if
+		} for
+	} for
+	null dp
+	_n _dd /_pd
+ end
+	xput
+} def
+/fc
+{
+	_fm dup concatmatrix pop
+} def
+/p
+{
+	/_fm exch ddef
+	9 -2 roll _pm translate fc
+	7 -2 roll _pm scale fc
+	5 -1 roll _pm rotate fc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate fc
+		1 -1 _pm scale fc
+		neg _pm rotate fc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate fc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore fc
+	neg _pm rotate fc
+	_pd exch get /_fdd exch ddef
+	/_pf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					patternfill
+				}
+				{
+					pop
+					fill
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_psf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					9 copy 6 npop patternashow
+				}
+				{
+					pop
+					6 copy 3 npop hvashow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		sw rmoveto
+	} ddef
+	/_pjsf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					12 copy 6 npop patternawidthshow
+				}
+				{
+					pop 9 copy 3 npop hvawidthshow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+/sc
+{
+	_sm dup concatmatrix pop
+} def
+/P
+{
+	/_sm exch ddef
+	9 -2 roll _pm translate sc
+	7 -2 roll _pm scale sc
+	5 -1 roll _pm rotate sc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate sc
+		1 -1 _pm scale sc
+		neg _pm rotate sc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate sc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore sc
+	neg _pm rotate sc
+	_pd exch get /_sdd exch ddef
+	/_ps
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					patternstroke
+				}
+				{
+					pop stroke
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_pss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					10 copy 6 npop patternashowstroke
+				}
+				{
+					pop 7 copy 3 npop ss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop sw rmoveto
+	} ddef
+	/_pjss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					13 copy 6 npop patternawidthshowstroke
+				}
+				{
+					pop 10 copy 3 npop jss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+end
+userdict /Adobe_pattern_AI5 18 dict dup begin
+put
+/initialize
+{
+	/definepattern where
+	{
+		pop
+		pop pop
+	}
+	{
+	 begin
+	 begin
+		Adobe_pattern_AI5 begin
+		Adobe_pattern_AI5
+		{
+			dup xcheck
+			{
+				bind
+			} if
+			pop pop
+		} forall
+		mark
+		cachestatus 7 1 roll pop pop pop pop exch pop exch
+		{
+			{
+				10000 add
+				dup 2 index gt
+				{
+					exit
+				} if
+				dup setcachelimit
+			} loop
+		} stopped
+		cleartomark
+	 end 	
+		
+	 end
+	 end
+		
+		Adobe_pattern_AI5 begin
+	} ifelse
+} def
+/terminate
+{
+	currentdict Adobe_pattern_AI5 eq
+	{
+	 end
+	} if
+} def
+errordict
+/nocurrentpoint
+{
+	pop
+	stop
+} put
+errordict
+/invalidaccess
+{
+	pop
+	stop
+} put
+/patternencoding
+256 array def
+0 1 255
+{
+	patternencoding exch ( ) 2 copy exch 0 exch put cvn put
+} for
+/definepattern
+{
+	17 dict begin
+	/uniform exch def
+	/cache exch def
+	/key exch def
+	/procarray exch def
+	/mtx exch matrix invertmatrix def
+	/height exch def
+	/width exch def
+	/ctm matrix currentmatrix def
+	/ptm matrix def
+	/str 32 string def
+	/slice 9 dict def
+	slice /s 1 put
+	slice /q 256 procarray length div sqrt floor cvi put
+	slice /b 0 put
+	/FontBBox
+	[
+	0 0 0 0
+	] def
+	/FontMatrix mtx matrix copy def
+	/Encoding patternencoding def
+	/FontType 3 def
+	/BuildChar
+	{
+		exch
+	 begin
+		/setstrokeadjust where {pop true setstrokeadjust} if
+		slice begin
+		dup q dup mul mod s idiv /i exch def
+		dup q dup mul mod s mod /j exch def
+		q dup mul idiv procarray exch get
+		/xl j width s div mul def
+		/xg j 1 add width s div mul def
+		/yl i height s div mul def
+		/yg i 1 add height s div mul def
+		uniform
+		{
+			1 1
+		}
+		{
+			width 0 dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+			0 height dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+		} ifelse
+		width 0 cache
+		{
+			xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul
+			setcachedevice
+		}
+		{
+			setcharwidth
+		} ifelse
+		gsave
+		scale
+		newpath
+		xl yl moveto
+		xg yl lineto
+		xg yg lineto
+		xl yg lineto
+		closepath
+		clip
+		newpath
+	 end
+	 end
+		exec
+		grestore
+	} def
+	key currentdict definefont
+ end
+} def
+/patterncachesize
+{
+	gsave
+	newpath
+	0 0 moveto
+	width 0 lineto
+	width height lineto
+	0 height lineto
+	closepath
+	patternmatrix setmatrix
+	pathbbox
+	exch ceiling 4 -1 roll floor sub 3 1 roll
+	ceiling exch floor sub
+	mul 1 add
+	grestore
+} def
+/patterncachelimit
+{
+	cachestatus 7 1 roll 6 npop 8 mul
+} def
+/patternpath
+{
+	exch dup begin
+	setfont
+	ctm setmatrix
+	concat
+	slice exch /b exch slice /q get dup mul mul put
+	FontMatrix concat
+	uniform
+	{
+		width 0 dtransform round width div exch round width div exch
+		0 height dtransform round height div exch height div exch
+		0 0 transform round exch round exch
+		ptm astore setmatrix
+	}
+	{
+		ptm currentmatrix pop
+	} ifelse
+	{
+		currentpoint
+	} stopped not
+	{
+		2 npop
+		pathbbox
+		true
+		4 index 3 index eq
+		4 index 3 index eq
+		and
+		{
+			pop false
+			{
+				{
+					2 npop
+				}
+				{
+					3 npop true
+				}
+				{
+					7 npop true
+				}
+				{
+					pop true
+				} pathforall
+			} stopped
+			{
+				5 npop true
+			} if
+		} if
+		{
+			height div ceiling height mul 4 1 roll
+			width div ceiling width mul 4 1 roll
+			height div floor height mul 4 1 roll
+			width div floor width mul 4 1 roll
+			2 index sub height div ceiling cvi exch
+			3 index sub width div ceiling cvi exch
+			4 2 roll moveto
+			FontMatrix mtx invertmatrix
+			dup dup 4 get exch 5 get rmoveto
+			ptm ptm concatmatrix pop
+			slice /s
+			patterncachesize patterncachelimit div ceiling sqrt ceiling cvi
+			dup slice /q get gt
+			{
+				pop slice /q get
+			} if
+			put
+			0 1 slice /s get dup mul 1 sub
+			{
+				slice /b get add
+				gsave
+				0 1 str length 1 sub
+				{
+					str exch 2 index put
+				} for
+				pop
+				dup
+				{
+					gsave
+					ptm setmatrix
+					1 index str length idiv
+					{
+						str show
+					} repeat
+					1 index str length mod str exch 0 exch getinterval show
+					grestore
+					0 height rmoveto
+				} repeat
+				grestore
+			} for
+			2 npop
+		}
+		{
+			4 npop
+		} ifelse
+	} if
+ end
+} def
+/patternclip
+{
+	_eo {eoclip} {clip} ifelse
+} def
+/patternstrokepath
+{
+	strokepath
+} def
+/patternmatrix
+matrix def
+/patternfill
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternclip
+	Adobe_pattern_AI5 /patternpath get exec
+	grestore
+	newpath
+} def
+/patternstroke
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternstrokepath
+	true
+	{
+		{
+			{
+				newpath
+				moveto
+			}
+			{
+				lineto
+			}
+			{
+				curveto
+			}
+			{
+				closepath
+				3 copy
+				Adobe_pattern_AI5 /patternfill get exec
+			} pathforall
+			3 npop
+		} stopped
+		{
+			5 npop
+			patternclip
+			Adobe_pattern_AI5 /patternfill get exec
+		} if
+	}
+	{
+		patternclip
+		Adobe_pattern_AI5 /patternfill get exec
+	} ifelse
+	grestore
+	newpath
+} def
+/vpatternawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	3 npop
+} def
+/hpatternawidthshow
+{
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		9 index 9 index 9 index
+		Adobe_pattern_AI5 /patternfill get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	8 npop
+} def
+/patternashow
+{
+0 0 0 6 3 roll
+patternawidthshow
+} def
+/patternawidthshow
+{
+	6 index type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get 7 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse
+} def
+/vpatternawidthshowstroke
+{
+	7 1 roll
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			3 index setmatrix
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			4 index setmatrix
+			7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	4 npop
+} def
+/hpatternawidthshowstroke
+{
+	7 1 roll
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		7 index setmatrix
+		10 index 10 index 10 index
+		Adobe_pattern_AI5 /patternstroke get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	9 npop
+} def
+/patternashowstroke
+{
+	0 0 0 7 3 roll
+	patternawidthshowstroke
+} def
+/patternawidthshowstroke
+{
+	7 index type /dicttype eq
+	{
+		patternmatrix /patternmatrix get 8 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse
+} def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+	Adobe_cshow begin
+	Adobe_cshow
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+	{
+ end
+	} if
+} def
+/cforall
+{
+	/_lobyte 0 ddef
+	/_hibyte 0 ddef
+	/_cproc exch ddef
+	/_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+	{
+		/_lobyte exch ddef
+		_hibyte 0 eq
+		_cscript 1 eq
+		_lobyte 129 ge _lobyte 159 le and
+		_lobyte 224 ge _lobyte 252 le and or and
+		_cscript 2 eq
+		_lobyte 161 ge _lobyte 254 le and and
+		_cscript 3 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript 25 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript -1 eq
+		or or or or and
+		{
+			/_hibyte _lobyte ddef
+		}
+		{
+			_hibyte 256 mul _lobyte add
+			_cproc
+			/_hibyte 0 ddef
+		} ifelse
+	} forall
+} def
+/cstring
+{
+	dup 256 lt
+	{
+		(s) dup 0 4 3 roll put
+	}
+	{
+		dup 256 idiv exch 256 mod
+		(hl) dup dup 0 6 5 roll put 1 4 3 roll put
+	} ifelse
+} def
+/clength
+{
+	0 exch
+	{ 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+	{
+		dup cstring
+		show
+		_hvax _hvay rmoveto
+		_hvwb eq { _hvcx _hvcy rmoveto } if
+	} cforall
+} def
+/vawidthshow
+{
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			0 _fontRotateAdjust rmoveto
+			cstring
+			_hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+			0 _fontRotateAdjust neg rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			exch _hvay sub exch _hvax sub
+			2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			3 2 roll
+			cstring
+			dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+			show
+			moveto
+		} ifelse
+	} cforall
+} def
+/hvawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+	0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+	0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+	0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade true put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider
+currentpacking true setpacking
+%%BeginFont: Myriad-Roman
+%!PS-AdobeFont-1.0: Myriad-Roman 001.000
%%CreationDate: Mon Jul 25 16:15:04 1994
%%VMusage: 28005 34897
%% Myriad is a trademark of Adobe Systems Incorporated may be registered in 
%% certain jurisdictions.
11 dict begin
/FontInfo 10 dict dup begin
/version (001.000) readonly def
/Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated.  All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) readonly def
/FullName (Myriad Roman) readonly def
/FamilyName (Myriad) readonly def
/Weight (Regular) readonly def
/isFixedPitch false def
/ItalicAngle 0 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Myriad-Roman def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/UniqueID 41987 def
/FontBBox{-46 -250 1126 831}readonly def
currentdict end
currentfile eexec
fcecc98c2aefb25089edad915372f7632807d0d80113c0fbda4614dda7560bffacbeaa4f371815c991f0682cbc45f51895a8e6fc33b63b87db33f2f141b34c80b26ba7d9f30c5d0811a31c14ca6d1250d33478395ee2096ad1b742ed78b95145f606e652e4d2bd83f4cf7d67cdca3268c1d165c3cf471a6094892362712d5e
+19b5084335eaca009edef0af8bc976eadf7c336b76887cf63653a555e0538ab47d8bf6a8c45725720630bc185740fdab20647654dd2e6d2db3254e482024a1dd45e865357b140bacb98f0a8066087af1076333e21e51e77d70bad81d05e6b7e6f4d3a88423efbdf6eb3b9d4ca66e9ad97e0bde315f13542863a4a6b71a9c35
+60eaea09bb5a75ea3eaf84bfd6a5549a045e20540ac787976353c114cca7c97ce57501589cc846a1320ba2c618644bd7ead0f736873e8d07e7f550df45b51deefee29c13aa19896638a8f580a26665a8d50511d6a0a1d8822fe99e3d82a19244ed668b2d510ea6ef05c17002e01d0a4c4154288c2156ae5fba08cfb2394c78
+221f1b67ca0c6dd8bc930eb9cd6d5b77619e5cfb0e19da187d81124f0793bc0eac6aff145fd8deb6b9100aad8798983107b205f36eb8f7c6b46c6149ccda404549845c5177d0b318b4e621f7c02260faf5e4af8463b776c5b12e6fb1d6735ef91f91d9132268c0c67f18915d0807f99694d4ae8c6d9d495b000604d311a9b9
+6d2520458341a4efa4fa686e80300f18d6681a99a5c3eaeb4767306554865d708a58419b05c24200c59454847988d50b7abbe83a2756cc5781be5b71c28318750549b21f7ce539909e8425c5c38a4a24cad2cb70396b88777346c838c7c8ae27833df843db788ca8a3f0594707a2e54f427a416d3e07d838039d5edc835b68
+ea0aac86f3bd470b37f7ba7c53045a8460d1e7a3175fc90d877ed022ba3f45622569455e31a3d1dc8261541bcd25c8b52845ce4a9dc2e3eedadbcbca781989cf5c51284a4e74b7c0d163c25a608196e89ca4e3444395562311d405ab1707e3dbcba475c61e3774137432519b9e0384112c5da682e59ed4c7e1db1ee381d8fe
+a4ced481f9823b96b719e51b5f059d26949588d5d33c4149ac36cfcac4ca83210c06b15377d9911bca684f27ab16f18ba374261a00514f0ff70163c0d5c41093cc02725b828f004cd04c5297bfc77d3185475d17569f430472d6d67aed94ebcf0b9808ed4489c233e69eb9139561dd741605b62511aaa09a44fc841851ccd7
+80f15c71bdea5386f1bdcc7e30fc4b07b461f21bab5fc313d3424519359f17a4f5f44332ebc0bc269892cb1d91a414817b152a77192c21a0501b586a667f3a5352940ca13f840f5377f30c60b6740ff7fa07964332c76def2b8925245fab5de0ae53a0226fab8218c703a4bbc6733de7a68114d6048f85e7ba1aa4f3b044fa
+052182ccc1b98e9a33ee688bcc29d195ee42d78d814b058abcf57d8970241d14c21f66107ae839a4b3a8ba06f6300d6b1199f3c255140776c5e1b9db2cfe374926e90bfa7ed45dc371ea7a3a9715347b17c9cf2ce89fbd64f7a932146cf5f766a702936791071ce8d01c7c36f77c1796da835f45b43ffef471feac9f548c39
+ee0d15805da6381d46062e084c3aca65b9abd3aa4636bdee45cb6ae316302385bfe24279f27d9017d98233d0839a17c34c40a140b9ebb38bece8bb0ea78b602573d457bcba967cba9191fc3e689c2204f798b8ce4785d908a20a8b7af26a59da060b181c1375745de477c32b46e059157e1bff21058709f5ed1e8a561505f0
+ed7fbe0212099e9dbe1c02412f63eb6274f62db5075d74c2aad39a2305a52c4267fefc948faeb4afa2de78ec35e2cb02f212e5f772ccb07ca14636535ca1330c44afb15689daca6808c32592bab5c1427f87572983d82ca79707177e7d2799df80faeb622efdd1afcfdf20dc7a6c18d0f3ac98e9cabe609d0ddd71ff2cf57d
+438e3caf3933449994fa51703c49ccbe30982ad2ac4e09f1e10dc393eca013bab3de6205e7c78ebbdc19f8d30d6087acc505ef874f28f299993aa81f21bdc769e0d238dfc42057eb50fdf73b9a637425fbb2e79876941d51720e5cd95e42ee0d8d0c3c2460272508530ecdb2a086f11fa43560f6dbe830f455b26684f6927c
+b653a092af8c202f39c31cccd2f0ac5de6d5b03b66e97872e4eae9451a3162514a6a7b4e6f55d1742b3fd1cbcf8b0f75ec005244759bd68e7781459a2519d59b16f9c88d4cd4fb37d6ba5fa740ddfb7dbccf5a6a95f7c4c7d1e62ca9ab6cc08dfd08ca2f1aa9dd44012de2be0b26c222d43eeb3f987a396e498f028ddc3528
+dd3d956a9e14e6776c4ca5ae0dbad3227b1dc293df5a68679fcf7463b0f5107469f31f688e241e4058437bcaa3debe0a522a797088521405d8e5ca15c23d77701e441d10b92c5a6e0f731d6073e328f89051625b4f788222062ffcccb5ad208805c17b28e97167510b891b65b6f3583fd60945081fbfe0e78f317947230517
+545be57c398e2a60f51c622473fcb3fdd659a5cf4c6d8f2337bc3cd617d3aa6d080d4247a7d78c7b1963ad2ac7e0924e29f5184dd1082e58b0e8218c7b390d07412a2cc18239a8ed7414f9372375ad6d546aa06c9735867665cea3619b0912399adb32995b6dff08ce7ccff0320ed318a5a609259895d00948876707bc9631
+c4c5fe755c4c884b09f3f7e6694ad188dd3a7d61d1ebe85c61eb3067c7a12ac3719b1f1f9d099fdb0a6b118fdddb67ed0107415894e427c5f5895f5258dbbb6395504d93f9012d76ecd59ba1f134430c92e944cdac08f57a19341161acd1d7ded4b4aae204bdb10f9fc3684a47a4958f815bb544e6abf7f9bd2afe96e2dd7e
+eef096bb1654faa5c80fc2c66d09968a1238b9671bc6d96fcdd6aa2a402d0fa9db18650556a2ae8c44550a03d98cfc02730d8cf948f1a84e3a0edf4c209cdadef9d780e408d8d161965249e48856cf33de593276b50e82abe13b81ee3d67bef7eea9562563238d539b3a256dfaa10c4867bb48c67795a15160d54973d84a49
+19fb5855b5f11e5e51a64ee190a25b3beb482c07e61b8663c3d79f4b3a2f5b8c749d3603e6eadab1e89fb73c426f12cc026791ac66fd1dd83ad47eaa9a9aa23f304ea10e6862f4fb0d41d676f7a42f5512f3b8098c8b6fe7c50dd0af3222c8b4b00aa57199354998ab52ac54d30d17b24e22306b74744c42b434eaebddbf8d
+1d3d3f1504d6caab0446b8ffa56ccecc8ec9976d19d0d9b6a6e0ea7e44c6fdb29f0b50ae017aa453deb992db2ae3087b78beaf7211b00200c65089f5ed726d4251dd284d22fa28e28fbe0f1b064723d3196af84cb1644e39f61fbfbdde02cbf70465789380e1912b7d3cc8118428ed9af4f633790b4d219f09c13c3e8f3f73
+9def2f967c7bfeecd25daf9b5a747eb281d2535b31c7dc99e34ee537a478ecc8174c6a3a1ed0c2c74b871493599be9a2ecccee1136fc7eaaa6f30758b607700faa7d19b586fa6aa4dc5a813ac33fc3e28d226b6665dac7de35a014f89a31195a416833e9a13123be1ae1518effefc0523499f54377362bbcf9d91650d6d283
+e1bc19a5f2e53e5e1973c406bc3b4878d4a4b8278b878d9bce540ca936d369af2d1c31850d5abd466083845e1479b51d368df23c5243c131db75853e962c66db13f8ffc95affaf6336abce1cd0a699e733aa64b29ebe04915471de4d165e4d85573ec24ff0e09bd7ea8cba8169299eeabfdbdff58bb12460e20b9145b67872
+484d911af649e1d39fb9a44aeba926f3a83dd87202020f674613001107a5d1f184b9ed1c1f8eb24a32f41defee4874b4ecf3d9897c00c2a859ba745e11304823f59c0aea5bfa21081b2eafad4c4c94ef891ce7c97f388ff1753e1d53d485e9d5b18e333f9436572eced77d9197c3deee53a26dea76f0a738aa979f4f2a358b
+725eb5b2321e717ff9bec75804606fd0489a36852ff5474df878831431a0257d2b6909e5b954afc9a49dab3aca5b02e02e3565e762d240542917fc4cc781bceab43f7c53950ad992e596582bf87ee042f4bc7f9e91ea20ba6561019e184a34c8a5e17d7912edc431fcea320c7066afc23bdb5f64c3606b11b1fe9e810a9c82
+2e60bb187be38c7b87b35539048b8a507233a86f6b8b363656eaca0f8de48f3cdfba3616a743c579a7ef6b922d2d282b1c77cbda888177ba7037513b64d21a8a6a09ffc1e3d46769ae279e68799e520a412ff61d952aa3b552159e3814c8f185731c7269bb375c1a1e266dd2f73c7708635c2ed5a52d362c124a76c92410dd
+3f00f21fe81977c80051eb8bf67997efcafb1593ca9307301c2ecf27c08b568e404d1d1414dc2220d73c6a352a2624c916ada967c3d189a1b893d41139c948b04d6f808452fcfde55603527e598a6590ed920be0d75cfe65e105bfee9cddaa6fc9934c42f611ae55681be92fc300e7249af0d7f863e2b69ce5bd4ea2ceab04
+8dbf1548639ced835beca4cb4da0fd79e7936a451691f23c1859231f2bd61d239a352d33e063142ef8844b777e28eef2f286bdf4ea7326ea3ac9719a4cdb181640727493a2b94b7a9df5cf6844064558c63f27a72892b19812828d32c8c76a52636f16fce7c04a3a38c78abe0179e533746e1e1c8ac3e3bbe106ba78b05e6a
+27f6fa044cf6281acfc616fbd096d15b607b86a61644947c5caf286f43223ecd23873e67c555f614759a4ae0bc8b78c136a1b050e79c682e1545e2d3c018b7321e63ab4f61f7173fc172d563a90b072b2fab9bf4d184650c1b6fbb6b14cc43c354fb4dd10fe294f9e7e2d1ad12e49f517775962e6edb08dc6fd08e554d014f
+57bd2707948f910e79946e5992a7152893e562c4adef8b17f8e9c642e0cba85fd3998de2336908f3bc7d6f1c7af67020d5398b4356837e256fab4d507221db4772022b13022e02f3c72f91fe55758a990143fb641fc74b8968bd9c66c9829a7ec6898d0216d33aec6ce97e6d408712b81130fced7a2f83078a2a25fb6ccf74
+ee3a76ef72a4eb35cda2e35aef2d203fc37d2d5497725c5491fc2029f90f19973512c8ca94e560780075b41f8cd42aa5a2b43261a0008201f4fdbf34b768f0e033692725bd196ab644a5c4680102d5b665b7061097844c1a663bbf1be878a2991c98fecc4b67508d7fe91b50c0aa373b02a19040bf72e6dd84a54dd0385f35
+4af7b9288f434a80e79982107b31272e902cdd8d5306da0d306bb9ed2986d3498373442927a5c774769daf503c30616f24001cb17caf8d14d426c9d768b2ced9286ff6b0d1a932056e25aed939e893f4d9dbbbcb5f9817c6d0b0c469f1a9f6e2af3c5046808dc130e18673ae7bb5ee973229bbcd78a193e0360c9d4729bc92
+933a65866eaa926fd9d7031ff212f3c770dff6740640dadc6238d1fa2b44e979edf743f2ce2227491776ea376dd1f833d7d4099cc8914e92decda2cb2bc9c82987ddad25097e7db47c4c4237f879085866856c68079bb837c87af84429bee7052a7e4e1a609a235501ea40c921bd5ce7050bbfa2c8cabd184c109d14d9e359
+5603efbbd39715fa6959290eddd302be9417190a47c8d1e6d7b05bbe50bdaab53d8164413d28c2f2b684640f5cc8768e564023892b9f573b37ed8b4a49a82de14b097ee47c0edd61a0694820cee6afb2b9b836a06a420833976dbc30f081cb44876ce406261794ba472afa4e42a57784052f19cf1e9d46605044235ee32394
+9e6d09c83b087fcd55dcd7245b717f09b5b584fe9fcc06ea9f785b790f5efefc8fe8bdf26e1ace1c05033c4dae7d271738159ed7d8da8145da39d7a73c7b54424c52424a60746a738fd4ff0c4af80ee7976790c7d4af15d1bd9dff8b21e21ea965feeca5c241be2b5b8ef1715596e3a5492ee5f67fba7f2532513ec40dd18b
+03656b3f75c5d8515c1d14d385043418ea8d34b54e19e68264ff8c3d3c94bb9e41a47e2689ff90ab1c8eebc4ef16753017766cfaa4b583e48f8f6649eeb4aaaf7ccf549f2bccd421c7ec43d0a3e58f5fcf41da55255c38dcafbab0550fd7bcc7988a49d4efa19e96f83460cf1078dce4574b6feace55e587282addad042a77
+7ad11b356ffd95af1cdd79982839a3d9835c78cadde2b7911fa4b9d3d8fef1736cc4e946942f887b023118f9d510c391b54d26728d7a2ecc75fdbc3183671c97d0139691723f07096829c8d3b74e0ca32b5b1ba45d2d429f2b3c1f7408bbadf1109e6aad96a464dc16bdfeefa0b15286ade98d69ba0f664f19c2abf7b5947c
+9db71aebb11ffa9d0471db01dfa4849a90ddcb5cdc833984c119a66b5cf4b43b193a4d061a9f8b95cda62837c2c6b54f8de5bdaf9e20bb2c31cae1e23ec3fab581ffcd25915fd2a54b61f5d316a3443a2d417f65f4b9baea2309f1b7d610c5c412048be7e47ef4e48dd21b3b1627e06d530b07f5bb21723b26f51d1a2646c8
+834a6f5ec1e736dead4ad042a09bb6c117fad1a3605e77ce6204aab04610a3af8efcf6f015bc26a6a937b0bf790e751a5829112b26122059ccd4972fd902f44b7efd3abf42a8b837aa1c36b6e38ce39bac31d6e187b24809f2f65aea0f98f8bbe1c28d2e27852d80a307c3878a481f0a3c1850d92d7f68fdfaaf22f87b79c8
+73cf9b85ff3de77c2d479d996533689c53374262a28a5e2b27d375490ca2ceaa6e5f6c1ad2a4b044591c243dadf5a7f04788cb4138f263710cb535d5d1d3bdcc58a2cc2b978000aabb4d82de04523952b02232b5686034641dab18ef3c9fb8fb72e32361d62679fc0b79b638df933f2683650c9129f349952ffa0339f30bb0
+efb733ec3c0592417801dee756fcf0e0cafcbaf192a31ae4bd2c5a450d578364446aaeb6e6dc70d633b4aa814ca0dd22b134eaac110f8e97830c71a7668a6af257b1920e45b49e407e0e4edc260d5efd2e5af984a24a292474ddb97859dd52f0777df04a38fa8162484a0bb509326a2c69557053f667a718e74f6961923b77
+d0bf2e78f70c0c054080dc950a656d7f66a191f36b9fdc39d1ca58bbb7775eb6a74dc7cc5aeecad4d5be08ced461a2df18c79e93a79eaa9a30e75c5430c4dcbd3c0df71184dffdc78aa6163611ec6415c3e75919bf9f61d1a48b1c8c1d694236703e7f512cd94b48f05b231de1b00077a2c764b2ded73c07c12c5f4f1e5cca
+80cd905364cede8535d12b83677f886644aee1e500deb52302d9eab6b8da7040b0e38cc8691a201b970bef3a61affc8016e345c9295f60cf8496d39021e1c8998b83cc0d5ba59ce7d0d39537dd4aca4d8709f2687ec57e82f8cfbc8ed01efa020d27dc30da72995a7f1ef26aeb85dd1cbe5565d38d407bee29356516615c12
+d451f2792018fb7fd733841c6844ac937f0100235c70b4e0cad08b1e0eb2559972df3a06d387cb172876c7c886af2fe8997ec131ec9d5f0054d10a6da33de7cefc93d28625fd0b31c0c51d87a07e3ff150cbed0aa53658e3d5ca68a9dbad920f3fbeb7a669fa44287d41f43e70239748e7b86cd7f56d8747c942e91f031216
+9f13b0d6a0b48e156772b09198024c4899334e9bac261eb9d2a12baf043beb9146c0f317684ed59f5102e168c8ebc1457a426f761bbd0ae6732de783d77b1ede35edac6c9c806cdaec4d2d1f2b0e0989c92c63de9406ed690199a3a6c92eaf35328ece2afe2259e98da23976049eeeb8904715e0c30ddc9f83cf9e9330d57c
+375a91df767405b685faffd062575fa32d28b488bb21a9e9dd64146c5302385c01b3b32fc557d731a7365d556c229e02dbeee87f16190ee17b1d6610e49ba9ce2da2790646a0f4135fb1c7d4050a58668704ce08a45454f6272d38412e43fbd141a5a2fae3d78267bbef02b79ff6052307c55c0c08e0dfb447be19944306be
+f250e552d87bdf34b06d7b9f5e15633b1a7c9a1c4ad5ae03d603f596a0f84a65c09c6bffa6284b6eac429799ac6e834ff8b2c749e04049b8c28c81966af8d9f8dc3b872a86754ee4fc2a6dc78b3d7ec8eedf585d54bbf8548314e65465ea1fe463f4788a7d26701b77c35e4f4ecbc8dfd5645313cba4ae9fd8708776104aa9
+53c5ced171062cd919bf5430506de264b09359bb0d32c59484f369e05e402c86f9872c35a43aacfdede6619e16c206fc306e65b89f96ce9c591c64936d58ff343922e0650acbe34dce279d3f31dea0e7b467fef530816ca58264eaa8bf46576dc6a4c466d7603d033ff17b8a634ace8d0c12d742d1bceb2423b4802a5d9146
+10e5f54c5bf9330950b24668f0727faab92b8da23923caba71b9d519c1df5867ec5696796d5c800cbd7dca45a3ee712087f07cb8320474783a2e8a89ce3bc5dc0fe83ec18c1d75695a0d13688ee8f59c7a6855ba80f4c8faf1051fa9511cdfd5bac786bd7226eef6c10aac0982fdd596934c2acceb044927b1f8b47eb0a730
+eaba241abaddaecc1f565084df13ba16f70435a947b40cba85c8ff103d65829575a95b844709ea6c7cefa992e9984179ae4aee2b20ac658e4c45ac5c0d4109c7087545bb7ebd0856ba283e122286dea2f7e7a6de5e1974ca5c3ab3f3b36a3f1065f9fc6dd3c80c419762bcbfde2f2368b6714dc2d972ce96cd0001b5069df7
+612f079f06115d0513916db8e31005001f81e7e45c8f9cf7376fb1073280aac3a28374f346c30d069e5e3227169b77be94de1fae88bd533a12fdd8b723ea665ed68eca303f8f7e67c704a4e754d569381322d18b2736999231b5a9146dd6777fa62fb92a61ddbfb8b5fac877de4d7b7a32f65cfee163e31790354ed262e66d
+f841b21f5af794026d03973d586cc48ec892fda6ed2195ad5994e179d72b63b3615e1c8b37c5b4a35d5b9114848fa9b256e1aee627d3d2555f6f1155fa56d641701e83e9d0a0dea236ebb1cd06ba5df6b3d180e75f3a5d5bab694b50565f8d94096f007cb435e5012d11d50ff06b11e4627c2a68942b8e22afcf1fda80213a
+49609d7f37135d7be8dd9c07a5fe279d02d2a4942ec98ba46a6161f9adc3403b77a2dafe021ba37e0a0ad63dcb1aa6ab490b5d7a716c1ec09de7a9d4d06eaad43b64cfb40c8e834a2467d0ec68d441ee0a9a67d0c4ce2f6e1b973a3b8d35e9c9f21a4885fc671cb022360d426146426ce1b48f7013d98a4c4ba74cbc07468b
+de59944b07a91b3632b275e02b02b83f3d14678960165159c46a9a1919304814c608b4ddd708168181a5c4d6152eadf5fe8aa5a0ba3a4510dee18ebff1c1e2e222082b38378f7242f1a6635cc2e8dc10b6e8266df9da6d2b001990ad0559dc329f0623bc40925e4c075873ffecda33956174b95e5946dfb89d9c13c9791580
+8517aba5b443d75a673d23e23aabe3ce8680a444047f106951bfd2a9c609bc4cade57d8d74872f89b31b98d54e2d382f16a56d8fed0583070443f386d564388495d48def25dcde0139cd2103b993ed7f2f0a42ebeef52e4e536fe0e77d4c7d2dd24979b3bc0dfb0c4fd798dbae91cd584f794eacae55b1693f98c24e807f32
+82a17271c022e29e45c07f4a9343c6725466269c0b84c8fb7257630404df5fb9462ac1ca783b3c236d2b71aeea329950a0d596bf473d86eda8250258cff33b85a2d5fd39bb9576350f6da89756b9ad50f14a9209de8a4d5ddb1541c6d892a3c71d4769fb8668779a140fb2f7f3b9118304c403a3670c45bca56946ad2314d0
+2345f6e8f6441f3d4fa11dcbdeb0cfde771d98b4a3c229c598c3930dce9bdac57de5c92d51e3dbc43ade500a4a4bc7ae95a377ae8789828660d5ce612b0a3fbd04cb47c8256d8c45cd883898719e04ddf66345d752a0d5807c08b69fe5aec2d62a1b03780c55b2d264f84205261e4042530a9d1cd83648b2f0fc092a1f3dd5
+16d6d5ef68bf5959b1808646af474ac98eb91f1aa2a27c29b26cbf398b0543d161d6335ead1357f379e9be619f524416069f4fceb98bc9ae2b90b58bc2ae1cb4d783b961e15ae4914db5bce4b3661fb755d29d8be343c716213f9f08dfc1efe3cb5f8b6ead9f54512c9248798af5e963b56cf72fe0dd4cbd1f2875c2709c3b
+5fdcb3a32f653a372373113ed1ad4e63e99dc9650a230b76caa23db7681bc2b8968bb436d734f7c52f7dbb5c407d6c78de709d020a7db6f5d87061e463c61dc847519241d3d83064ad3f4e276f6cd3786a66529acad1869f895ae59cd940b46a533fb77bf2fe875e86cf33dc6d153c486d9c3322b7b4e7534071ad001bcaac
+d3ecdda204ad751101606c2f8a87e0d78439d82e8ced891ff633f7d47fe7c1d36ea903f635c68d3a43a6ec347a5c3a53217ff9854755efb34b9c2c86b8578a4b433a2e44e326f21d697adc5c78fae3ff19b0974c5a18da8f12dab89d9d496c867036b7184c6ff88779eef5a7f6138cc73ff6c17c243c96883233a17a31dca2
+e6dbbd5cfae9ebf98c80f81ca4e4ef04e37fadffab35506d9e406f24ac7904e9f8704ec591c5c117b5a2444952301202c43a62d4782672bab9114b3f340503e3b5211fb545ff86dcde7f2b58acfbb9866a40ae1bd6a6b0254c5830c70762da6ab4eb2bb2ccb1ca03392c6d0cd411f2b8827f7e06b9bf43ea2db210f7fe3c37
+02e902a1c8b0cdd52e9d170df67a90b642af92c779570a61d203d40dd619095807cac1786696b28c7ab139150c7abac724fcdb6ce755d5e85a6b55798d41b8ae80d073bc484c694e7b6dba32453d515d5807606d460303b065bf316c06ba6ce5d8fc13ad261028620ae820001c9f5288a3d9669dd2b630d789083eefbbccca
+d7034813255e0658200d73f2e773934e66c52f2dcb56e4a8051bf67e5018fe7743087410c5bc3a55e8af500f10de3c88a43a18f5f7247652df8b028e4f2cd63ca29e638c11cbe5d479d3a907b17d1b88f5b8e89f1471421b74e3740e76a374d5f5a9fd81078d4d8aa385f5c6069bf62feb6e077c039076baae312feeb68b0f
+e5929ab8547f064a2de9fd89c82be2ca99d83e8f7e344d9fb3b74111ec9c2ca79ef5430dcf3d07fd591f59a84c679b0b0c0f4245770bfc1b94c985d26a208f1f7386868c1d244f6399a859583db75106dce52efb8b0c4d1e6824cf11b13f6b82cce7256d444801484365b00c3076e1f7d0b913616c5db904f66ecfebac4211
+dfe3111e1d1826e3f2fa44e3607b839c14ed218810587b6dd483fdbb3395452eb6243acc612b2bf43289ce69e86c650cd5e5a0f96a265c2617b2d2d6ec2759dc4ae6e32c94978932671c1e0d72aaeae835c447912f66a39925da78528b43d567f9ba003bd952e2de86df8660274919c4c1f2ea9c2967d30d8326a838df881d
+35adbe41ac3b1680c0fde52c3f1c1e2d6d568f7822baeeb16e1f2b959dc637e0194e7dfb1cacf3018b39d0d2c5e954a58cfd002cdbf390d1bf281df3eaba5fd82b542d6faaf3664a89523a5d0e95d7fdf91a1999822094b0666a6e91be0eb2236a85e6ec4dc8cb561984eeb99e52ad0dafcad0acfccbfd62af62150c749438
+8a77e8ef10a09c5c88c511e5e3d25d0f54e53f100c87810f3a9d50bc6a04368e024c896e2ab00ef625c5754801705b9c8abd0e1d2dbe0d5de2e9c3c2281781ce2f2c917f424ed45168e81e639491e952cd670226059fa5e248f9ba9d8d683d9cb975fc09d8a50c89aa00ea7755eac81a11320cf74eae634cf3866dd1b3673c
+9a58c91e9e8b94581f7628d2ae0f97485b590b5f3ebd7c268044ba7f8f9b07fe50989081f1ac50e6ba5d02577601bfea699ac59432de6e125001de032169ddbb10854b0f90f55d3b3a85e461c7944c5ffa1a3250f71f3c535cc142cd16c4fc8c9c1de0761f87cb840136719e63b342011d02486b75bf81997f9e7849bebfa8
+71370b7414491cc16f38d5d4eaedc34047d3ee80256aea589585f063d056eb62a6849eb56b488d0d646dc22bed4d316bafb5428d5049bf5400a7a1b69c463a80ee16906eff9beabc7bae61a7edcffdaf1a57fe269155f7a7113bdb3cf70a5c8c8509d8bd1e3c5126ed4e1a4853a25939b01a03673a4275571e6db4dfff36ca
+6ea232bff15e576bf012b5a946a81e48bbff414a94db7968a1f0d4bf163873c842cfaaf83554775fbd7428d8286d97fc546e899c88a16bbcd93bcb5b78939539b0cafc14b68344e42c70c182804bc63fb0eb6ef54bb5f316d45155e20beaa7fd4684ce238004cdb5d23adc7c2e618667e88fee3c5d7a1fa67deb9fd654ef75
+479056d32a7bddefc6332b1d430b862cbb02757ab5d9eb079e053d509eff800232c195e8e3518cf9e2dd4102f59fa55b2686b0d7d39adf9ac37f55bf9882184293c3a216730d26426986ce6633ec5fa6820fb8243dc46fae0deda0580864045aebc5b25a3747c43bb9d8f7374e4ff01593985121efcdc51dad1fad55f8a750
+93859cc5b08f83dfd3bb4990011db4712420c2d941dee159227656e5e54ef1d33320554ab70ec8b70f73ff31f84f50ae38fcfbf4a7957290d21d5232a3e230ca7453125cf6f799ab62312a12ed8444e837a854374b33d43904f5cb9f4163d716fcd8fc025200d4388fcc4075b166273ece9bd55699bfbf1dfb9afb47a17797
+75e6ed5648874afac0f5199bb65472bbc0492863a4d2df2b9d7b0c91ad8509382f6eb68b236b8127acf3c37b3b3e2119bfb5766591e152d794b3ebd3f295989836ee729141047139efbc409fc46aaecf32bda5692dd28664b0636f89be326b72b1a79dcec126fafea7150b99df8d57006cc11d29982fb55dd7ce5972da22f8
+baff4c43f94f0e4616a2929e3849c8425ae6dc950a626d6137da8985f4692f61b5c37a0640b09e841db4f86ac7fd66d5af3a95259125bae1999d9fa5fb21eeac7926a7f6fc9940b19b0f81c8a94e26e8677decc980c4b7f28016a31153b745eec51a8661266d37a09f9c64255649e64090856cdac677a66647a9ebf427dd1d
+222c8150a86b8f7d12ec27b5a119ba6ffc942b0f34623875d640e79535ba6fdc5f9e936549e949ab53323ea863afdff2911a91d1bde89ee15da1a752738a7744e9aba6ecf3ac402fecb52e2851eb82bacbb125c2dfa5f2797ed1b15aa6f5bcbc2686c7c7ee3376b9d7645399cd2fa28a4c7b6d68c043b8241e55a75bd99a23
+2109044ebe7796199b97309d62c6b677d78d98e982adde52016d1dd3f232d57f0cf66325dbf2f338a27530d01ddb87865a792c827d7ea48b07f7d35a00a236c87f97ec486f7c1b518969d7498009f8a6ac1dcf052c167697aecbc1e35758694df075f85e5d07a08c2a0c3b0785dd39b31faf36b7902eb150d1b4c0f13af878
+605995bddc766dbb1776381eebec65924a450b3965110753df533d38a414c1af4e58825cd6bdb803c4dcb49617811fd9274d0ca8b3a10efc1635fa81b8d4ce892f321d7e5eacf5f26e7c07fe8ff9daf3cc7c33e1df1c3f795bd427a977f5bbe6ae6e001852922ff4a30098c38aa7b9b9b0fc5862dbfeae46295a8da3eebd0f
+0c372039bdec907bf3407146b485469fa08fc11c2619360cad71d6dede0f8b49fc7bf3fc6a158252a228ce6930cdfc0fc07d18dc4cdc4cfdc7854bac54e0c2949fe16f2736e9005538bdaad95ff396d3969b6d5a2ad0c99ee9a4a6eb5f548e659a766f69b6395852719629cc135a01c30f55002efcff8091a2477f752c3365
+771790d5b7ef5a9bdb5c88096f497563166a3969190db41181098e8dde06b54cbc40842aa08a6947071a49c3d02f4655d49b4fb3a3f164858c15cf813f800c0def66135e1d15edd4314f75949db00b28bcb41428a3e1a58e8edefee9d21774c336323bea90826e7bf07fc0478e5f4a6500660b95379474543ff2d482a68276
+f38710ee5407ccc3aaa27d21c28ed3f60879e14723060ac34e91568de52d8f34baf046f2bea349471fd3eaa6cd12e377e37bb7fc103058169df4f595f3ca6b15e343f59437770ccc36ec393debf2defb3ac1846eeb9532e862e0acd98b36605bc535b88a5e5e3b6b6e86f95b8ba093c68bab5fe5588f1c3edfc51e55b512e4
+a3f1a61b4cb72ae51494802cabbcdc1fcbee06ee21b64c35045d9fed344fa9facc0a539b5148d7dd255771c76f4892f1a398811404730e7dea2717760943c78ab7975a422507b7e2bcbf2de6bd7756d098942a1e4bf2185f74af7febf2e29062f05deb585f0ef1d57bd10a5eef0e56ff2804ede0576269ce93ad23d2c501e0
+4e5644847a026dce845c5f38ec0c155b67bb0df4e672706d08b35c8578485809c06526464e1d7575394386c2b77583fd56851ddf67e0ffafba970256907d069bc545863e2e847e9a52ba27fa0c60838b92b11883363d8aa8bdd4be8edef5f1c074d4a6fb068101805b4318a586a9409664a48a49639d1bb19083e77931ff92
+bd724a761b5300ba8332b8412248296f3b89045603988c1162fc0d917f614c6ef84112554f8bae7ae6dc9dc73193c0dfe72d77040c1e632686eb8d87071f3bdb3d2c72c97ef1e8874e657bc36f9ac3551ea37a56827bdc66809d5fcee7cf651e4e65ec1889723f803adb69930eb509d788003c63fb158c764db263778f7152
+3ce577e8ae531258b5a33886624205fed4f56e3ef9d3c994298edcd2d59a3633aa63f831e99ee4e20dc4735eb17aeae03e31cf9b35ccb512035bbde359a1d123752fad616a095e2fb1a246755c699e073fd33a77d1e391a765639eacb04a27ec5e70523a296c6f9127aab3b380aaee76af3c9c8ca147a00b860fd235839ebf
+cb9105dacd64668f62247562457053617ec79486ed91fad906f38147f988b84caedeb9c6acbd6575ce2971053b79bec5c7ddc1c0a05e1e42e6ec0e4dbd180cc00e6b6aa8c458a2fb0787542c674580cf4a70b88f30af08005eb3d4ebebefc88e4af65b3cd9fbf680d770b79e150eebd0a41941e3f01535dee3e8244e4a50a0
+0b993973be46564bb69f73c229b60e72aa023826515083bb65a70dfbc8f246320c97a9bcf123765499d116ef7281eeacdd55ff71f0831be417925d9656b545d8e56de71b656342f1b3100e9099dfb4394ee7235e9246e81ed09558555ffae7f7a2cc47ecf963e9ad959d2e2c95bcb4c5bebcf3018d505f697cec50acd2cf6c
+b43e7b60314d35a2c14b025d66b8a68b1de9ec53f72a00ac8e7010dce365eb9bf8705c92f4f8fddf91d56c4bffbf8f342679bc3059df5df6e919e3443f3597f60189c1f9b1a47cf4266b48f6d8b0cbccf9347682ef3d85651b235b2cbff0db7153bfbc2cf59094c5e682a83cac5d58cab9e2f4e9d30c5bd8c92d5f874131b5
+1d273a3b6f57c210291bf0294f0f2016b80871381ae47ec95d63bdb757b28a14e3cc9431747879791ab83e7ee5ecd0d226f7b5f42079633b42f31d007ea2fe4728f353530434eae7f5f03f1ea03ff081768a4dfe815783d44a9662322f0fbf2e21b6ab07c6af457848d49e37783bcf4d4ee852d603eb60cf8b520f5f32deaf
+8934badd620d40fc52fe047275fc4468571c084f5910e1f5f88b1e1d50d03f7b13b2579a046c0b0d6f03544a81ef4559e15c740854e95fbc1bcf1e6d2696f12f6b7146c82f77e9ae591c9b9252cefa2d6d534cae5e16621698f441e0463e70705b982fffb7fc23d39469a3b213c3479f5f9263f68c36af3c58fba33bb1c0d9
+d2c59e3037c787dc2210548ee9749a42af9d34b470f53eca9f4d614b87df34d5bf4cd5e88c19815d7049c12b2c8a1ac3d6d82503218aa54b71550602ddc6aac54c7558c79650d2a15cad3ebc6a2f9d6288f8b63bb3ae1c83c9f24f8a50b15181ea9fd71fd34bb21c11e668c0ac538bf610156268a779f1a750c6d962788900
+504d6a88f8d1457c3d23dff4b7c7dc4ffd29b1ad888377539f41bba722fb39427e94a1a53c1c50d63bde4740097cc6f835226dbb52af3f82bc614d2ab4febbf8b138609e8bb957446d75d5cc9132fbcb193172bf20fdf15bd0276dfb957dcdcd495a9ea845122ad8416372632ea58ee4c98c61ee314873a9cbf6a90a6d9fd3
+f0b3d951e7818ca95888142b926b49fe6fe30cd86c176155ef7e078259a8b765b9cb9858ba7af634cd66e5a7194468ef8b9bd22de3e83855760fa9d73d29bfae16352cbe2bf4546d0aa5a303d9b621a637d380b556f7d8b671675626f35a4d814ddc8d636cd80ec82d0587b70923b9cd0be206d6498de7ede78a407f66379f
+c5a1a21ffcc003671d2966f6d88329e2641be547e9f86d36eae5da176532792f2e78733262956950b59025d82550b217e68a7ca0904708495e1f1a8500b85afb12fdb3441e282ff674b11f10b9d95937f6a5216af24c21bb9e3ead9d36910092c9db7c11be221331da36c6435406e6f579945a5a11ae59c67460b17d197e49
+c70ac5f20eb8225e50de3b9327c04c94c4a1b0bca1913429df6740d7193a24232289a807d815f1530442f7cf7975c848354128b85ee05b4cdb538268649adb30af9105e58e98bddd4047a3e39032ee1749828ff1811691ae5e83aaa0ee912927dbfcd857366ce53647e67ccd7e6db5a8f02664be0500a8d04072f8e125c615
+81dfa16c04fd17bfe43a40042d8fa7d63da86c60302c17a51c7d4585f3f54abe6aee02bf03f8d1b9edc1a3e07f4d1101d6464dbc099b09837e6eefd90a52e36678dfce40f58feabbbd9e5e71747abd6bd9dff1de4a31e1ca6d3768285db207a0e61c635f5bc404ebb89d19c01afa54bee15049035b40d2aabfd9c6e942cd06
+559507ecbf5bbfff1a9ab8171f0991f434fc4dcd20b6ca6ebf1cfa6fce43ad5f51b30aa67b88986f3090c636fda5c7555a25f4f30a18c7d310dba00a34fa6dee95e17b97687dce089f929df1e7ed3581c38ad304df967148291783f91904085b4707d56f761a6518c5c7312e55aa34b874e792d8950ac99c760aa08d601724
+b1522fe0c72980b05986affd302f757b37e0a176c05b356e8ce0881584595a5710146bf39a92d43ee8f1774e795cadb6823a70e090609f40a6afd3b3c41699b36f0717154b6d90878547ecf0223a17e250fb729d43cd48f0d57b05f6206e618357589c26259e6da00804d9e1d931010bb59b7ecf9337592b79d9a41b21fb85
+92659d537e1a38f9b0716b8a53d9a7b7c8591db7e2bc85b47a3fb704d27fe6f369c34c363737332f48d0b3442bbb27dd083799b791145dbdf33490ffd9251ecaa1239ce5376e7d7faf69cc6091685fb4576649cf27743e25e451df78b850e6066d727b015ef813a685e49b0749dea9e07c506ef37a6139500550cd52967d0c
+179dc78da3c5e06bc884d93e21d3c7da599f78b779a9ed1a87673216ee02165aa4a0cd8ff637d229a96177affc8b39b73bdd04f953fe354bf97da3edcf922ae8c99fff0b535e79722ed84e1970834834d0f81952fdc90f308402e514e25b67a5bd7d8f89e41a1d2b5e6d50517f98bd2b6051609d21fedced4667a11b331264
+8f2d369939775a283118249f3ac136114642b0a3003738570d9e6d820e84b32f41aa07bb689e3a2e9b8b71f5f16e7ff5bfe5d7cef61af8d4e1f66ac8fd4ebb15b81667a6777fd2c65911970f47547eca714e07379c0eebc77f902cf1d7a8fb26d918281f9ffda2e9f3fcf13c4692b856b653fb96d8db4cb0520ab224f650f6
+b54df1bf2361a7008d2f9b398426458fc7d554b21cc49a21b679b6814784698bb5c9002a093910389839620bc24c57dccdd8e5673d05c5a9cd91c15690b8b6d0a4ad689ebb091bf16a19a1198a710843b85548e601315ff75737a353dcd3578ea91a9165d9310175a769ea6bf1188f044586a4751340aeb95774eddbfb9271
+5cd1e13ac0c25ba33e81834d25b4eba8766364ca2c02d757e2eb93830c57f24fd15aeac44d5e4e01e99ca27eef2883a952f5c52bed754012b3ec587d4db775e6444370ca98376418827a19aae7d113cab6689da95a0e4447bb3496510cec640083bc7884c08750bdadd254e6910ec02fdb3ddf07f0fc8e61e227030c9dd6be
+c917684bd7f20cf8dcf79ee2c84c4d3affd15559e9e7adc2f3363fdc9840d01ea65dc2c7a1a677a21f723df4d2b63dd8cb1badf58f63c1dd590fab21a0107babe7c06270e247353615b4fb8cbae6f6f4d68d29b8e8ea5eaf6cd0283563bc5da66df1cce125a62f02848cf6fe379f33d11250b30f4ae202abba92519b91b223
+851bb68fa5363aa745f76ec3bae67661d21c604014f10db45049781c2f1fcaa906910b973c938c2c799876613444a0264a5f3309288a47b1f2df72e90f519860d78b1c7a021b63936ccb9723ae4172c10264861c2e3e842663fe623457143375cbfd670739f2f01f4e9332e139a78e65036e414e9a0856027b14fa015c3029
+14cd58d042240dfc711759fffc0f7e0af71294012247a3f827e494a4ade47cf78de8561158a3318ae38753cd6ecf82777ed916949684f63d0c7d56fb3d5fa891cae1cc2417fbe734954b52d7b1baa1510c943997ca78c8e5bba26a5e6c2ecd5e204647377991f2bad8234cf28f71c30e8b0cb51354b4461a99737cf4122988
+25ff9706b1865a997456e22cdc981136d641207d56b7ab203f15a2b48fc6ad499ce3529ff67319b64fc87d5e1ed9ea7f359d0446fb34da085b3fce1749c56498ac103019cf7e06ce15aaf9e9833047a8d06a0b9792a821ea0e6bf23f4cd71072795d9fa50bd3a343f1a01fcf313741ff1ce9e485561a124b60979207d83abc
+64e33258b8a4499d1fb2e9fe64cc9d451ea5c9883dbb90d62e1d37c5cdd3fb5c7f3769a3beaa44e81540b4223835ec1513e40f6bca362d8e370766c2c09b3f65bc908b2242a83b532a42d5e2be1b88b1bdf2f2ebba0c6c00b041ece7c628b424b4129e3c7ecf1686fe7df96e8069eba24806d225b487057ca45c51ed184542
+157e396ee15896d3218715bff7a7d3c6b7225281fe0731799f85930c52eca4ff4d52033398143df84ac8dbdda872379074d34bdd818043485c97005ef1291e36d6cc0a0247e03e7ea59397ede235f9e5a667661ce2f89391a68937d18dd1248b81c45e4427433d1cef0500636b83c8a82becb3d62a9d750742a91817039387
+3cb3a317188a7d875a0ac68b1e3dceedf2c24f34a73b4f8ec0a593414e740aa05f92260fe3936eb0bcf95d2c20b8d186f2740d8d80084b43130483cdfd5e1fd72fff02ade4021e7044fc567ac7484ae84be004137ad4370f68b7015a115c4c74638b147384115429045904b90dce5e0e1126eead8a7e3aa07e88686fa61ff3
+46303a9cf00cc7ed566cd9eb55587bca1363faa6d936aec23fb900df32b485943775df0d3dacd78abce4336b85a6a6d3c34a2dfe82c98eebd8cfa48683417b87d87fc6cb7490da544c002eb61d5f8c9394f64a39c33b6fc32c5c68d533569654c3aa7750b76e42dbb58e9315577c1af2eb97b04a060b953f4274d59e2269ff
+fa486d3fe9fe292e767f2c32c35b69d62e6905ba4511cc4997865d372006d2f47b13e1d00ae9e21881c5c35ac7744ff4b6155f44f683e15ce7e94aa45ed01c0d93fef9b413a3686ba410dd1997a13a8b6acb56f98501be1250743e102936cd53f0b0ca4aac60c8e45b396377cc1ae9d429787a2bb4e58946cd27c44676f7be
+c6712ca15771851a335bd1907454f1aa48fcb9e144dc108d25a2a0a29da3b6889dc243e58cf4f0effea3bfd9390e9ef435ca0bde273117c7067a4e3139e0bb8a7a42398383e82a9158668d8ae9b0f853d403388533688ede1d4e39323095b62193fee792fba05595f89d5e885fa854421430486d068efd99a3019f903b631f
+ac37f5939b9cc09e9fb55e8770248a8e171a4927c55c0550c954bf29fdcfe104a4d8c5f4b8cee2c181208492b54a7b8e9d9c1851077ce831a3809c34db39ffaa95e7f268a7d1d8b00a3655a9d8bd0795b6efbd2673e5ffab8bd809cff4ab0cea8a46bd6d378a4d678ad8195dff91bff775dcec4907e115381056342ba78e1f
+5ba0b768349e2af84b9df227085f0b0976dedb08cf3fd45c54af2b7fee33eb56e4170c7485ffe29b05b08ff1f5a502c86fe044e05ab61522ecccadbdda74d2e9577b9384f41c933756e6789305929756e8523c13ffdfcc6553718357506f1cb5e0bfa99b95e4afdf622ba483391d96e9ff449b297613b5be941b6e2e10bc00
+7ce716000a5f0b848fc8d0da6b3c3943eb1577aed337d6c1bc090ea7af28b703123b338db4ae1bc9ca0c49029bee08ce3f2ab94e225fba22ce399bc15e8951e3c889ac4a77486466fa1e109035e5eb9c0b478d705011653cd7619bb47cd2319ee29a82a4e624d1f95e09c134d78e1d9a2a267653f2aace82066f27172d26bd
+9247e2fdb867488d4bdd55bc354ca0ac96e1639b5de0626620aea95739fca1e6739e4c60f8db618b01235562f79aa3b11875d5e6a7edebeca38051670607f11e49fb82a7568bbb280618740dedd55a79fee1036482b326934c0a5e16a1ab4701926467b81485caf16f0a8cb9c6678ed81e8638cbfa410aefbedcd3d18c3d4d
+c07eb131e6f35cfc86f9d0157a677d0c2d7e3b4abe3a59e07893817b939c734963c3e6abc86003b6383c6c5ac4f2462f87fb69bddac42c0e1f0845d24b1b909fbe03a93a4ea55c923acd4238a6aa20a384d300eb44a4e33c5867c3f82855b2621108419dcfc5845730d99c031e29d2ec3999f24564c9f7fdb687ee7f7469d2
+7e8c06d3f5b99f3fba2b431e1b016f7c0777b1d7cb209374e54a1e9ebadb0fe0405335bdf6f0ab285d1b3d6bf53a9fcd2e6748e5f76ca45a49c2ab5dd68edc59cd42f38f28427b01a3a2a3df74a442be1bcf7bcba6af7b539b1d148e6c75b5c35c4d7483c1209a753c510709be09dcddfd3dedc18cb976fa5389cc960211f8
+7e2dd57e86fd0158b2a0822d81f32ab0e6be3aba720ad374bfa454577b44cc8c9d96b2d5dfc95fbfb528d7e76a60486d33ff9afa2f16f7b4c09c69377adfb9863b6cb5f75f00fea2648de40dbd89e46a59d50a522e8cf5eaedb1946d4344b00430603ac426817e2b376acd0974b3c37f65230b8b5d9eb500ff8e52610b7c2f
+b3097e380fe2752ec948b46b323fa0ab178f34bcdb6c471c8cefb5635564d5d7a8d9b869a56ee5e7f97d2e240d94b689204cd44ab2aa067a7a4b09e71bc475d3edce56f03356937ec1ffaa4eda180da13396859c5c85a0f71313ed8d4858ca9394d4df8d2d9b95fb2be76b8a3d08d662aaad760f2730efc2f6782a6234bec7
+900b93ef744f05dc53021c01b456ab653cccd32528a76a974a24d93a67de276b0c7a6eadb306a420fb5c14db4a19671b6256e2f1239457c5b9808fcff5ac7ff494f457ee0a04788256a4f079affd0bd880ffcfc98fa12197c9fa128500ad5a416d7888297d5348cad355511b44f9a4ba1f2fda06b8f0e5e53715ca8230f740
+b12c9c4ce34deea8dd6e10093dba924d182e27d87e24e85f2da026d332651afda0afc7ef42cfeafa0aac976fa04ea29eeaf4243cde03edfc0bbfb10259ca2005d1ffe7af6b4b9b9f271c805bedb30c9016e8129a013b662240de6a9b3c64305cd8fc2dfa746c5a6a836714f04ad67287b30a21d53d484d44d263ff9d697ede
+9d0250ced442ae69c1af297cac6c5a67c24f5659e4ebb64af3297e481ce55a19016d510aa5bdf6fd8f27fb8002683d3d2e0c73a4caa3b9a71c35a1798034126c1760ef65c20ff02b5f971d4c843c327424fc9ed7e714439c17f339a1b7486330b3446f4ddb020714129780f88d0365509c481ca8474fe8552630ef36146556
+e1f3ca751363169d50190b0db124e2230b46e42475bddd584435f0fca6aa65533841253a9ee250c378ac22f56e1eedbeaf6788f82ce806bfa2c3208da57be3eec807ffb8e86a1cdd83f95b8812c07ebb36f2fcf3641d9c3f3ad1d7c604ba85891fbd97063dcc52164488e9aaae40821bbddcb6512980d01be2a8197a67e264
+dbfc76642eb69909da9c0d32a2a08de62a5fe165be73d5811d0f0172e1c3d95cd1bcf7f006b03bdb011d59f115a1b03e9e510a2be83e0c303e78085c6399f73000340810da2eed9b889c5e7f44fd479cd7a5cba4f1d1a8df20fc31d73d13f88ca5ced625e0b76d70461e39786ac20680790ea9e836c6082eff9b15b6540878
+f7ba0dd194cc93818013214156ac9278fba4d25c276d413834e2c077c5ffd45f0367e6099fb76618c276daa565ff8b47d70725dd1d612733b23a244f315a96548281df0df7c1a6141713107fd777f3150d4012eec5f8dd4442f95c6788c3fcad4b1d75c6a46eab03c412d5194b4e90f9a6607a04577824f5495d359761878a
+b1b0da9fb29884579f2cb4708ea65ca4601c7d8063975caa43e18f9c28f9daf31f92e2536fde729b4a620a786339f9cab5117d38e7d08d035c01a8a652880b776d64e61bc1abeffe61992da6593016aa7e8d9c42c7f126e574048a653d12a9300b0864ad905eb22a86bc81235836882b113b75d44a95b1f6ee0084172ad703
+6b7c2b1a5b8d79d1854519692a15705979f3492e2ba0638f6056b134386af0443610871f3bdae7fd150d394c4315e8bbe54578e91172352541fc1bb6b7219d19cc4c17d611c9c7ac1f6f5bc7022debde0f953a235f4d3901a9d800a00cee7d2879d7b8517c0d8e77f5e03918afb64895e67ee07aa92ffb4d0fa06ef55ab615
+681ae8983607c1c26aa24e2d32f9cc3cbef9a442010962f13447b5f451ccf6517bda24a53ae49e391df43eb21a55a21736074518cc79b9e67cc0f955274eeb5043beec6eb65bab1a452b28cd0eadc43b5d8f019acf3e458303dd62f4f78f3eaea23012866ca9da905a6441a09a7ccc86707fbdcaa77dee19d0d5db9643dead
+e7e829e24d1095e07848b4316309a1e0e7e1004135cc5119b19fe6a739407fd6782c36b2b082f150c617dcc453ebfee07e1dfb8dc1105237405f89b41a81f461cf03dfb5d9d13db21757878642c4373b946f052f7c094ada92115c9fcc25a374f42bb1fe7830f1909b78d9abb2461f84280f2ccc6dac98a0c64862b6353e7c
+e2354ef01fe572059d6ae25af308e20cd36508345411e41aace28e4fa8e02edea172dc99c7a200048a7de4dddef619fd90f4dbf7255b7fe188794e42d7cdb8eea28c0d886a1435ece7e4681adbc8aafd7c4250865c5550c06fbe2db519fa9ae8d4f455df4660c9506e60c6baebdc61bcff8e249a26c495420901e548b7d2fb
+f978741c3fdb26636120b8bc93677814e55a871a428d81fc6ac23ee71edb85739a92c20a86c84d6fbfeabd86462fb3b249440ea7c0517e230d567eaea7fc73ae495843221ebf44d2ee5ace164c8d09749227d1e09669e4addb6750479ca45dab1fafaa0e961f11a0eae6fdfb8edead318a477c3b480d6e642ca3c3e2927253
+6b304d374f66cfb416ff4baf24217d011a5e57638103db4a466baa95ff8aad9650931fd179c3f9c80a1b57b6a080ae49b110a5c1b4733381615a85efb8dac06b2f770572c3d1826ee972f43387694d3ab4ac73231d97ffe98f01bf83ff20aa623ce57ff5a8aa1b4203d6992761bcd10322f9bd8ed075c94ecffe6d10bb1934
+05fb314a363280de060657b19a72b9e1869b97b999ceb2dee4aac63485fe96b5b550db2e98c0a1d0511e741a12becfe5d59e968f7833c1eba2ab4f0111d19025ec745dfde1d18803de29f4ca4810b0c68de3d57f174ef5b9f648b507e0e0e1fbe4121f0b7ca4116f037bad6091f9a91cc64c8ee02caad6e4634488e4288c83
+f34dc8ddb91a2a1f01a49f4e48de607f8375ec953d5ee22e28c9f3aa8e4f6074254c770bcc2f6739c24d30455bc9dce6f87084af762acfc547b5e56d88f0b97a22c777baaebb6a9eb1c3d42420da473f8dc0ece39b20484125b0d62a27982f9616aa74dfb89ad704689e901d5c84f07c8951b2c4b869dba939e99cec5cdf45
+3a97246c6255a8f349f07a669c66c0013b105a0f58ab84e5e014712c7d91425d61a3c15ab358686ffbff9797e020fd43fc6141298910010cae25e8fdd0d574a55f699ec3a4015d9baaeb12df1fbbab16361eb92479dd3dc22810827151eec3174c22a94c8841b94446b74c22fd1932535c7c7e1107d6e1a1bba0ea8155dc41
+f6e2c725f98669de5569f33514b6528a61a534d22d7ceb6babb2f824771862299cf6369c2847f88aee2a76417bf51d81ca6a390663501b9215b4861a644efad6e15e3ce4dea623e8bd06c220f372cc7d836beb72bbda20288afce2ed884e9178fd9995e528a38c0293690054f0047c629b5dfe85baf65be877a1ef133e7bd1
+1204ac206c8dbccb7d3e55113b24872f9034257cfa15fcc7ece44b821b8c74288c147c37bdf27a595e65f2037416bf9a78a245c93c4c7c8aa9444c20ef3021ad783fe5835889c5fe99c3e1856e58902655571432d49f43bccb0440498d8eb41fc07b9fcdfa44a2fcf5d3327109287f816285140c471308cc4499adc95977a8
+71f8fbe0d43e3c1bd9ffea8d68695c1cb83673c7d4710829394d0e0fecd1016f1145ed219f60411cc2bdd628f72f60aaaec58187032dbb6543b3a138d45c5cdc955abb05c1fecfeed4011168a0c93fdb2d454c66a25a81fab137e70ec07787dcc132144c53a15cf0909bf10134ba9205a65545b441f1280239409d3bc95f1b
+0251d408e32b36a1d5f146928dce90c91f815d3ff79bf3a6e53726122e8c2b2d30e7092fb07e1a736b51cf13fde2a940154fc9e67568c7dda81c1d49072b4987af38584dee02328ad9476876ac02a1637dbf13fa61596588f25f20c08dc982ce453cf27b40bce8ecbb9a064da740f5c75497ac7e915d0d90904fc4dd614af5
+5e66151efeb466b98423ff03fe3a8472c9a6a09965a81c831ca8ed875489a729c2d54b0d496d83cd009f9cc027eb116a865020e2159909a3210c0c6f5c04a5418e53f49ad35fa915e3bf11361e1808b22ab4ad96cb70771e9894f2b2853be3af22df08168e67fddd7abddce1ee95cb7e9e2bd075ecafcc4acb6ca79aacb2de
+df98ce002babddb84b832197f0e4592c0c24bc97477416885713d49c5e54bd834db02d4977d8287f1e268d765e61c41b64f8f32bd9b961c72963a226d0bcd1f412f35b140bc547de69d7cb48019b9d939d9bee291693a4b1d787b12b4d8607ecb54c1109ba0d3b2579d5a4eb71c43859e996e87f8f62f03a4fdca481e1597d
+18d91245aa1102629c3a87268f2c526c5281f8d8a5f1fb4896a55232319791654bea0c5dadfa2cf56b1a9cd344d3225759f778e86c03a19fa1bb9272d99d7e4ce5254d321379f6febb97619eda6493e50a932db686e48a2c08415f1039baa1c62a46b960c078e7ee5e1a928578e491d622abd370d75aeb126e60667b8c2a4e
+8f6f079742d805aaac642341612d5a4da0056770b0d241f85bcbe26946363b1d0654fae73e66dd77d19e4c616b3a5b2fff244e6de6ec051bea09444c83b691e3933bf18e606193b242e5f26a53fde3621e5ff648ed9b2e133315fa72bfe9a2145de0911d277ce0ba118f32af9b3e3981da06d88ebfd936d675d35c47f09d69
+1f68bdc2b864f41cf16680a60613839d9110fa6d3cad642242577c17f64ec3ccde2f532fe397e6299d0ffc4e4c82c82ed6ac813fc8afdec88302a0fa6c6b9dbd0a5bb5fc129686e8c9d60d3c8c024bfa8a82d0b70f2cb541cf08f3205d991129f26354596f09d84b81af4d11a4311fca55782cc7ab91c43570a9f93f910878
+9ed61a3ad1916d48c84241c8b939fa5749f57c13f67e46c2b1f6990deb284f22988ed3ff87f3a4893319b8a1e124b704171602db712c6531b3c7d6e573a9d8825fc78a42acfd014f87302515bcc12b98fea057c668620e4089b85c9efda576f029cce97ba5709191e2a4850235ca0a7f76e6565c375740771bc3556cf654c7
+2681550517c0daaa38193efd335baadb8d74945507b1c205af82e3828c0e49636abaddf24554634b268717a20b4a0ee9153fd69243e470cb86f82e327a6b4c10576fba94a720650bec7491e6d8ab927d78eb9724c3bb0e57c2f7635064cefd39be742f14572d15eb3c071db19b21c395666303e86b74f2ba59d314e4b1a78a
+f52250ae13fd9947c38322ef9eb2545a518bdd6246f3923a03133fadcb08bd3ab2f54f8f65cee6bb23b072f8637e63d075d55fd70c2013bc6c7baae4da712e71fa07ea68b32b58e832e9bc8e3f8cc1d562552fb916f35e8a47d0d8f33acfd33a93e0949a4d8087413f837a672c84b9daa42154fbad948b310559bac30aa416
+348091e77490c006ffd37deab8144f53738d4005b73b532a0f9f181b6cbf8844b01f0c86bd2f4281187bb4186c2a4425d9255aaccc99cb9586a9564e11b4be5cdfe521e581b23c02319ea62ff36da19bc72ef3245fb76da03b3f570d8b86187659c05658077b53a7aa4c4b36cbe4ceccb7a45c031e8104cb489b4e2f8e434e
+e0a7e5088a33b9b95c58fc59e94ffabdf1428db844cfadc0de0c70f87df940694053347db6f55e330a28dbe62ad81c4f134b0be88454ef7fde8b83a50fe0697a6ae22a2008d13126cfb25bcd52bf0f4d66ce2090fcb74227d7747a798b52aabcc30672436430cd296a861db99271792d196740bf3f40ffa32095a68f20d3e2
+d6ae11e58d4492914212b71a9fd24a2c43aeaecb2e38811029681691b7d30555d7c2acef4889768d0ae02d2c640567553ad3c8370dc471091278cdb8f4fdf83441a69c885ae7c2df863a23a3c8a8ab3f324a3f6b0413790114ee923ac731335c71075bbec27c9cecb5ed78d50e4445ca13aa222fa5f3f57b1f37ea9558a93b
+03c6b217bfc62c6cf642f3473352377865cd47fe599f79062bdbc5a1ce07081b0742ff5a918a3b976e303ea68e60098aba208b6932a7415d833316b42fc552643262e8dacda5cb399796ac53d321b7c1ff5b7d536025924d7912b776e33de08f747ff7d938aad9f7b9c8e222f2dfc36a9935fd9776503d3255704be2f87681
+5a1800afb6e0e088a881fdcb8fa06519b31f1882c75bc12edfe8ee10a682ccccabf1b7590f64b8b2364fa2f770ef0a9a3cb22202989bc412c0f0b16ee45b059ce22568d04d191c658aa94417db08e26016ded5da8b13886981ebd6d97b8dd73b878447d1993dae50ab57eec31f5a4aa0ef531a86493372eb77951c9825409f
+b74ca8b2d93f37549cec4fef92df3f6094b3480ffb4b576c8b0155530645212e265465916017323259d276a4b81ba014439bc3bbc55a2498cfdf411594503bec04237d96333ad872c29dadbc62202c17f6346af9556733a64564deaf61b24d84e657b138c37c3604c5c1da709053f7a75bddac0bc3229a00040e6d1f9ee207
+465717e9f33a1b11c095efd75486665ca6e7e1e6b82c06a26586a38ad0bbd4e0f8eea6128281b39665d47325f10d28820fcc900650ee330616538cee7454f1c807574cc9cf6a55ddfc428f9e7c107af7f44f02ed3be9a1047584c927e4a9970c55094afa481b82c8c40e91fe96791699f9128e0ef9da59b1d7dd3c20cc2803
+5d5571e3e5dbc0ed14e00f31dcc0d6abc1b19c48926b82a7d61cdc95d29fbbd9b81dce9c518954d1a2c6c518452b6de06e9c65ce5c90baf0493f31022493cd05041e05a7a0f8eb0bafdcb41169cbfa504255cdf2bd13cb167482fed8750189169b951e54a18ef428e9ccdfe2ed0dc7a39dc85e480a9c7f47c3de2744c2a9c0
+3dc40a63c62a8aac041036e295cdb1dbdd70a47cf0ce18257a258aba254fe866590bc7ef46f7154df46a8e4117068656e7126d7053506daa3dcd7b66e53bfa99cdfb82fbe5ca1e5ec177fdaf04f25ae27142e2b040afa421474c181c7943643b0976e3805af1a3f47600a2d8912f1ff654c41f826522c07d0e35099b283a65
+9fe3241cad8cdcaf551a1f31fd7eb2abb2eaa65f2a15aed783718f86f56966b0b2d21ceb722b8ac38957f38932acf9a19e4ee9a609259eb0f6b9de75c1b29d87790563e79f425091966b936a4428df2aa1c281ecb8401e3f8f3c67f6dc631634832ef74a8c94ad979439b30bc8ec1c99b1e54c99f26d09974b5d92e96be88e
+ad84918267a050f2c6ff91508f6e045fc9bf267f6464c901c6b2ee48fbe4f7696d26da1fceac4a2e9d6cbb9d7ed7660b4011beb631b80f6b97297a20ee5e52719a3db2732129fd8eacec5b84d94363f4de595556494b89d26e70bc33f5da1031505674602aa5391a649c4220e1b14f2d8312e445a15276a52f1d7f45cdbcb3
+c95786779a266651cfba24926fcb2b44b5116273e67aa1c6ed0b4ce53a946e74d4c291ebf7e9d1c1ab84b09126b081978c2b0fb3feda78703cdca556f178febdf0153c6615cabf44ec1400ff8c02370c9ed1086e7b4cebafc2acce977568b8e3ab6c334e55b850e5e35262e9ac4eb201bcc21bafa2e342ae824b79c9728527
+315e32a7ebf413af7aaf2d87c73d97f100b06a940a98816ec4c26fd451673caf4abd2dbace36898a853ba4c3acfcc14042676e65d69979aa1543d0965578c64ecfd194ce21fc8314fef29e35d5597a539d4bd67b077e880ebc4d41b072b8462dc63584bb256094eb353e355b346d6313fb265b8f713015642d61c843b1358b
+fcfebe5a86307bae9b574c71371509fd56ace646d61e0a328a707e3cee1c3e3e9c40c42ac453ef5b692a1c2f24626d0cf130c3a819c54d798dc577ff7956bf27f2b6110af08f0301f44008739ecad974aaa7d68e6883dc7ca3ca0b95ba226d819904cbf79b11ff35831c7258bc605c97582aeccbd2a5e64d6ede5f4d5445d6
+e83641b35ddc7cc6778e3ac7eef59b688a3d247306caec81765246ed6106b3ca3feb27e066de66b65e792548a57d9aa20e60f6a6f0de006845f8d75252ed9122728971f33120b49265cbdd1d8b0f42f3e673d99915684038c49e5ce0eda876c2f8f1ded27b035263256f986ad7aa8020f24e25731884e026c4e4c93b385a4f
+ec7fb1fde9e7dcc5ad30bd18c739bf39f72ec5b2c36a98575bec2105560c733d7e074e0289cfe0b374bd89bc94e3110ec7fa6d117c012319870bbb612ec2c75a838a07a7cf229140d5ad195aec2cd0c980955953bb8009348a5b4c700b123b00156f57257c1d06a7d5d175167aef7095e63dd7da9dfa591dca1c59db066ad3
+dd36d2e1162acef1c20cea01052c010e89276c8ddfac9ad719214eb3aea6089edd5b66193a5efbb6eb71ab1d2ff19f1931bcf5f2aa54b7f40da7114b49fff966de7f5b972aa76d02e31aa6d6b36b61157d0150e89d4d4c116ba19bf10bb33e2ef1fbd14009cae33d03248507083dccdf90d4e3dafba0b5b480f74b8fe3a71e
+4020707a940b3053bdc7a8db04706dd04029f9180564a829480dfb462619f48bf91b55567896a8dce27e4d324c8e2b4e669cf659c16c0f6b82dc72823d0a4b7e992a8f80ad0386473fc407dfda4e7f18d614369631e8d241aaa48dca013c4368ae87faa94a6fbc4a7e425a53bda770bbce6b524c07a517e9367f611857f6d2
+5dc35589ae182d098797f9312ea7874f03c5d19746425aebb87d803182d98a8b43528131aa077596d4e37e091567165cec8192466d21d21c97dca1daa89285afa44fbfec5c8c369e3f6eb4e7538a831964e68e7dd069d4816337a07a5983c954e48a09e8638b060040614e1b9d7f745c74a1b50973e831916789c540af9fc2
+55cf152aa8ab85ce2d47502abdc31f3d2efe0ef16a7593a8bf5facaf83cc8dd8f7bb53e73a869e114a352393d3ff15846f1203442ddb1189903b3a0d772de82728cb3dd36cb06a5a7feec342105c3fcae9acb6c39ad706772835370df24e865e52f504701ef0a739952d2704e3e1f3c7e74091c3b3fd4a7330ea94744d4f1e
+1aecdf1e733ec1e4efa24ee73121f6b4ee0df14ac0f859e56fca07db9b41e79e9d144c7df44970f0137795e8d5c80fa2e3978bdbdaafe4b4c71973d6e20a60e8211529bb5b96286d8065b65d4ca9124fad2a4b935863b3f886edbd9bf7a57cebd03a3358cd90cf5cb91babfd8757565e9680cb800869674e4c356ce76fa50c
+aaa6e0dd75a61aed50acc2373609972d065263dfc6b9326c41b967b61e78b8d3442e8d30c50155aa7ca9cd1cb9247f306206ca691b0d5b1b8fdae901fd66a04eb6ceea6b8495f5061e0efbc0017e95623e196b88ebb9b74cb283f006cdd5f6e7687c6cacf1223f09658b2a1b0e1430beee0cd6936a93dc037dbbefdfb2cc1a
+2c84036ef6b567d8926e6b524586143a6689266ac7c00cc11830a8d1a2bc3ca74356863bdb535398037b77b82472cdc5e0c4bc80bcedee7fe043aaf1e5ea75615c46dd2a5ca22d3e032f7c0b33523a2d5613f3eba692d641b0a0a33b5cab39cf4ccd8fe72bb4ab6ca71cabb4e13625231f81857ce493fabadb25280f209f75
+f1adb15ce277f7cf3e0ccb79293c3871cf1fb2b516a2f87a84bf8aecdf84cae2582076a2af591c19cd604bb2b56e65371bd062db57035de806bc6e864e27d7a27c72e175b9122cc656e8b71bacc85d8e20bba92322a50063ef7f91fb05597a8221ed0d542e42d58d6f8e50de5377ff027da0127bc9661a2ae255fe1a844063
+29d44a50c68a0903f4669c4324af974a97de6b60365f992de322fb446da39ea54e3e33660d0ce7f0b31504109f954f11eeb823bb4eb4d893b8c1190a1c9fb9dd71c3f0302dfe9ba1305e52f67afa320459ed0b6f870d7585d53790261dc14e26c26791bd9c99740158cc333c36f4230d12737e8c8a688ef66a51f80962dc0b
+5492e2443ac24ba132954aacaedeebd9cc62bff8f8e5e08c14187629f13b6a94568e5d4f2b55463c70f863b407cebafae6ac9566ec05d48ffaddb7a567d5a2816634d1c5f79280de20d78387e23db4303144454e3a437015747b048a170c497e8433dc28361e610e5a2b503cb51f5dbc63a292f16fc267fdedd7925c58d314
+dd6705cfa8f1612defe39682c12d47ef0c3d9b5ec686ffa4fbd04742974cb6a9483b5e03cad1f0d140aad97d74e456c75e6642151d167c1a822dcfe56c247e0af1af264aecbc735e218f42d9f817cc1a5394bea937965f7afb1313ad55e1f317c53b535882120a2230d00dade248ae0f7981031bea25dbb72dbe2e8547ee40
+02a0c251387c68ecc120adad0f0748e19edc9dbf3a4566ae5e2f38c74f6b731a4a97600534c29aa689e4551421aa5ca24d32abdf485a12df2701fbd1745230271757cea59b63de1ab59113bb574ad553d98955e41c6df5c7e91636eace1e5a0603e10253fcdaaf8ccb8a2e28eeb2ca9c7231f5d1e420110bbb7ac464e131c1
+78312efe0a67b81bd80c4d428286eb9a149cd7b9909ff160b057d9ea89528a00206f5228a3dd8581ace94ca99fedbd7b21154e0e7509dcc0e107c0fe2f45b0fefd1ddf56ae11d7f17713c989095a5c046745f4d801f19fe0e248635f8c57b5028096e7f12f5b2f28c38f8d8403828b7cfc9c9da1c8ddc94b99688a050afd26
+58870b4fa3dd87eb75fc0f38cb2fc2b949042f1008d1cd2887d9977663064865c6df078abcf76b0faa79aa3657acc916cee0668ba5888f6d497c318a1aa53849eeb939c3696e1b18224b789dbd87495f007bc11b86db8e9bdc4249e1f7c9c40a0de26a580d28aedbda4313fa07b53cdae3d5abe5e580c79c1ed42736dfb824
+660a10eb0e9412339624b21bba4ef66196dfcd89bd539fc6e9a660a05b3c73a315fc48f8d68d7de440d8c7a1c8bccc4e09657445b3f5dc43b52763b21354fef400f9bbc0d1bba85802e4ed2baa3d11aead44ddc825c755ac4ccb6a1f1a6f65365f609f5cb3fe0ab0ec9b0428f8aeafed197d05874a80b87e3b0afcdd7bba62
+2c4c416c110f8627ea81643efe6181686ae0b70f80cdc5a1cdad97ece8f77b87d52ad6cbee78642fa2c9a6504f2a17cd6861b050a90fde964831d4c43af525bb043d7e78af1deb2fdd442c43cebe9e91c04420b2029dc4541662999e750574d4fd387c88306fb654def8a3eb995729d20e1b730e61f697d5ffa998714251c8
+18f5c0aebc7c45475163a859d9541c2282d9ffa97a310cae7fe9b35e635a8a7df366040b480fd578e21f7b2b5d1088b8487c34c028ef3baaba0cdd7c1e7e694b17c5f25b29a2de9d8f29220c9ac477fe369838b3537bb49b1fe9ad1549580bf7799bfb709eada7c3c8614207c28c9c654420c1b16d7f0bd461f61ccfd93402
+4c3033fbb6b3dc15f9956f6bac3ab1dc43c7785d42a084d3ea583258ef531202056ee73cc09f137994322bb00085e97fc204224c96b0f5843a171326901e49a94a4e46d00364f177adcc2ea9e5b4760b6ceaa0849a7cb2c232b91f4ef3898ae87a796f62f1a96e31188d12ba2c21089e227594fa35b40bcbb1570321e1657d
+a8abef8e1ac37cbacf67d719f1605af599dbf37b7d083f45a80063fb9f8ba01ce9a63ef25413ba5fb0454131b586aae594edbefef70242552762989968614b1b50cf8339166dc97ca1fd7e4382c53fab164c0e469ec39704d6dc6f49d18463e944438eda86183311e340062ef76bbc0fde1905f5fc0968e17292ff4d1efcad
+1f1d12d5986ed3812214ca855370c635c39edbc0761aeab87f4651a8a28b0965fd5da6d2d45a2e5a517377cc80d81527912f9f4c163d05c1239a3d4389a78b6047f34e2011fa62d61433bc3c5c6b7dc5aaa5c7b3156d396975b372f51ce56ad05a3c55f24a22712eb86aeaf45c1bb268398b3e790869da81cb0017909eb08b
+7274550445adb6439ce0898acf8928e681ac0f7a7f94a52ced2ab6f43d526f399a5b3b911d7cd38a66b65bdebaaa16d82de09a532665d8d17b1a1a33c33017e68b4f0dc14d5b7740e634e62212205071ded125590c91a34e81843970b0c444e9adb434e09a20d005b6605087d2a87277dc0e94d319f088748f51525141a681
+b129e5aaef51c21af8dbc19cdd19aced661ed7a6c7b9821d9eb4742036d2e69223bde8bf108a1aaebf3eb87d689effeb55dfc86c1bd3a68cf998aaabfc85b54cf4cb78cb673f9bef76034ce010a2b4e845b056ed1aa51354e65ea1321f60ba829b4e9426c2101bf0015f3b85b31d0255d4d6fc2d054b6b4e6bbebb89a25bc9
+c510318116ea5e1b8710b42761a18d283eb1a5ab154b034ff30d2b829f552653fa000aead47603a4740e90a54b13734e94dbb6a030823d29c1e68a75c3f361cf9efab4691d65cb4ca6382826e1db005ea774c3ac9b85256d626a7bd1fe8612726b07dc7ceab780192aff9a436d7324952dfc994bd670b2f271d142fc84c8d6
+52efa5353518a52817c019ac2cbd31111bb7e560dfea2e81a2e55cc1110278204761073fb0a40bfc89ec3cd9d34b5d59affbc6930b09b8226ffce9a8a93fe28c5ce2bc536953a91b2bf6195460c8677f2bf314a16a7b4311f969ad289ed2c65177193db462719db6680e1cc03c2c3154e60dbdf7db0e270b0154bcace82bbb
+2616f8a418d898da0ae875514b7c4327c66c0b6826515f29b972eb52e220429d27e16b9b5ceabe45aff2ef9f645f196886cb989687e951f608e738f1ea6cf2a79e507be7f080485c3668af2c8c3cb8a9d4e0ca896c5ae8a19702d64c71bc4c89a414576b07ae2e38d6a655de7d336b2b1927a156e0850e6594bde58480a07c
+0f3c026467cf9b96b873c8bb203002e2b69ba3445fd368780c425360ba831766a37ea41c03f69454823b46e55170aa82c194be95cd4f6f32fd93f3701c5cd730038e8ea9b6a1e563bccb223e9d86751123671c0b92f7fac56d296bf09f5eeef39c32dedd67034fb718034ad4ee1252a80529e5e119b48d5a1dca82e04fa906
+d3fe0eec976ba1ecec8992d0c2f9594d790da7b52d71687c3a15c4a325594207bf603e2dc80cf93f71958724ccbc53b3b514b1108d6fe912ad5531dd8a294ba705b1ad011d35cd6a0e80b7d8b345e0795498295b18a622708751e8f961104e7871c5e78f0011d936e6e86dcb8ba738be88c899b81df3feca87c2bec0282e26
+242f22fc596b83be010e8799eab36e37674a2d25f507c734801be5fd0166c3605206e5038b95ec649de2cd85e970935cf3822fae2b92de3d88343c9a03e0a775f2760a422e468b7b6e0714a2eea42a675d18eaf42fedd9544742a9f8cc4a9eaf3d77629ef815904799cc0917badc507cb247b808e543524d903c2437050f2f
+8d5dae66f994a88e334398d5fd17dd9f9c50f6002b0e52ad911532b9022fb3a83de7359b9b57457fbe91471e2e31685e7bd8ab907cbf527200efd0d55b7745b9feabadbbd037c8e05f5d38196d3abfce6dc605c9f8e9543c9b364af5f0bb4146cfa84af9ea4906515a37d9aecff4305d7fa0d4c82440a01a5eb66abe43cbbd
+6ea131c43a16cd0433c39abacee00a58638872d90a349dadc0debc1f64ce060f05956b989b084ea5c42fc7933ccfdce2d538c45df01ddc4d025f450994168f7b00bbcf5fbaa45c396c84e67db0463c0422d830ccddd69fac0434eb4f6f6db9a4fcbe063ca705f3d2ac8b38ab65fb32789313db034852f172f9ee3bbfe0a4ec
+ff0275b06bf586fea2fc5bbcea05f0777aa8306e5cb7eaf97547430a79c8a74185abc137c7e30cec2f61ffca8c38bd34a20dee0388ef6dfd2d68612c37fe50a3fadbfd1efb17b04ecd5173b37a85ccd63e6e6bc83acdde36b27e8827a54badf3822d9eed4afa49839ee1a49828f9e7d945b4545a85178febab85903940fc65
+8bf53669e12735d351a2858c5be4270ef9cfb187161278216e2eb359a0f01ce0326b6152c56f44600e3152c07f00ce0b766ca8192c6e2cef6a9bfba1a6b042de3ee0f793da682d07628baf6f60961336bb4f09e7ae7fb5a37064bfa5e2d9390f78d7976575b82e27510219a0f3a7e0ef06536255b9e9a545f8c6ba2f746426
+d6f7f0d43b84abb4a0ecf66edbdef6724bb060bcbcc13124a1dd801768fcacdd51f7d13ac3cf5ebc3965127f4772ae3c296fc955da79143d65290d99d2b8204d5227ade3cde4a2e523c88b93eb089707226777565c7bf63b5cfe1fa261ba54d692f3a9bb4a10e08e6335bc73fe3a4abef58baba568da69911064bc5790251a
+618638c4906151100d57e5dd8f05c804c29370822a95903e6feca634e70be1adbc0e0f4bb5cb68b995c0c17433bd9d039b89e202f278a829143fb7fccdb7e9ef900aaf2daec6b25e9edcb1ffefd889ebf80fc69a5e817b45bdc4f5afed089ad32256c50b0de86b1797ebc6108cf3fce226c7866e92dda1b8a1a9b225988f5c
+e866118085ea4356c3a77fb3e3a9a847039aec345344af70b8fca478a3b79fe3c1ed74210789937232ebceb92e5ae683d7713dd39252ac439b969a2509fa6dd60c57c863bf06488b290a23121fd0900e6821f33bc4c41f23323c711ccce1edfa5116f569dc5fec01cd92c04818ce8a17b912bc4f62d9f72f4c0567c965d7d1
+266706031d6d8b3f4b65a8ed125994275219223d5e2289c5dad045df1d912bdf7bcbd2666148f981273eed4fc85d190afec3843451d12900feeed5f42d357cbddc01579eac9fdf9adb6e212547733d3a22d2f65be27038c2c3fb5b2f51a3ea26751d0e12f64b4e6d6a8551d23080a8ff23d23e5cb0857e653a859246812efa
+4dbf873f78813f4b5ebec1529768371f919c5b67c6458092590ec328be8bccdc238f103c7e166daa869758b517d9cd869820e0633beba0386b2e33965335740787530458a698a1664bedca0b586afb5482b2f580e7adfd584314144e3adc41b2b08bdff70789c06a87fd49ab7dfd4949c088464f296a8f1f69d60abf17850b
+5a254dff8d52c9c4b8860b651e92a5973113f56f1c030ebd02417dc181029099007fba17e649ebcd1e1d044bdfcc279430f56e80eb54f921aea09dc18689beb9f34bf4005490373b98ed62ed66f887ea252160a6b15f91a0652288f55b704203d285ae011c79270bd5d21114334fb466ef469fde9df95a3e11914c69ba2abe
+a27c2c5e43baae066c5b329dcd72cab79a214af8fdef80a2201082df01a595b21807a6a3342e8ae626c0e4598fec95553be69f8882d7378b3280665efee8e5ef126cccc2eacdb561fc84c491c227bdd2323198f73c8de2ca9068b0f8e4245da4645abb5d3fc748f70542314f06fe52befe20239e5e0eeabdeaeb0fd4299886
+1463aab51c77bc0fd59900fac5ce1773e0b71ffd32410a02063a152104b211530e3692a794f794073e75d7b05dc2f78c0ad588aa76064d888b500e950d2f4553f9bf23b0c22ac95771c291140fbb45541f381999a18b0dbc0656f58493098c61007db73a88a35dced73ddc40b636becd3259ee495e8e90f76a40023e5d8c48
+dc98a2ae34edfac225855620c93365bb8b10eb2f7943f1016e3099e6ea05474750ef6e6e32b2d49fb82662238f0a33a1f9260215fee59f8a7762f8b395d601e66c0627b4dde3c681e7e1323e1fc72f2a26a068f6a00c07a9862bcb41deb978c09ca94f01ab0449a159620c7987bf9501023955b27089b7f95af916c319ed37
+819f4796e917101031aae8a271189cec405c5ec0195da3b965047a69f1d2df83cacd4f320a94b5abd2bb6f2c06f7292b0c43421567587f793e043fdc07231e2ed763642791842a73730e76da849297ac6f5c60ce4be1a4d64a42282cf1e049c80df994d78d488e03ba101e8520715e68a5159cf00427a7ec0d46971d881f68
+256e2e9a4addf369a03252b0fdda0c05650279f72349ebbecc1431697f87df7d87d3726a4916609fb3674cfbf8bc59e2af9d855bd5f8d991e53bcbcde373df266e5998fff0064f4abacd91894f0b76e337e416ee7632e88aa7adcc56430a022f85bbd2e802339441aeadd92efd87f160a8f98368fe8b5061f5a4aaaefdfdb3
+31bfd109a6d9641be4ed21eaa90561f84f9114d8187af6e0d231254fd4184efcbe11ac4ac0c4f2ef4ebee729356f6819cf9180fe32a4827c201970fa382c93363e11594980747e1323589e0f9fce87048c1c1b659c277f001bcc05525680c6778ebdc2b88658ac7f14a1866b8be9dcb50f2f6c3360b62fb95a1417db555e07
+89bb6b213291e6fc13dbc15e1421e8225799cd65afbffb899e8819fba810b6129fcb43b3552cf6f42c1a836a3397d6fbca416896e97ccf3e00f8932b8a19e3245d9f8a19dff4dcd8fe9f8e068a87cae658b7cf4c613ad3e73d818ec217f3e604f0d5499e0eee62153829a6d22ef926606e87dc1a5f8c5449e3f7991bdf6b9c
+a20fcde4ba519679575586ed701e777b3948b640b0c18aa62c326f0c73517dfc91ba5cc0dc1aa51256d2c9d330e822090b94012a13360ca15567ec72634f29477bf0d9f71162c9a9b138d62e17118eb12c5f7ff3ef464e6dcb0f9709dd6ef1fce7cebe59d7eeb9ecaba1dc08613a6206cb151513b55912d02dbbaeb3310bc8
+ff725234dbe12ecbfe5e7680d6fbc60864ee0c07f89224326afe09b33ae142b7072715a120ddf29fdecddaa02d9616bc7962d6a0740ce050076b3461be5f12cb4a9fd2aa18a5ac8b67e9d6d13ff94ce18fce66225621c8f867bb66c741958b9e5b4c1cf7d1efbbd585284ea6e175d50c4e4cda2efe8f88aa6f004daa8e976f
+37f1320c55a8679964077e3e800af1ed4333c6cb5b30301cb2812f228b1d196d3d87cf8035bdcf34d0a53ee1d3af0376143a02a762718fc97a777d6bada4877bfc0561d31af67e29ee7b81c15d676925fdca3f2d0c625b07bd4085dbde0b30610b05227d097364fdb30443cc1bc0227a76233871db622155052c294307a792
+0fbec7a44784cb5dc6a4ab34a252fa948cb3e242d4bba9a821d0a04a9ef8ef1f5a40a1c623a26db245d9a4506a092b1261e647f553305e24db2358847f752e439ed4c15411c44620e78d01051db8c8d5408ebc2204f75e69ebb5d02ed0e82b0de812b31b882dad2506b6fed15be0c3f97e3b791f4e21eb9f21f873eb8045bc
+e7352ec5207bc1bddf135d3f1de8d2fe86746566dbf2478faec9c41ab6d47da56798af8a67a213b9495cbbf3d0e309ec288c65ed73c16e6e8506e8067dd991bd4364a0eccaa1612f172a8d361408b8fe9313e2a4271e8f2ac9e9fccf76b71a8f445a3c362995c1b74b62abaa9408c4e7a1985754eed14d1948e7faf378fd05
+750d6a616701de0b8bc6606398dd43e174ef7733723aee91bb18f4cda2e8eaecb92f5dfc4b51eab336fe9fc88609a7db57fe87ad076386a7c9e7ec95264192f004d3968779df827d365898a4090fa77584de6b0bb385397b2f3d0aadcb1b055ababba9c57b44f46d1bee53fe9b4aa7942b736a10f0cd996050f721a2c31190
+9fc6e5714dbc0ef077ab022c586574087bf9e04ec2de91717e9fec8156ea0cf5a0d42c135d4f3765766018166110e0b977637644b7b5b3ead9e4daac9075d89e5e04d6b7412f287c4f232d50666973f4800dec6c0a3e7929ada06c760a0c032ba7e12016011074220c0b5a8521712e105ab165dfa64e20508aad153a5f3e66
+748c2f592bd0ac23405952a6bb5f324d5d3508ee50168d3e42fd5bf68ab658818b94283e16eb124cd29f6a69a6a5f9058b93285a858d54a9e2937ceacc276a1f95ad867d159037f86acff2fb4179f2079a1d53f99cc875379478bb5fba5892eb50d5c516288f8c49735897331235eec56b25211b32b03a58ae893081ac8742
+9f0139b15a23793b4d764e985f38d4f9a381e15c845742b1557e5e671697125ebc6ba21f7a141950c1ea22091a3bf12f2142c2375c57768136903a4152eb856c2aee37a20c3c51c4ba923ef61ad50f9a1352d14141faf2e2ce08e472801d0fe34576228bbf84f65bede6b126ee490f30c4641db47fb652fb05c16b8738c1eb
+62ebdd7c9a31f7e92a568ab77cd097ac8dc57e97aa6327cfcc0c6792cbc6ada1087f2f0e561de05c9703048ea484338144401aff886af73af6f7133f203cee5c1fa43ea9cd751e5427784ccfa901329ff8e451f0b22669235f9b9ea9fd13ad0b1c57b554068dedda8745b6cc1bafdcdb2deea3827fbe52aa8a360e7859c5e1
+899f8439431fe772ba668b3a3b1a99b57310bf0870f86d3b5d8d617ccd085fdfbb530a88d65a978e96f1b54137d4bbfbea1173253dd1d5fffa52b7fbce0882f521f17f4d4a9693c6f033588bb619a3dadfe922b97fe2047e9931447d372bd1bc802b53bdd2ab1b155da7ce01d01a47b490432cefbbe67ffed4078470c7e4dd
+7ac8e76d57c5470f010c137f816da5425174cde833909dff07facb63580a034ace2d7ffc08d32c0ded750206dd0444f1f1e769474de065112b4877bfd30867ad9f3fb0d1f3e9cf2fcb25ce6990215d241e0b6d8e64a71f0b5178234afcb03373e09e7e35e71bdaf68551b2e3f900598b57ab6c61b0b1bffd256510864cb71a
+4d7a2b742a78d380759bf7069b5f1ff4e34bff04b7ed7c0e023e4776d27c8d7fda75c358261031c68924835b83438e43dc7f5d357b4a719e7ee153438313c45a900e608a37d123de26b4bdaac57dc756d2de11281e723e09607255b080765755811e2040c158f7c664585666f2c87866e56ef03d74aaa183398329d3937162
+651686f32cb9047a47edf42d294693ee311872c8ae8722c597673a52d3652ddab08ddf261f0c61b02e7542230a50e589518584173116ee4a3c76bc1a40df112d4eb97caaf7a650221127101328e4155780ee76be090a9fdfdaf29c0cd9ec37555f8cb4ffc61852249ba7ea3b4d251c61c7e8eae9f98866b669516c81d83a7a
+391f9d8f34535db519e6e6a61ff5470203e604bd0a8e0c5778ba95875929f4f49b8d2ec26e0c8d030ec93b77e8a25b832f3373ce61a4b43491ee40edf057d4596efb3ad61cc29c1b6980b0e5039146d61934ca28b4dc8313f03dce37736b556c7107a55bd9729695e56939880ddf5004d93cbcdc9f68c95de59e38795adb2a
+502fe8247259f82334ca32a2fb3dde620e303c3ead6650478dbb7f4afaab4805db2154600ec0b02fe926c9f42007ac24ced38df61f3889ae41825fb89c30e0eb5ef8b2dda787e6c75991013c5cdbcc10355e8bffeb473116c623ccdf2346afa7c739d0ad42f69ca0b7e68319c130ed981fd6c370e0d6369e6ee97e32752b86
+10ae94de09bd96502c4e34e86610ccab2dc2cb527799df784d5643a6ff1aa4d3d9cd0b7798964fa330bbc3351243be6a3b1519211004acbb08f4b41ea396e485ac1de0613ab29174b61ae361c517bed30bd293e42d36853803e3c16766197024bf16d0d8dbd260ee5ba76cbae75890b66d5bb7ff72d1630f059f863c4a0f0c
+207683e7eda064e6c8596759595735025ad9b3af08180bb722fa713e428fba0f98d82499cc7c747183f6ae4fb6bcf978bb7574c4a569618571e50dce8ffb78d4603295fbabbcbd02237ef2a213492a6b41ed0a7f9aad38f3825926688f7fe4426c590f5479bd22a451c342a564ab02ef8169f967d1ca87a238ddd6cfd5696c
+8f97ae4870ca2d814005fa376e1376bdca52b732391c5b71f51ede618ad9370fdb2a89d95276df695b6db060f2d683aa9b80a40770a1c76cbff7bfc7628c155e0fec88ab4c5ce051c8681190c8e60970230a52c428b1b1043ea5df17d5c10b25a5c6ddd941a023b00a9f61e89a4760cfcb0851eeea9c393d8b7dddfb9efb64
+f1118b3fb9d45b610b5ec92449c72a451540f25b407d5162d85bb57dd1864d69bf7dda142767d6397437e950ed071793b63fa5ec834ab66ea827f2801fb7f33a2445587fb17a431b9a89a512db355e4b2f0290f8528112fe52e3f30e8748c2f2125aa2e4d8781f74d173066e1cceb94931d004e11c916f5d60800000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+%%BeginFont: Symbol
+%!PS-AdobeFont-1.0: Symbol 001.008
%%CreationDate: Fri Mar 28 22:03:48 1997
%%VMusage: 30820 39997
11 dict begin
/FontInfo 10 dict dup begin
/version (001.008) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1997 Adobe Systems Incorporated. All rights reserved.) readonly def
/FullName (Symbol) readonly def
/FamilyName (Symbol) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle 0 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Symbol def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 32 /space put
dup 33 /exclam put
dup 34 /universal put
dup 35 /numbersign put
dup 36 /existential put
dup 37 /percent put
dup 38 /ampersand put
dup 39 /suchthat put
dup 40 /parenleft put
dup 41 /parenright put
dup 42 /asteriskmath put
dup 43 /plus put
dup 44 /comma put
dup 45 /minus put
dup 46 /period put
dup 47 /slash put
dup 48 /zero put
dup 49 /one put
dup 50 /two put
dup 51 /three put
dup 52 /four put
dup 53 /five put
dup 54 /six put
dup 55 /seven put
dup 56 /eight put
dup 57 /nine put
dup 58 /colon put
dup 59 /semicolon put
dup 60 /less put
dup 61 /equal put
dup 62 /greater put
dup 63 /question put
dup 64 /congruent put
dup 65 /Alpha put
dup 66 /Beta put
dup 67 /Chi put
dup 68 /Delta put
dup 69 /Epsilon put
dup 70 /Phi put
dup 71 /Gamma put
dup 72 /Eta put
dup 73 /Iota put
dup 74 /theta1 put
dup 75 /Kappa put
dup 76 /Lambda put
dup 77 /Mu put
dup 78 /Nu put
dup 79 /Omicron put
dup 80 /Pi put
dup 81 /Theta put
dup 82 /Rho put
dup 83 /Sigma put
dup 84 /Tau put
dup 85 /Upsilon put
dup 86 /sigma1 put
dup 87 /Omega put
dup 88 /Xi put
dup 89 /Psi put
dup 90 /Zeta put
dup 91 /bracketleft put
dup 92 /therefore put
dup 93 /bracketright put
dup 94 /perpendicular put
dup 95 /underscore put
dup 96 /radicalex put
dup 97 /alpha put
dup 98 /beta put
dup 99 /chi put
dup 100 /delta put
dup 101 /epsilon put
dup 102 /phi put
dup 103 /gamma put
dup 104 /eta put
dup 105 /iota put
dup 106 /phi1 put
dup 107 /kappa put
dup 108 /lambda put
dup 109 /mu put
dup 110 /nu put
dup 111 /omicron put
dup 112 /pi put
dup 113 /theta put
dup 114 /rho put
dup 115 /sigma put
dup 116 /tau put
dup 117 /upsilon put
dup 118 /omega1 put
dup 119 /omega put
dup 120 /xi put
dup 121 /psi put
dup 122 /zeta put
dup 123 /braceleft put
dup 124 /bar put
dup 125 /braceright put
dup 126 /similar put
dup 160 /Euro put
dup 161 /Upsilon1 put
dup 162 /minute put
dup 163 /lessequal put
dup 164 /fraction put
dup 165 /infinity put
dup 166 /florin put
dup 167 /club put
dup 168 /diamond put
dup 169 /heart put
dup 170 /spade put
dup 171 /arrowboth put
dup 172 /arrowleft put
dup 173 /arrowup put
dup 174 /arrowright put
dup 175 /arrowdown put
dup 176 /degree put
dup 177 /plusminus put
dup 178 /second put
dup 179 /greaterequal put
dup 180 /multiply put
dup 181 /proportional put
dup 182 /partialdiff put
dup 183 /bullet put
dup 184 /divide put
dup 185 /notequal put
dup 186 /equivalence put
dup 187 /approxequal put
dup 188 /ellipsis put
dup 189 /arrowvertex put
dup 190 /arrowhorizex put
dup 191 /carriagereturn put
dup 192 /aleph put
dup 193 /Ifraktur put
dup 194 /Rfraktur put
dup 195 /weierstrass put
dup 196 /circlemultiply put
dup 197 /circleplus put
dup 198 /emptyset put
dup 199 /intersection put
dup 200 /union put
dup 201 /propersuperset put
dup 202 /reflexsuperset put
dup 203 /notsubset put
dup 204 /propersubset put
dup 205 /reflexsubset put
dup 206 /element put
dup 207 /notelement put
dup 208 /angle put
dup 209 /gradient put
dup 210 /registerserif put
dup 211 /copyrightserif put
dup 212 /trademarkserif put
dup 213 /product put
dup 214 /radical put
dup 215 /dotmath put
dup 216 /logicalnot put
dup 217 /logicaland put
dup 218 /logicalor put
dup 219 /arrowdblboth put
dup 220 /arrowdblleft put
dup 221 /arrowdblup put
dup 222 /arrowdblright put
dup 223 /arrowdbldown put
dup 224 /lozenge put
dup 225 /angleleft put
dup 226 /registersans put
dup 227 /copyrightsans put
dup 228 /trademarksans put
dup 229 /summation put
dup 230 /parenlefttp put
dup 231 /parenleftex put
dup 232 /parenleftbt put
dup 233 /bracketlefttp put
dup 234 /bracketleftex put
dup 235 /bracketleftbt put
dup 236 /bracelefttp put
dup 237 /braceleftmid put
dup 238 /braceleftbt put
dup 239 /braceex put
dup 241 /angleright put
dup 242 /integral put
dup 243 /integraltp put
dup 244 /integralex put
dup 245 /integralbt put
dup 246 /parenrighttp put
dup 247 /parenrightex put
dup 248 /parenrightbt put
dup 249 /bracketrighttp put
dup 250 /bracketrightex put
dup 251 /bracketrightbt put
dup 252 /bracerighttp put
dup 253 /bracerightmid put
dup 254 /bracerightbt put
readonly def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 42996 def
/FontBBox{-180 -293 1090 1010}readonly def
currentdict end
currentfile eexec
8dda0385bbe2e28975521ce366a1efbcd19951c755b299f7de57699ffa32088176bbcfeb9d3d075a656fc2d3ffadac652e0956194030c65b6ac7dfb4cce0096cf30964c72ac7742ef0dfd71d6aeda00d45b6c86f2ebeadafcc658a64b076f436a780849440223f266d2dab36e19a62bf7550db533ad06fe9bb6bb7ebaf6f78
+06f6852f23ff339a8c1fa991f1bf47f71268b6727020001c8171cb3acdb4eebea4d340dbfb5d95d8d24eb1c831a51121a967305aec34b69ab5a3a0c21ee4192997502d726972f6ccea2c58f4e7ccd90e299cdb76cdba9c42084edd3a07ecf08d5d8459c87f2d392b866eb9ca8d6b8e8cb4cf97599599df0d1c87704f3532f9
+44b58dfe91e713ff665bc5a1d74808d77591d2989951c76bc0cb73e1b40597b250c9776948f8d60bead8cf0d4fb39c205662436ac4a6187b00b5645538a68c6ce44e7231c7492f6b4677329a9823d5510077ae7874e5cbd15e8a39797dd2b269d030912cbd063fcd5befc5065c16972fc994aef7110c16634aa476dd2beaf8
+9a89a81b20101bbb2942dac0e7bd0e6fffb56a851127ee061e3e97515730d3f92d488ba61997e88e50520e778b6e4fdc856126a03bae52db2584ff2d7852ba528fa91db625ecf87d97c1198ac22a8cfb2f19e377c558112ac6c2603dcc29d9402998e7e5c749c156b98f8424ee10395dcd7141d8dce9bbea1888b389ad7288
+38348d4c0f924643d9fccde61c5c46f99939f2eb3dc0002137e456161b54f58a06299bd20184d58981613c285aca7dcd5736db403c92e9fde31f3ec14c2e3e67f9648387c1d2fb251fc8310c35608177e05052764505a7e054c1568429017d5af318ba6f39d33cf88dac226b1e3f3d3a3b1dd7d3a8c67367ffb00a7568e1a6
+fda2907236f77bdb618fa1f04e5317fa2d8f5da3f48fd88d77c73f439b7a68b9a7970ba0108da48bd1fb6284d94470ac957d679cc7665a6f0d3a1abce3352866b459ea0aa6678f00277172daf4c5aa545ae425b2ab530c7404a04ddd891ffb0b3cbfc6e5b8614986d7216e4bc571590cdf32ead925c0afc93110751b5c6a95
+025bb9b74a00e941bb7714525646d584d0565c0106ee006d10ec7e289ab250d6e99c3072afb4c15e1ddebe02a78b508517f985a4406b0bfb74c7011010b1f801217c1fa21f60c4e50ddee045e69c9c40075683c68dfeedd25ce02dca55b96c246670c9e84e586360077921ab65d0836eae8675227b3c40e10cbd7c410f2999
+2f1bad2fdb649626271df074e58d4754a3877316f32f9f6d891bacd719b3de29707622f725d5508a268a40a5896e06ad92d2e133389bb0ded7dcf837635377dc16fe2e5ba97c6f04f751911f82fab56def6221c8029dc6fc0878c36954a92d4001000cf48949e772a8fd21de1922a2e546ceaaa2f8e464fc6e82e114b5fa17
+ee00bac6a27e96ae49775f26f1cc6dd494b16fa60fb976e5cdffac370a977dd1ca8468c45c9919cd17113a811073516589fd5bcb5c5a50fee1df5cbb0fee6a71756e08d144d082f7714fd797f75adfbfd7a4ce0b2a8e25bba46fef859bf88afcfedb408fcfe3a0c517af7065d93bc9534ea318ea2fc45e0ddb427287b6f4c2
+9b1bf79b82021ebcdbfcbdb93254c3f7e9a8c431d8d7bb617b9c8c9b1d78b70cf24ac4b1dd4edb7b4629d5061f0f1cb86698afebd44fb08afb198ceec07d799f426cfee1bc9913e7a997c7c136a9b8571194349a8e960615de021415355640c3e3855873a38c726eefe0d9addccc89ea1e4446ef4365478d26c2cf094f8596
+29ccd6f433f42b5eb3f065a96dca95297e406d97f60d3490dc6c2ec0830d16b502ee1832ed29356a16c94f2f74bef5bda000b36a1b7c228958ecf8df388909038fefa348b2394fd6018206aefe6ff3b7362a9f65cdc181ab7a9f1b9abb5c36321e9faa8e081b583035c34d3a0eec08e7b08f182c67de2efdb4c68ab169ec5a
+89df851a3b53019c2c604b560a58ea246c8444f9380f19b553611fd2cb4ab5c99740289a947ffb7e2b4670efc0fbf28a631c93c0b9e84cb738f93ec6c7f78e247419676a3ec643169f01465c032cbbf6f62fdaf66495105d30538708eb93e58474374b8826a64292753bfdda20b265105fd7c4b1d57993b063b752e890fc9d
+2453595f50fb0c16deb4ca009d581de07767a8afac5fdce02ffb4874a806e38df9ee47d963c9f7cb3e650335a1c85237e83ea2dabff0d2fe93e82a00329c607b76d45425344d5fe894e55394775409fa582a50b06130034ac92f03b63939da92fb22f192d2579517aa7141f28bbb58c3aa7951c9615fbeb1b76d04ad6ff685
+d4887d9cec6e1ec2355ba1ed9bad56dbf58426a9964cb84cabbc307614ecd83f47e3856f09719c82246c7f987a6e820e88353adee2f7c58084991a3020ee034b67d0f16b921a8d992d407177abd6027b85b5abb4053dd5a1c54e1cc679a63a59b5327332860dabdcddbd29e976a242792b320ca11581d5d71ca398673ba4ca
+a3a2764fbc2ff807f0c05f5fcbad49877f9abe090324b0673e366a6d9cbf120e7b50036c363b6188d8f5e2c8cf6ee4e0146bbecdb0283dbdc3f4fda4a757c916eda66f627ded80d3906ab023c318128512ea33999ba08c604c372f742605c884864c3fce5de17320ffbce73ccf9d1b293643bfb587d97e73f91c3dc8707551
+a9626fe765901e9e15f3128efa8c133c2ee55a5f1622aa143fd2d32541badf67dc1dbe132b3d5d3d28cd83dc7311bb1fafc0477ce525737191bc318a3d6f6cdf80bfd8289d0e9a984a2b43fae6894748fa4ddc3a4015dbf9cb8778e7b957ddb126b75dcadaae6c41c48072d767f4d533bcc3692608e4153e4c51b077e0f867
+357de6624ae6abfe9d7c77638ef25a8bb685f8a8f736c91556bb9fbf31e97df1aa45eff70ddc64c3da1ec15962e34f62c9281b78970d09a069e31ca5239a449b68f97fd45453f8c74575d93ba32d7de8e7023cfc69a565ce01af28ae06949b826c32f4d899c90665dd666a4a3a887961d02d220c30014391153158c6eae0fe
+6ce5d67c4e4a4f014ce2ae331d1ac04e9131e7683843ac285253f8f211e47547bced470d3da3af611cf3eaf64373e7922488522c9dc6250e0d45951d4c5d81aff239392924b613d82f75e12739db4e4d61a98b72e912647e74a243877c6b5044041051b67446aef3aaaac555970651b44b3f3f2f38c7b1d4f806ff6bfb09a7
+0b81365831aa9de761222d9dbc17ee4e2a5f3dd9d6115b4b234efbaaf7e6e0bc29176bedfce51c2fd6a49a8214be6ab282b236219849b6497fa6d9ecbd4a3ac6dd1906829a3eb83a3011c918d1d4f7f5443f03cf7c7a4c6b0a4863be4227d96d547f700f0a0165352a9485c752182b7657d199cdc8b4d492db7bd201348d60
+41f092b3111efc8e534238eab160e439d9bd2f2881fa51378380fb7442edd63ec35fab38896e8f355fd0cfce5d5626d7e58a7c359611f6d5ee1baeab9695d26c2716b20157e7337c5a9eac8278ca2243a70d4ab9a597f457bffe8dbf1185865a9b4551d602bfae5259a6bcfe0359ad33a02e0bbd8a16061f918a31c5701820
+1195a528a6bff4042304f184a93385d98ee591a489184706152fba680ae7cc46ce18c3988c8be0597786d87de3c3a6b87e54664f7b9688d6c04e6090bdb1538913ae3513a858bcb6acf336e03f1776e93b74604723db8bcc746e8f117b1aaa7bd834f328d3ddbee4960cd7d2227f5e373bfaf1704ec5911607e66ffcf877fd
+84978f5eda69ad33715b9005104d888baca0e810c2d9bb5c3333e92a7b5d7ec5065a44cbfebb070a32e492469ccad1067d5bccc7fdae294087f9688991aaf6beba1e771e15fb03b8f867806c6e4dd7e872f370025f11ea8d0a4098d6f335c75019138502e9ade27a170257c0566ea3c0cee8b4fcb7a6ec5491ac346b35f97b
+224b3fd13965f1d5bee6ea025f1a97c51c2d5d46ba6f48eed37c5a8bac8a36ed6f0cc72340f02646ea4c67568ccab4bd233266ae8d83623303f9c6ee79da6dc347d26251c5599a52096b795a24a82e6c4b2cabe150758e9358615ffeddc218d8f81bbc32e4780d925ae0b79688c146798a6bc81f308dd00067c94d2094b1cb
+254a5c041ecaf70ae06fe53b7beaeac1cd4e44fb503144eedca7414e184e37cda24f88a290d075e278a09d9e826d666eae1312a6f5abcb55d2b88ba3e6c4b95e08246c2123d0f7552e5c975fb8afc67bf7617c922943be76dd670c50df969f3b5bf2c077e4cdc27d910bfd2d81300ce868953e39b279eb823fff40fe2f7ed1
+23ac4ce9b33883bc666e8ff0c73372918ae7b3bf76c373a3e978d32971791b36c99e0e011ca35d529ab7a5c8612f27d25fb43ea881ec3db171cbeb3a3a2d08a0aa6cbd8ee26ca957ddd557cbabe0dc969323ffea0750984dfae620b9ade74bee70f9800dea62e3d182da5bbd35b37d52d710b2e31f959836723d9acf104590
+33c48108c6acc641cb25259ef387af8c2f5476847e415a9b37abe9a9bb0c35d3177d47b826a07d4680056afd60afece29e29f8ace87416c7343df851931534e2e92e2407e709dfa25be5d31961161705e23abf87e800ab49ca6b61e18e4835cf9807d0f360835ce12b8bc11e2057402f913ba0cb9cb921383c956ef7e38993
+6d8c63c9652cd307cf356edf8266dcdcffd162822b3d5745e839d5aead8fe07a3d4e2136e90797c5d0d73c82a2d5d5c9962d02ac784b7b20174bdd47fc0a1dce504cd9fd139719df3c9d9a119667ad3e8a8967f17c044961104de938f14f0aaca0513ea9081ecb27348cc77536729efb2aa5a3daa54371207b36c5fd352a98
+cc4896b537b30fee8165b7233569a418d297531dbcb3a14c78a3d85462c5f58167a9bbabc3e81563c7bd4d67e28b9eb4a9e8e0aaa5bac958e0b098ed48c81e5f05095f4d4076a37eb859fbb32e3594131b547a0b2be52f68c98cc688aefb1f498108cc425fd9eb6668f50da7d11602b3644e1243ca05b68b86993b1d3d564f
+93ecacf6c7bf2d967da77e395e4d761bc04a170c35d1cb9040cc824a33564c11b579a113f598f6063e20b1a90bfdacb5f9d7bef4009c7dde9f0548efa4b84704e4c7db807bb6c45a59442b2f5cc505d2f708a07791a8377299f9a93d5b020635f62a1698f90487692e7c4dbce5a89830c9383ef38c35e1c4da5e6d8c82ca71
+da2e066c7d0be8775e1597ee3790b341d04ace82f8793a8699f40f4c215b740a4ddd7ed6f633dd7bc5bdfe382ba44d8da0af288d27c5ac2275afd98c0f6dcef689d6c18dd05444197c235d6c4fffd0d4ae738f708583370ab97e23fe3487e9a1448997f5ae85f0333b7acede3c2e017cc5959844057a30571d5c105cd70060
+598e46b1338b252f106fb414673fbf5769918ba184b2721c4f346bf811701118dd7bc87b99d94030f089651cfaeaa67ce98fde391c4ffaad4b461749595c359aa3a29fd8eac363034a441bbde61658a968359309e8cfa46713c28573a8ffcfca320a9b261b924d0b3594752eab93d3ae412e42498cea914b060bf2a3f873b6
+1d70d50ceed77d7e8dfc8afd686749bc2a1172723a9489c1ed7e50bb32887efb97721c2095ca934ebf0c5a560989c726986287e6e5aa8f8b41cfd7966973de9fefd7a951343da41ef7deda1a90a736ecc23791220058140a9765a68da3a05410feae05e892ab98480fb9a0683927443ce0ee6a3d41af55e6360f365e87d3b3
+66f49aa22a96948b63efbff46f2877a5c82db0e3350f875f6e06008eca65b9abd3aa46393e634e864a2467d03fcba30c0d901fadcc4f32be09123a3097b8668039b2ddaf65d9fc0f162762633b2be257c3b6d1e219495303bfeed7585fdbd773a3bcf9a9216701ed906134b72ecf116cfc158e567e86bb094dd75f7a31aef3
+95b57f96cc4ac739312fb475491a51a87141cb9b69d26ab25ad0cc2db3f5fbe2f4ac62f763d0e07c68a90b3f080cc4439cc9203cc35f1cc1b05c8b15fc8da648aaeaa7c6e9be25bd4ab0e546cdb4fde2d3e37492a0d1870427d2a5512ad4a4404fca76525662bea2f092a3e459a57c43bfe967f825b337a149b4548fcc6092
+833e3601a7174d65428b0fc127b395079ccc41eb0783ae6a59f27deea923ea1218004b28ae86ba9fd1ac220164e56cba287866e237994f7b3c9f87c89273e87ca37ad2a7e4b49f8725eaff5945bc1e8a38ec762a1698f90487692794b8863b8829a12f0173cff77206de0c51863f9486b535195b402e6756fbe9aae85b0fdd
+cd37bc42e77755eac8c9112fe050d4ff4f85b0593e5ac5fd15ccab06d233fdde2c4273fe4100613a6e216246c50dbfea5ae4d73c9011cb57354bb5a7367877f8b713109953752e71de96469b5e7962cfca0a2801a7cdc744ac8eddd3faf50dea43fc847271bfadd691b25d725ea0c048d9bf3a647a28490e28dbcbd776dadb
+a506f4b9e48a19f6b8c88563974d27bbedc8f90ae194a515887b33acb58310d8d9a6bd66517239ada895df2b76947eefbdd95d5b4d4249338d5d4e79fcaaf80e6021e3168d31d46f250a21045bc26ffeb66de912d2f65bfdfec70f40fa1fca155be79e19ef3c47449aa13aa2cc4608ca8cb46dea76314364250fa7b18fa096
+accb689cda9be75c1c97c54d163d900f3a2df0b149096f267e5188eb70a72516d7902ceb4d2b53196e97fde812842eb18bd8b81fdca020aa6fe0423256d62c239db9b468865de7308e892a9c3ad9de5cddea3377b83c5525fdf7c68092a6fa1f4dde10ffeede3d575db8c76304e4693ef0997a01d76c8babc93435dc47d5d9
+2d4978d73a5eee6d1c3faff112ec24f2e9ba1b7fb6b77d1a17b4218807d52f2b9b19dbcf792de9e0cae5a63b5d19876c8747b85820ed5156dd76e40047d604f956eaa13f088a40cfe12d7bdb48dcef4d55bc9d1a36f1fe388b3a18b08c6c814f95e576fd37cb04ac2a808ee2463beac694d5242b0ed37d7ad39f5fedf6d24d
+e9250097259ef8b2fc7876267b6e4185f011699e91aabdc29d8b6a7b2a591bd24a20558c0f4acdbc90c55a2d946b1ca6462f2e4c6a1f6bddbbb22c71db352cd5875dfcca9eb600f40b5773647bff7062e3a70007b1b67ab5082ac00fb543829efa14c2de67f82af0c1dd2df76f3ecd59cac53780c7a170b66066b1d2424263
+9d001bb68503f68c73b18ada215459efc7892b32dcfaffe8e5fd689e264115274a289b99a16f3394e746f09481cf2a654946b67b1a689b73c8ac076925338161fbc0f7e562286cc287afb9798a54d9fff7aec4f29c792e455f803b855898899d4703504f00a83b937f92b429634732f116a69ce1276006e63b2058e59e3879
+5816de7cc7b75d480e72660527a72d87dd111c6a598899f8a4f6a61b071e349b61b55293da28c5db5a3e3284d8ca5d90ca4826dc140172a5f5ac7d839256ee9be9cd45eeac3aee11a1fc4949acd796c52de69320310cd143210458cf31c32413b180af54f2a08d4211e0407de959a46b569371a4cc573ad77d6fc07a6932d0
+1ac150d96fb3f028aab2fade0823d2b606ce517257883042d716c016f4377b8448fd461a0f710467c429c99db02dcc30a54d6e8ee952d68856c5f47538ff793a38d6fa34cb798b204e7525e898bf96edf9f5664a07d91c16a8e8b4138364fd615701e40cf9a8e0ef1b8d531d544053b3d78665f4fdccaa3a2dcb61fe360752
+a79a19da5db010b0d319b97ca6682400de421739901efa66f9a88ae97cadfd155d359948d21fdce3b4722e49d5989e2d5d6fd1e6a3964ebf12e2c72ac5035360cbbefb77bf83bf5e983ad39a5695a64e0584e5e5ea60fc4018ff70d6b725e51a82dc5575759d6130ad57e2f0aff28484beba6106c854df1552da18e6a886f2
+f75611885814fafc8a7befcf6afbba04809175281d78f9de0f3574e19584a7133d3a879acc2a76fbbbd9c1dd69eeb348ac699b5c23637c5842d6d3b8852a3864e44afbf1ad6dc72892bc4042e8d4a83cf5006849b4fda58b27200212e40f7b33410366a19349eee37d5db96cd5a9a7a2ec739ec3716300d1963bcd6a327afc
+a6d3d0ea4a530373c0433418c133942597fd01baffa24fb7eca9ca8925ad3eaf574c3590d52f450a808f81a0c17e1735b7a0b33e9bb87da1d4b1fe5982b5e67d998074e92eb42c9b89a397bbea6640ccd8b85c5db458fee3e9d7afc5e62c372bb5df0931f807b0d9685db68cb86180f30d09471424e233e882fdeb3dedb235
+ee5aaf4fcf963a215a0611d5737941b404f56f5a09c1257cf81f1fa5e4c259644fe058f0ed1e5ff03f2812e341f1c32aaa2eec7378146817aa946f974090fdfd8ef644874a77930b7507532e89a92e9b8bebbe2b4f4cfd90ffc1a12d05e40b30d81bd636e56012e6c1aa6c0a0ce10261303b7b87ccc39a78e178492489fae2
+dbdf46a22da38c23da154ab5b2040b05a2ac11e0a33d34b5ed1e4bf958873bafba0d0c9c1a43a566eee422f47431b6a6958a34bef02b91b868eeed9e38a6d20d7af1ea66c21dbb0d42f273633f87ced2554519dc51368ed60ccb752090b5e3c756dcd024b7c2c3de9c02a79142cc23b1bb5fcc08e6c9777e1a41e86d8b0f07
+03811b3790eb224a6f752883bfe0860715e334946a1c8ea440cd6710674caccfd90db1897f020b7307ba2793036ec96347ccb1dbf78c000e49c8110fa5597e2fd2a0c48ba0b96b18b318756488db3ca3215e958b34f1fe9aea94a1a7aee7f697848a2cc07675822783c9c5807ebcb069f1d070943dd926de12d88c35592789
+1a420c985b969e986e0192f662e886d2a5513dea2d839b35d9902d4bdc6752295b761292a63e997c20051a040314c6a86fd3f2f791d7b5371914e343e61428833dfd3eeadbdf6cf368fe636212877d348e95c2882a5661ec1ec028e76e944ef033662cb1677ff63df2a537e89222348d7ce4579b5fbfac2a71b3cf584c0acb
+e2dead719b06874a7b4f725fff17e1f5935aff4d50691ff781d6772e4e916430f66dbcc522aa88af24b2e30b5e3264558624ef3e8792c142371320bc6d31b0706dc458d81b860e293d47d70e1c12fce97acd06fef46aeb22c8384a7aa66d307867d7b3c90544febf15254b5639724280c08495ef3198afae50c4a64ca1082c
+34d1b181053c346314cac3497f15f32946e0f30fcd48ad64ce05db65812e9b256acd53afcd3900add856cc73b2bdbcee4b905f72845e4046a055b441d7e23bdf8de57cd6b7449d28bfc1376bfa7c1deb0aaeece95e9818feb14f5ee6cef4ce55553f6a314ea042c8a3b4f038eb223e03dde23d4dfc21b04afe0130db1be221
+639aba016be874d16f50ef548a33c9aaabc701acb0b0e1a806d81d0a4cb21c0f8b7e064027febb8d9b98c0caefe7bc2073009c9f55d10f4b2653e08262f2dbedb6b3dc5b0649abbfd7a3be625944fae5064bab68f7267f8cd3bdc732537f8dbba779e3f50f607720fefcf3a2505bdc44eebe30d8b35a59417693a5d62158d3
+5dc42758b7656cb7331761802483a156c5d47ba1926f1abcedacd4ba24a60488459e5a55fde0f56682d3abd004b29438a735b7484afcf057cd4f32733a9caa3ba2ebb778097e30ed2ff7b56dab7e58b4aadb109fb8ba2ba69f1e661849d7c8638faa40318f7e15cff2cfa260da0451cf0fda569461f10319431ee42aedee83
+df31f72d5923751745713a3b71fb7b5a7ee2de6583aafff1a77be181a5459e59e8071b6aa9a992e67f7d34a826be2d664002abe68c4d09f21799e33f31e86e2d48b250910d5da3862fd2ba75bb48dee55a88b6f68cfa91bbbb0f08b77c56b43ed295578043dd3675f9cfb7ff2c6cb843abe28974c2e8fecaf0ca923da144f2
+d91ee185df2c0e9e1c7ea35a38daf6cbdac67db999ae9b83fac72b22be42a2f63b470c2f86eb552d482294b95f01053abaf7f079d51782d9d0eb7ce9595228a50d9f2646277e8d9df31e26c2c8a434efecd49b53341afdfb41d5d86dcb2ca9a3f48ec48eaa82983cbc69397b76431110f6724e7cc0f7b4546bf41d073ff25a
+6ad6a43b8a8f50062cbbd6c5f9b3d09e0f161e942823dd28e01cac4e51f7ef5eadaf6a8dec6853b2b412ddfb8dee2dfb58e4be766cbcf1e8a954c8b67f28d7a6675bfbd581301ec31dfe47bdaef075e73769fb768686e19fe0d5333e5825b0b98b9753bd00a5b18d6c595b5199a1004b745b205db48e43d2e65a4b6bcb7f69
+3711f07e367eef6588bb98c5ecc3a951f1826a0db31a440df73d1e8eff42d31322d0730360a4af1c318529cb3faba1f219d0dbe62d2aa5fb998ddbf78ed7dff1169e3c2b32bbf926be863c5dc357bf95a378ff104c9634c2489f944d5070795cbfef6822f991157cbf1267310922db6a8700a85ce19816af9f5009791a1db8
+72f04ef6227850bbed40f105effa93ae747f237ebc35996a17def8c2c553bdcb87fdbfc73c562e619d0e22e8734992934cb13c8f5bb6546a519cacb85974919daeed4cc39315d964837dc7120c16faf23d339b39d8ae5fc555ce04db33e77fd890af32d3c21507cd181336b9b1e8de43ffc805843364e19fe9a91c89161403
+99ed0ce9322db840d2d559e6e2676cffef5ccda610a41a36e17a3851a9b6a3b196a16d60ac56ae04a23be73f1bf2b6ea6a4dd5dd8fa498c0bd9dd7d64bf26227dbfc0ad2da8b617200762678036f0553f3bc7551cfa19ed13673b7ea9a6386fcfe0a3c18521a2e3335fb4c2aca5b9d10616c657c900c5c7709dd6519406ee7
+09189406a7d3afb767e251ff11d55feac2cb7aa8fc7ff10b9758bf12cad01b78f802875cef9e8c25a876a11269ff1c9236e4b9d2010ace6270a23b035ac333d409aa96598a093fd97d73d3574e4ee7b39069daf9608b1e1b910792cbd5bd6b41cc20d10e8eb7afeea758913e8b7e243dbc33a760aa8f73400b3f8b4d4d8175
+d4ddd12b49a7157d1f078a77460229f29d8af315e29e5ecb386fc32b41871efc789ada932f6ffea4fbffa07055cd5d47a3fd8c17dfc956132b8117345e17292080efb5bfe77ed2a956866509ac8e896b737639b6eb6dfa5ad97a27996df5ee0ec807ba74511f6a382fbf1606cd813a8b92ea5bce7c127614d8c9cb19369772
+00fc8c5b8a615f8a3e583a440860c8602f8803c391ace1c88573dff597e1e1e86a7fa09b762a1743d10e2ad991fc020fa9034f7ab37bfcd9d8add572f89e7dd7132972042f8f80de3300f4424c45449e80cfb9a7c6cb3ced41d03dac06967b92822a15735e0b4b3e856107a6f5dfe5f87c88e83184462df50e2b3dc73cbbbc
+e7e2527fef7928efa85f72a6645788480996fd1fa5b20f6ad38f20f1fe92de35ef7f078faf9780bccb95795cea7da36a0a59ccba9cf04eabb9cf608f13d30d9d5060f11ccd07240e2cbf82eaa10fa069a9ff5df33cc5f04291b62944d9c541f976021d73d34ef99677bf0c77d976ad480af40a182375d75d8799cc3a98c1d3
+db6669237461d98c2c94b47e5d5a16848d161bc6b8d6bb49ceaedf19e0a1445b2b43b5db1ee6e7e8a56ac3e39308adfacc682297cd27dabfa64f4859121654cd4bb804b75d6a2aab1ae308e37c8764ff9a50dbc77d4980780405fe1794527b7b9dace056d7d27076955cb9084426d1318991e40c2c1f7c98445f324e74fa3d
+d56bf9658fe5100e29d2815142f22c8b0a0179c89389737e4b11b18eb05acee9d75d0d52a14bd709648947c7ef660267aef6ae23fce6ffb75ee208f0afa915fffe85966de1e8aa6dc68d9844e3cabd469f058164af943d7aee1b80e7edab46117cf4e5a804a981404232462c647cdb1dc827aba92f3b45960e791696aa7157
+7de6a00c47b6bd5bbc565363fec2b112048790d9f880dc1547eeb9611b4273d434cf00c460134f9903dfa2512bd1d87be35cad3dfdd73409802e40834a9684e8450695956e1e9af26de84a6927db278ece1a728e742e626063b237a101505d908e1d9715f9d0e2a14b5405a8ed94748e2b773b40e25acb42241b241a1a7425
+54c9d2f89ac539ca78e0a7e70cac1dc181aa3268d3799f001000f4063d315a7c780dd68a431b156ce363fff3d6c41e24602658868f38d7e6925b226b6a11c7f1e2b5fb67df7e1fa5ed7fa683393ee2b7834276926494ee47562b2f05f17ad122c3e1d91c073f0800ba544e8a40627112d2ede2e24becfff9af3898f7b736c8
+cb62c91206aa2964a70c6e079e1c5fcf73478409c4779840ff0ee47fabed23fa3dcc495b43a13f89febfc454c3d0839ca36095af09c48a197370e7b978f7f29fd2e61e782efb3a78d780f62faad43f67ed07340ca8bd96d41f2f2367c57748bc2205df12a4321db5487249674f8daf15014ffaa6c890f5c7d9fbc97a0eb021
+93b541f4f3268803a6261f6408009f0a655a5f2aca3bf7c69e344f1d706b2b4ce2e4fe45759cff8461efb66f320e8e5b585261fe966cba1f021f93b0ac8490ea015eb1fbd1f7b5c2a1203480d45661826479c3afb67e7619b8bbdc3202232cbd84b5048d84ae60de9c27e42d08213a7e6c6a89e2ed1c9fe24896194ea93bab
+993c754fabb973193ad4cd3b3349f7501ec9da3bef61bc9c37ae15e0a39f7927d931fbb3904e841a61258dc6f9f817f8968e1b56cff47280572390142c3506fad50c1eaa389af430823b1d50d6bbb8a7bf0bcaf00f09a9c416d7b6eadbf3bad6c66681b63e8e982b923eded93676928803ee7ef1a92361c8d463a50dec7611
+16fb36b1e5645d6d11b6d9d5915dda307c45768b40ef3eab0a3cd47795857ebc906df50d62a348f1b50e78ab823bb9ca6c5c3d79e4a727d2bb4c7e0158f789a06a5ef10fc678b94678a1494817474ff3eff2e4365abec2ede8803a52ae223bd44a9f6de006f25411203a252d3f0a7d31433a67ba37fdf5c19cb1dfa8f6f2f7
+0a20e40940b1e2649b409d89bda82d225da83f7d7262b2e833dc39109a9f7c52d2908410feab8bace469cd5582d69f83c127cbf94b2ba18a5f693e8addcacae9fee9efcf00b43426908aac0d211988aa456890b250072e47c849ac5a2dd3ae7aa094d2fe2fd31b283e58bd247f13dcfe7aaf7051a9d780aec1971985fb6c64
+83ad6e7e1d7802bb6d249182642b478a1cda88d141b25e82ba91ef65fdabdddae37e9dfcbe015cea798f895f9c3f2aacb14022edd5a5b613b7c6dd2d1095bbb107b03af6955cd516db4c0f6bf2fbad7da9984948dbd8261a0da69898e70666a1f0ce8f0f657635f50e55248cad29a7e737277b54bbc9a6879839c1652f871f
+2f2f37b979dd0129cae254d20ffe4ef7aae24e07191c0a264c162360e328cde396d7717c5e45a27cbe06430b4e35d1b8559c34b81a7ce00ff0efc1c98a07526dbcc28231b1fcd32a3a8afd2f757a4e5867ea67b01c8989da742222c8cbdb568f8c38796f8ea3b9c782ec1fd018284179897d1c09f184b486a61fad60490c5d
+474459d960927e73a3a0f884cbe6f1df3e6b7ab90422e701432722286919c4ba13e1292a8f87acfa353622a10115e7899f204b5358fc8b9ed670e4bcf55e76e10284d2912c9a00b36f391477de60caee3c239f990343ec10d47fd989f3719ba0020beb04fcc3601fdb5b19254abe0a3026d47b85c6b2b206213adbc8dad30a
+7fa9eded4e736787646900bd08eb1d57ff1af0a67b83f6c61894197659e0d6563fdbadffc51c190338fc5ffad81173827f1bc7a00db84479250daa018efe4ac6fe33b26bd3765dd0d996890b77a82ac9555eb388d6ac131c03790add0e0b5aa0fa2ed569d3ebf276a7aeb9ae7f0746f56148668120fd65d221e670d6519877
+52adf0dc0369bbd0025f9c43bbff1adde52942885e9afdadf8dc452b845a1a37eb622c08a7bc0460d4b1b417b36e091edc6302fea4e47939f30d5e4d67db5cf35c9ccccab5c393d4c61b8e88c3dc14c6efa5cdd534593167aed46d9e2f758703cd272ebf5ad2dbfc2dbc7cdb82a4d88253e47dbd33abbcf72381ae994b6b5e
+d750dab87b87aef008d5a76f5251bc35921c22c51aed2f73bb9da6a9a5d43ef6910e25730556cbe8b05a3578109ca2dcc8821b223ab51ee27112951825028b7d48de5590c4aee2a94c50d589644cd34f4a8c027f98d769236f6203344994b05b4ffe317137d0dd6bb13c32bd8a066d2ee7915fb51d5ec2a2b73605a68a6a9a
+65c1521ddb30b74e5d760778f1b1763c0c935fc8119e41799b76304fd3d2da90155109fd20b31cd661dba5decf444ef8431b3edf47ea1754a2ac96d27342a5cb09611b90126c884ffe27f7cefa08f6b84b023d3095ded200a24fa692e84d3ea4159d90ed93e2cdd131faf7ae0ef6367915c47ba9029e58550a36097ae25c8e
+df5fc9e8a3568d36d08e826b377044214415bb82271aa769160959d78e972cf5a637fea493fa0291703e6c922e0a4684fcea3e0c8ce794fca23a154413b095c0a2bef152ba57d911fc3d9849e7024afdbe703b4c7c959cbc01802f413236999b1a749d3a12bc3c190881322fbda197a84859f1d4d7ee7652a5dfcfaac40f30
+dd003f807e9893e2c6e7892fda5a67c90c344f7220b1025b61fba8651219c6499080e37513bf84135e95ccf1069b3296df6c6b4bbe46f064cec3fd60a0607393b9f29353f3cac0ed86ea823d2ce65174c9d69500a4bc25fd8ffaba8813116c621d3da8735a0e13caeacd7a8931b358f75df4d5574e0461327b943bba799c67
+993fe07bb180375cc36d07734ea13a92a3d7afc1136938e8d4059c919b41c7545ca5d469cab0edede80b627d31e987235f2350ff0c9b75a9e050b0537331e70f0df6aac3c5581bffdef5d1b24735d15976566621ab52b15a1bd4d6725e5d5a69d5e2867d209929f1184b8478ca85fe04dfc6fdc0164a76ff9e5da5d3a68d54
+e96463f64d34c9e0cf7133df9a8c18a6689497adf6a86e82f71d89c2c8ccbfc81ed616d66ef3f29468bb57b236a3772889b4ca39bd70d3b9022b15830bf43c462a493eb29b9b2ae43f07dc29542d426e659c682f89f2d655e7d94cfb508b25f57dda601e1df6c5cec8f8565ec110bdfd1ae69a3a84c4cbf12929929ebf575d
+7082d2428dc0fdb93472f793865a325f3ccd66ecf9072df98b55c6a788264f0848bca0bf864f4a0d4ec941bfe339f60ee9e6c3ac5f43031c7aaeab97f1e4831306f8911ee45ed10148b51efecce6b7293b8f40b4642af614f204af6c072b48c47e7074822570f317a5fe730e59d725cfb698db0ca73c95a532771ed2cf19e2
+729dccffc76b4c9b32280cc6cbb1e20bc5a016ead5820d841d61614c604c7e4e50ef845e90c140d0c1c7a312634c59fde56c147a1c394280f01b78d28e70f31bacddf09cd5efb4bb51f956280aef96e617b6fdd5b2c3e9e625680a34dc2422fa6efb7865ea061c8088681532d8103b7781294b028efe0b64900a9c240bee05
+e73683859f5515b3076c435324e2e2c914b76570852a7b7f562efb6121a92ceb9f1d37fd2b1cebcde72824d0a6c1e91a451be797cfbc3b6d47759ae09b1edba945970648030686fd859afa8a6765ee025134bda9c2d6b13c22fc48412c9039537a03f831f3d292d43958526b9340a0489d9d7808e2904ec531c7d56e17592b
+f62d1c9047be95c0cae9be1785428ec40897fc27dad0714654ff8fec5d7188b396304161dd65ecb626ed34364d4b06610107c20cf25338a3160ed462c2746b21f774e8621a1b7a11b6ab41a727a03011516a993a8bffe2b72ef23c0f30f23a6a0d41c579ccaf0c97c19580f3f0185a223e526f83a19b4477e877c67851df59
+0d1e29ec76b7ea84bbc7958f4fafcee76bc0602e09756e324c67466dd46721c92010a3881514b25aa093c1f4709d60df96bf47f2c50065253f2f3cb16d66b5d7d8d8281db3632a6adc24df76a72d4ac515157347ea5ef7defced3beeccc46345efc52c6b2fb3a06b8d6d65258ea44fd63ef9f553882f09c83a776664ab569f
+3ec7d69b8730b36a2ae6ebfc3fe3646e286ed25cc8325154057ebc9edabf2812fb8fd247d942f254e5594b5e4ff122af8f04c9d8cdab08003df911456236397c51b4efaefc1011e3b3c5d64dcd35091626b951cec80e89c6cbb9b471b4314e5ae0797f7d10c5505f4a421d02af13304eec5414d548c36d3c99c8efe624b310
+792bb3b5fa229b08479ea9385c55ec505270902e5568228d5332574eb1d22b27b9fdc57537852245a273de669d25019f771a7a5c30d8d337c151cd2b776cbc2ee89351ca5c4ec2555062cfa668bb75f3203411a71bc2ab5825b9ebd0621893348fa4b8e8b4d9e458a429d6d26ebea99dfa01b279210c3ef464426627bb2c6a
+8f4ffb219ce04a4564015575888d0d76e013f79ea964187a0d6ceae8753e18bc7f0fe928037c1eabf3769214975c73f5ad3f0b49cc80d8617e500802437d9020a4a0a0e98e43b9c16cea472c0d5e4bbbb7d54c634e97228f3c513550d63c51df10b22f710ba41de00e3d209372c276f7b7530260b16f0c8bf273cc6980f6d3
+63b94a94d8ca813eb601a2f07328cea787abf0e00a5005ee49805e58d3c33a5cf090759df241ec4c871257dcd3fc0e7d083a967fdb3fe8383341452716ddff24799d651bc1e7fd4931c0e7c1a868846c77ede5c091a13a18c09d6d13d103bcdb5a77c16296ff63263f0dd68b8f88d3ed3bc2e48ea51c5c18029720be5a64cc
+def3cd0c101b4275d973be1310960788860c4b6c05eeac7d827bd9963cb0bb5e169b79c146614c4a4842d5d588672eedeb304a89e2ceaa93d42b601d5aeaf79f9bf8a9fbf18b926cb2e626771cd7e2e07447d355e0257c22848f48906b58408a8137ea44e90ec5c804aa9700ffe0677bd26479d01317eda6821efa7f341846
+d3d844e272385add9ed441c15b8d54eb50614bf2e70351a328b55997cb0e3db12320bbedfa1044579bbfdbe7380b6a3056bcaea088c85b97613f13ffdbbf6c237c25dd8e7b3df00cca0effbdc389cd5937ebb2395ba7d9c11253d8b7fae27f30895b1107dd460c78bf21c2022b328cae888ade147afbcb01a477d1561a322c
+22b422281444c30d7319627c12f5775b7ca56cf58c0982aace7ae0ce84b5c4b20a664c8efb1183e3e673e0b689e43c45a7754c3c1a30a3094ae9ed82f5286293ad4e5e92ec9ce384ddb545f9a00723800acd1669706e0a5708679bffc0f3be2831c28be5ae64f8535c28844f5db6ccc8eddaf97a85aa2b0786012da0d69945
+13d31e7dc3b4f1611db18db7ec703facf71326f9acf586f0bd32aff925abaf86682819f37e8f6904027cb5731228a512094e166b149d9f3b0d0eabcc8ca6ca6c41f20985e8eaa0ed74a3f7c7982aa1a4f247eb08f6f087bd8ec8d789c6fde9bb75e294ee405de885b33d192b0cd0d0f51903fd55453666bc10072579b21b3e
+c25b6f0ee17043d7c83ce1ec05994da4c403bb51ea25d27b084fecd5e596a43d37fb6f2f2d5cee95e7138a4ded8cd60a9eb83771f1f011975e2cfc4f1ea033b7240a5d87e349831cfd7e0bb965df052282298bb25d0c5e72ae086ecb80a5919a0066f2ea5885d112fc08d5ff78308aab9477f3eb94f23a9af9166901d79ff2
+a3ffd58d7a8062b50f4b1ef73ece442aba266ecc05d275750f17ca0af60872f9472e327b5a5b781eae92fca9589289297fc04498891b33a732b60eeda5e8941ed72db22cd99aec7687fdae7d2239ab496803fb7f4521e3e1b1e5df3cd5559fff7ca4f014a7ab3c712689117a1f66ca2cab11b1a930336d56947746c2c2ebcd
+e8fc576c053ab8625061f909243adb5691c22bab9e8307f1aff9596ccb5304b1aa8451132b22171dd9b0d104022e3fc253ee07e73fc297f75ecd4646ee6a21742e033056e7a826a04f7b525402656f8500556e6e378b7051bada5a095948a1fc651a681d854fa51825033233b26c4ce62c905bd1a7d5a4668301759b2f7a02
+b944cfec5c21b918e4b29cb3af1469392eda968c5b4df27a5e623661f6105f7746c4150d005b6c1d38c731fe6f49ca4fbd6a282322806f7c0907b4d6fea19153f465fae3dabc3ef1f9ae170653ac71bcaff7a315cad72204077b92d508b23cb237604859ef8c2ad8490dca4f622e16a60871214b719406e0937a14e7754fcd
+c286d6746d8d299203d9578655cfc574a0fe027b3ca449e19facc444859f51ff4a3e7947e76b941bfcde9e91bf49e424dacfc7f3f2d57d764234604908d44e9cec3cbb1a5976cd882697f2ae69b46888edd364f47a528bd092954772b3592b7108cd1bb60de961ee82220f4cb2521f6fb64ad02161bf3c3055ffc7d97b24a1
+e1552a5e7f3d3abda7779b7f4df6f76a25258cd609a959e66f301ebea94faf846fc6c3b7484d4fd1f2e34c1840944579a4710e7889dce62f1aebfa5693e3333f1f9afaf41439c9babbf49acf54571630ca58ff3daca297839d4384c77d00d3f656da064b7095a18290f52e66a6020b4c0d0e0e6d5d3af818670c51c0b5e5d0
+d20f125c0f4405627ab5a0c4a6d74a77ba732afcebd7e9c8b091ab697c53e3bd5fc00dd745b80a3521ccd233df15f7fe9c40d34a3ce3ebb52f2c729975902d6fc955a6fef71d4dca28a8b36c1bf9898fdcef49546e82492554940a17cff78d5e59cbc295b5082458ccb0e81ae519e382ff1fda6caeddf25fcf96b7b35bd7f6
+dc16a78361c8f0cda9c88e29175bce6722a5a82cf04c712c5404af8262d00b2dd59074f26cd668c2e5b0cb8f158e18d20fda399ac84533ac81a904b1ec24c082cfc266c6b28b15c4e563a94e52e5230251850122eaa893d6533eece0d6b59ac1d669900cf4a347b74fcd44aa62f4d4684672d7602ce25106be3234494c4b01
+c17919d8507e7491902ee48e8999a9658b97ffcad2e9eb49eeaebd9143f556ac9c0d9ff4fd73f084cc133af1315a0fee2248520a812f0551de463a24afc6809a68b50bd49b329d9a83792331330a1cd3002df4067518b88628779584e2ab85fd4fd9a35777b518ddbaf58abaf95c932db9c357984aa5ea5ec4b0f211693ce5
+6db21538d1477195221f4326bbf99a4bfaa9218ecac3fbebb492d36f75068093cf55fbfbb8187ef5af1d826c8882c499749bebf3ba5c515e97de3f0c222e81f03fb2d2bf4b2932ebcbf154ea1714225d6fd78ffa775de98dd6c34b07342d950e73f9c1e779d19ad24f07b27b7129c5db28bb5a729727eb6c1f0d0dbf87732c
+d7d49c7b0d7159315ce0694a86dadee6caa516ccd24d35333855666a4e59660aba220b351a8c88e731b0d74d3813fd56eeb24adeabe6ac2787f6d76aee2787f53e8238aef7950be2ed09abd13a18da9267f83de74522855f0cf1c584ecf29d139a14f0c6432b1ac22ffed104590e14742df17847e1ea3be0c387273bb8e121
+e4ebea0be5c3f8dfeef4fce37c98edb6ac1a69ecb31ca57fdc725013de578c9d313f47b3f120d09f3d0492f9bd5da8c890005e82eccc396d550b8e35ebabe2a8633772518d10d28a7e8981cb07b9ce1f9889e3d03ab6f3f0fdbac1d305c617f9a50777075977b2612deed34e1296ccb8891c7c242965a397404e00be6e8274
+22cdaf8da6357fbbe3fcaa932cfcc8336bd56ac33950900ec0d5a843faa9dc64b77b3a993987c14350faabd948b3987a87060914724d9735b264ea522ec6df689c232e05c90512c0f12d5560de1890866f09ec2cb4967cfef0656260f54ed8f0245e3c2bded20c3d743028214b4ca73c7b0d535d70689039ee0a8019cbf62b
+18b029f48e022f1ff1f12ac795ae12734ec3d0b7899259cfd31184c428c761cfcfc1c0a477999e7d3595225bfc500e681f29a1ea66fa80f98bdf39a89d5aa56644162aa4ce28842a529b16f780eef2e2dee7511331804a58680c81a0da811283e1d572bfe58ad58fb563ba903f5a27ece9bf6df047bf61d7cbb12dc63ee348
+a8d4f4166827cbdc406327395ec555902b51e8f03850da8f9542f0d253fbbb24b0fb992572dedb700ba3dd338cddee0e532256f2c29ff22e41eaecf8cea2090fc8ae42a0dd2406d3742ff95dc236d83b3243b45d2aecff891525a0d429dfa9fa47d658cd0b47bf508daeba39be9126f6435fd3e21ed77b884291a52b1299c4
+13df2bd32349ce7ad44d88719bcb3452646f5bac6d04c51700c96e55608484ced972b512418b7eb9bb6c7873f3d1477a12364b9b27f6feef2e3607022abdabb8249149acd7ba821f811af603efe20409f9acd261e53abbf3503d914db79164cd7ac0d02af00fa9eaf159c6ee1d4e6645c1db7998141e647c1bc3b2243bf3bc
+6ca9b4643147fafb0e0aae1fe24569f4615857487f1be9865131764f8c6f0675ef6798f18ad4e9d5ec26dcdc5a7889a31a4e3a2c97933617b94e188d2dbb67b860e85e0b210aec97820c5a15f57f3ec6c846f6582d9f0bf99ee05b07abf64ccd3471a3010a63ebcc7cc39c7720f46d91e4d5b7b59c88da8bca5917877939ca
+96763ee87f73cb61edd167d5d13eb6175c084cfac84ba56c6390455e42f474967dfeebc63a996fd4e849dd8f9692ad4a28e754f6774d37fabec8005429d3dfaab837707138266056d79e3be5ab060f6a0947a2db1220cb7b298e2969f2e8f4c14ee511834d7cf6ffe465cfb8f7c739e4526b13bd9aafc6c7f6852095aaf1a1
+9c9ec78afd3239a5fabe695b35b631c50aaccc8c4124cd9022dfce5cdd83a7c1f5cf0e8646fdeee883831f2b720e507c722c32655dea19a26e4f4dafa3f824c2abccf063ef765a6480956f88e58aba6fc8768fa7648f75633b55808d08e64b9186d6c71de1e6bd50c290db15a4c89014472934ef315500666aa515d38262ba
+069d0581681441740a4b7c1d1ca361929ec8734af8630400feb0ba59d8432543e85c5b2649c024eeef3f30042eac1bd6648b0e83dc53215058cb828f2a7cb910a080e3fdce7312e66b529bf17d4e5a86d52e206906e431f83051b401265f0445f0bb1f69ddf256a0408e0b8ad9ceffd32a9ccdf7b9402d821d739e06074425
+8c8ee9bcf7e1d23369276e58afbb0482d9eb85add648fc2b726400f4a5918494e6e14b1d46bd01ad303464b4367364d5755cb7cb4c5f32bbb37f3b7177be38f825d370936b3d291a81019a46ec2bb79a3edd0ba525a5e016f0883d0987d97e8e6b00620bbce266fd14978bcdeb8bd70cb0997cf11f40266a7e5056217917d2
+e720e55a923b7cfb5756028d34e57d775de86c7aa56cf7aba899d0e77a72e25dd80dd8adcce7c1512eda0453c760cf36a2cfa296e43cfff0a6dec28113a1889db68f0258dfd69c291b581bb5b40502f9e18801d434f92f7d03b6ec16254357b57ba5a4bb0e4d85297e8c4dbc1cdc80dab172421cc1c1dfb10cf2c96d524a8e
+99638bd38eab05614784f94ef1a4ecfbd816092e18c9ab3daff5738efd79b51db9a93d2ac0e80479fcd08054e0f5399deaf6398a0838da62bbf4ebba55b244c7f965af5f3f641a39455a725091cd0bb3c16c9edde9269b586955e5a866c9a530598aa54957dac68549ff77cf685173061a2430dfe5adae6a12896d5952cf37
+53459b93cd30e9bc76b0edca624c3d85313bc5bdf4cc76ebb82e9a43d95bcbf7325a8182f07aa4f056043340dbf8ce6a187c1705a3897551bd0e1dcc8f3fb09ac53c7227e85c070aa696fd3f66bb9dbf2610ffaec4ba0d37e6acd1c340ab5729c1fa46caab96fd94d4e212ba097252b701d72855fdd72c861de1d69d0df79b
+a57fa6ebf631574a83664223d95faf416468fae864dabcd2a71da5095410d6495d2ef4868fc7dfe72d77d7f30f09ea3a4009d399e9998b37b7745bfa5b78465c523984057aa9c17ca428787c7c070deebb7e4e3e3c7429cb697b91f5af5a46114b788df2cc256eabed34c857e1b1e5634d19b7efdfe2ac2bbb4285e5f72b65
+aa9cba9cc7a9af330f1b7cdece551d71278f8ccc3461ccd7c6e4ba4d693751d2f04cb01c4afd6c34d89fbfd7123f562e57845156214554a9480d600ae594442cf92821b3b0bad2c77f1d84cd90abc3686c7b6f8fe8c9e623b1e5fb5cf14f374ff0730e8d51fb6c30a3dcf3540683d0e6ba226e35e4aa80e6d45305d49b0a59
+5f84e36b367c2b1662cab9e4e5f359cbf8bea18af2da7a2353aab63814f21813f0145d8fcded42fe56ec9b90c973c7e9ed3f2f7b462a91787d5d34b8a30fa2c762410e727d8544bfdb12cdb62d95df6fb0afdc872a78d268c3665733e153bcb09176b22093dc16863793e3be3034855d0ef240d26680c9906debadd330bf92
+ee93ccb0099c2701a2e71b6861199207c79a30624f1e773b3fb5ad8403d23a25f6c53d49b16640410dfa2ded167385430aede652a61150852546634b92d2d2a0a99d6a0467de61f35cc49c29bb3771bb235fd6339cd257b0e09c96574cdae1182f09d27d3be66602f220f9aba917c0d3cbdc9bbf4d20f93c11a501b4cf6c67
+974824fc79f3cdf59d6d10772df8e005ba2b70dd5161310dff02b12f1d488b8c07de7842c33f753bcb3cc10523beeaf1a0f655194cd977311669bc368fbefc526d81c88693b293b5a64580422ee11c776b1e7d4436cd18af8f1dbc50a4a5106bc781a1d458bc7752e0f06ad07b63cfde6abef355a42158fcb308b2d0e25861
+88b57974a2d301378b9fc9de13114392c9142fd4078fcc33b809be833f46e9de93c2abb2c6fa5119ea357e992f1e879fcd80b7405693cffe7ec5bc4ee461640606672f82754e481e01c5dbe0af11f18d17dfabbe342e190e7f2ea46d0e1b32ef57176257cba464850a66d7761322ccc2dfdff00ef4e1032081cd01973e8233
+31404d4e40c08ba9dea78025aa6830004412d72390e69cd74aacd88692a880f6e9d2a00a77c52c9f96861a2393b732f31d34198d88a2b7e138416d3201a0bf6b23f6d0b5e57176f88edfb439c4a3df4786ae8802e29d674b05f2098d6e864acbd1cd5a1d9214106e4d85f95dab48095f8fbd9268073df742cbe68577aee0fd
+1d7f84673fb1ed400822c6dc31d56a22d150eb7b01bd431637f7e263900860114079fd7e0bb2dca152575eb5586bbe1aa71bb75febb12b5c39aeed0e85790c2843cde0562f196e8f1610bdbddf21080a38add8da17ee311b52fa4f92ec20ac43c7f10bc189a92bec2d26baa9ca95ce5b950af2dc1feff04955e9bddec88369
+95028eb37b408c1afc08782a1af6fbb3e0641834f37e2ed272bb37a8e92b553a7bd93eaaf597404d87d45d0c31c234fb11d0d723fdf8e9d5546112caeddd83b729c91cf2d2aac2b4e002be7b0c6b214ba0e16c860790ee5e1a753a4ddf0e1b29ecfa534bb43a7cf8fd1030049708cbceb014950f8e7f367128e57680aadda9
+a05e546f62cb32cc19e963ffe2f374ea3bf7ed9a5affa4de339f60e3e1aa7d55361705f0d3f8dce36704be4b500ec2af47fb7266ca37ef664cc33c3b3bd2dc644477b0c228eb3512b18da8d56ee1da0ddb38c757181a9e70f7588fcac1eba97531337cfe68e781c292ecaf5def97b4038732a9ac7d52c6f76ba36b888f8ee7
+6d6db5094d638d8551e3d3e268c3ff1038e1677defa587e988a574eb7b598511f91cce21ec212675dfb11c9a9fded970c837fc270ffc5a5a7b0b07d789933e5e49bf8962902b0992c9f133872ac632cf9bee9de570f5314c1169bca817cf36bce129c3fdbf4da6227420e3d1408fd1099e19fad087fa89d9f2bbd8e0067ba6
+935e8b349ca5f1c7b43d4e69318472985ee36368641d180fdde6f6044fa6764ca2834b873f137c071f4c197f9d1a5476c59e2629ad57b539b489154e2e9ecf8196ff7e48fb4d9f9ca73eb11b8a72652ee4baf29735f3b38e630dace9ad3207812cee35810ddeb466a9768dfa90d63b5696687824bf63b3f20ff57c7f6d0745
+b6f6d4f7f6e397f79e655c5991dc4a9d65045ac0d7dac4eff8e71b9095ea8994a053bdcffd375411ffb1113f494fd4fa8dd83f9bdbe43533bf9a2e961f93a47ee6dd8818edbc810391caf25d8f13053d86a4d264b0a03832c372fb1d194e45d8265757b5573cf9d988e5d5b164c44d2ee7ce02e6b394c7ea709c63ea793e3c
+bc7d5dfe6b5af6b32cf1a0303a8db5b1d9b0593416427efc5cb5fa968c35decaa8262610637679db3865faa20a700b4cbd53dad08ba0f20fa0e79f9eebc4df5e77ef74bf50b341b30cbd1623933210a9c5aaae69c3a9cd55038878d221f80f98840d249d066e03acca0787018e35e9299e26118a787fdd9085f9374a49c5b9
+6dd39968a836ebe7203388d39431ce67c38b5d8e3207c672ceaf4ffcaa946932fe26b7d4604d365c72d581b5d9940a4b65039cd9a0b79101c0302662d10cff4c36d8876fd34affd9f7696f6ac97a4d535fcfd57d4e3c3ac34410d87443850fb19e0b988193de149fe0540aa5ddc8bc71ec35cee91ddee93af5d297158e8e9f
+138c5b22d5b525724118dd2f1b7d77466b76464bfcd45967ef53cf3ad2dbcace50c65d22a459bef414e170491587596cfede9767750dba43ddffb58d5ec0b5d4bad84bd8e01e2bbb102128a2975def0d7a5823760c697d522a53567d479dc5c3c7b1ca78942a1ea8706c4d51b05d01888e0ac3d25c2fc1532cb9c286f3d6c0
+cfc8a0bd5b0e6b3bfddf15b62a8f5042b4f8d74c14c545845f6eca4acaf9f7c202da7c4827fb23dd7f362dd9a0bffcb3b38ee7e3bedeeec45fc799780a7ff895ff706e031ae6ad7dd27dca4d25ee572b3d275cb26cb80593878f394cbde2f2670138802144698d137f7f61467ddcc66ff36ff5ac38fcfa506d7f6e7ceab11a
+04b3c9d5571f5fca27f46dfbce4c3e6606cde136d78ed979afed5d956bcb25f3016b03180fc57f4cd1c8bd8ff46d25fc6fcc4ae5dca59317e0622a31cb39810c09061c36c9e18f35faff8590442fd9f02e4fe62a03d85266ba883e1061473dbec136c6d25cfd509269f171fa4b534a0c1c78b0182e5ccd4490bbe57728fb05
+45b1b1dee107bebb0fe8d43708d334806f1dc2ca81c5dfc42b7d81c94dcc94e84267e94c1c3c51abf261dec41cfc8cb5cec2ba4e0b2d396d6ebe64cc0a12d0dee8cd816de9a88cd5290e09568d4835815f85c10eefcb158282e82637783ff09b804e5bae910d4a10835a16732b59da547c887e91e77dcdc14a03d0103e6dac
+4a71de3a186c2b80619e4e662bcf456ab0881bfceb432d9a5cf87885738a2ebcc644cc47464e6be60002a7e3353b20306834bb3adc80a2f449bfcd0483499cb41e5f83f58a90eb3ac8ac39d18622b94d9827ffe5b4198079d523877f80f7fccc976967d679f05b58eb75c337ac6b33f99cfe113bf0944b585516258e26eb5b
+576503f990d3bb07c0fd1e7701a1d5d35b356b532481f31e759a7a085c46298ca5cae19975ac550cc30177fbd684c75a8b3f5aa3e4c963e0a4abcd7ff6174149818996eac898cefdc91b402d270bcbf5ddaa851b6cc07fc6d145dbce645f590716ab70bcab3764988d64622c901e8ce8cb596de839e4f01881ca22fe064b71
+42807945ed70ef2fce6a550d410c7de6ad4a8be9c0141ce4e3e0f4986b0d14279be49bf06d2fdb333abea4178c782eb0ccbb09679a791a9c7c671820863ac8e1b542718d543f9a90a10f67ae8dfe91348522e631eea42176e1114167a8733224f8e666ca972398c5d1b88e632132a9913789bf74210dd112634687d0446d05
+8167805a14ac50e36d00ae9335981a158e09fda16d2ac66969e02269c428aab24ba9a7df8176ffe857a19765b62684e5f0886cb1e55d6c67fb8d27f0ff020607f2c8f64d12c5f0861da372a0a58e36831e9856338c9b5150af16ffa247199d93d9b36477f066b1eb1e7fb9fc6279c7840585faebf9e3eb4e998a52352ad94a
+4a45d002aa19fc2ba8266ca466682915632bc3cc85acc844d4497cd9ab2472498fb1f2a36b79ac2a6e1818087842648d1797a952c5da3cd33e18fc11f87599983bfbb8f32fe3d4d94460715e1b27f0ad7260b49acb60768a868fb80c437624271683a1b34151b439e5a843f1f3d8dddd02d3ce58d8d97232714428ae036df4
+f6e5a7e3ddcbfca8540341171a0c0a07269f7090477d9c6a67a2ee5ffb3a7028fbc0e95b3e1ea725e1595eb4fddfe71b34743e7f4ce5fcb5947ebb249beefa621b9a9992f46edf5956b8169181ec67391c190efd17e30e6f3ceb3a8c9f40f0672865137265bec25b2394b4d8b5962b91d47b5b99f383745fdc2202b81999ae
+b07d34aef93e722caa9f1d8a6d360f41a59bd4ca0695c98e227496c01a39508cb86d3596ae706738fc44f0fa2bd53e5ed35f5a21928d91468b1d1d3799d1d7d2ce47db2997078b34bd8566578fc6097df820385c7333af6499c5c32e37488e4a4bfa48031c5e7a5773cd783e31cb5a47aff0633d40cc82fecc80b4107fb35d
+12fab16b86856bf8b484fda78e1aa962b06d046659a4a52f3c3e473f2739a3b2191d38b0bbb47cbef3eb7872cf7a3ece0517db01d9f8c226767a3cad9251649234ab3c653f00a03323c668a1c4d3bb5e22a4ce389414b62375f25902c00d69d34036315b5d581f509b8ae92f8bd67bc5a84e6f0ea6d1631794d60dd1fb58ba
+569a4df3141ef04f642d63a4e89d96c01ce9b0c5586f41a5dfaf2d269edaf135bf06ba8649e14e93f9acdfcc5492c335357cfcf305e5107a965830cd18cfd8ac6a0b5c6011152843e3b4bcb8f71470aa5d99e7ccdbb507c80d2ed8f70a5f6328080515fa6eab20fb154499ab9bb39318b8dccfb2bbf9be94e32dabbe3a2d28
+e6436f72e59cce23dfab1eba104222c6a0784d51fb0afa5cd0e6894d75144fe1b59a3013a5d803d54ce702b0fec134fa764776e72367af0c5eb20e6d0affb7171dac5ee7a73d56b1625584dc79228d40a28bbd05c494b4bfe672eda6faa95c9dc1f35f0e16bec2f87a2ffe558bfa047964cc58c1d7a4e16d4c6ed27948593f
+c4f608370a8d01c89c0de9b300469c2dd99acd189e0a8cb56ed5dabdc6feb9b61b594458100f93f9243b90761a37b04a12312ebf7e91f68882e38c1cac8172c57d72e9c4dc50154227254e424831dd418ff4e28b1f3fcaac56c5d8ac68fb5407a94018a97dece53afe9095178a9f8802c6706aefe9ab5309d5f13142ef2c04
+4df751d282135e65cb0f0e1f1872220526e247e00bfbc79f27e5db089db13bfbd73acaff9e8b19f1722d5487779f2eeffa470a0f2386e03160737675ab5ef85b15818f8681a32939b4f87eeee7912d829619050404ec25e1f21bfabaae220cf98a98fff0dbfe554ca6eb01836e79764ee984ba03621b439e7fbba1ccb1616b
+28e7f9871380fb554f076e677a049d59952b134c7a7cd1c9c637e5337cb5f356d9861c7c7ab7f4efd96c8fdedfaa7144c48e22be3a2cd989ffff2cb6b4ddaa6c6ebad073dc111e3794ec58c30d9a3a7028778b3b04b4e8af09243d0788389819ef286cb9eb496923a9dba38861d332db79fa25c06e69cd34786ae0b92c22cf
+8ad20cf9277d53fbc4a6b8c77e9033ff33db0b781a633833f6767a4aec343694c8bda1e70caf773217ee5bb1ba945ad687d9ed151b5e61369ac7f13b9630b85aecfa68d8dad1027c0d25219c6b068077fdf1b62681f3d624702793b1471193843e5604e3e0dc657bd8e850a33b1746c0c6d831a80155f978f10517ef843c12
+54054a4804d221dcd3a3b78052733e0ddfbdb3041ed9a07318c7e74ce851e9b4abdcfbeede6eb780051407b9e5db01e3fca882f0bc4f560dc041b97ff12bb2cfcbe8c0d779dc839f8ca0ceb68e27f37583232d2563f054b8dcdd737a48f709c930de8ae87837eb3c2cd55b2bcdd143df870334b3290e275a268dffbafdacd0
+8bb5d8ea5c2e35fecb63c4d0d5924a413baad8a6d9099089c6f8330d9a9c39888cbc2a147daac2e81e07059c3659718516e1d71eeb0d29204256078b6a3eb0772c6e3135617a2a9c4cfe2170c4e66a56ad8721c08140805dca7494cce6b530644beb677cba28fb62de4c5a784ca5fd40246321c4148844219926b246bbe86f
+fb642d251912e64ae152bcbb834df0d6745138ca65bbe7cbbb3017323450dbc0b47f4388299799c252933fdec374fe93457e94224db816a7c458bd99b27a32c7054f302518fbd6050df1ddd7b6a05565395458968a436f66fb42776ab4cbf93f6271a0d6a1976e01332ae00d13e3bb6b789b1e152b934979ca6ffc0e2638b7
+6b265a118d64236e2fb8caee7c5c870e73aadce6896ddd9b9908c1dba575cdb5dedf66eb8cd563ace22069b88c277774032f78e206598042207b1a249393294f792566bd6e7aa539588e2a9c34b9e00e8854a9a091f13bb7948a8185595228250eb4f02ee93ffc0c25b590ceb82946ffd98d52f92b90ef81f62b64b16dfb6e
+8efaeea6fbf813ae76176f3b67f457cc4fed4b492b94b786b294bab88a3c961d191b4d8175827e788f5bdfa0f5974858020010dabc8c504204c43d1a9bbf7079eaa2b80f544cc746322831442282d81875587eac06135308d67adcb2da1500f77938b6c9db8fdbc7f197162fc167422ac4eee1780af60ef4b4a6cfae913933
+d3f5b5a1d8d528678627339bef3c00d89ffd0b0330852e73674cd267bc1ac47827b04e3634794829a485140ed03c6b819895c14138fbf11a0cd1d13afb99fdfdb737f674a9074a17e0d2059fa05fff30b00fd1d2690c93a302a56bfa4bffe9cce42534429ad260fd9c8b0e2256dc44ca584a657f0de052c9de62a821c885e0
+ce9c591a34c263e8da2cded07ec24f8d5d329b9737b1fe831c7c3b7e3d6ea7d0be02bca48450dfb6dd69a43492f84bdf7ec0ae34d39041757d87c1cba9bfa5951930227a67089629a6603ab6431b3887b581bce57d4209252fee3e51726e22799b0132fbd263855e69e25aa4ea992e9b547d4704163e01598d24d43b43ecc5
+4605b817844f37454eef1d6d5c6f4b602a35417c234ec9b9ab9f26339d0cbd39aaf696c44774f65dbc64d70cadbfe02c20f965da9f57eb02c8ed6d9cb883d2defc824e8e7999ea2e928c523052af0c64a997664c2acc9934aa5c954f00ba1d86286301e13e2e682dae8e006c52665bc637083795b91876090b3b23199364fc
+6062a9d919f462b2e5daff3a1aa368397bc496e3fa6b42bbc17fc37665dbed43ee6b1fff57425b87fbecb0ba02dcd2109c7f0bf7b3e19594f3b2d1d91614fd8aad2a833e538a90263b6b7e87f534e4dc907ad019d92ca41f056c99bc1e106cc3466c0ba6b04f2c82609e88f236d1109d1c18d033253126c843f5137e2d5090
+cf568d78e31ac03bfbd4c472dcd6dfdc24d97811c168a983af25f6b4a1add72fbde130c5400e517a2df5ce122eb79a225c4b6833842cb9467c8f9ed591cfafcdfdae91b8390dec86408afad08352e259cbe898f62ee66640647d017e16f2b15f898f51d488d91057080f660af85d313e7a089c497000bfbbc4d52fccbfa314
+9b22c7c520d15dfb8743c3ddbdfee9379ce5f3fac1af3dc1bad4c17f24bb87ad43c92e339128b95c42ba692a8a65858161562e4dcfc5e0ab661ba96341d000d71a0453d9e32fed21dbf05290fd7a6772730f5bbbcb680f31b566a0906f0a1f91d463a1f20103a6e1a422d49b578ad89a1b06648113a1c4470ff421475bc427
+7cd96cb5e75a33702dda7ce2d99511adcb4b08f8c5a99f775408d61226455234ea792ec345a34404c7e8b7db8524306bd6ba2000f85d5665c5414c734feb27e41e898b2b226ceb7c09c45fb97be9c8da15aa56009380589c42509a7e8f6574e930b20b69f5cfec97dc753a03e93c5ef69811a32f4b1d23a9fa09d615760e85
+bd9a553e07b04630a99b41a3c4080b90f176b7ef933d8e4113c8095b7672c0a2bfceef163775b2fc753f4293c39874d3b58ad3df54fcf04c073063306a313c63983b836c5454875166566d9d8679ff1f7316f21bf55e845330bb25d2a166f4527203e1c3d0d7925f08341ba23a49c01201d4a6e62efdc12a02b7d55d1ec231
+eec6b63e30405f3ce78aaeb2102c2527121906368ece6b0a912ebee20086e095b7f1e9deffaf29f7a94bc87702e2dfa7356b154a562598cdeaeb53783ced9f15e01924ffa370cf055a45a23deda4a4a561d66d46bc4d0c1d258f65a342cddf3b981768677c78f0b7f0f9937eb88e925ddd347e36fef8cb0f75316c64409212
+537af7c22d72c558cd94c52b5a8f8636e8f4097de899193556034a3aaa2ae72549b5a7622e7af2a72516282e7b0411f411da79ca95393d5ff9488a41dca4081f2a742f3d6678662cf590fff1a4241bc6cad596fb5a162dce70ba3501f24be6cf3c022e4b23f175664bc2d422019e5af0c1ecd823141a9046ca0b095e81e88f
+1ff817eb6a7cf04ef5f053361d954da1072336c22c6f8bc733cb54801c0bcb121511baaae113ce384b3245f141f4389c3df3a58922ee64574c5f75d74f76b11d21747c3c6578754dcb2b4451938c78f44957029f9f84e4204d0d5835ff585327e25061bfb78288fe6ece19ed731afcc42521d1050c0ae5ab768b6d3f73a5c8
+465c03ce4698e0ebb3d7ae9e4a21120f83c71f3fa6d080626ec03b93d39ff727fa467d95892e684c36725fa237b3fd09b282014a55c90bcace8f71af2296b9701c778a65b94252bf7c878d568732a261a57716fc7a15e11678dfdd83875cdf9ff7269e4982313a7dbccd9df2182e274b7f6bcd59d6502f3c1d6388aa70a19e
+dbd780f5bedf5e8a37a60987e0937ccdc4818ddd153eb7e4c0aef785d28234a58bc1bd6919391f396af1f64b08fe1c55992857c5dfab5fe40e96d51ffd64637f234248dea2df8991a54091ce147b8c5f595bb2cc52ae168311bb94d8621d01fad463bb04971f56c03e0ea5b7d2f5313cae80690f373bef77a24e9f95c487fd
+197e167061b2847394d1ef5afe8295efec99cf30ff9af53dbb8840cac09601aa48ba690bb33da784ccec09ea4aa5a8cc76e58281b484c4eba15ab80e640f49d1c6330a7c44ebad76a62e70a2a4b123d2f30ddc392327e642d2bc4372ee905259fe6e94b14667220a615d55bb054cafbcf58681e70226348dc17c8783322478
+81585d36e9f25b27d16d490062a6f4fa514d129002d1f74f6fbcd67b010d1529e8a389e61c16d4ee65aabc838588df52c6c019e5aa64021aeff593b8c12845c0c99b27f0b489453e9f41d4031e583aa9ae9321c46628e18e45a39f52f2e4be9053f498735e1dd686d2de1cb19bb2c00858a4bb2fb38079cfef3990f5c220cc
+8948ad96c91edc85443c6ed5e0677721f0826b078f322bb6a712a9ff06c9325384bb029ad30dd93af96a22dceb410be33ab0d9189a60eb5c762a0e93284fbaf6b70016217051b11cddf61bc5582b1f6d06c187fcf6f02010378cd10469d264fa7867e1443cbef0349c2b5959e4ceafc24fd83fa6243ac6df53c0186f4637fa
+56399bcf8fcabf87efcf951f39284074ff308a0bd43bdf4b7e7b3d846f90e21a4021aa513db14d818e2974d4d5d74380b89eee28ae0207aeda518eece871e37541a21164db6db0c7fea838345b3570bf7194963946aa9b8a8675d903c2d9feb22918e52647374018e19b6c58be78403cefc9be9501136a7a760a3dd6c58da6
+04ccde96d2e4807dd056ec112af1642830c2536b4c38d934c063757867a11bc8524bf33480be5e91b72ee66e3f4cff1bab803c30b265f771202ca0d25e499e93e1e36b3ede2d1712841faae096fcc635d2961e2ab193e61fa920ba9907f3c2968b103f925d8d0bec39492e3015d60d4c773a42d9cd038fe3b305bcc663e191
+38e0870180945598200497bd709e8707aa26cdf1a0c9812d60cf322c62d3c43afe8b3745273d6f01ad9871242d27fc1749b8705ecc94707149c51adab96d45f52b675a898bd629a2af3d960a9d003b8ffec63f52a51863c007f49fc666275bd0098ca5f12d6a961b2134d0d9e5c8982d9bf78b02e04c86700f232d4aeb7b8c
+d53690d9e2ee2397b725e7e436eb8913d4153d4d414695cae9e26e822f36874716a948da62ffab00827eb5e9aa60f6b34dd16e4e7dd42a0d9dc92bbeffdd921f4867f86566923dc1472c200e8b253e619072c613c6f3557cf49617001135de0b417342a389fb70f556dce6a3bdcccc641072fee406d83e3a85c1271d99c4a7
+23a3936d954e2a9567746695328ec626544aabfdcbca1268dd48b6e0e842ec4e196aac5e229f4b95dc12a82188bd53e443dc0d4a23b40cb13e883b67ea19411986f5bcb88cf29ffbba591046dbec9f47a6698fc04ef697f377523e99ae95ab7e64f9079333eb7e002782db3040e12606fe5e1698af41b829684e2f3bcc5ccb
+39a5b77f834496bafdfea0e8f8baba1090c5b115b97c3341bcb158199386a171598b34e137b1574f51f09c5bf785db93104d465c4d945c4652cdc36d59567b18d0907e89b98b3a67eecb7a1cb69558d9a2f286bb7ab1bdde51bfbd7efcd67ece3821d0bb5419ba7177739eee8d12680cb18ca1757fb438e5820c4bffa6f419
+162b0a0b7a843ca00e37ec3a4a4b04f4ed8e7f424b4a9d1456c6fe6287860ba088a47635ea731abb80cc67c3322cc67c551171219db9fe95e002ef4f54b3328ef32239e09b3ba1c972941231dc51cb0d5d8dd4b833d898a40048fa9cf12c2f73e7fd8871779431f0ffb6024c357a1cfafb5ae2a352f7cc78263846d13837f1
+58f38ad0cbabed46fd47c5719fff252d4ddc1b50fea6a5d8aa61a1a1c2da888e6bd22fbec6e3543de95a9dd209a2706c5430c5a7331577025079cd8e08b550712c7286a07189284e22ca946fbea2524a17e26b38148d2f77aa2e7f61434abaa9dd7ed442b430e636ae49ba382eaa6a4bcc70033f6b96e29339fcc95afe2f48
+0cd004f967c37174b3fe213af666aa615bda747723ccc90b1366750ff3f1b09d3d5e0b2e111ce46ae9cb279ca786663e2c20db407508f5a9053112f1cbe4f6c9aaf0f3dc6de9f4d3b535a64525b168854f37f7edc9174fc782bc933bf5d83e988ded92de45f3299d83088aec2ffa01ade2030177661d276715ce7ab7818c32
+a48c4ef1c6bfbedd338834293893c1717f1ef6466a6b16c5c0260f4a42a9785868999167774a4df80df627564bc3e33a7495ab3b8b2a11c929420bea1830002de2f6db17a1130b75eec1ed2a74191676dab58c68bf16a8fc0457621a2669ea1e7acb4bf8adbc2289c086f47f1e01351653fc5629f146ea101fa72015552958
+7fa014fbf31f02e5844242e406d71ab3b06c71ce3c1207bd2081afcf58c3dab9e39ebd87ebb6e0db0ab6f81da96a20110af0e56b45f1463ac3120db679ea2eda282c339220031c93fb244eb1d73a405b8de455700071a1a25400d42785dc6b8bff374163356ede39c4efa063298ced265eb8372569da1e2e325e5447d10b94
+acc11caf5089cfc95ffac6cf7aab564ed58d35f1a6b2e4046a186cd831a1827a8913b6b6369ba327683b080f4884456cad8fae0773c3e2718099436c684188683338e7b001ecf5ca61e0edda0e2e95550f5f8902092a651dd429312a1bf4ee918e2fa21454dd7329dc99e039b33e04759352db0380cbdc986906aa16ab9fe7
+7d74103970722a22e130c1f4585ba9ad6b619c60612aff65915e5fb8831fba02032d33addabde16415933ba05b1daeb3aa34fa2b03f1055e3a378eafee5d8614a778b4e6c6e8d25d900b1e2552c6513d074b398abc6ec23dd9c302912452332bbe524688d7a2881196a499726792c493c5e3f5f52de45e338a5dd5a5f85463
+630434e841b81634460a830d5e7f00ecd2df1fd289e8e15bd1b2222670be241199a8e62127631639e76855b90b438d5253884f4cc6cf425ecb8f6e41c39e2918975d603d7e5922ef8bb3bbec384cdd1a1a937d247cd9a6f64c6ab9a408035a16d38dd93f2bf7ec9ca002687e302d0bc5576603e21c214b787e16f94dd95b45
+cf1ac5bfa8043280edcf2612f27fc933ea521edff0a2cb7c7ba103ea444e0bc28909eb0f258f084d4dfe1149da6523a83616cbe90cff7af60603cb8a1c4ed5eddd796e2a2e10f9462b48f90fe7e493330cd308e3815e7b140ad562d82c8dd1e72ec7e782691a2816197fd605098edab5dcebb16f1649c27cb0addd69862efb
+52e3dcd0a497fbd2873f204c48236b96175c760c432d5e275c8c634612d2e07cbceea765bfe0c54dbde6d31343bcfbb7adb32163228cf43d9ca6ee5cbb81edfa30c1da85febbf19672043daf93e6923f0ae7dc0286819445c7f327a20388290488eb04f47762919675592510fe299f813804e2b68a22b62776a2424c04abde
+79876d5b041f903bbe92c88902563ad910ea7f3df74a17174b186b4bc5b12b7880853478a5b6540281b971ffc8b0ba2f6869ee528cffb1b984b036a6a3793e42973445428f25253dd251bb71a5be536220cf3ff8677b6198fc5643d623820df45f31448f1c959bdbeb7081bf5ac582b08dd28909aa1def6360608f2b4aadf7
+7b9a92c20a86ccd50579c3162616231da3b27336a0d3e8d94907c09b1f73c46cf2145ad44606248988c17727a1067833f3eac3dfaafc1ea7c64b5cd4762a87cdecac4d2787debd03897ccb467eac59708339e11e9cb1961d3d254e6a6ab7722822b59d342a2e79e030f45ac2a3890cc7e2a95abcd3e7daa2f4cdc5c3246148
+1e5acb93655df9e8e538c14feab325016bd5d54fb767331cbbec874268bfd8faac9eb0a46c1501c81a4039181337df1f5d11294226bba2976796262a82f335440dd28687c166b78398305e1c73d0513c4aa0387d20461bb69bccb1a4ac804cdeabe6ac2787f6d7252b1b69e2bcc8a4adfdbaddbdc454e896c489989d47095f
+cced9823c951938a9d962debe96473d9e4447b761e69e486be14a447e5e899061b6463a9733fd5d483016456954bcff2f7eebc48f934d7ec4ccb133e19b7528c371f85bc0aab2c33464843cc7bcfd34eadefa744bffadc9d7eaa246bad45616d9340a8bc72a2a75911c866974e1306e13cd618f770092d81e8c590944ddd0f
+f482d24fd677dc8b22ca4c08b0fe423d0931382938a40b79c13fceb09e6389669ea69d6268a2d40ec37b5fad440c49904d9f09df089e5c173ea5943e676274e69eb0da19a46de72249bb6b9af96ef17b509e4a71b531ae45d89608d14937d68f8f9d0320919bf78c58f8e65fa4c5c21dba0546c6836c117d58dccceb7e9b40
+e363866482ba02eb7ab974656af5d6cc97ce1b6d08c20596434f49183a6a232c339b477e5dbf2bf03be77a43646ee958c40d4b7ed6f7aaf6258b3d046dcc1379b1a52adc89bb768939f9ea57cde21dcba5e859f960cf8ce7da2b30f671d8bd623588e5cd3b99220ec66f881f99e9d71db48ac4eaab96bd93d1176399dd1ac8
+dfcc5ba4f0010fd576e236a4306a4fd694aab6c881b7ddd00e6f0c83fd02f43d011f48d443572c0abdf7f5c90700998899103f64f84a096be5a12e1d44734fdf15de9e59bfefec1c4116cbb97711f518d39e35f067809d88f563952d5558757b2bd5fe145b8fd6fcb095dcdf7c4bc3f5b98b2d0e79f5f1d967c36a9b865be1
+356e91e3afa02cad97bbc52ff6e1dce666469e72864105ff51c62c9be04ff17330f4c09572376ce69601f488a50775dbdde2a9a5eee389b654ef1aa48bfd5b5b26127ca482d88247b0eb260a802c87a9cef4347fb2d041f8404997de3145dbe722264da369f5b3eb837df9f8bf0b283a05590aa4eea782c4ee5097f415431b
+69c3eeee0e41b579df3eae3c557c19b10e952d5ed87acf5b804aa11030159fbdfa01dbd7ba84eca8100250e4c55b191e3b529e6dce055d49e6bf1ca48fff4e28c5255b4323518e8775df0efb5370b6d0c5980e3963d511b2f08aa1ad9e0f2727fb7f43cf8806f33f6af01a4f13063281323e008497cf1da4b7eb772f7eda1e
+a059cd3ecd558c03f8a808d7be311f8088aeb5605510671a8d03157e1137858a0faeed64b251a7c96549d830fb59c8c1268c0c48b1ea8ad0f5295c285bf8420167cc5da484b8e200af03d615764aee51f8768a0cd123928f1b3f3e91a46f5130b000176f520cd3f7d48378882578810a7c494d840272b2243e2ca830fa9195
+7bf05deb8963a12991ad48db5f07f5caa61d6aa8e9f9ed895f9734cf9cfc01882d03c85a9ff3963f67d489640a2b989133c7cb307d5cfec8f31f6e35c87292410b3d1f301fd5adb11e33e2f2029c5e3dc0484b1d88ea400d7fa461146135ffa5f1824e8a57a986b53ea059b3c8998373e2673968ca99f89d46eff589806c12
+b706be71c1db78f29444608a0b886b8a59df8e2271205f0e008b96ef616a239492e0108687ad56b4314b888d4dfab64ccebe5351ec3556b8e3a2ccef716d809d7e23bd74d75ad6abde177933553322be0c1275e91982d19e15169ef293cfc447421b5641b00dfff942d73ee56f4e79a114138238d498c117ed72326bb96052
+8fb884d59c8d2e2e83296523f6061fa5be37a84d4f1bd4d88d2f27dd7d3fc04b1bac8f74dfcfd58eeff5dc8749a0f5981f854f7680a7c847c7742530dbd627829d96d0a6d3e4f7ba14dca3601ce354ed7c9d3f49ce07cee46c82da679153945115ab50a33d49da938395f29387b4d908f040739038e75b44f9f560d780a8c4
+8ceaf9d47cf592c447a567fd6634c7392ecf31091c34af2d7b31dd14070539989f11fd916e5dd02ddfa41f76e0ced99c785f0c8a1aa6e43cd26db4ed7a36ebe9ee2f958fe94f42b675e199c3b2e6e5f959f6acd00948de268e326535ce3b356b28d818e1c1644a7b649f13a81f3186a9dd95a30ec99d429ebe0e13119c1369
+42c023108721edcc376a6e1ba8380cb0ef9ffa8a00b13a0e74704e29a71902d9f33cbc56cc47b4d9fb96aba13009f0059b3c53f26aedea73f3346f0e809bbe904cccdc75c4228a6a9d3f56477903dc1dfc2fbb3426945620f94fae7e6af622c8444b8941a549acda534f9e0c125967aed7bd7c832cad33a6c57a0d8f539ca8
+00f84fd2c87618a003e94c88ed328b711206de3bee0124402f5574035fc7d3ddcb519ea0670392c12e476aff9f59e9b8569078e236c49afa100d58b8de81f2e4ed1bab63dcb0f2c180f6c60ea76782579c83f331eacb9cd75f912ea12ca6d49e4deb77ea81257dde8c5bcfc67d3bc115c55baece396a42eda8b8752f79f8a2
+9058a4dcd2f9e1188b4a36c00ba3a5a6e851424b86f95ae3f2d8765340143dc6663cb0bada459e0760a7a49ac621eb1799c51a8cd7d76bb9cd2f679de03b06022563edf64abed6eeff3780c20e965ea2111e7e7fe11f75864a3fc54233ecfc518c8cb17f0183873e66625be2feb0ecb79cb834a6ac7945c9068712bd9a335a
+6f195ec6e712764bee0edbf50bca12c98e87539c8b17800f29b115fb8d58fc4b11b0837dfa9f62b73e9ddf08033d0a15dca7d3eb21a0851179755bdba76ae61e6bdc17882213915fc865bc8c44c5c9ff3ef1ee7611dfc261f582c6f1092bcdb4d22c3c8a7a41e48100b1b76a5657b013a9e4691108bd08997d3a808af31445
+5d78fec3ad7b712b5f8e780ba22de1eaad1520ec63d092d44cd822760cff8ffde07c4a74013eec441d4309f5d3d1f8f6921735a1a3f2f491eda6c72b78ff3ad2ca83bf992a9fb90527eb3e5346a41e8560b9c285bd32bbd2bb0b2434bd4f7c1327db96f9687c8c7ea6888bcb5737ce1e4d20660337f0731869f34e101404d5
+214d56075a7ebea66dd483314691c64bd5143b2499f78983bf152ed573f5747c1ec8fdcd5c4b38cb20eca2985076d9920dae4bb9a806115106108b329bc3f524c22d89608080677593d2073ee5e2786c7bf858fe688cd272d42b0be8b8eba87ff96725f0c1725bdee0ef988abb27c200c9dbd33d471f4717744ecb928b9279
+eb98bd03d1a569435aeeb2996916f116c031b0bd5457c30d3da7ca79e85071a4d91c885a4092c1622e631fe30a2a06de75f02f185ad726fb1612a3bede5e46e01268aadf558dd34f3bda7efb6d9e499d7e113efd536d0482eb6b8c5594396a75af2c2f9e0387661ac30dbb10d88d76c092e68bb80688c975fa1a9a9a12f225
+5711514cbd91aeca9cc10166894cfceb7339fcd34f7e2521485b96d7c29c0f42321d09b24f6f1e462ac7e49a98e3a66e63e8a71f37c4ba4786ee6f9eaf559655fa419bc584883ba9ff033bd2861e028d81664b89df81019faf15a555e37e551b45da582c99362bcc39f03709aa0fae6f5bd36c856e79d0fe920601c798314d
+2058884895e84a14a124daca885fbb0a79559d909dcec4696cecd393a4a3a6aab414af6f7b5eae63122c373065593b666290e5dd93836f7f9828ddbeb6479aea667d78bb4674af1296a55747f711cfe5b9b90e5191242153922b58da07f768cd9489cc60973882410d43d2c27d7b3b2b23a3e93039db6f4c55b057ffd10e7f
+3c02a9f005d1dd464d06c8bc8dffb311e67ad0103fd5356c7a962540a37ca57e52d3f2b279f4a53d28670c80696ed53bb9dd15d9798563ac88b47af1f6783589df59642e31b047413d5b45cccc5b4c384b05530880b94db8b26a5636938172a121d284a8edd61414a4a62f4a6c97d946306525393e25ef97a6cbab7e0379e7
+aa8b16f449445c3bdc76ff117bbf29420d5c8149d61559888336db54a0b0be97b0556844a762cf9f214edfa472db4633e7ff124fdddc9ed01d063cb0cc9a9a00f070077b6bd40c0aeb42eb7c76ed2e286618563d5a9985734264c875b4beff341766edb6d2c91e5872b3114f2266c64edcc03336c0c1870a25edba86f5b1e9
+4831baaefe75c6726bde39cf57551d4f71248d20ca5b78ecf22616a5f769302eb5e751a8e4a11c6640f28c8c78d57132e974a868028eb1508698fdb3690da78f4622074720f9b45cb61649b23dc976b63261bbcba2a679f8b46669fae207d39e131be1d8788261f693bca225b4e26cf9bad7746ee7d540e52a4ada888d58f1
+db373e7152b8a9ad861dc7efb71ce0eabbc7ce577e7e562531df032fa713bea60c1f57c1f9fc43f22a4528abd17144311e5df980591d082a488e75f1379314ba2fc6f21dba4a285354e54e1321aa21db86561eecf7fc5c53b3a157e9f069ac687f7c11ea9a35b108df5e1ed6472e8d7e4c0867ad8283052fe1ac4f0e5de2e9
+abc5d8d17040a98a2c9c535a654ffa3dbc5d94113894c3be63e6a0eaa78b944caf2670c53c820b1a687de8a54b998df371d11f8b46b1c4e348bead1a66ce23707e02f86a34c1258fdde754b564aae79cd4536cda7ac5b3ae17c82c1af518d2d406c38b1defe8404a40c762b7f38b25037dda6b0784131d4da2735c6118d1b4
+de068dcdcfe2243791dc30d657f3f9ae0859e458be107a96204096fa5427dc763542cf1e87f994d0c67cba07fa26b605fd1f27fafd1dd4ef1ec6f1d76930b121c4e2791a914650bedc4cbed048f8a877a048d20ede5adcc0b87d7f25ea5a94ec0f8dc8eca2307ab2a0d98a8947bf8b5be2d793b2b6183ec35db38c1d3e5f40
+78e4d5178ab8fa36cf239e561c81b95a46655f11a43ceebe3ac762344a551c4e6358b943cb667a4b2de4f9f7f12f8d7f1b655076cf77ec115796d0470ff54d26db7e155839232a54898766fa03888b378b2e600fbad5613f0b09a9d07c1965c13734f5c678b2c236b4ef6cacd4e2b4dbabd69d5df78450ae14e6311a37de72
+ad54be4ff1f0650690808d7f699e4ed39ee0d2752bbd07dffe96815754a0babbbc8ac0a4cf3f2452f92ce72a2570184f794a6c932fa3849b782c2a0bf9e6e4b0cd0e301a5306a191ac79c9d709f21541cbb35154d3ae8aa8ac721181bd5032c215bf834585d7df29811707c500fc8240cec005ded2190d4e497267bc1b57ad
+ce81880c49ce082d47d0d22a2bb7748653f2473e20790697880c4a3a34c3444ed12382d7f2da965d50e18145a9c4792a819fcd16ede8ffc9de2ce783e8d9600113dbfcc05210df22eaf4fbded7d3f6153d4a7b8a271520b8e4ee91457250bc82b3dba929f09a95bf93798a975ab5d11f4a24b77917dba13783b1456a84bb63
+6d86df0b0c631ce1c56bfd80c85a8f92f37b3f8aee7d4cb0ec3ac88b89a34bc2293800a7a56591e4f88949de7ca2d359a8b765b9c8f0292e5008362735b803d54738350ee653bd7b2fe2902c2a90f5daead13e95b4cb72511bebb45b240435458653930362510822e0744eba54ceaf9d2d7039fb01b56e6b8aa3da917d6e8a
+6773d86b61874e30ffbc61f28eb8434595618ea6d4fa941ff2ce7a80ff8edc1f5fba4554f942fbd2403b954a8cd71b6a65bd7d396e76d83ad2cfa48041a33841fd3bc29cfbe3c69c77b8ef2598a96934d3ec7453a2e728b04f6671db5494bdf4c364e7d8d356acad2d1ed7e2efa6a67a76542b614ac0f791b753a2b1a2c755
+e54b3333ba72b932b6bb843bcbd14fe4df9b19eb9eb33a5393fe5a0903b3dcc125784f09f2cbeea3f92577bbae102155e090fcf2be95a24a2b0b509581c891c20195b82af9d707f30e4850b4b270990980628b007af7cff19577cc7e5cad2c069d0fe2da4e0dc4088309890b215927353266d201b829c2be7ae637148ba502
+adf9d2d689a99a9d43d7aa6b82683c5b13cbb41229f74d4963b828c9bd861e65059803505c10cc52ee2e669975fd7c6e27bcaf98693d8790d1b659ea307c10ab46196e7868ae642880673699addbb1991ec395d00e86e48c0b88ffc715a7c59e4ea45f6898f075d8480b4baa4cc7d154e2d239b850783b9719d21674e563af
+40d77a3dd00798be4df1c00d6ee23c4f1c592af7e3611f6d650b438a96d583b68336ba6291fdf189f591b66d5805345238fd71d3b119abaf891cc9e999287e2f754b7f4e0cac0aab57c942e75b1ec9f49de5192403a5e770fb5b370c74f239dc546e56953d068ad94b51fef63bc6dd635a9d49b767fb9fa52d6eb64fda3362
+6f0e9e6c348c17167384430531af663b57b61b42aad800c28e1edfd5511dfc8275a0a6b50a9b2a9083d5e78fb70fa29708444365a0ce9d668616fd44a6c50f419c72123b92faf44b6426af0e4a167b901c79f11208eb03fbb0858fb807bd5d92dc2984f4085931dba69152641c8893918e71274fdb9888798887481a9c536c
+1270aec13cbd8c3c76345188cc81113ec8590a8cae306d799b02b20000d68b3313502bcc880a7d1704a286fd394f588f995f1aa461e88def58e23be9b129b83b2e8c6eb9e45618b274a4519cb48ed1bcf737d7fb55e203c2c60b1a073d31ccce703cf59716bc46a145125a92be1ea039b6b32440b7efe1f784f6bf6746ab20
+cf3e0af7267c4b5c5c6ad8ec418da49f71ef9c4c14156d216228d0805fd1965e5e1b100922fc025329f6f3f3dbec35b47c77b8e38769fd6b9597395a72bf613488776482b9dfc35777b9f6886aa9ac573b4de7be7ace63f58add64a0a82c179cbed927e8802c8a93f0d6dedf18d89be10b396961832c4978fa7b1c78344ab0
+32d3ff72e4840f502c26fd6e5912223184098fecc3f2efccd48b0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+%%BeginFont: Times-Italic
+%!PS-AdobeFont-1.0: Times-Italic 002.000
%%CreationDate: Thu May  1 14:20:19 1997
%%VMusage: 37530 44422
%% The digitally encoded machine readable software for producing the 
%% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 
%% 1997 Adobe Systems. All Rights Reserved. This software is the property of 
%% Adobe Systems Incorporated and its licensors, and may not be reproduced, 
%% used,  displayed, modified, disclosed or transferred without the express  
%% written approval of Adobe.  The digitally encoded machine readable 
%% outline data for producing the Typefaces licensed to you is copyrighted (c) 
%% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. 
%% This data is the property of Linotype-Hell AG and/or its subsidiaries and 
%% may not be reproduced, used, displayed, modified, disclosed or  transferred 
%% without the express written approval of Linotype-Hell AG  and/or its 
%% subsidiaries. 
%% Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
11 dict begin
/FontInfo 10 dict dup begin
/version (002.000) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def
/Copyright ( The digitally encoded machine readable software for producing the
 Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990,
 1993, 1997 Adobe Systems.
 All Rights Reserved. This software is the property of Adobe Systems
 Incorporated and its licensors, and may not be reproduced, used, 
 displayed, modified, disclosed or transferred without the express 
 written approval of Adobe.
 
 The digitally encoded machine readable outline data for producing
 the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell
 AG and/or its subsidiaries. All Rights Reserved.
 This data is the property of Linotype-Hell AG and/or its subsidiaries
 and may not be reproduced, used, displayed, modified, disclosed or 
 transferred without the express written approval of Linotype-Hell AG 
 and/or its subsidiaries. ) readonly def
/FullName (Times Italic) readonly def
/FamilyName (Times) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle -15.5 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Times-Italic def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 43148 def
/FontBBox{-169 -217 1010 883}readonly def
currentdict end
currentfile eexec
a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e
+7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7
+353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5
+cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1
+fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380
+1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7
+f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529
+e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7
+7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc
+30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79
+2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae
+a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa
+72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208
+cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e
+935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd
+8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2
+78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6
+667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa
+458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a
+64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697
+60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da
+b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60
+b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff
+2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2
+cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6
+5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c
+736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4
+92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d
+91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63
+e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0
+77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3
+447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e
+a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335
+ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832
+1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378
+501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e
+c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840
+0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20
+474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66
+4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8
+1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70
+2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922
+27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2
+78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47
+3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924
+0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4
+8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d
+12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c
+748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e
+b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7
+1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107
+28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0
+a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e
+12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c
+b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e
+8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738
+268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6
+8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31
+2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d
+c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f
+fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814
+17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a
+f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77
+da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0
+f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca
+d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0
+1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb
+380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7
+2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3
+db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21
+fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de
+5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8
+d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a
+697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23
+ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07
+a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb
+b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520
+61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee
+8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6
+6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c
+2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2
+7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c
+73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2
+773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4
+d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1
+c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219
+3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722
+c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7
+54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370
+58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165
+0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70
+e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a
+d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2
+e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0
+af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f
+c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640
+a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec
+47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d
+1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b
+882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855
+f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa
+64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911
+c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33
+f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3
+d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509
+9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb
+31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19
+42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45
+27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72
+c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34
+f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1
+481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86
+04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b
+837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae
+cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e
+cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e
+cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e
+ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5
+6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826
+a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753
+10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596
+0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8
+58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9
+e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6
+5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783
+8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb
+c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee
+b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6
+e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130
+a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e
+bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb
+fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f
+76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb
+8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99
+604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a
+9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93
+237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42
+cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d
+8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41
+a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290
+572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223
+b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26
+44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f
+7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1
+41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09
+730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f
+3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2
+cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823
+6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d
+cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400
+6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd
+5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3
+637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c
+a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419
+9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909
+e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42
+a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb
+428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a
+d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca
+638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e
+423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de
+10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4
+645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693
+5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa
+118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0
+9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19
+d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a
+3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b
+f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418
+1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec
+5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1
+5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13
+c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1
+19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62
+09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8
+0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc
+5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835
+b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f
+1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239
+bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65
+0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845
+ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5
+6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827
+e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c
+8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2
+079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976
+abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29
+de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3
+d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9
+a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6
+953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc
+1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8
+4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28
+f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6
+5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3
+d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be
+4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188
+0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3
+1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02
+b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79
+4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71
+50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411
+aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6
+1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1
+e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6
+f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795
+ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b
+d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e
+db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef
+b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669
+267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54
+73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967
+486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d
+7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058
+7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5
+b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7
+cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21
+9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895
+06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4
+f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3
+139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d
+3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869
+25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2
+27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5
+a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6
+ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46
+a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e
+e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019
+cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6
+29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca
+15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536
+c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1
+114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1
+1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702
+01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b
+7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9
+2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f
+45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083
+97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d
+69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057
+e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4
+9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592
+8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94
+222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445
+25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2
+bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0
+2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c
+bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a
+8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4
+9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6
+6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5
+d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642
+a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955
+eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308
+109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d
+3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd
+48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784
+5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad
+7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e
+5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1
+05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748
+0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858
+25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4
+2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c
+b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e
+744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96
+6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2
+799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee
+42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857
+2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9
+a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd
+7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c
+e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c
+e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a
+d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124
+085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f
+a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd
+d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457
+a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67
+419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a
+fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd
+0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043
+436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019
+9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02
+92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058
+588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c
+e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095
+12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3
+43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59
+8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd
+4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52
+b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2
+0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266
+52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83
+b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392
+949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09
+4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0
+afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134
+9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984
+7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138
+c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283
+2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0
+dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035
+610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae
+0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30
+17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82
+3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27
+1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705
+2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb
+5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+setpacking
+%AI3_EndRider
+[
+39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis
+/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft
+/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark
+/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar
+168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring
+/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla
+/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave
+/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute
+/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde
+/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
+/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute
+/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex
+/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute
+/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Myriad-Roman Myriad-Roman
+[/_Myriad-Roman/Myriad-Roman 0 0 1 TZ
%AI3_EndEncoding AdobeType
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Symbol Symbol
+[/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/space
+/exclam
+/universal
+/numbersign
+/existential
+/percent
+/ampersand
+/suchthat
+/parenleft
+/parenright
+/asteriskmath
+/plus
+/comma
+/minus
+/period
+/slash
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+/congruent
+/Alpha
+/Beta
+/Chi
+/Delta
+/Epsilon
+/Phi
+/Gamma
+/Eta
+/Iota
+/theta1
+/Kappa
+/Lambda
+/Mu
+/Nu
+/Omicron
+/Pi
+/Theta
+/Rho
+/Sigma
+/Tau
+/Upsilon
+/sigma1
+/Omega
+/Xi
+/Psi
+/Zeta
+/bracketleft
+/therefore
+/bracketright
+/perpendicular
+/underscore
+/radicalex
+/alpha
+/beta
+/chi
+/delta
+/epsilon
+/phi
+/gamma
+/eta
+/iota
+/phi1
+/kappa
+/lambda
+/mu
+/nu
+/omicron
+/pi
+/theta
+/rho
+/sigma
+/tau
+/upsilon
+/omega1
+/omega
+/xi
+/psi
+/zeta
+/braceleft
+/bar
+/braceright
+/similar
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/Euro
+/Upsilon1
+/minute
+/lessequal
+/fraction
+/infinity
+/florin
+/club
+/diamond
+/heart
+/spade
+/arrowboth
+/arrowleft
+/arrowup
+/arrowright
+/arrowdown
+/degree
+/plusminus
+/second
+/greaterequal
+/multiply
+/proportional
+/partialdiff
+/bullet
+/divide
+/notequal
+/equivalence
+/approxequal
+/ellipsis
+/arrowvertex
+/arrowhorizex
+/carriagereturn
+/aleph
+/Ifraktur
+/Rfraktur
+/weierstrass
+/circlemultiply
+/circleplus
+/emptyset
+/intersection
+/union
+/propersuperset
+/reflexsuperset
+/notsubset
+/propersubset
+/reflexsubset
+/element
+/notelement
+/angle
+/gradient
+/registerserif
+/copyrightserif
+/trademarkserif
+/product
+/radical
+/dotmath
+/logicalnot
+/logicaland
+/logicalor
+/arrowdblboth
+/arrowdblleft
+/arrowdblup
+/arrowdblright
+/arrowdbldown
+/lozenge
+/angleleft
+/registersans
+/copyrightsans
+/trademarksans
+/summation
+/parenlefttp
+/parenleftex
+/parenleftbt
+/bracketlefttp
+/bracketleftex
+/bracketleftbt
+/bracelefttp
+/braceleftmid
+/braceleftbt
+/braceex
+/.notdef
+/angleright
+/integral
+/integraltp
+/integralex
+/integralbt
+/parenrighttp
+/parenrightex
+/parenrightbt
+/bracketrighttp
+/bracketrightex
+/bracketrightbt
+/bracerighttp
+/bracerightmid
+/bracerightbt
+/.notdef
+/_Symbol/Symbol 0 0 0 TZ
%AI3_EndEncoding AdobeType
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Times-Italic Times-Italic
+[/_Times-Italic/Times-Italic 0 0 1 TZ
%AI3_EndEncoding AdobeType
+%AI5_Begin_NonPrinting
+Np
+9 Bn
+%AI5_BeginGradient: (Black, White Radial)
+(Black, White Radial) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 1 0 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Nova)
+(Nova) 1 3 Bd
+[
+<
+08070707060606050504030303030303030404050506060606070707070707070707070707070706
+06060505040403030202020202020304040405050606060606070707070707070707070707060606
+06050504040404040404040404050505050606060607070707070707070707070707070606060606
+05050505050505050505050505050505060606060606070707070707070707070707070706060606
+06060505050505050505050505050505050505050505060606060606060707070707070707070707
+07070706060606060606060505050505050404040404040404040404040404040404040505050505
+05050506060606060606060606060606060606060606060606060606060606060606060606060606
+06060606060606060606060606050505050505050505050505050505050505050504040404040404
+04040404040404040404040404040404040404040404040404040404040303030303030303030303
+0303030303030303
+>
+<
+0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223
+24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849
+4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D
+6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D
+8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC
+ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8
+C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2
+E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0
+F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5
+F5F5F5F5F5F5F5F5
+>
+0.9137
+0
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9
+D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4
+B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291
+908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171
+706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353
+525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938
+373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121
+20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E
+0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101
+0101010000000000
+>
+0
+4 %_Br
+<
+030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20
+20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A
+3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163
+6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3
+A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF
+>
+<
+F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC
+ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7
+F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC
+ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7
+E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6
+>
+<
+E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8
+C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281
+7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241
+3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A
+1A18171515131210100F0D0C0B0A0807080707070707
+>
+<
+00000000010101010101010101020202020202020303030303030404040404040505050505050606
+060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718
+18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E
+1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606
+06060505050404030403030202010101010101010101
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A
+>
+<
+00000000000101010101010101010202020202020202020303030303030303030404040404040404
+04050505050505050505060606060606060606070707070707070707080808080808080808090909
+0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D
+0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112
+12121212121212121313131313131313131414141414
+>
+<
+000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D
+1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A
+3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758
+595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576
+76777879797A7B7C7C7D7E7F7F808182828384858586
+>
+4 %_Br
+[
+0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs
+0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (RGB Rainbow)
+(RGB Rainbow) 0 6 Bd
+[
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+[
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Steel Bar II)
+(Steel Bar II) 0 3 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+0
+0
+0
+<
+FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391
+8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250
+4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827
+272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F
+0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404
+04040403030303030302020202020202020202020101010101010101010101010100000000000000
+00000000000000000000000000000000
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 40.45 %_Bs
+0 0 0 1 0 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Sunrise)
+(Sunrise) 0 6 Bd
+[
+<
+EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7
+F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4
+E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC
+DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1
+>
+<
+35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303
+02010100000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+1
+<
+131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+<
+00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D
+0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A
+1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728
+28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333
+>
+<
+666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D
+8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5
+B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD
+DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F
+505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576
+7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E
+9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7
+C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8
+E9E9EAEAEAEBEBEBECECECECEDEDEDEE
+>
+<
+05050506060606060706070707070708080808080808080808080908090809090909090909090909
+090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B
+0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313
+13141314131414141414141514141414151414141515151515161616161617171717171818181918
+191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221
+2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A
+2B2D2C2E2D2F30303131323433353435
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7
+F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3
+F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB
+FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC
+FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000001010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010202020202020202020202020202
+02020202020203030303030303030303030303030303030303030303030304040404040404040404
+04040404040404040404040504050405050505050505050505050505050505060505050606060606
+06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C
+0D0D0D0E0E0E0F0F0F0F101111121213
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8
+E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0
+CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8
+B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0
+9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888
+878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070
+6F6E6E6D6D6C6B6B6A6A696868676766
+>
+0
+4 %_Br
+<
+07070707070707070606060605050504040404040404040405050606060607070707070707070707
+07060606060505040404030202020203030404050506060607070707070707070707070707060606
+06050504040303030303030304050506060607070708
+>
+<
+64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C
+3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413
+121211100F0F0E0D0C0C0B0A0A090808070706060505
+>
+<
+F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4
+F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA
+E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9
+>
+<
+01010101010101010100000000000000000000000000000000010101010101010101010101010101
+01010101010000000000000000000000000000000000010101010101010101010101010100000000
+00000000000000000000000000000000000000000000
+>
+1
+<
+999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0
+C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9
+EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB
+DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5
+B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887
+878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B
+5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736
+3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120
+1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B
+0B0B0A0A0A0A0909090808080808080700
+>
+<
+2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222
+22222323232424242525252525252626262626262626262627272727272728282828282829292929
+2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232
+32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C
+3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849
+494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859
+595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262
+6263636363636363636464646464646400
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101010202020202030303030303030404040404040505
+05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D
+0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414
+14141415151515151515161616161616161717171717171616161616161616161616161515151414
+131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707
+06060606050505050404040404030303030303020202020202020101010101010101010101010101
+01010101010101010101010101010101FF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D
+4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273
+737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697
+9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9
+BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9
+DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6
+F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF
+>
+0.6
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2
+B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C
+8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968
+686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746
+454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726
+25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09
+0908070706060504040303020201010000
+>
+4 %_Br
+<
+EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3
+F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA
+EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4
+>
+<
+B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F
+7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442
+403F3D3C3A3837363534333231302E2D2B2A28272523
+>
+0
+0
+0
+<
+333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A
+5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283
+8485868788898A8B8C8D8E8F90919293949596979899
+>
+1
+4 %_Br
+[
+0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs
+0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs
+0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs
+0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs
+0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 13)
+(Unnamed gradient 13) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000001010101
+01010101010101010101010101010101010000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000FF
+>
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9
+D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6
+B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796
+9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A
+7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160
+5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A
+49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736
+3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626
+2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919
+19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F
+0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707
+07070706060606060606050505050505050504040404040404040403030303030303030303030202
+02020202020202020202010101010101010101010101010101010101010100000000000000000000
+000000000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9
+D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6
+B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796
+9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A
+7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160
+5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A
+49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736
+3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626
+2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919
+19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F
+0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707
+07070706060606060606050505050505050504040404040404040403030303030303030303030202
+02020202020202020202010101010101010101010101010101010101010100000000000000000000
+000000000000000000000000000000000000
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 28 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 2)
+(Unnamed gradient 2) 1 6 Bd
+[
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+[
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 37)
+(Unnamed gradient 37) 1 2 Bd
+[
+<
+C4C4C5C4C5C5C5C6C6C6C6C6C7C6C7C7C6C6C6C6C5C5C5C4C4C4C3C3C2C2C2C1C1C0C0BFBFBEBDBD
+BCBCBBBABAB9B9B8B7B7B5B5B4B2B2B1B1AFAFAEACACABABAAA9A8A7A7A6A6A4A3A3A2A2A1A0A09E
+9F9E9E9C9B9B9A9A9998989797959594939392929191908E8E8D8D8C8C8B89898888878785848483
+8281817F7E7E7D7C7B7B797977767674737272706E6E6D6C6A6A6968666564626260605E5D5C5A59
+575756565555545453525150504F4F4E4E4D4D4C4B4B4A4A49484847464645454444434343424242
+424141404040403F3F3F3F3E3E3E3D3D3D3D3C3C3B3B3B3B3A3A3A3A393938383838373736363636
+3535353534343333333332323232323131303130302F2F2F2F2E2E2E2D2D2D2D2C2C2C2B2B2A2A2A
+2A2A
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000101010101010101020303
+03040505060709090A0B0D0E0E101112121415161618191B1C1C1D1F20202123242426272828292B
+2C2C2D2F3030313233333536373738393A3A3B3D3E3E3F4041414243444546474848494A4B4B4C4D
+4E4E5051515254555658595B5A5C5D5E5F61626264666767696A6B6C6E6F7071737374767878797B
+7B7D7E7F80828383858686888A8A8B8D8D8E909192939595969798999B9B9C9D9E9FA0A0A2A3A4A5
+A6A6A8A9A9AAACACADADAFB0B0B1B2B2B4B5B5B6B6B8B9B9BABBBCBDBDBFBFC0C0C2C3C3C4C4C6C6
+C7C7
+>
+<
+0202020303030404050505060607070808090A0A0B0B0C0D0D0E0E0F101011121313141415161717
+18181A1A1B1C1C1E1E1F2021222324252526262728292A2B2C2D2E2F30313233343436373738393A
+3B3C3D3E3F40404242434243454546474849494A4B4C4D4D4E4F5050515253545454555556575858
+595A5B5B5C5D5E5F5F616160616263636465666666686869696B6A6B6B6C6D6D6E6F707071727372
+727475767778797A7C7D7E7D7F808183848586878988898B8C8D8F9091929494959798999A9C9D9F
+9FA0A2A3A5A6A8A9A9AAACAEAFB1B2B2B4B5B7B8BABBBBBDBEC0C1C3C4C4C6C7C9CACBCBCDCED0D1
+D3D3D4D5D7D8D8DADBDDDEDEDFE1E2E4E3E5E6E7E7E9EAEBEBECEDEEEEEEEFEFF0F0F0F1F1F2F2F2
+F2F3
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000101010101010102020202020303030304040404050505050606060607070708080909090A
+0A0A0B0B0C0C0D0D0E0E0F0F101011121213131415151617181819191A1B1B1C1D1E1E1F20212222
+23242424242424242424242424242424242424242424242423242323232323232322222121212120
+201F1F1F1F1E1E1D1D1D1D1C1B1B1B1B1A1A19191919181817171717161616161515151514141414
+13131313121212121111111110101010100F0F0F0F0E0E0E0E0D0D0D0D0D0D0D0C0C0C0C0C0B0B0B
+0B0B
+>
+<
+33343435353637373838393A3A3B3B3C3D3D3E3E3F40404141424343444445464647474848494A4A
+4B4B4C4D4D4E4E4F50505151525353545455555657575858595A5A5B5B5C5C5D5E5E5F5F60616162
+626363646565666667686869696A6A6B6C6C6D6D6E6E6F7070717172727374747575767677787879
+797A7A7B7C7C7D7D7E7E7F7F80818182828383848585868687878888898A8A8B8B8C8C8D8D8E8F8F
+909091919292939394959596969797989899999A9B9B9C9C9D9D9E9E9F9FA0A0A1A2A2A3A3A4A4A5
+A5A6A6A7A7A8A8A9A9AAAAABACACADADAEAEAFAFB0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7B8B8B9B9
+BABABBBBBCBCBDBDBEBEBFBFC0C0C0C1C1C2C2C3C3C4C4C5C5C6C6C6C7C7C8C8C9C9C9CACACBCBCB
+CCCC
+>
+<
+FFFEFDFDFCFBFAF9F9F8F7F6F5F5F4F3F2F1F1F0EFEEEDEDECEBEAE9E9E8E7E6E6E5E4E3E2E2E1E0
+DFDEDEDDDCDBDADAD9D8D7D7D6D5D4D3D3D2D1D0CFCFCECDCCCCCBCAC9C8C8C7C6C5C5C4C3C2C1C1
+C0BFBEBEBDBCBBBBBAB9B8B7B7B6B5B4B4B3B2B1B1B0AFAEADADACABAAAAA9A8A7A7A6A5A4A4A3A2
+A1A1A09F9E9E9D9C9B9B9A999898979695959493929291908F8F8E8D8C8C8B8A8989888786868584
+8383828181807F7E7E7D7C7B7B7A79797877767675747373727171706F6E6E6D6C6C6B6A69696867
+67666565646362626160605F5E5E5D5C5C5B5A5959585757565555545353525151504F4F4E4D4D4C
+4B4B4A494948474746464544444342424140403F3F3E3D3D3C3C3B3A3A3939383837363635353434
+3333
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1
+B0AFAEADACABAAA9A8A7A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796959493929191908F8E8D8C8B
+8A89888786858483828180807F7E7D7C7B7A79787776757473727271706F6E6D6C6B6A6968676666
+6564636261605F5E5D5C5B5B5A59585756555453525251504F4E4D4C4B4A49494847464544434241
+41403F3E3D3C3B3A3A39383736353434333231302F2E2E2D2C2B2A2928282726252423232221201F
+1E1E1D1C1B1A1A1918171616151413121211100F0F0E0D0C0C0B0A09090807060605040403020201
+0100
+>
+4 %_Br
+[
+0.7686 0 0.0078 0 0.2 1 1 2 46.6292 0.5618 %_Bs
+0.1647 0.7804 0.9529 0.0431 0.8 0.2 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (White, Black)
+(White, Black) 0 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Azure Rings)
+(Azure Rings) 22.5 22.5 58.5 58.5 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1.75 w 4 M []0 d
0 XR
+40.5 58.5 m
+40.5 48.5586 32.4409 40.5 22.5 40.5 c
+12.5591 40.5 4.5 48.5586 4.5 58.5 c
+4.5 68.4414 12.5591 76.5 22.5 76.5 c
+32.4409 76.5 40.5 68.4414 40.5 58.5 c
+s
40.5 22.5 m
+40.5 12.5586 32.4409 4.5 22.5 4.5 c
+12.5591 4.5 4.5 12.5586 4.5 22.5 c
+4.5 32.4414 12.5591 40.5 22.5 40.5 c
+32.4409 40.5 40.5 32.4414 40.5 22.5 c
+s
40.5 40.5 m
+40.5 30.5586 32.4409 22.5 22.5 22.5 c
+12.5591 22.5 4.5 30.5586 4.5 40.5 c
+4.5 50.4414 12.5591 58.5 22.5 58.5 c
+32.4409 58.5 40.5 50.4414 40.5 40.5 c
+s
58.5 58.5 m
+58.5 48.5586 50.4409 40.5 40.5 40.5 c
+30.5591 40.5 22.5 48.5586 22.5 58.5 c
+22.5 68.4414 30.5591 76.5 40.5 76.5 c
+50.4409 76.5 58.5 68.4414 58.5 58.5 c
+s
58.5 22.5 m
+58.5 12.5586 50.4409 4.5 40.5 4.5 c
+30.5591 4.5 22.5 12.5586 22.5 22.5 c
+22.5 32.4414 30.5591 40.5 40.5 40.5 c
+50.4409 40.5 58.5 32.4414 58.5 22.5 c
+s
58.5 40.5 m
+58.5 30.5586 50.4409 22.5 40.5 22.5 c
+30.5591 22.5 22.5 30.5586 22.5 40.5 c
+22.5 50.4414 30.5591 58.5 40.5 58.5 c
+50.4409 58.5 58.5 50.4414 58.5 40.5 c
+s
76.5 58.5 m
+76.5 48.5586 68.4409 40.5 58.5 40.5 c
+48.5591 40.5 40.5 48.5586 40.5 58.5 c
+40.5 68.4414 48.5591 76.5 58.5 76.5 c
+68.4409 76.5 76.5 68.4414 76.5 58.5 c
+s
76.5 22.5 m
+76.5 12.5586 68.4409 4.5 58.5 4.5 c
+48.5591 4.5 40.5 12.5586 40.5 22.5 c
+40.5 32.4414 48.5591 40.5 58.5 40.5 c
+68.4409 40.5 76.5 32.4414 76.5 22.5 c
+s
76.5 40.5 m
+76.5 30.5586 68.4409 22.5 58.5 22.5 c
+48.5591 22.5 40.5 30.5586 40.5 40.5 c
+40.5 50.4414 48.5591 58.5 58.5 58.5 c
+68.4409 58.5 76.5 50.4414 76.5 40.5 c
+s
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Blue Tablecloth)
+(Blue Tablecloth) 0 0 12 12 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 6 m
+0 6 L
+0 12 L
+6 12 L
+6 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 6 m
+6 6 L
+6 12 L
+12 12 L
+12 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 1 Xa
+ 1 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 0 m
+6 0 L
+6 6 L
+12 6 L
+12 0 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 0 m
+0 0 L
+0 6 L
+6 6 L
+6 0 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Camouflage)
+(Camouflage) 1 1 73 73 [
+%AI3_Tile
+(0 O 0 R 0.3922 0.6039 0.1451 Xa
+ 0.3922 0.6039 0.1451 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 73 m
+1 1 L
+73 1 L
+73 73 L
+1 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4039 0.4 0.0745 Xa
+ 0.4039 0.4 0.0745 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+18.5449 73 m
+18.5449 1 L
+46.7832 1 L
+46.7832 73 L
+18.5449 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.8 0.1059 Xa
+ 0.8 0.8 0.1059 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+11.9512 1 m
+11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c
+9.2314 10.2334 4.25 10.2334 4.25 13.8735 c
+4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c
+10.0313 24.832 10.208 24.832 10.208 28.5654 c
+10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c
+5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c
+11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c
+7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c
+5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c
+4.6631 69.1636 11.9512 69.3184 11.9512 73 C
+27.9268 73 L
+27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c
+22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c
+28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c
+25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c
+28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c
+22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c
+26.3945 24.832 24.4248 24.832 24.4248 21.0991 c
+24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c
+20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c
+24.6055 2.8813 27.9268 4.7129 27.9268 1 C
+11.9512 1 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.0784 0.4157 0.1647 Xa
+ 0.0784 0.4157 0.1647 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+41.875 1 m
+41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c
+42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c
+40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c
+41.5742 24.832 43.6484 24.832 43.6484 28.5659 c
+43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c
+39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c
+39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c
+45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c
+40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c
+40.6289 69.1636 41.875 69.3184 41.875 73 C
+59.0752 73 L
+59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c
+53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c
+55.8945 55.502 61.0059 55.502 61.0059 51.7886 c
+61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c
+60.5635 40.897 59.9277 40.897 59.9277 37.2842 c
+59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c
+56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c
+61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c
+52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c
+55.7461 3.978 59.0752 4.6484 59.0752 1 C
+41.875 1 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Clown Attack)
+(Clown Attack) 5.25 11 41.25 47 [
+%AI3_Tile
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+17.5 18.25 m
+17.5 15.2119 15.0376 12.75 12 12.75 c
+8.9624 12.75 6.5 15.2119 6.5 18.25 c
+6.5 21.2881 8.9624 23.75 12 23.75 c
+15.0376 23.75 17.5 21.2881 17.5 18.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 1 Xa
+ 1 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+22.25 34.125 m
+22.25 31.2939 19.9556 29 17.125 29 c
+14.2944 29 12 31.2939 12 34.125 c
+12 36.9561 14.2944 39.25 17.125 39.25 c
+19.9556 39.25 22.25 36.9561 22.25 34.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+30 31.625 m
+30 29.4854 28.2646 27.75 26.125 27.75 c
+23.9849 27.75 22.25 29.4854 22.25 31.625 c
+22.25 33.7646 23.9849 35.5 26.125 35.5 c
+28.2646 35.5 30 33.7646 30 31.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+23.25 24.5 m
+23.25 22.4287 21.5713 20.75 19.5 20.75 c
+17.4287 20.75 15.75 22.4287 15.75 24.5 c
+15.75 26.5713 17.4287 28.25 19.5 28.25 c
+21.5713 28.25 23.25 26.5713 23.25 24.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+36 22.25 m
+36 19.0742 33.4258 16.5 30.25 16.5 c
+27.0742 16.5 24.5 19.0742 24.5 22.25 c
+24.5 25.4258 27.0742 28 30.25 28 c
+33.4258 28 36 25.4258 36 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.7922 0.2078 Xa
+ 0.8 0.7922 0.2078 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+24.25 16.5 m
+24.25 14.8438 22.9067 13.5 21.25 13.5 c
+19.5933 13.5 18.25 14.8438 18.25 16.5 c
+18.25 18.1563 19.5933 19.5 21.25 19.5 c
+22.9067 19.5 24.25 18.1563 24.25 16.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 43.875 m
+37.25 39.5264 33.7236 36 29.375 36 c
+25.0264 36 21.5 39.5264 21.5 43.875 c
+21.5 48.2236 25.0264 51.75 29.375 51.75 c
+33.7236 51.75 37.25 48.2236 37.25 43.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.8 0 Xa
+ 1 0.8 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+38.75 26.625 m
+38.75 25.7275 38.0225 25 37.125 25 c
+36.2275 25 35.5 25.7275 35.5 26.625 c
+35.5 27.5225 36.2275 28.25 37.125 28.25 c
+38.0225 28.25 38.75 27.5225 38.75 26.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.4 0 Xa
+ 1 0.4 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.875 42 m
+19.875 41.1025 19.1475 40.375 18.25 40.375 c
+17.3525 40.375 16.625 41.1025 16.625 42 c
+16.625 42.8975 17.3525 43.625 18.25 43.625 c
+19.1475 43.625 19.875 42.8975 19.875 42 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12.75 28.125 m
+12.75 26.8135 11.6865 25.75 10.375 25.75 c
+9.0635 25.75 8 26.8135 8 28.125 c
+8 29.4365 9.0635 30.5 10.375 30.5 c
+11.6865 30.5 12.75 29.4365 12.75 28.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+43.25 33 m
+43.25 30.998 41.627 29.375 39.625 29.375 c
+37.623 29.375 36 30.998 36 33 c
+36 35.002 37.623 36.625 39.625 36.625 c
+41.627 36.625 43.25 35.002 43.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 43.75 m
+13.25 40.9883 11.0117 38.75 8.25 38.75 c
+5.4883 38.75 3.25 40.9883 3.25 43.75 c
+3.25 46.5117 5.4883 48.75 8.25 48.75 c
+11.0117 48.75 13.25 46.5117 13.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6.5 22.25 m
+6.5 20.7314 5.2686 19.5 3.75 19.5 c
+2.2314 19.5 1 20.7314 1 22.25 c
+1 23.7686 2.2314 25 3.75 25 c
+5.2686 25 6.5 23.7686 6.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0.4 Xa
+ 1 1 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+34.4883 32.75 m
+34.4883 31.9277 33.8223 31.2617 33 31.2617 c
+32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c
+31.5117 33.5723 32.1777 34.2383 33 34.2383 c
+33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 43.75 m
+49.25 40.9883 47.0117 38.75 44.25 38.75 c
+41.4883 38.75 39.25 40.9883 39.25 43.75 c
+39.25 46.5117 41.4883 48.75 44.25 48.75 c
+47.0117 48.75 49.25 46.5117 49.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+42.5 22.25 m
+42.5 20.7314 41.2686 19.5 39.75 19.5 c
+38.2314 19.5 37 20.7314 37 22.25 c
+37 23.7686 38.2314 25 39.75 25 c
+41.2686 25 42.5 23.7686 42.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 7.752 m
+49.25 4.9902 47.0117 2.752 44.25 2.752 c
+41.4883 2.752 39.25 4.9902 39.25 7.752 c
+39.25 10.5137 41.4883 12.752 44.25 12.752 c
+47.0117 12.752 49.25 10.5137 49.25 7.752 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 7.875 m
+37.25 3.5264 33.7236 0 29.375 0 c
+25.0264 0 21.5 3.5264 21.5 7.875 c
+21.5 12.2236 25.0264 15.75 29.375 15.75 c
+33.7236 15.75 37.25 12.2236 37.25 7.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 7.75 m
+13.25 4.9883 11.0117 2.75 8.25 2.75 c
+5.4883 2.75 3.25 4.9883 3.25 7.75 c
+3.25 10.5117 5.4883 12.75 8.25 12.75 c
+11.0117 12.75 13.25 10.5117 13.25 7.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+7.25 33 m
+7.25 30.998 5.627 29.375 3.625 29.375 c
+1.623 29.375 0 30.998 0 33 c
+0 35.002 1.623 36.625 3.625 36.625 c
+5.627 36.625 7.25 35.002 7.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.6 1 Xa
+ 1 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+39.6533 16.0381 m
+39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c
+37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c
+36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c
+38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Pyramids)
+(Pyramids) 1 1 19.5 19.5 [
+%AI3_Tile
+(0 O 0 R 0.8 0.8 0.8 Xa
+ 0.8 0.8 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 19.5 m
+10.25 10.25 l
+19.5 19.5 l
+1 19.5 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.2 0.2 0.2 Xa
+ 0.2 0.2 0.2 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 1 m
+10.25 10.25 l
+1 1 l
+19.5 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 0.6 Xa
+ 0.6 0.6 0.6 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 1 m
+10.25 10.25 l
+1 19.5 l
+1 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4 0.4 0.4 Xa
+ 0.4 0.4 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 19.5 m
+10.25 10.25 l
+19.5 1 l
+19.5 19.5 l
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Red Stripe)
+(Red Stripe) 37 19 73 55 [
+%AI3_Tile
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 18 w 4 M []0 d
0 XR
+37 37 m
+73 37 l
+S
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+0 0 0 Xa
+([Registration]) Pc
+1 1 1 Xa
+(White) Pc
+0 0 0 Xa
+(Black) Pc
+0.6 0.6 0.6 Xa
+(Gray) Pc
+0.8 0.8 0.8 Xa
+(Light Gray) Pc
+0 1 1 Xa
+(Bright Blue) Pc
+0.6 1 1 Xa
+(Light Blue) Pc
+0.8 1 1 Xa
+(Pale Blue) Pc
+1 0 1 Xa
+(Violet) Pc
+1 0.4 1 Xa
+(Light Violet) Pc
+1 0.8 1 Xa
+(Pale Violet) Pc
+1 1 0 Xa
+(Yellow) Pc
+1 1 0.4 Xa
+(Light Yellow) Pc
+1 1 0.6 Xa
+(Pale Yellow) Pc
+0.6 0.2 0 Xa
+(Brown) Pc
+0.8 0.4 0.2078 Xa
+(Light Brown) Pc
+1 0.6 0.4 Xa
+(Pale Brown) Pc
+0 0 1 Xa
+(Blue) Pc
+0.4 0.4 1 Xa
+(Faded Blue) Pc
+0.8 0.8 1 Xa
+(Faded Pale Blue) Pc
+1 0 0 Xa
+(Red) Pc
+1 0.4 0.4 Xa
+(Light Red) Pc
+1 0.6 0.6 Xa
+(Mauve) Pc
+0 0.6 0 Xa
+(Forest Green) Pc
+0.2 0.8 0.2 Xa
+(Green) Pc
+0.6 1 0.4 Xa
+(Pale Green) Pc
+0 1 0 Xa
+(Bright Green) Pc
+0.4 1 0.4 Xa
+(Light Bright Green) Pc
+0.5922 1 0.6 Xa
+(Pale Light Green) Pc
+0.6 0 0.8 Xa
+(Purple) Pc
+0.6 0.4 0.8 Xa
+(Periwinkle) Pc
+0.8 0.6 0.8 Xa
+(Lavender) Pc
+1 0.6 0 Xa
+(Orange) Pc
+1 0.8 0.2 Xa
+(Light Orange) Pc
+1 0.8 0.6 Xa
+(Light Pale Orange) Pc
+Bb
+2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(White, Black) Pc
+Bb
+0 0 0 0 Bh
+2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Black, White Radial) Pc
+Bb
+2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Steel Bar II) Pc
+Bb
+2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(RGB Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Nova) Pc
+Bb
+2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Sunrise) Pc
+(Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Blue Tablecloth) Pc
+(Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Pyramids) Pc
+(Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Azure Rings) Pc
+(Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Red Stripe) Pc
+(Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Clown Attack) Pc
+(Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Camouflage) Pc
+PB
+%AI5_EndPalette
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 255 79 79 Lb
+(Layer 2) Ln
+0 A
+u
*u
+0 O
+1 1 1 Xa
+0 J 0 j 1 w 4 M []0 d
0 XR
+246.897 327.5371 m
+230.4131 344.4063 220.0479 367.5449 219.5142 393.1602 C
+221.1577 392.3193 222.9009 391.2002 224.0459 390.0693 C
+223.1982 392.9492 L
+226.1094 392.7715 L
+353.7344 309.3779 L
+353.709 309.0059 L
+353.7178 309.0049 L
+341.416 302.9072 327.624 299.4932 313.0381 299.4932 C
+287.208 299.4932 263.8262 310.2119 246.897 327.5371 C
+F
354.6104 309.4785 m
+354.7295 309.6641 L
+354.7207 309.4707 L
+354.6104 309.4785 L
+F
353.8105 310.5176 m
+354.7617 310.4531 L
+354.7393 309.9111 L
+353.8105 310.5176 L
+F
293.6792 349.8115 m
+299.4194 347.2432 305.751 345.8184 312.4082 345.8164 C
+333.2539 345.8232 350.9219 359.7686 357.1465 379.1016 C
+357.1016 378.1172 L
+357.5469 378.0986 L
+357.5059 377.0996 L
+357.0566 377.1182 L
+357.0215 376.1191 L
+357.4648 376.1006 L
+357.4238 375.1016 L
+356.9756 375.1201 L
+356.9307 374.1211 L
+357.3828 374.1025 L
+357.3418 373.1035 L
+356.8945 373.1221 L
+356.8496 372.123 L
+357.3008 372.1045 L
+357.2588 371.1055 L
+356.8047 371.124 L
+356.7686 370.125 L
+357.2178 370.1064 L
+357.1768 369.1074 L
+356.7236 369.126 L
+356.6787 368.1357 L
+357.1357 368.1172 L
+357.0947 367.1162 L
+356.6338 367.1367 L
+356.5977 366.1475 L
+357.0537 366.126 L
+357.0127 365.127 L
+356.5527 365.1484 L
+356.5078 364.1494 L
+356.9717 364.1279 L
+356.9307 363.1289 L
+356.4629 363.1504 L
+356.418 362.1514 L
+356.8896 362.1299 L
+356.8486 361.1309 L
+356.373 361.1523 L
+356.3369 360.1533 L
+356.8076 360.1318 L
+356.7666 359.1328 L
+356.292 359.1543 L
+356.2471 358.1641 L
+356.7256 358.1426 L
+356.6846 357.1436 L
+356.2021 357.165 L
+356.1572 356.166 L
+356.6436 356.1445 L
+356.6025 355.1543 L
+356.1123 355.1758 L
+356.0674 354.1768 L
+356.5615 354.1543 L
+356.5195 353.1553 L
+356.0225 353.1777 L
+355.9766 352.1875 L
+356.4795 352.165 L
+356.4385 351.166 L
+355.9316 351.1895 L
+355.8867 350.1992 L
+356.3975 350.1758 L
+356.3564 349.1768 L
+355.8418 349.2002 L
+355.7969 348.2012 L
+356.3154 348.1777 L
+356.2734 347.1758 L
+355.752 347.2021 L
+355.6982 346.2031 L
+356.2324 346.1787 L
+356.1914 345.1865 L
+355.6533 345.2129 L
+355.6084 344.2139 L
+356.1504 344.1895 L
+356.1104 343.1973 L
+355.5625 343.2236 L
+355.5176 342.2246 L
+356.0693 342.2002 L
+356.0283 341.207 L
+355.4639 341.2354 L
+355.4189 340.2363 L
+355.9873 340.21 L
+355.9463 339.2178 L
+355.374 339.2461 L
+355.3291 338.2471 L
+355.9053 338.2188 L
+355.8643 337.2275 L
+355.2754 337.2568 L
+355.2305 336.249 L
+355.8223 336.2227 L
+355.7822 335.2285 L
+355.1758 335.2588 L
+355.1309 334.2686 L
+355.7412 334.2383 L
+355.7002 333.2393 L
+355.0771 333.2695 L
+355.0322 332.2803 L
+355.6592 332.249 L
+355.6182 331.2559 L
+354.9775 331.29 L
+354.9326 330.291 L
+355.5771 330.2588 L
+355.5361 329.2686 L
+354.8789 329.3008 L
+354.8252 328.3105 L
+355.4951 328.2744 L
+355.4551 327.2842 L
+354.7715 327.3213 L
+354.7256 326.3223 L
+355.4141 326.2881 L
+355.3721 325.2852 L
+354.6719 325.3232 L
+354.6182 324.333 L
+355.332 324.2949 L
+355.291 323.3037 L
+354.5645 323.3428 L
+354.5098 322.3525 L
+355.25 322.3125 L
+355.209 321.3281 L
+354.4561 321.3721 L
+354.4023 320.373 L
+355.168 320.332 L
+355.1279 319.3457 L
+354.3477 319.3916 L
+354.2852 318.4023 L
+355.0869 318.3555 L
+355.0459 317.3643 L
+354.2314 317.4121 L
+354.1768 316.4219 L
+355.0049 316.373 L
+354.9648 315.3877 L
+354.1143 315.4414 L
+354.0508 314.4512 L
+354.9238 314.3994 L
+354.8838 313.4141 L
+353.9971 313.4697 L
+353.9336 312.4805 L
+354.8428 312.4268 L
+354.8018 311.4404 L
+353.8711 311.499 L
+353.8076 310.5195 L
+293.6792 349.8115 L
+F
228.1274 392.6475 m
+265.4482 390.3672 L
+266.4888 377.4307 272.4395 365.9277 281.373 357.8535 C
+228.1274 392.6475 L
+F
357.1514 379.1162 m
+357.2559 379.4434 357.3594 379.7734 357.458 380.1035 C
+357.6299 380.0967 L
+357.5879 379.0977 L
+357.1514 379.1162 L
+F
226.4346 393.7539 m
+223.8916 395.416 L
+224.4512 396.7109 L
+224.0767 396.4229 223.6509 396.1421 223.1929 395.8721 C
+221.125 397.2236 L
+233.0112 396.6401 L
+233.0459 396.5938 L
+233.0649 396.6079 233.083 396.6216 233.1016 396.6357 C
+265.2876 395.0552 L
+265.2852 394.8506 265.2842 394.6475 265.2842 394.4434 C
+265.2842 393.4121 265.3154 392.3896 265.3765 391.375 C
+226.4346 393.7539 L
+F
223.2573 393.9482 m
+223.4883 394.4834 L
+224.416 393.877 L
+223.2573 393.9482 L
+F
219.4922 395.2441 m
+219.4922 395.8447 219.4976 396.4438 219.5083 397.042 C
+219.5435 397.0615 L
+222.1963 395.3281 L
+221.3252 394.8848 220.3931 394.4873 219.498 394.1602 C
+219.4941 394.5215 219.4922 394.8828 219.4922 395.2441 C
+F
234.334 397.5762 m
+236.4956 399.2637 237.7866 400.4966 238.4551 401.4541 C
+238.8418 402.021 239.0488 402.5249 238.9678 403.0469 C
+238.8779 403.5962 238.437 403.9292 237.9868 404.0908 C
+236.6934 404.5439 234.418 404.3457 232.1772 404.1665 C
+284.3286 433.4946 L
+273.1592 424.9307 265.7939 411.3911 265.3101 396.0552 C
+234.334 397.5762 L
+F
1 D
+248.1748 399.7891 m
+248.6968 399.7891 L
+251.1538 407.7632 L
+250.6411 407.7632 L
+248.1748 399.7891 L
+F
242.5952 405.6841 m
+241.749 405.0991 241.4341 404.4688 241.3169 403.5962 C
+241.146 402.2549 241.3799 401.4448 241.6768 400.9048 C
+241.9199 400.5 242.2441 400.2119 242.6758 400.0049 C
+243.4502 399.6631 244.0259 399.7891 244.5659 399.9688 C
+245.6099 400.3198 245.8711 401.1479 246.0688 401.499 C
+246.3481 400.7158 246.5371 400.293 246.8159 400.0229 C
+247.0322 399.8159 247.2842 399.7168 247.5991 399.9868 C
+247.9229 400.248 248.04 400.7158 248.0488 400.9409 C
+248.0669 401.6519 L
+247.8599 401.6519 L
+247.833 401.499 247.8242 401.1118 247.5811 400.8599 C
+247.2119 400.4912 246.915 400.7969 246.7891 400.9048 C
+246.5732 401.1392 246.4019 401.4722 246.312 402.0479 C
+247.6621 405.855 L
+246.627 405.855 L
+245.8799 403.7129 L
+245.853 403.7129 L
+245.7988 404.1812 245.6372 404.667 245.4121 405.0449 C
+245.1421 405.5039 244.6919 405.8911 244.1431 405.981 C
+244.0386 406 243.9258 406.0088 243.8086 406.0088 C
+243.3706 406.0088 242.8794 405.8828 242.5952 405.6841 C
+F
255.3301 405.6211 m
+255.3301 404.6128 254.6821 403.3799 253.5391 402.1289 C
+251.73 400.1489 L
+251.73 400.0049 L
+256.3379 400.0049 L
+257.0039 401.6519 L
+256.8511 401.7148 L
+256.3921 400.959 256.1758 400.9229 255.7168 400.9229 C
+252.936 400.9229 L
+255.231 403.3169 256.3828 404.6851 256.3828 405.9629 C
+256.3828 407.4121 255.519 408.231 254.2861 408.231 C
+253.251 408.231 252.1528 407.6548 251.8018 405.8369 C
+252.0449 405.7832 L
+252.3062 406.4312 252.6572 407.2681 253.7188 407.2681 C
+255.0688 407.2681 255.3301 406.188 255.3301 405.6211 C
+F
0 D
+221.5728 398.2031 m
+230.0225 402.9546 L
+232.4424 397.6689 L
+221.5728 398.2031 L
+F
219.5391 398.3027 m
+220.3125 423.5366 230.623 446.2964 246.897 462.9512 C
+263.8262 480.2852 287.208 490.9951 313.0381 490.9951 C
+313.0381 491.499 L
+313.0381 490.9951 L
+330.4316 490.9951 346.7129 486.1328 360.666 477.6748 C
+360.6484 477.6748 L
+360.6465 477.5596 L
+229.8682 404.0146 L
+229.8296 404.0127 229.7905 404.0112 229.752 404.0098 C
+229.7549 403.9502 L
+219.6982 398.2949 L
+219.5391 398.3027 L
+F
243.7832 400.2031 m
+243.4678 400.2212 243.3149 400.293 243.0542 400.563 C
+242.7749 400.8511 242.6582 401.229 242.5952 401.5801 C
+242.478 402.2549 242.4331 402.9209 242.5142 403.5869 C
+242.5952 404.2168 242.7388 404.7388 243.0269 405.1172 C
+243.2881 405.459 243.4951 405.6572 244.188 405.459 C
+244.5298 405.3511 244.8452 405.0361 245.0342 404.7212 C
+245.3398 404.2168 245.4658 403.2808 245.5469 402.687 C
+245.1958 401.6968 L
+245.061 401.3188 244.7461 400.7251 244.5029 400.5269 C
+244.269 400.3096 244.0195 400.2012 243.8267 400.2012 C
+243.8115 400.2012 243.7974 400.2017 243.7832 400.2031 C
+F
358.6143 404.0811 m
+358.6172 404.0811 L
+358.6162 404.0698 L
+358.6162 404.0747 358.6152 404.0762 358.6143 404.0811 C
+F
358.4072 405.0898 m
+353.7031 426.8174 334.9053 443.062 312.4082 443.0698 C
+312.4082 442.5659 L
+312.4082 443.0698 L
+306.5918 443.0679 301.0234 441.9795 295.8809 439.9917 C
+361.0049 476.6152 L
+361.6035 476.6045 L
+361.5605 475.5654 L
+360.6123 475.5869 L
+360.585 474.5518 L
+361.5186 474.5308 L
+361.4756 473.4922 L
+360.5576 473.5171 L
+360.5313 472.4819 L
+361.4326 472.4575 L
+361.3906 471.4321 L
+360.5039 471.4561 L
+360.4766 470.4302 L
+361.3486 470.4063 L
+361.3066 469.3809 L
+360.4502 469.4038 L
+360.4229 468.396 L
+361.2646 468.3696 L
+361.2227 467.3477 L
+360.3867 467.3701 L
+360.3604 466.3438 L
+361.1797 466.3184 L
+361.1387 465.3013 L
+360.3242 465.3271 L
+360.2969 464.3188 L
+361.0967 464.2939 L
+361.0547 463.2769 L
+360.2607 463.3018 L
+360.2344 462.3027 L
+361.0137 462.2783 L
+360.9717 461.2617 L
+360.1982 461.2861 L
+360.1709 460.2778 L
+360.9307 460.2539 L
+360.8887 459.2461 L
+360.1348 459.27 L
+360.1084 458.2622 L
+360.8477 458.2388 L
+360.8057 457.231 L
+360.0723 457.2539 L
+360.0361 456.2461 L
+360.7646 456.2197 L
+360.7227 455.2153 L
+360.0088 455.2378 L
+359.9727 454.23 L
+360.6816 454.2075 L
+360.6396 453.1997 L
+359.9365 453.2222 L
+359.9014 452.2139 L
+360.5986 452.1919 L
+360.5566 451.1846 L
+359.874 451.2061 L
+359.8379 450.1982 L
+360.5156 450.1768 L
+360.4736 449.1748 L
+359.8018 449.1992 L
+359.7656 448.1821 L
+360.4326 448.1582 L
+360.3906 447.1592 L
+359.7305 447.1831 L
+359.6943 446.1748 L
+360.3496 446.1514 L
+360.3086 445.1528 L
+359.667 445.1758 L
+359.6309 444.168 L
+360.2666 444.145 L
+360.2256 443.1465 L
+359.5947 443.1689 L
+359.5586 442.1611 L
+360.1846 442.1387 L
+360.1436 441.1396 L
+359.5234 441.1621 L
+359.4873 440.1538 L
+360.1016 440.1348 L
+360.0605 439.1357 L
+359.4512 439.1548 L
+359.415 438.147 L
+360.0195 438.125 L
+359.9775 437.1172 L
+359.3789 437.1392 L
+359.3428 436.1401 L
+359.9365 436.1187 L
+359.8955 435.1196 L
+359.3066 435.1411 L
+359.2715 434.1328 L
+359.8535 434.1118 L
+359.8125 433.1133 L
+359.2354 433.1338 L
+359.1992 432.1348 L
+359.7715 432.1143 L
+359.7305 431.1064 L
+359.1631 431.127 L
+359.127 430.1279 L
+359.6885 430.1079 L
+359.6475 429.1089 L
+359.0908 429.1289 L
+359.0547 428.1299 L
+359.6064 428.1074 L
+359.5654 427.1025 L
+359.0186 427.1221 L
+358.9834 426.1138 L
+359.5234 426.0947 L
+359.4824 425.0957 L
+358.9473 425.1152 L
+358.9111 424.1162 L
+359.4414 424.0947 L
+359.3994 423.0889 L
+358.8662 423.1079 L
+358.8301 422.1089 L
+359.3584 422.0898 L
+359.3174 421.0913 L
+358.7939 421.1099 L
+358.7578 420.1021 L
+359.2764 420.0835 L
+359.2354 419.0845 L
+358.7217 419.103 L
+358.6855 418.104 L
+359.1934 418.0859 L
+359.1523 417.0864 L
+358.6406 417.105 L
+358.6055 416.106 L
+359.1113 416.0879 L
+359.0703 415.0869 L
+358.5693 415.1069 L
+358.5332 414.1079 L
+359.0293 414.0879 L
+358.9883 413.0825 L
+358.4971 413.1001 L
+358.4521 412.1011 L
+358.9463 412.0811 L
+358.9053 411.082 L
+358.416 411.1021 L
+358.3799 410.0938 L
+358.8643 410.0767 L
+358.8232 409.0845 L
+358.3438 409.104 L
+358.2988 408.0962 L
+358.7822 408.0786 L
+358.7402 407.0796 L
+358.2627 407.0972 L
+358.2266 406.0981 L
+358.6992 406.0786 L
+358.6582 405.0796 L
+358.4072 405.0898 L
+F
*U
+*u
+0 0 0 Xa
+218.5059 393.6475 m
+218.8335 393.499 219.1719 393.3359 219.5142 393.1602 C
+220.0479 367.5449 230.4131 344.4063 246.897 327.5371 C
+263.8262 310.2119 287.208 299.4932 313.0381 299.4932 C
+327.624 299.4932 341.416 302.9072 353.7178 309.0049 C
+354.6992 308.9346 L
+354.6992 308.9336 L
+354.6992 308.9346 L
+354.7031 308.9336 L
+354.9326 308.4844 L
+342.3057 302.0938 328.0771 298.4941 313.0381 298.4941 C
+313.0381 298.998 L
+313.0381 298.4941 L
+261.334 298.4941 219.3413 340.9619 218.5059 393.6475 C
+F
218.4932 395.2441 m
+218.4932 448.668 260.811 491.9941 313.0381 491.9941 C
+313.0381 490.9951 L
+287.208 490.9951 263.8262 480.2852 246.897 462.9512 C
+230.623 446.2964 220.3125 423.5366 219.5391 398.3027 C
+219.3301 398.313 L
+219.3198 398.082 L
+218.7539 397.7642 L
+219.2402 396.8911 L
+219.5083 397.042 L
+219.4976 396.4438 219.4922 395.8447 219.4922 395.2441 C
+219.4922 394.8828 219.4941 394.5215 219.498 394.1602 C
+219.1592 394.0361 218.8257 393.9229 218.5034 393.8203 C
+218.4966 394.2949 218.4932 394.7676 218.4932 395.2441 C
+F
360.666 477.6748 m
+346.7129 486.1328 330.4316 490.9951 313.0381 490.9951 C
+313.0381 491.9941 L
+330.9209 491.9941 347.6523 486.9092 361.9082 478.0801 C
+361.6475 477.6572 L
+360.666 477.6748 L
+F
313.0381 491.499 m
+313.0381 491.9941 L
+313.0381 491.499 L
+F
*U
+354.6992 308.9346 m
+354.6992 308.9346 L
+354.6992 308.9336 L
+354.6992 308.9346 L
+F
*u
+1 1 1 Xa
+354.7207 309.4707 m
+354.7295 309.6641 L
+354.751 309.6982 L
+354.7461 309.6221 354.7402 309.5459 354.7354 309.4697 C
+354.7207 309.4707 L
+F
354.7393 309.9111 m
+354.7617 310.4531 L
+354.8008 310.4512 L
+354.7891 310.2656 354.7764 310.0762 354.7637 309.8945 C
+354.7393 309.9111 L
+F
354.8018 311.4404 m
+354.8428 312.4268 L
+354.9277 312.4219 L
+354.9072 312.0879 354.8857 311.7598 354.8652 311.4365 C
+354.8018 311.4404 L
+F
354.8838 313.4141 m
+354.9238 314.3994 L
+355.0498 314.3926 L
+355.0293 314.0605 355.0098 313.7305 354.9893 313.4072 C
+354.8838 313.4141 L
+F
354.9648 315.3877 m
+355.0049 316.373 L
+355.168 316.3633 L
+355.1484 316.0313 355.1289 315.7021 355.1094 315.3779 C
+354.9648 315.3877 L
+F
355.0459 317.3643 m
+355.0869 318.3555 L
+355.2832 318.3438 L
+355.2637 318.0088 355.2451 317.6816 355.2256 317.3535 C
+355.0459 317.3643 L
+F
355.1279 319.3457 m
+355.168 320.332 L
+355.3955 320.3193 L
+355.377 319.9863 355.3584 319.6602 355.3398 319.334 C
+355.1279 319.3457 L
+F
355.209 321.3281 m
+355.25 322.3125 L
+355.5049 322.2988 L
+355.4863 321.9668 355.4688 321.6406 355.4502 321.3135 C
+355.209 321.3281 L
+F
355.291 323.3037 m
+355.332 324.2949 L
+355.6123 324.2793 L
+355.5947 323.9463 355.5771 323.6172 355.5586 323.2891 C
+355.291 323.3037 L
+F
355.3721 325.2852 m
+355.4141 326.2881 L
+355.7188 326.2725 L
+355.7012 325.9375 355.6826 325.6006 355.665 325.2695 C
+355.3721 325.2852 L
+F
355.4551 327.2842 m
+355.4951 328.2744 L
+355.8223 328.2568 L
+355.8047 327.9258 355.7881 327.5938 355.7705 327.2666 C
+355.4551 327.2842 L
+F
355.5361 329.2686 m
+355.5771 330.2588 L
+355.9248 330.2412 L
+355.9072 329.9102 355.8906 329.5801 355.874 329.252 C
+355.5361 329.2686 L
+F
355.6182 331.2559 m
+355.6592 332.249 L
+356.0254 332.2305 L
+356.0088 331.8955 355.9922 331.5684 355.9746 331.2363 C
+355.6182 331.2559 L
+F
355.7002 333.2393 m
+355.7412 334.2383 L
+356.125 334.2197 L
+356.1084 333.8887 356.0918 333.5488 356.0752 333.2207 C
+355.7002 333.2393 L
+F
355.7822 335.2285 m
+355.8223 336.2227 L
+356.2227 336.2041 L
+356.207 335.874 356.1904 335.5371 356.1738 335.21 C
+355.7822 335.2285 L
+F
355.8643 337.2275 m
+355.9053 338.2188 L
+356.3203 338.1973 L
+356.3037 337.8652 356.2881 337.5371 356.2715 337.208 C
+355.8643 337.2275 L
+F
355.9463 339.2178 m
+355.9873 340.21 L
+356.416 340.1914 L
+356.4004 339.8574 356.3848 339.5273 356.3682 339.1963 C
+355.9463 339.2178 L
+F
356.0283 341.207 m
+356.0693 342.2002 L
+356.5117 342.1807 L
+356.4951 341.8496 356.4795 341.5137 356.4639 341.1855 C
+356.0283 341.207 L
+F
356.1104 343.1973 m
+356.1504 344.1895 L
+356.6055 344.1689 L
+356.5898 343.8379 356.5742 343.5039 356.5586 343.1748 C
+356.1104 343.1973 L
+F
356.1914 345.1865 m
+356.2324 346.1787 L
+356.6982 346.1582 L
+356.6826 345.8262 356.667 345.4932 356.6514 345.1631 C
+356.1914 345.1865 L
+F
356.2734 347.1758 m
+356.3154 348.1777 L
+356.791 348.1563 L
+356.7754 347.8203 356.7598 347.4863 356.7441 347.1523 C
+356.2734 347.1758 L
+F
356.3564 349.1768 m
+356.3975 350.1758 L
+356.8828 350.1543 L
+356.8672 349.8184 356.8525 349.4883 356.8369 349.1553 C
+356.3564 349.1768 L
+F
356.4385 351.166 m
+356.4795 352.165 L
+356.9736 352.1436 L
+356.958 351.8086 356.9434 351.4775 356.9277 351.1445 C
+356.4385 351.166 L
+F
356.5195 353.1553 m
+356.5615 354.1543 L
+357.0635 354.1318 L
+357.0479 353.7939 357.0332 353.4697 357.0176 353.1328 C
+356.5195 353.1553 L
+F
356.6025 355.1543 m
+356.6436 356.1445 L
+357.1523 356.1211 L
+357.1377 355.7891 357.123 355.4619 357.1084 355.1309 C
+356.6025 355.1543 L
+F
356.6846 357.1436 m
+356.7256 358.1426 L
+357.2412 358.1191 L
+357.2266 357.7881 357.2119 357.4502 357.1973 357.1201 C
+356.6846 357.1436 L
+F
356.7666 359.1328 m
+356.8076 360.1318 L
+357.3291 360.1084 L
+357.3145 359.7754 357.2998 359.4414 357.2852 359.1094 C
+356.7666 359.1328 L
+F
356.8486 361.1309 m
+356.8896 362.1299 L
+357.417 362.1064 L
+357.4023 361.7744 357.3877 361.4375 357.373 361.1074 C
+356.8486 361.1309 L
+F
356.9307 363.1289 m
+356.9717 364.1279 L
+357.5039 364.1045 L
+357.4893 363.7705 357.4746 363.4375 357.46 363.1055 C
+356.9307 363.1289 L
+F
357.0127 365.127 m
+357.0537 366.126 L
+357.5898 366.1025 L
+357.5762 365.7715 357.5615 365.4336 357.5469 365.1035 C
+357.0127 365.127 L
+F
357.0947 367.1162 m
+357.1357 368.1172 L
+357.6758 368.0957 L
+357.6611 367.7627 357.6475 367.4238 357.6328 367.0918 C
+357.0947 367.1162 L
+F
357.1768 369.1074 m
+357.2178 370.1064 L
+357.7607 370.085 L
+357.7471 369.7549 357.7324 369.415 357.7178 369.0859 C
+357.1768 369.1074 L
+F
357.2588 371.1055 m
+357.3008 372.1045 L
+357.8457 372.083 L
+357.832 371.751 357.8174 371.4141 357.8037 371.084 C
+357.2588 371.1055 L
+F
357.3418 373.1035 m
+357.3828 374.1025 L
+357.9297 374.0801 L
+357.916 373.748 357.9023 373.4141 357.8877 373.082 C
+357.3418 373.1035 L
+F
357.4238 375.1016 m
+357.4648 376.1006 L
+358.0137 376.0791 L
+358 375.7451 357.9863 375.4121 357.9717 375.0801 C
+357.4238 375.1016 L
+F
357.5059 377.0996 m
+357.5469 378.0986 L
+358.0977 378.0762 L
+358.083 377.7422 358.0693 377.4111 358.0557 377.0771 C
+357.5059 377.0996 L
+F
357.5879 379.0977 m
+357.6299 380.0967 L
+358.1807 380.0742 L
+358.166 379.7393 358.1523 379.4102 358.1387 379.0762 C
+357.5879 379.0977 L
+F
357.7422 381.0928 m
+357.833 381.4219 357.9199 381.751 358.0039 382.083 C
+358.2627 382.0723 L
+358.249 381.7373 358.2354 381.4092 358.2217 381.0732 C
+357.7422 381.0928 L
+F
358.2451 383.0742 m
+358.2695 383.1777 358.293 383.2813 358.3164 383.3848 C
+358.3125 383.2803 358.3076 383.1768 358.3037 383.0713 C
+358.2451 383.0742 L
+F
358.9648 402.0654 m
+359.0645 402.0615 L
+359.0576 401.8838 359.0508 401.7036 359.0439 401.5259 C
+359.0176 401.707 358.9922 401.8853 358.9648 402.0654 C
+F
358.8008 403.0728 m
+358.7432 403.4063 358.6807 403.7388 358.6162 404.0698 C
+358.6172 404.0811 L
+359.1426 404.0596 L
+359.1299 403.7271 359.1162 403.3936 359.1035 403.0605 C
+358.8008 403.0728 L
+F
358.6582 405.0796 m
+358.6992 406.0786 L
+359.2207 406.0576 L
+359.207 405.7266 359.1943 405.3901 359.1816 405.0586 C
+358.6582 405.0796 L
+F
358.7402 407.0796 m
+358.7822 408.0786 L
+359.2979 408.0601 L
+359.2852 407.7256 359.2725 407.396 359.2588 407.061 C
+358.7402 407.0796 L
+F
358.8232 409.0845 m
+358.8643 410.0767 L
+359.374 410.0581 L
+359.3613 409.7256 359.3486 409.3975 359.3359 409.064 C
+358.8232 409.0845 L
+F
358.9053 411.082 m
+358.9463 412.0811 L
+359.4512 412.0605 L
+359.4385 411.7295 359.4258 411.3936 359.4131 411.0615 C
+358.9053 411.082 L
+F
358.9883 413.0825 m
+359.0293 414.0879 L
+359.5273 414.0679 L
+359.5146 413.73 359.502 413.4028 359.4893 413.0645 C
+358.9883 413.0825 L
+F
359.0703 415.0869 m
+359.1113 416.0879 L
+359.6035 416.0698 L
+359.5908 415.7388 359.5781 415.3989 359.5654 415.0664 C
+359.0703 415.0869 L
+F
359.1523 417.0864 m
+359.1934 418.0859 L
+359.6787 418.0684 L
+359.666 417.7349 359.6533 417.4033 359.6416 417.0693 C
+359.1523 417.0864 L
+F
359.2354 419.0845 m
+359.2764 420.0835 L
+359.7539 420.0659 L
+359.7412 419.7354 359.7285 419.3994 359.7168 419.0674 C
+359.2354 419.0845 L
+F
359.3174 421.0913 m
+359.3584 422.0898 L
+359.8291 422.0732 L
+359.8164 421.7407 359.8037 421.4077 359.791 421.0742 C
+359.3174 421.0913 L
+F
359.3994 423.0889 m
+359.4414 424.0947 L
+359.9033 424.0757 L
+359.8906 423.7422 359.8779 423.4067 359.8662 423.0718 C
+359.3994 423.0889 L
+F
359.4824 425.0957 m
+359.5234 426.0947 L
+359.9775 426.0781 L
+359.9648 425.7437 359.9521 425.415 359.9404 425.0791 C
+359.4824 425.0957 L
+F
359.5654 427.1025 m
+359.6064 428.1074 L
+360.0508 428.0898 L
+360.0391 427.7544 360.0264 427.4229 360.0137 427.0859 C
+359.5654 427.1025 L
+F
359.6475 429.1089 m
+359.6885 430.1079 L
+360.124 430.0918 L
+360.1123 429.7607 360.0996 429.4263 360.0879 429.0933 C
+359.6475 429.1089 L
+F
359.7305 431.1064 m
+359.7715 432.1143 L
+360.1973 432.0991 L
+360.1846 431.7637 360.1729 431.4287 360.1602 431.0908 C
+359.7305 431.1064 L
+F
359.8125 433.1133 m
+359.8535 434.1118 L
+360.2695 434.0972 L
+360.2568 433.7656 360.2451 433.4316 360.2334 433.0981 C
+359.8125 433.1133 L
+F
359.8955 435.1196 m
+359.9365 436.1187 L
+360.3408 436.104 L
+360.3291 435.7734 360.3174 435.438 360.3057 435.105 C
+359.8955 435.1196 L
+F
359.9775 437.1172 m
+360.0195 438.125 L
+360.4131 438.1108 L
+360.4014 437.7739 360.3887 437.4424 360.377 437.103 C
+359.9775 437.1172 L
+F
360.0605 439.1357 m
+360.1016 440.1348 L
+360.4844 440.1226 L
+360.4727 439.791 360.4609 439.458 360.4492 439.1235 C
+360.0605 439.1357 L
+F
360.1436 441.1396 m
+360.1846 442.1387 L
+360.5547 442.125 L
+360.543 441.792 360.5313 441.4624 360.5195 441.126 C
+360.1436 441.1396 L
+F
360.2256 443.1465 m
+360.2666 444.145 L
+360.625 444.1323 L
+360.6133 443.8013 360.6016 443.4673 360.5898 443.1333 C
+360.2256 443.1465 L
+F
360.3086 445.1528 m
+360.3496 446.1514 L
+360.6943 446.1392 L
+360.6826 445.8076 360.6719 445.4746 360.6602 445.1401 C
+360.3086 445.1528 L
+F
360.3906 447.1592 m
+360.4326 448.1582 L
+360.7637 448.146 L
+360.752 447.8149 360.7412 447.4814 360.7295 447.147 C
+360.3906 447.1592 L
+F
360.4736 449.1748 m
+360.5156 450.1768 L
+360.832 450.1665 L
+360.8213 449.8335 360.8096 449.5 360.7988 449.1631 C
+360.4736 449.1748 L
+F
360.5566 451.1846 m
+360.5986 452.1919 L
+360.9004 452.1826 L
+360.8896 451.8481 360.8779 451.5137 360.8672 451.1748 C
+360.5566 451.1846 L
+F
360.6396 453.1997 m
+360.6816 454.2075 L
+360.9678 454.1987 L
+360.957 453.8643 360.9463 453.5298 360.9346 453.1904 C
+360.6396 453.1997 L
+F
360.7227 455.2153 m
+360.7646 456.2197 L
+361.0352 456.21 L
+361.0234 455.877 361.0127 455.5454 361.002 455.2065 C
+360.7227 455.2153 L
+F
360.8057 457.231 m
+360.8477 458.2388 L
+361.1006 458.2305 L
+361.0898 457.8975 361.0791 457.562 361.0684 457.2227 C
+360.8057 457.231 L
+F
360.8887 459.2461 m
+360.9307 460.2539 L
+361.166 460.2466 L
+361.1553 459.9146 361.1445 459.5771 361.1338 459.2383 C
+360.8887 459.2461 L
+F
360.9717 461.2617 m
+361.0137 462.2783 L
+361.2305 462.2715 L
+361.2197 461.938 361.209 461.5962 361.1982 461.2544 C
+360.9717 461.2617 L
+F
361.0547 463.2769 m
+361.0967 464.2939 L
+361.293 464.2876 L
+361.2822 463.9551 361.2725 463.6123 361.2617 463.2705 C
+361.0547 463.2769 L
+F
361.1387 465.3013 m
+361.1797 466.3184 L
+361.3545 466.3125 L
+361.3447 465.9795 361.334 465.6387 361.3242 465.2954 C
+361.1387 465.3013 L
+F
361.2227 467.3477 m
+361.2646 468.3696 L
+361.416 468.3647 L
+361.4063 468.0317 361.3955 467.6885 361.3857 467.3428 C
+361.2227 467.3477 L
+F
361.3066 469.3809 m
+361.3486 470.4063 L
+361.4736 470.4028 L
+361.4648 470.0688 361.4551 469.7271 361.4453 469.377 C
+361.3066 469.3809 L
+F
361.3906 471.4321 m
+361.4326 472.4575 L
+361.5303 472.4551 L
+361.5215 472.1221 361.5117 471.7822 361.502 471.4292 C
+361.3906 471.4321 L
+F
361.4756 473.4922 m
+361.5186 474.5308 L
+361.582 474.5293 L
+361.5742 474.1973 361.5664 473.8511 361.5566 473.4902 C
+361.4756 473.4922 L
+F
361.5605 475.5654 m
+361.6035 476.6045 L
+361.6279 476.604 L
+361.6221 476.2803 361.6143 475.9341 361.6064 475.5645 C
+361.5605 475.5654 L
+F
*U
+*u
+0 0 0 Xa
+353.709 309.0059 m
+353.7344 309.3779 L
+354.3027 309.0059 L
+354.5713 309.4209 L
+354.3027 309.0059 L
+354.5732 309.4199 L
+354.6104 309.4785 L
+355.7344 309.4023 L
+355.6982 308.8623 L
+353.709 309.0059 L
+F
353.8105 310.5176 m
+353.8076 310.5195 L
+353.8711 311.499 L
+355.8691 311.373 L
+355.8057 310.3828 L
+353.8105 310.5176 L
+F
353.9336 312.4805 m
+353.9971 313.4697 L
+355.9951 313.3438 L
+355.9316 312.3633 L
+353.9336 312.4805 L
+F
354.0508 314.4512 m
+354.1143 315.4414 L
+356.1123 315.3154 L
+356.0488 314.334 L
+354.0508 314.4512 L
+F
354.1768 316.4219 m
+354.2314 317.4121 L
+356.2285 317.2949 L
+356.166 316.3047 L
+354.1768 316.4219 L
+F
354.2852 318.4023 m
+354.3477 319.3916 L
+356.3369 319.2754 L
+356.2832 318.2852 L
+354.2852 318.4023 L
+F
354.4023 320.373 m
+354.4561 321.3721 L
+356.4541 321.2549 L
+356.4004 320.2646 L
+354.4023 320.373 L
+F
354.5098 322.3525 m
+354.5645 323.3428 L
+356.5615 323.2354 L
+356.5078 322.2451 L
+354.5098 322.3525 L
+F
354.6182 324.333 m
+354.6719 325.3232 L
+356.6699 325.2148 L
+356.6162 324.2246 L
+354.6182 324.333 L
+F
354.7256 326.3223 m
+354.7715 327.3213 L
+356.7686 327.2129 L
+356.7236 326.2227 L
+354.7256 326.3223 L
+F
354.8252 328.3105 m
+354.8789 329.3008 L
+356.877 329.2021 L
+356.8232 328.2031 L
+354.8252 328.3105 L
+F
354.9326 330.291 m
+354.9775 331.29 L
+356.9756 331.1816 L
+356.9219 330.1924 L
+354.9326 330.291 L
+F
355.0322 332.2803 m
+355.0771 333.2695 L
+357.0752 333.1709 L
+357.0303 332.1807 L
+355.0322 332.2803 L
+F
355.1309 334.2686 m
+355.1758 335.2588 L
+357.1738 335.1602 L
+357.1289 334.1699 L
+355.1309 334.2686 L
+F
355.2305 336.249 m
+355.2754 337.2568 L
+357.2734 337.1582 L
+357.2275 336.1592 L
+355.2305 336.249 L
+F
355.3291 338.2471 m
+355.374 339.2461 L
+357.3721 339.1475 L
+357.3184 338.1484 L
+355.3291 338.2471 L
+F
355.4189 340.2363 m
+355.4639 341.2354 L
+357.4619 341.1357 L
+357.417 340.1465 L
+355.4189 340.2363 L
+F
355.5176 342.2246 m
+355.5625 343.2236 L
+357.5605 343.125 L
+357.5156 342.1348 L
+355.5176 342.2246 L
+F
355.6084 344.2139 m
+355.6533 345.2129 L
+357.6514 345.1143 L
+357.6064 344.124 L
+355.6084 344.2139 L
+F
355.6982 346.2031 m
+355.752 347.2021 L
+357.75 347.1025 L
+357.6963 346.1133 L
+355.6982 346.2031 L
+F
355.7969 348.2012 m
+355.8418 349.2002 L
+357.8398 349.1104 L
+357.7949 348.1113 L
+355.7969 348.2012 L
+F
355.8867 350.1992 m
+355.9316 351.1895 L
+357.9297 351.0986 L
+357.8848 350.1094 L
+355.8867 350.1992 L
+F
355.9766 352.1875 m
+356.0225 353.1777 L
+358.0195 353.0879 L
+357.9746 352.0977 L
+355.9766 352.1875 L
+F
356.0674 354.1768 m
+356.1123 355.1758 L
+358.1104 355.0859 L
+358.0654 354.0869 L
+356.0674 354.1768 L
+F
356.1572 356.166 m
+356.2021 357.165 L
+358.2002 357.0752 L
+358.1553 356.0762 L
+356.1572 356.166 L
+F
356.2471 358.1641 m
+356.292 359.1543 L
+358.29 359.0645 L
+358.2451 358.0742 L
+356.2471 358.1641 L
+F
356.3369 360.1533 m
+356.373 361.1523 L
+358.3711 361.0615 L
+358.335 360.0625 L
+356.3369 360.1533 L
+F
356.418 362.1514 m
+356.4629 363.1504 L
+358.4609 363.0596 L
+358.416 362.0605 L
+356.418 362.1514 L
+F
356.5078 364.1494 m
+356.5527 365.1484 L
+358.5508 365.0576 L
+358.5059 364.0586 L
+356.5078 364.1494 L
+F
356.5977 366.1475 m
+356.6338 367.1367 L
+358.6318 367.0469 L
+358.5957 366.0566 L
+356.5977 366.1475 L
+F
356.6787 368.1357 m
+356.7236 369.126 L
+358.7217 369.0449 L
+358.6768 368.0547 L
+356.6787 368.1357 L
+F
356.7686 370.125 m
+356.8047 371.124 L
+358.8027 371.043 L
+358.7666 370.0439 L
+356.7686 370.125 L
+F
356.8496 372.123 m
+356.8945 373.1221 L
+358.8926 373.041 L
+358.8477 372.042 L
+356.8496 372.123 L
+F
356.9307 374.1211 m
+356.9756 375.1201 L
+358.9736 375.0391 L
+358.9287 374.04 L
+356.9307 374.1211 L
+F
357.0215 376.1191 m
+357.0566 377.1182 L
+359.0547 377.0371 L
+359.0186 376.0381 L
+357.0215 376.1191 L
+F
357.1016 378.1172 m
+357.1465 379.1016 L
+357.1475 379.1055 357.1494 379.1113 357.1514 379.1162 C
+359.1445 379.0352 L
+359.0996 378.0361 L
+357.1016 378.1172 L
+F
357.458 380.1035 m
+357.5557 380.4326 357.6504 380.7617 357.7422 381.0928 C
+359.2256 381.0332 L
+359.1807 380.0342 L
+357.458 380.1035 L
+F
358.0039 382.083 m
+358.0879 382.4111 358.168 382.7432 358.2451 383.0742 C
+359.3066 383.0313 L
+359.2617 382.0322 L
+358.0039 382.083 L
+F
358.4648 384.0654 m
+358.5342 384.3945 358.6006 384.7266 358.6631 385.0586 C
+359.3877 385.0293 L
+359.3428 384.0303 L
+358.4648 384.0654 L
+F
358.8408 386.0518 m
+358.8975 386.3877 358.9521 386.7256 359.002 387.0635 C
+359.4688 387.0449 L
+359.4326 386.0283 L
+358.8408 386.0518 L
+F
359.1377 388.0596 m
+359.1797 388.3916 359.2188 388.7207 359.2539 389.0547 C
+359.5498 389.043 L
+359.5137 388.0439 L
+359.1377 388.0596 L
+F
359.3516 390.0518 m
+359.3799 390.3799 359.4043 390.71 359.4268 391.04 C
+359.6309 391.0322 L
+359.5947 390.042 L
+359.3516 390.0518 L
+F
359.4844 392.0479 m
+359.5 392.376 359.5117 392.707 359.5205 393.0381 C
+359.7119 393.0303 L
+359.6758 392.04 L
+359.4844 392.0479 L
+F
359.5381 394.0371 m
+359.5391 394.1729 359.541 394.3066 359.541 394.4434 C
+359.541 394.6416 359.54 394.8408 359.5371 395.0386 C
+359.793 395.0278 L
+359.748 394.0293 L
+359.5381 394.0371 L
+F
359.5146 396.0396 m
+359.5049 396.3745 359.4912 396.709 359.4746 397.042 C
+359.874 397.0259 L
+359.8291 396.0269 L
+359.5146 396.0396 L
+F
359.4131 398.0449 m
+359.3896 398.3799 359.3623 398.7134 359.332 399.0459 C
+359.9463 399.0239 L
+359.9102 398.0249 L
+359.4131 398.0449 L
+F
359.2305 400.0503 m
+359.1934 400.3892 359.1523 400.7227 359.1074 401.0591 C
+360.0273 401.022 L
+359.9912 400.0229 L
+359.2305 400.0503 L
+F
358.9648 402.0654 m
+358.9131 402.4014 358.8584 402.7393 358.8008 403.0728 C
+360.1084 403.02 L
+360.0625 402.021 L
+358.9648 402.0654 L
+F
358.6143 404.0811 m
+358.5488 404.4185 358.4795 404.7554 358.4072 405.0898 C
+360.1797 405.0181 L
+360.1436 404.019 L
+358.6143 404.0811 L
+F
358.2266 406.0981 m
+358.2627 407.0972 L
+360.2607 407.0249 L
+360.2246 406.0171 L
+358.2266 406.0981 L
+F
358.2988 408.0962 m
+358.3438 409.104 L
+360.3418 409.0229 L
+360.2969 408.0239 L
+358.2988 408.0962 L
+F
358.3799 410.0938 m
+358.416 411.1021 L
+360.4141 411.021 L
+360.3779 410.022 L
+358.3799 410.0938 L
+F
358.4521 412.1011 m
+358.4971 413.1001 L
+360.4951 413.0278 L
+360.4502 412.02 L
+358.4521 412.1011 L
+F
358.5332 414.1079 m
+358.5693 415.1069 L
+360.5674 415.0259 L
+360.5313 414.0269 L
+358.5332 414.1079 L
+F
358.6055 416.106 m
+358.6406 417.105 L
+360.6484 417.0332 L
+360.6025 416.0342 L
+358.6055 416.106 L
+F
358.6855 418.104 m
+358.7217 419.103 L
+360.7197 419.0308 L
+360.6836 418.0322 L
+358.6855 418.104 L
+F
358.7578 420.1021 m
+358.7939 421.1099 L
+360.792 421.0381 L
+360.7559 420.0298 L
+358.7578 420.1021 L
+F
358.8301 422.1089 m
+358.8662 423.1079 L
+360.8643 423.0361 L
+360.8281 422.0371 L
+358.8301 422.1089 L
+F
358.9111 424.1162 m
+358.9473 425.1152 L
+360.9453 425.043 L
+360.9092 424.0352 L
+358.9111 424.1162 L
+F
358.9834 426.1138 m
+359.0186 427.1221 L
+361.0166 427.0498 L
+360.9814 426.042 L
+358.9834 426.1138 L
+F
359.0547 428.1299 m
+359.0908 429.1289 L
+361.0889 429.0571 L
+361.0527 428.0488 L
+359.0547 428.1299 L
+F
359.127 430.1279 m
+359.1631 431.127 L
+361.1611 431.0552 L
+361.125 430.0562 L
+359.127 430.1279 L
+F
359.1992 432.1348 m
+359.2354 433.1338 L
+361.2334 433.062 L
+361.1973 432.063 L
+359.1992 432.1348 L
+F
359.2715 434.1328 m
+359.3066 435.1411 L
+361.3047 435.0688 L
+361.2686 434.061 L
+359.2715 434.1328 L
+F
359.3428 436.1401 m
+359.3789 437.1392 L
+361.377 437.0669 L
+361.3408 436.0679 L
+359.3428 436.1401 L
+F
359.415 438.147 m
+359.4512 439.1548 L
+361.4492 439.0918 L
+361.4131 438.0752 L
+359.415 438.147 L
+F
359.4873 440.1538 m
+359.5234 441.1621 L
+361.5215 441.0898 L
+361.4854 440.0908 L
+359.4873 440.1538 L
+F
359.5586 442.1611 m
+359.5947 443.1689 L
+361.5928 443.0972 L
+361.5566 442.0889 L
+359.5586 442.1611 L
+F
359.6309 444.168 m
+359.667 445.1758 L
+361.665 445.104 L
+361.6289 444.0962 L
+359.6309 444.168 L
+F
359.6943 446.1748 m
+359.7305 447.1831 L
+361.7275 447.1108 L
+361.7012 446.103 L
+359.6943 446.1748 L
+F
359.7656 448.1821 m
+359.8018 449.1992 L
+361.7998 449.127 L
+361.7637 448.1099 L
+359.7656 448.1821 L
+F
359.8379 450.1982 m
+359.874 451.2061 L
+361.8721 451.1431 L
+361.8359 450.1348 L
+359.8379 450.1982 L
+F
359.9014 452.2139 m
+359.9365 453.2222 L
+361.9346 453.1592 L
+361.8994 452.1509 L
+359.9014 452.2139 L
+F
359.9727 454.23 m
+360.0088 455.2378 L
+362.0068 455.1748 L
+361.9707 454.167 L
+359.9727 454.23 L
+F
360.0361 456.2461 m
+360.0723 457.2539 L
+362.0703 457.1909 L
+362.0342 456.1738 L
+360.0361 456.2461 L
+F
360.1084 458.2622 m
+360.1348 459.27 L
+362.1328 459.207 L
+362.1064 458.1992 L
+360.1084 458.2622 L
+F
360.1709 460.2778 m
+360.1982 461.2861 L
+362.1963 461.2231 L
+362.1689 460.2148 L
+360.1709 460.2778 L
+F
360.2344 462.3027 m
+360.2607 463.3018 L
+362.2676 463.2388 L
+362.2324 462.2402 L
+360.2344 462.3027 L
+F
360.2969 464.3188 m
+360.3242 465.3271 L
+362.3223 465.2642 L
+362.2949 464.2559 L
+360.2969 464.3188 L
+F
360.3604 466.3438 m
+360.3867 467.3701 L
+362.3848 467.3159 L
+362.3584 466.2808 L
+360.3604 466.3438 L
+F
360.4229 468.396 m
+360.4502 469.4038 L
+362.4482 469.3501 L
+362.4209 468.333 L
+360.4229 468.396 L
+F
360.4766 470.4302 m
+360.5039 471.4561 L
+362.502 471.4019 L
+362.4746 470.376 L
+360.4766 470.4302 L
+F
360.5313 472.4819 m
+360.5576 473.5171 L
+362.5557 473.4629 L
+362.5293 472.4277 L
+360.5313 472.4819 L
+F
360.585 474.5518 m
+360.6123 475.5869 L
+362.6104 475.542 L
+362.583 474.5068 L
+360.585 474.5518 L
+F
361.0049 476.6152 m
+361.1611 476.7031 L
+360.6748 477.5762 L
+360.6465 477.5596 L
+360.6484 477.6748 L
+362.6465 477.6392 L
+362.6279 476.5859 L
+361.0049 476.6152 L
+F
*U
+*u
+218.7539 397.7642 m
+219.3198 398.082 L
+219.3076 397.8135 L
+219.0332 397.395 L
+219.5435 397.0615 L
+219.2402 396.8911 L
+218.7539 397.7642 L
+F
219.6982 398.2949 m
+229.7549 403.9502 L
+229.7749 403.5063 L
+229.7734 403.5063 229.7715 403.5059 229.77 403.5059 C
+229.7754 403.4946 L
+229.7969 403.0107 L
+229.8618 403.0137 229.9268 403.0166 229.9927 403.02 C
+230.0225 402.9546 L
+221.5728 398.2031 L
+219.6982 398.2949 L
+F
360.6748 477.5762 m
+361.1611 476.7031 L
+295.8809 439.9917 L
+291.7192 438.3828 287.8354 436.1841 284.3286 433.4946 C
+232.1772 404.1665 L
+231.3887 404.1035 230.6045 404.0435 229.8682 404.0146 C
+360.6748 477.5762 L
+F
*U
+*u
+1 1 1 Xa
+279.8008 360.7646 m
+272.334 368.4658 267.4141 378.7998 266.4551 390.3057 C
+287.0859 389.0459 L
+289.3218 373.332 299.9136 361.2529 313.0381 361.1973 C
+325.292 361.249 335.332 371.7813 338.4336 385.9688 C
+354.2285 385.0371 L
+353.043 382.2754 L
+354.2324 383.1973 355.9385 384.0449 357.5703 384.6748 C
+355.7061 375.4375 351.251 367.1865 345.0244 360.7646 C
+336.6719 352.1426 325.1426 346.8154 312.4082 346.8154 C
+299.6729 346.8154 288.1528 352.1426 279.8008 360.7646 C
+F
1 D
+344.4658 376.5146 m
+344.4658 374.9131 345.4375 374.6162 346.2031 374.6162 C
+347.4355 374.6162 348.1113 375.5156 348.4082 375.9033 C
+348.2188 376.0195 L
+347.7959 375.543 347.2471 375.0479 346.5449 375.0479 C
+345.8252 375.0479 345.4736 375.5879 345.4736 376.5146 C
+345.4736 377.667 346.2842 379.791 347.8047 379.791 C
+348.0215 379.791 348.2549 379.7275 348.2549 379.5479 C
+348.2549 379.3408 348.0752 379.2686 348.0752 378.9629 C
+348.0752 378.6836 348.2549 378.5127 348.543 378.5127 C
+348.8398 378.5127 349.1006 378.7285 349.1006 379.0713 C
+349.1006 379.4404 348.8037 380.043 347.8232 380.043 C
+346.0859 380.043 344.4658 378.207 344.4658 376.5146 C
+F
270.6929 377.7393 m
+270.27 377.7119 270.27 377.2529 270.27 377.2168 C
+270.3418 376.668 270.8188 376.5146 271.188 376.5146 C
+272.5562 376.5146 273.2129 378.4414 273.5459 379.9082 C
+274.3828 383.751 L
+275.6611 383.751 L
+275.7329 384.1289 L
+274.4731 384.1289 L
+274.5718 384.7412 274.9229 386.8652 275.8857 386.8652 C
+276.0391 386.8652 276.1563 386.8203 276.1563 386.7207 C
+276.1563 386.5947 276.0391 386.5947 276.0391 386.3252 C
+276.0391 386.1992 276.1108 385.875 276.4888 385.875 C
+276.7588 385.875 276.9658 386.1094 276.9658 386.3516 C
+276.9658 386.5947 276.7769 387.1348 275.9312 387.1348 C
+274.4551 387.1348 273.8701 385.1553 273.564 384.1289 C
+272.4839 384.1289 L
+272.4028 383.751 L
+273.4648 383.751 L
+272.4302 378.7109 L
+272.3398 378.2246 272.0342 376.7666 271.2778 376.7666 C
+271.1431 376.7666 271.062 376.8574 271.062 376.9561 C
+271.062 377.0908 271.1611 377.0908 271.1611 377.2891 C
+271.1611 377.5869 270.8716 377.7393 270.707 377.7393 C
+270.7021 377.7393 270.6973 377.7393 270.6929 377.7393 C
+F
0 D
+353.4395 388.917 m
+354.2871 386.0352 L
+338.6367 386.959 L
+338.9189 388.4131 339.1279 389.9043 339.2598 391.4229 C
+358.2178 390.4922 L
+358.2725 391.4912 L
+339.335 392.4209 L
+339.3945 393.3525 339.4258 394.2939 339.4258 395.2441 C
+339.417 413.8652 327.8428 429.228 313.0381 429.291 C
+313.0381 428.292 L
+313.0381 429.291 L
+298.2329 429.228 286.6499 413.8652 286.6499 395.2441 C
+286.6499 395.1655 286.6509 395.0859 286.6514 395.0073 C
+266.3081 396.0063 L
+266.7002 408.542 271.7813 419.8506 279.8008 428.1211 C
+288.1528 436.7432 299.6729 442.0708 312.4082 442.0708 C
+312.4082 442.5659 L
+312.4082 442.0708 L
+325.1426 442.0708 336.6719 436.7432 345.0244 428.1211 C
+353.376 419.5078 358.542 407.6011 358.542 394.4434 C
+358.542 391.5352 358.2891 388.6875 357.8057 385.9238 C
+356.2109 386.7539 354.5439 387.832 353.4395 388.917 C
+F
266.3813 391.3135 m
+266.3164 392.3477 266.2832 393.3916 266.2832 394.4434 C
+266.2832 394.6309 266.2842 394.8184 266.2866 395.0059 C
+286.6675 394.0049 L
+286.7041 392.6699 286.8008 391.3506 286.9541 390.0566 C
+266.3813 391.3135 L
+F
*U
+*u
+0 0 0 Xa
+312.4082 345.8164 m
+312.4082 345.8164 L
+F
293.6792 349.8115 m
+281.373 357.8535 L
+272.4395 365.9277 266.4888 377.4307 265.4482 390.3672 C
+266.4551 390.3057 L
+267.4141 378.7998 272.334 368.4658 279.8008 360.7646 C
+288.1528 352.1426 299.6729 346.8154 312.4082 346.8154 C
+325.1426 346.8154 336.6719 352.1426 345.0244 360.7646 C
+351.251 367.1865 355.7061 375.4375 357.5703 384.6748 C
+357.9414 384.8174 358.3086 384.9492 358.665 385.0684 C
+354.4316 362.7061 335.3428 345.8242 312.4082 345.8164 C
+312.4082 346.3203 L
+312.4082 345.8164 L
+305.751 345.8184 299.4194 347.2432 293.6792 349.8115 C
+F
357.8057 385.9238 m
+358.2891 388.6875 358.542 391.5352 358.542 394.4434 C
+358.542 407.6011 353.376 419.5078 345.0244 428.1211 C
+336.6719 436.7432 325.1426 442.0708 312.4082 442.0708 C
+312.4082 443.0698 L
+338.4541 443.061 359.541 421.29 359.541 394.4434 C
+359.541 391.376 359.2646 388.373 358.7383 385.4629 C
+358.4336 385.6055 358.1211 385.7598 357.8057 385.9238 C
+F
312.4082 442.5659 m
+312.4082 443.0698 L
+312.4082 442.5659 L
+F
265.3765 391.375 m
+265.3154 392.3896 265.2842 393.4121 265.2842 394.4434 C
+265.2842 394.6475 265.2852 394.8506 265.2876 395.0552 C
+266.2866 395.0059 L
+266.2842 394.8184 266.2832 394.6309 266.2832 394.4434 C
+266.2832 393.3916 266.3164 392.3477 266.3813 391.3135 C
+265.3765 391.375 L
+F
265.3101 396.0552 m
+266.1338 422.1567 286.894 443.061 312.4082 443.0698 C
+312.4082 442.0708 L
+299.6729 442.0708 288.1528 436.7432 279.8008 428.1211 C
+271.7813 419.8506 266.7002 408.542 266.3081 396.0063 C
+265.3101 396.0552 L
+F
*U
+*u
+1 1 1 Xa
+295.875 372.4834 m
+292.5083 376.8652 290.0972 382.5479 289.124 388.9209 C
+311.7295 387.54 L
+310.5361 384.7773 L
+312.1475 386.0186 314.6846 387.126 316.71 387.7383 C
+314.7754 388.5928 312.3896 390.0059 310.9414 391.4277 C
+311.7891 388.5391 L
+288.9824 389.9326 L
+288.8169 391.2324 288.7114 392.5586 288.6689 393.9072 C
+337.2646 391.5205 L
+337.1309 390.0049 336.916 388.5215 336.627 387.0781 C
+321.7646 387.9551 L
+322.9473 390.7168 L
+321.3447 389.4746 318.8066 388.3682 316.7822 387.7471 C
+318.7168 386.8916 321.1113 385.4883 322.5508 384.0664 C
+321.7002 386.957 L
+336.416 386.0879 L
+335.2305 380.8643 333.0605 376.2041 330.2012 372.4834 C
+325.7461 366.6963 319.6797 363.2041 313.0381 363.1953 C
+306.3872 363.2041 300.3301 366.6963 295.875 372.4834 C
+F
1 D
+300.8882 380.79 m
+301.5898 380.79 302.2378 381.0332 302.7148 381.4473 C
+303.1919 381.8613 303.5068 382.4639 303.5068 383.1299 C
+303.5068 383.7959 303.1919 384.3994 302.7148 384.8125 C
+302.2378 385.2266 301.5898 385.4785 300.8882 385.4785 C
+300.8882 384.9746 L
+300.8882 385.4785 L
+300.186 385.4785 299.5469 385.2266 299.0698 384.8125 C
+298.5928 384.3994 298.2778 383.7959 298.2778 383.1299 C
+298.2778 382.4639 298.5928 381.8613 299.0698 381.4473 C
+299.5469 381.0332 300.186 380.79 300.8882 380.79 C
+300.8882 380.79 L
+F
327.0693 380.9521 m
+327.7715 380.9521 328.4102 381.1953 328.8867 381.6094 C
+329.3643 382.0234 329.6787 382.626 329.6787 383.292 C
+329.6787 383.958 329.3643 384.5605 328.8867 384.9746 C
+328.4102 385.3887 327.7715 385.6406 327.0693 385.6406 C
+327.0693 385.1367 L
+327.0693 385.6406 L
+326.3672 385.6406 325.7188 385.3887 325.2422 384.9746 C
+324.7646 384.5605 324.4502 383.958 324.4502 383.292 C
+324.4502 382.626 324.7646 382.0234 325.2422 381.6094 C
+325.7188 381.1953 326.3672 380.9521 327.0693 380.9521 C
+327.0693 380.9521 L
+F
0 D
+288.6494 394.9092 m
+288.6489 395.0205 288.6479 395.1323 288.6479 395.2441 C
+288.6479 404.1631 291.4292 412.2178 295.875 418.0049 C
+300.3301 423.792 306.3872 427.293 313.0381 427.293 C
+313.0381 428.292 L
+313.0381 427.293 L
+319.6797 427.293 325.7461 423.792 330.2012 418.0049 C
+334.6475 412.2178 337.4277 404.1631 337.4277 395.2441 C
+337.4277 394.3252 337.3984 393.417 337.3398 392.5186 C
+288.6494 394.9092 L
+F
1 D
+321.0303 398.5918 m
+322.335 398.646 323.1904 399.8159 323.8291 401.3999 C
+324.4502 403.02 324.8193 405.1982 324.8193 407.5918 C
+324.8193 409.9951 324.4502 412.1729 323.8291 413.793 C
+323.1904 415.377 322.335 416.5469 321.0303 416.6011 C
+321.0303 416.0972 L
+321.0303 416.6011 L
+319.7246 416.5469 318.8701 415.377 318.2402 413.793 C
+317.6104 412.1729 317.2412 409.9951 317.2412 407.5918 C
+317.2412 405.1982 317.6104 403.02 318.2402 401.3999 C
+318.8701 399.8159 319.7246 398.646 321.0303 398.5918 C
+321.0303 398.5918 L
+F
305.0459 398.5918 m
+306.3511 398.6372 307.2061 399.8159 307.8359 401.3999 C
+308.4658 403.02 308.835 405.1982 308.835 407.5918 C
+308.835 409.9951 308.4658 412.1729 307.8359 413.7842 C
+307.2061 415.377 306.3511 416.5469 305.0459 416.6011 C
+305.0459 416.0972 L
+305.0459 416.6011 L
+303.7412 416.5469 302.8857 415.377 302.2471 413.7842 C
+301.626 412.1729 301.2568 409.9951 301.2568 407.5918 C
+301.2568 405.1982 301.626 403.02 302.2471 401.3999 C
+302.8857 399.8159 303.7412 398.6372 305.0459 398.5918 C
+305.0459 398.5918 L
+F
*U
+*u
+0 D
+0 0 0 Xa
+287.0859 389.0459 m
+289.124 388.9209 L
+290.0972 382.5479 292.5083 376.8652 295.875 372.4834 C
+300.3301 366.6963 306.3872 363.2041 313.0381 363.1953 C
+319.6797 363.2041 325.7461 366.6963 330.2012 372.4834 C
+333.0605 376.2041 335.2305 380.8643 336.416 386.0879 C
+338.4336 385.9688 L
+335.332 371.7813 325.292 361.249 313.0381 361.1973 C
+313.0381 362.1963 L
+313.0381 361.1973 L
+299.9136 361.2529 289.3218 373.332 287.0859 389.0459 C
+F
336.627 387.0781 m
+336.916 388.5215 337.1309 390.0049 337.2646 391.5205 C
+339.2598 391.4229 L
+339.1279 389.9043 338.9189 388.4131 338.6367 386.959 C
+336.627 387.0781 L
+F
286.9541 390.0566 m
+286.8008 391.3506 286.7041 392.6699 286.6675 394.0049 C
+288.6689 393.9072 L
+288.7114 392.5586 288.8169 391.2324 288.9824 389.9326 C
+286.9541 390.0566 L
+F
337.3398 392.5186 m
+337.3984 393.417 337.4277 394.3252 337.4277 395.2441 C
+337.4277 404.1631 334.6475 412.2178 330.2012 418.0049 C
+325.7461 423.792 319.6797 427.293 313.0381 427.293 C
+313.0381 429.291 L
+327.8428 429.228 339.417 413.8652 339.4258 395.2441 C
+339.4258 394.2939 339.3945 393.3525 339.335 392.4209 C
+337.3398 392.5186 L
+F
313.0381 428.292 m
+313.0381 429.291 L
+313.0381 428.292 L
+F
286.6514 395.0073 m
+286.6509 395.0859 286.6499 395.1655 286.6499 395.2441 C
+286.6499 413.8652 298.2329 429.228 313.0381 429.291 C
+313.0381 427.293 L
+306.3872 427.293 300.3301 423.792 295.875 418.0049 C
+291.4292 412.2178 288.6479 404.1631 288.6479 395.2441 C
+288.6479 395.1323 288.6489 395.0205 288.6494 394.9092 C
+286.6514 395.0073 L
+F
*U
+0.251 0.251 0.251 Xa
+321.0303 399.5908 m
+320.5166 399.5459 319.7246 400.2749 319.167 401.769 C
+318.5996 403.2271 318.2402 405.3062 318.2402 407.5918 C
+318.2402 409.8872 318.5996 411.9658 319.167 413.4238 C
+319.7246 414.918 320.5166 415.647 321.0303 415.6021 C
+321.0303 416.0972 L
+321.0303 415.6021 L
+321.543 415.647 322.335 414.918 322.8926 413.4238 C
+323.46 411.9658 323.8203 409.8872 323.8203 407.5918 C
+323.8203 405.3062 323.46 403.2271 322.8926 401.769 C
+322.3516 400.3184 321.5889 399.5889 321.0752 399.5889 C
+321.0605 399.5889 321.0449 399.5898 321.0303 399.5908 C
+F
*u
+1 1 1 Xa
+318.2402 401.3999 m
+317.6104 403.02 317.2412 405.1982 317.2412 407.5918 C
+317.2412 409.9951 317.6104 412.1729 318.2402 413.793 C
+318.8701 415.377 319.7246 416.5469 321.0303 416.6011 C
+321.0303 416.0972 L
+319.2119 416.0972 317.7363 412.29 317.7363 407.5918 C
+317.7363 402.9028 319.2119 399.0962 321.0303 399.0962 C
+322.8477 399.0962 324.3242 402.9028 324.3242 407.5918 C
+324.3242 412.29 322.8477 416.0972 321.0303 416.0972 C
+321.0303 416.6011 L
+321.0303 416.0972 L
+321.0303 416.6011 L
+322.335 416.5469 323.1904 415.377 323.8291 413.793 C
+324.4502 412.1729 324.8193 409.9951 324.8193 407.5918 C
+324.8193 405.1982 324.4502 403.02 323.8291 401.3999 C
+323.1904 399.8159 322.335 398.646 321.0303 398.5918 C
+321.0303 399.0962 L
+321.0303 398.5918 L
+319.7246 398.646 318.8701 399.8159 318.2402 401.3999 C
+F
324.8193 407.5918 m
+324.8193 407.5918 L
+F
*U
+0.251 0.251 0.251 Xa
+317.7363 407.5918 m
+317.7363 412.29 319.2119 416.0972 321.0303 416.0972 C
+321.0303 415.6021 L
+320.5166 415.647 319.7246 414.918 319.167 413.4238 C
+318.5996 411.9658 318.2402 409.8872 318.2402 407.5918 C
+318.2402 405.3062 318.5996 403.2271 319.167 401.769 C
+319.7246 400.2749 320.5166 399.5459 321.0303 399.5908 C
+321.543 399.5459 322.335 400.2749 322.8926 401.769 C
+323.46 403.2271 323.8203 405.3062 323.8203 407.5918 C
+323.8203 409.8872 323.46 411.9658 322.8926 413.4238 C
+322.335 414.918 321.543 415.647 321.0303 415.6021 C
+321.0303 416.0972 L
+322.8477 416.0972 324.3242 412.29 324.3242 407.5918 C
+324.3242 402.9028 322.8477 399.0962 321.0303 399.0962 C
+319.2119 399.0962 317.7363 402.9028 317.7363 407.5918 C
+F
305.0459 399.5908 m
+304.5332 399.5459 303.7412 400.2749 303.1831 401.7598 C
+302.6162 403.2271 302.2559 405.2969 302.2559 407.5918 C
+302.2559 409.8872 302.6162 411.9658 303.1831 413.4238 C
+303.7412 414.918 304.5332 415.647 305.0459 415.6021 C
+305.0459 416.0972 L
+305.0459 415.6021 L
+305.5591 415.647 306.3511 414.918 306.9092 413.4238 C
+307.4756 411.9658 307.8359 409.8872 307.8359 407.5918 C
+307.8359 405.2969 307.4756 403.2271 306.9092 401.7598 C
+306.3672 400.3184 305.605 399.5889 305.0913 399.5889 C
+305.0762 399.5889 305.061 399.5898 305.0459 399.5908 C
+F
*u
+1 1 1 Xa
+305.0459 398.5918 m
+305.0459 398.5918 L
+F
302.2471 401.3999 m
+301.626 403.02 301.2568 405.1982 301.2568 407.5918 C
+301.2568 409.9951 301.626 412.1729 302.2471 413.7842 C
+302.8857 415.377 303.7412 416.5469 305.0459 416.6011 C
+305.0459 416.0972 L
+303.228 416.0972 301.752 412.29 301.752 407.5918 C
+301.752 402.9028 303.228 399.0962 305.0459 399.0962 C
+306.8638 399.0962 308.3311 402.9028 308.3311 407.5918 C
+308.3311 412.29 306.8638 416.0972 305.0459 416.0972 C
+305.0459 416.6011 L
+305.0459 416.0972 L
+305.0459 416.6011 L
+306.3511 416.5469 307.2061 415.377 307.8359 413.7842 C
+308.4658 412.1729 308.835 409.9951 308.835 407.5918 C
+308.835 405.1982 308.4658 403.02 307.8359 401.3999 C
+307.2061 399.8159 306.3511 398.6372 305.0459 398.5918 C
+305.0459 399.0962 L
+305.0459 398.5918 L
+303.7412 398.6372 302.8857 399.8159 302.2471 401.3999 C
+F
308.835 407.5918 m
+308.835 407.5918 L
+F
*U
+0.251 0.251 0.251 Xa
+301.752 407.5918 m
+301.752 412.29 303.228 416.0972 305.0459 416.0972 C
+305.0459 415.6021 L
+304.5332 415.647 303.7412 414.918 303.1831 413.4238 C
+302.6162 411.9658 302.2559 409.8872 302.2559 407.5918 C
+302.2559 405.2969 302.6162 403.2271 303.1831 401.7598 C
+303.7412 400.2749 304.5332 399.5459 305.0459 399.5908 C
+305.5591 399.5459 306.3511 400.2749 306.9092 401.7598 C
+307.4756 403.2271 307.8359 405.2969 307.8359 407.5918 C
+307.8359 409.8872 307.4756 411.9658 306.9092 413.4238 C
+306.3511 414.918 305.5591 415.647 305.0459 415.6021 C
+305.0459 416.0972 L
+306.8638 416.0972 308.3311 412.29 308.3311 407.5918 C
+308.3311 402.9028 306.8638 399.0962 305.0459 399.0962 C
+303.228 399.0962 301.752 402.9028 301.752 407.5918 C
+F
299.7271 382.2031 m
+299.439 382.4551 299.2769 382.7793 299.2769 383.1299 C
+299.2769 383.4814 299.439 383.8047 299.7271 384.0566 C
+300.0151 384.3086 300.4292 384.4805 300.8882 384.4805 C
+300.8882 384.9746 L
+300.8882 384.4805 L
+301.356 384.4805 301.77 384.3086 302.0581 384.0566 C
+302.3462 383.8047 302.5078 383.4814 302.5078 383.1299 C
+302.5078 382.7793 302.3462 382.4551 302.0581 382.2031 C
+301.77 381.9512 301.356 381.7891 300.8882 381.7891 C
+300.4292 381.7891 300.0151 381.9512 299.7271 382.2031 C
+F
1 1 1 Xa
+299.0698 381.4473 m
+298.5928 381.8613 298.2778 382.4639 298.2778 383.1299 C
+298.2778 383.7959 298.5928 384.3994 299.0698 384.8125 C
+299.5469 385.2266 300.186 385.4785 300.8882 385.4785 C
+300.8882 384.9746 L
+299.7178 384.9746 298.7729 384.1475 298.7729 383.1299 C
+298.7729 382.1133 299.7178 381.2852 300.8882 381.2852 C
+302.0581 381.2852 303.0029 382.1133 303.0029 383.1299 C
+303.0029 384.1475 302.0581 384.9746 300.8882 384.9746 C
+300.8882 385.4785 L
+300.8882 384.9746 L
+300.8882 385.4785 L
+301.5898 385.4785 302.2378 385.2266 302.7148 384.8125 C
+303.1919 384.3994 303.5068 383.7959 303.5068 383.1299 C
+303.5068 382.4639 303.1919 381.8613 302.7148 381.4473 C
+302.2378 381.0332 301.5898 380.79 300.8882 380.79 C
+300.8882 381.2852 L
+300.8882 380.79 L
+300.186 380.79 299.5469 381.0332 299.0698 381.4473 C
+F
0.251 0.251 0.251 Xa
+298.7729 383.1299 m
+298.7729 384.1475 299.7178 384.9746 300.8882 384.9746 C
+300.8882 384.4805 L
+300.4292 384.4805 300.0151 384.3086 299.7271 384.0566 C
+299.439 383.8047 299.2769 383.4814 299.2769 383.1299 C
+299.2769 382.7793 299.439 382.4551 299.7271 382.2031 C
+300.0151 381.9512 300.4292 381.7891 300.8882 381.7891 C
+301.356 381.7891 301.77 381.9512 302.0581 382.2031 C
+302.3462 382.4551 302.5078 382.7793 302.5078 383.1299 C
+302.5078 383.4814 302.3462 383.8047 302.0581 384.0566 C
+301.77 384.3086 301.356 384.4805 300.8882 384.4805 C
+300.8882 384.9746 L
+302.0581 384.9746 303.0029 384.1475 303.0029 383.1299 C
+303.0029 382.1133 302.0581 381.2852 300.8882 381.2852 C
+299.7178 381.2852 298.7729 382.1133 298.7729 383.1299 C
+F
325.8994 382.3652 m
+325.6113 382.6172 325.4492 382.9414 325.4492 383.292 C
+325.4492 383.6426 325.6113 383.9668 325.8994 384.2188 C
+326.1865 384.4707 326.6006 384.6416 327.0693 384.6416 C
+327.0693 385.1367 L
+327.0693 384.6416 L
+327.5283 384.6416 327.9424 384.4707 328.2305 384.2188 C
+328.5273 383.9668 328.6797 383.6426 328.6797 383.292 C
+328.6797 382.9414 328.5176 382.6172 328.2305 382.3652 C
+327.9424 382.1133 327.5283 381.9512 327.0693 381.9512 C
+326.6006 381.9512 326.1865 382.1133 325.8994 382.3652 C
+F
1 1 1 Xa
+325.2422 381.6094 m
+324.7646 382.0234 324.4502 382.626 324.4502 383.292 C
+324.4502 383.958 324.7646 384.5605 325.2422 384.9746 C
+325.7188 385.3887 326.3672 385.6406 327.0693 385.6406 C
+327.0693 385.1367 L
+325.8994 385.1367 324.9541 384.3086 324.9541 383.292 C
+324.9541 382.2754 325.8994 381.4473 327.0693 381.4473 C
+328.2393 381.4473 329.1836 382.2754 329.1836 383.292 C
+329.1836 384.3086 328.2393 385.1367 327.0693 385.1367 C
+327.0693 385.6406 L
+327.0693 385.1367 L
+327.0693 385.6406 L
+327.7715 385.6406 328.4102 385.3887 328.8867 384.9746 C
+329.3643 384.5605 329.6787 383.958 329.6787 383.292 C
+329.6787 382.626 329.3643 382.0234 328.8867 381.6094 C
+328.4102 381.1953 327.7715 380.9521 327.0693 380.9521 C
+327.0693 381.4473 L
+327.0693 380.9521 L
+326.3672 380.9521 325.7188 381.1953 325.2422 381.6094 C
+F
0.251 0.251 0.251 Xa
+324.9541 383.292 m
+324.9541 384.3086 325.8994 385.1367 327.0693 385.1367 C
+327.0693 384.6416 L
+326.6006 384.6416 326.1865 384.4707 325.8994 384.2188 C
+325.6113 383.9668 325.4492 383.6426 325.4492 383.292 C
+325.4492 382.9414 325.6113 382.6172 325.8994 382.3652 C
+326.1865 382.1133 326.6006 381.9512 327.0693 381.9512 C
+327.5283 381.9512 327.9424 382.1133 328.2305 382.3652 C
+328.5176 382.6172 328.6797 382.9414 328.6797 383.292 C
+328.6797 383.6426 328.5273 383.9668 328.2305 384.2188 C
+327.9424 384.4707 327.5283 384.6416 327.0693 384.6416 C
+327.0693 385.1367 L
+328.2393 385.1367 329.1836 384.3086 329.1836 383.292 C
+329.1836 382.2754 328.2393 381.4473 327.0693 381.4473 C
+325.8994 381.4473 324.9541 382.2754 324.9541 383.292 C
+F
*u
+1 1 1 Xa
+232.4424 397.6689 m
+229.9927 403.02 L
+232.8359 403.1602 236.4482 403.6475 237.6357 403.1548 C
+237.9331 403.0381 237.9688 402.9482 237.9868 402.876 C
+238.0142 402.7949 237.96 402.4888 237.6357 402.021 C
+237.0142 401.1138 235.4956 399.6836 232.7876 397.6523 C
+232.4424 397.6689 L
+F
229.77 403.5059 m
+229.7715 403.5059 229.7734 403.5063 229.7749 403.5063 C
+229.7754 403.4946 L
+229.77 403.5059 L
+F
*U
+*u
+0 0 0 Xa
+233.0112 396.6401 m
+233.1016 396.6357 L
+233.083 396.6216 233.0649 396.6079 233.0459 396.5938 C
+233.0112 396.6401 L
+F
232.7876 397.6523 m
+235.4956 399.6836 237.0142 401.1138 237.6357 402.021 C
+237.96 402.4888 238.0142 402.7949 237.9868 402.876 C
+237.9688 402.9482 237.9331 403.0381 237.6357 403.1548 C
+236.4209 403.6592 232.668 403.1372 229.7969 403.0107 C
+229.752 404.0098 L
+232.5962 404.1089 236.2139 404.7119 237.9868 404.0908 C
+238.437 403.9292 238.8779 403.5962 238.9678 403.0469 C
+239.0488 402.5249 238.8418 402.021 238.4551 401.4541 C
+237.7866 400.4966 236.4956 399.2637 234.334 397.5762 C
+232.7876 397.6523 L
+F
*U
+*u
+248.1748 399.7891 m
+250.6411 407.7632 L
+251.1538 407.7632 L
+248.6968 399.7891 L
+248.1748 399.7891 L
+F
242.6758 400.0049 m
+242.2441 400.2119 241.9199 400.5 241.6768 400.9048 C
+241.3799 401.4448 241.146 402.2549 241.3169 403.5962 C
+241.4341 404.4688 241.749 405.0991 242.5952 405.6841 C
+242.9551 405.936 243.6479 406.0708 244.1431 405.981 C
+244.6919 405.8911 245.1421 405.5039 245.4121 405.0449 C
+245.6372 404.667 245.7988 404.1812 245.853 403.7129 C
+245.8799 403.7129 L
+246.627 405.855 L
+247.6621 405.855 L
+246.312 402.0479 L
+246.4019 401.4722 246.5732 401.1392 246.7891 400.9048 C
+246.915 400.7969 247.2119 400.4912 247.5811 400.8599 C
+247.8242 401.1118 247.833 401.499 247.8599 401.6519 C
+248.0669 401.6519 L
+248.0488 400.9409 L
+248.04 400.7158 247.9229 400.248 247.5991 399.9868 C
+247.2842 399.7168 247.0322 399.8159 246.8159 400.0229 C
+246.5371 400.293 246.3481 400.7158 246.0688 401.499 C
+245.8711 401.1479 245.6099 400.3198 244.5659 399.9688 C
+244.2734 399.8716 243.9702 399.79 243.6309 399.79 C
+243.3438 399.79 243.0308 399.8481 242.6758 400.0049 C
+F
1 D
+243.0269 405.1172 m
+242.7388 404.7388 242.5952 404.2168 242.5142 403.5869 C
+242.4331 402.9209 242.478 402.2549 242.5952 401.5801 C
+242.6582 401.229 242.7749 400.8511 243.0542 400.563 C
+243.3149 400.293 243.4678 400.2212 243.7832 400.2031 C
+243.981 400.1851 244.251 400.293 244.5029 400.5269 C
+244.7461 400.7251 245.061 401.3188 245.1958 401.6968 C
+245.5469 402.687 L
+245.4658 403.2808 245.3398 404.2168 245.0342 404.7212 C
+244.8452 405.0361 244.5298 405.3511 244.188 405.459 C
+243.998 405.5132 243.8447 405.5376 243.7168 405.5376 C
+243.3774 405.5376 243.2163 405.3652 243.0269 405.1172 C
+F
0 D
+251.73 400.0049 m
+251.73 400.1489 L
+253.5391 402.1289 L
+254.6821 403.3799 255.3301 404.6128 255.3301 405.6211 C
+255.3301 406.188 255.0688 407.2681 253.7188 407.2681 C
+252.6572 407.2681 252.3062 406.4312 252.0449 405.7832 C
+251.8018 405.8369 L
+252.1528 407.6548 253.251 408.231 254.2861 408.231 C
+255.519 408.231 256.3828 407.4121 256.3828 405.9629 C
+256.3828 404.6851 255.231 403.3169 252.936 400.9229 C
+255.7168 400.9229 L
+256.1758 400.9229 256.3921 400.959 256.8511 401.7148 C
+257.0039 401.6519 L
+256.3379 400.0049 L
+251.73 400.0049 L
+F
*U
+*u
+354.8428 309.8428 m
+354.5732 309.4199 L
+354.3027 309.0059 L
+354.8428 309.8428 L
+F
226.1094 392.7715 m
+228.1274 392.6475 L
+354.8428 309.8428 L
+354.3027 309.0059 L
+226.1094 392.7715 L
+F
224.416 393.877 m
+223.4883 394.4834 L
+223.8916 395.416 L
+226.4346 393.7539 L
+224.416 393.877 L
+F
219.0332 397.395 m
+219.3076 397.8135 L
+219.2852 397.314 L
+221.125 397.2236 L
+223.1929 395.8721 L
+222.8745 395.6846 222.5405 395.5029 222.1963 395.3281 C
+219.0332 397.395 L
+F
*U
+219.2852 397.314 m
+219.3301 398.313 L
+358.2725 391.4912 L
+358.2178 390.4922 L
+219.2852 397.314 L
+F
223.1982 392.9492 m
+223.0469 393.4619 L
+223.2573 393.9482 L
+311.7891 388.5391 L
+311.9404 388.0264 L
+311.7295 387.54 L
+223.1982 392.9492 L
+F
311.9404 388.0264 m
+310.9414 391.4277 L
+312.3896 390.0059 314.7754 388.5928 316.71 387.7383 C
+314.6846 387.126 312.1475 386.0186 310.5361 384.7773 C
+311.9404 388.0264 L
+F
218.2769 393.75 m
+220.311 394.3711 222.8491 395.478 224.4512 396.7109 C
+223.0469 393.4619 L
+224.0459 390.0693 L
+222.606 391.4912 220.2212 392.8945 218.2769 393.75 C
+F
270.27 377.2168 m
+270.27 377.2529 270.27 377.7119 270.6929 377.7393 C
+270.855 377.748 271.1611 377.5947 271.1611 377.2891 C
+271.1611 377.0908 271.062 377.0908 271.062 376.9561 C
+271.062 376.8574 271.1431 376.7666 271.2778 376.7666 C
+272.0342 376.7666 272.3398 378.2246 272.4302 378.7109 C
+273.4648 383.751 L
+272.4028 383.751 L
+272.4839 384.1289 L
+273.564 384.1289 L
+273.8701 385.1553 274.4551 387.1348 275.9312 387.1348 C
+276.7769 387.1348 276.9658 386.5947 276.9658 386.3516 C
+276.9658 386.1094 276.7588 385.875 276.4888 385.875 C
+276.1108 385.875 276.0391 386.1992 276.0391 386.3252 C
+276.0391 386.5947 276.1563 386.5947 276.1563 386.7207 C
+276.1563 386.8203 276.0391 386.8652 275.8857 386.8652 C
+274.9229 386.8652 274.5718 384.7412 274.4731 384.1289 C
+275.7329 384.1289 L
+275.6611 383.751 L
+274.3828 383.751 L
+273.5459 379.9082 L
+273.2129 378.4414 272.5562 376.5146 271.188 376.5146 C
+270.8188 376.5146 270.3418 376.668 270.27 377.2168 C
+F
*u
+0 R
+0 0 0 XA
+367.5 473.5 m
+365.5 395.25 L
+S
367.5 473.5 m
+S
*U
+1 Ap
+0 O
+0 0 0 Xa
+365.3916 391.0264 m
+364.7051 393.0332 363.5107 395.5308 362.2178 397.0928 C
+365.5137 395.8042 L
+368.8721 396.9224 L
+367.501 395.4287 366.1797 392.9951 365.3916 391.0264 C
+365.3916 391.0264 L
+f
367.6084 477.7231 m
+368.2949 475.7173 369.4893 473.2192 370.7822 471.6572 C
+367.4863 472.9458 L
+364.1279 471.8276 L
+365.499 473.3213 366.8203 475.7549 367.6084 477.7231 C
+367.6084 477.7231 L
+f
*u
+1 D
+382.002 406.1748 m
+380.5205 405.626 379.4648 405.6353 378.6611 405.6431 C
+377.9043 405.6499 376.2744 405.8643 374.9346 406.3457 C
+373.3086 406.9233 372.666 407.5273 372.0713 408.0957 C
+371.8896 407.9448 L
+373.7295 405.7939 375.5938 404.8618 377.5732 404.8438 C
+378.3418 404.8369 380.0938 404.8208 382.0723 405.9634 C
+382.002 406.1748 L
+382.002 406.1748 L
+f
375.1729 408.6885 m
+375.1826 409.7437 L
+380.2129 408.6655 L
+380.6914 408.5674 382.1533 408.249 382.1465 407.4985 C
+382.1445 407.3579 382.0479 407.2769 381.9521 407.2773 C
+381.8203 407.2788 381.8213 407.3843 381.6172 407.3862 C
+381.3174 407.3887 381.1582 407.0854 381.1689 406.9214 C
+381.1885 406.499 381.6445 406.4946 381.6807 406.4946 C
+382.2334 406.5596 382.3936 407.0391 382.3975 407.4023 C
+382.4102 408.7744 380.4844 409.4487 379.0225 409.79 C
+375.1904 410.6699 L
+375.2021 411.9478 L
+374.8193 412.0215 L
+374.8076 410.7554 L
+374.1963 410.8667 372.0762 411.2378 372.085 412.1992 C
+372.0859 412.3516 372.1348 412.4683 372.2314 412.4678 C
+372.3633 412.4663 372.3623 412.3491 372.626 412.3467 C
+372.7578 412.3457 373.083 412.4126 373.0859 412.7881 C
+373.0889 413.0576 372.8506 413.271 372.6104 413.2729 C
+372.3701 413.2754 371.8291 413.0928 371.8213 412.2485 C
+371.8076 410.7715 373.7822 410.167 374.7988 409.8525 C
+374.7891 408.7739 L
+375.1729 408.6885 L
+375.1729 408.6885 L
+f
376.5518 415.1011 m
+376.5283 412.5337 L
+377.3203 412.5264 L
+377.3438 415.0938 L
+379.9834 415.0698 L
+379.9902 415.8438 L
+377.3506 415.8677 L
+377.374 418.4355 L
+376.582 418.4429 L
+376.5586 415.875 L
+373.9189 415.8994 L
+373.9121 415.1255 L
+376.5518 415.1011 L
+376.5518 415.1011 L
+f
378.7891 423.5229 m
+379.2656 423.0967 379.752 422.541 379.7461 421.8374 C
+379.7393 421.1221 379.1963 420.7754 378.2725 420.7842 C
+377.1201 420.7944 375.0039 421.623 375.0176 423.1475 C
+375.0195 423.3584 375.082 423.5923 375.2617 423.5908 C
+375.4658 423.5889 375.5361 423.4121 375.8477 423.4092 C
+376.124 423.4067 376.2939 423.5811 376.2959 423.874 C
+376.2988 424.1675 376.085 424.4272 375.749 424.4302 C
+375.377 424.4336 374.7744 424.146 374.7656 423.1611 C
+374.75 421.4263 376.5703 419.791 378.2627 419.7759 C
+379.8584 419.7612 380.168 420.7314 380.1748 421.4937 C
+380.1855 422.7246 379.292 423.4131 378.9111 423.7095 C
+378.7891 423.5229 L
+378.7891 423.5229 L
+f
382.2344 424.9336 m
+380.8223 426.6816 378.8428 428.0132 376.5742 428.0342 C
+375.0146 428.0483 373.4756 427.7461 372.0645 426.915 C
+372.1221 426.6914 L
+372.7852 426.9902 373.9756 427.249 375.2588 427.2373 C
+376.3154 427.2275 377.7529 427.0264 379.2129 426.5322 C
+380.7803 425.9902 381.5059 425.3037 382.0527 424.7827 C
+382.2344 424.9336 L
+382.2344 424.9336 L
+f
375.0303 434.9663 m
+375.0215 434.0283 L
+373.7891 434.3682 L
+373.6934 434.3926 373.585 434.3701 373.6074 434.2876 C
+373.583 434.1821 373.6904 434.1343 373.75 434.0869 C
+374.167 433.7549 374.7021 433.187 374.9023 432.7983 C
+375.0088 432.5981 375.0898 432.269 375.1973 432.1978 C
+375.3887 432.1724 L
+375.3965 433.04 L
+378.6885 432.1655 L
+378.8799 432.1167 379.6104 431.8872 379.79 431.8857 C
+380.1504 431.8823 380.2734 432.2095 380.2754 432.4438 C
+380.2813 433.0537 379.7568 433.5156 378.8389 434.1221 C
+378.7529 433.9707 L
+379.1348 433.6738 379.6953 433.2583 379.6924 433.0239 C
+379.6914 432.895 379.5947 432.8374 379.4873 432.8384 C
+379.3906 432.8506 L
+375.4043 433.9194 L
+375.4141 434.9043 L
+375.0303 434.9663 L
+375.0303 434.9663 L
+f
378.8945 440.1606 m
+379.417 439.6279 379.7148 439.3906 379.7139 439.2148 C
+379.7129 439.1211 379.6406 439.0513 379.5566 439.0522 C
+379.1846 439.0557 375.1025 440.1719 374.958 440.2085 C
+374.9219 440.1265 L
+374.999 439.4106 L
+375.0352 439.375 L
+375.5615 439.2529 L
+375.5615 439.2295 L
+375.2256 439.1978 374.9092 438.8135 374.9053 438.3096 C
+374.8906 436.75 377.1182 434.9355 378.8818 434.9194 C
+379.2305 434.916 380.2988 434.9414 380.3096 436.1138 C
+380.3154 436.8174 379.9609 437.4419 378.5059 438.4287 C
+378.5303 438.4517 L
+379.2607 438.2573 379.5244 438.1963 379.8008 438.1938 C
+380.0039 438.1919 380.3164 438.1895 380.3203 438.6816 C
+380.3252 439.1855 379.8975 439.5884 379.0156 440.2998 C
+378.8945 440.1606 L
+378.8945 440.1606 L
+f
0 D
+378.8672 435.9043 m
+377.7871 435.9141 375.1572 436.9937 375.1699 438.3657 C
+375.1729 438.7056 375.4033 439.0317 375.9795 439.0264 C
+377.1553 439.0156 379.7373 437.8428 379.7256 436.6001 C
+379.7227 436.2832 379.5029 435.8984 378.8672 435.9043 C
+378.8672 435.9043 L
+f
1 D
+378.8643 445.9766 m
+379.4238 445.5376 379.8047 445.2412 379.8027 445.0063 C
+379.8027 444.9829 379.7773 444.8193 379.5977 444.8208 C
+379.2373 444.8242 376.2822 445.7896 375.7656 445.7939 C
+375.2617 445.7988 374.9717 445.5317 374.9668 444.9922 C
+374.957 444.019 376.6152 442.9253 377.498 442.3662 C
+377.4746 442.3428 L
+374.9736 443.1162 L
+374.9492 443.0811 L
+375.0752 442.4468 375.1895 441.8125 375.3037 441.1787 C
+375.4951 441.1768 L
+375.501 441.8101 375.6348 441.9258 375.8145 441.9243 C
+376.0664 441.9219 378.8672 441.1104 380.2197 440.7344 C
+380.2275 441.6138 L
+378.6006 442.1099 378.0859 442.2666 377.2627 442.814 C
+376.5947 443.2422 375.5693 443.9902 375.5742 444.5527 C
+375.5762 444.7759 375.7451 444.8447 375.9609 444.8428 C
+376.4414 444.8379 379.3613 443.9434 379.6494 443.9409 C
+379.9971 443.9375 380.3574 443.958 380.3623 444.4971 C
+380.3682 445.1304 379.8203 445.5459 379.0215 446.1392 C
+378.8643 445.9766 L
+378.8643 445.9766 L
+f
382.3896 448.2778 m
+380.9082 447.7285 379.8525 447.7383 379.0479 447.7456 C
+378.292 447.7524 376.6621 447.9668 375.3223 448.4482 C
+373.6953 449.0259 373.0527 449.6299 372.458 450.1982 C
+372.2764 450.0474 L
+374.1172 447.8965 375.9805 446.9648 377.9609 446.9463 C
+378.7285 446.9395 380.4805 446.9233 382.459 448.0659 C
+382.3896 448.2778 L
+382.3896 448.2778 L
+f
379.0381 455.7891 m
+379.5615 455.2568 379.8594 455.0195 379.8574 454.8438 C
+379.8564 454.75 379.7842 454.6802 379.7002 454.6812 C
+379.3281 454.6846 375.2461 455.8008 375.1025 455.8374 C
+375.0654 455.7554 L
+375.1426 455.0396 L
+375.1787 455.0039 L
+375.7051 454.8818 L
+375.7051 454.8584 L
+375.3691 454.8262 375.0537 454.4424 375.0488 453.938 C
+375.0342 452.3789 377.2617 450.5645 379.0254 450.5483 C
+379.374 450.5449 380.4424 450.5703 380.4531 451.7427 C
+380.459 452.4463 380.1055 453.0708 378.6504 454.0576 C
+378.6748 454.0806 L
+379.4043 453.8862 379.668 453.8252 379.9443 453.8228 C
+380.1484 453.8208 380.46 453.8179 380.4648 454.3105 C
+380.4688 454.8145 380.041 455.2173 379.1592 455.9287 C
+379.0381 455.7891 L
+379.0381 455.7891 L
+f
0 D
+379.0107 451.5332 m
+377.9307 451.543 375.3008 452.6226 375.3135 453.9941 C
+375.3164 454.3345 375.5479 454.6606 376.123 454.6553 C
+377.2998 454.6445 379.8809 453.4717 379.8691 452.229 C
+379.8662 451.9121 379.6465 451.5273 379.0107 451.5332 C
+379.0107 451.5332 L
+f
1 D
+372.4043 459.9424 m
+380.5713 455.4351 L
+380.5791 456.291 L
+372.4121 460.7983 L
+372.4043 459.9424 L
+372.4043 459.9424 L
+f
378.7676 464.1641 m
+379.1973 463.9604 379.5195 463.77 379.5127 462.9961 C
+379.4922 460.7686 L
+379.4316 460.769 L
+377.1484 463.0415 L
+375.6738 464.5088 375.1367 464.8071 374.333 464.8145 C
+373.4326 464.8228 372.3223 464.1763 372.3115 462.9336 C
+372.3086 462.6406 372.3428 461.104 374.209 460.4536 C
+374.2949 460.6992 L
+373.9961 460.8662 373.1729 461.3193 373.1826 462.3745 C
+373.1904 463.2773 373.915 463.8101 374.6592 463.8032 C
+375.0557 463.7993 375.751 463.7461 377.5234 462.0884 C
+380.1895 459.6016 L
+380.3936 459.5996 L
+380.4316 463.7617 L
+378.8525 464.3623 L
+378.7676 464.1641 L
+378.7676 464.1641 L
+f
382.6094 465.6411 m
+381.1973 467.3896 379.2168 468.7212 376.9492 468.7422 C
+375.3887 468.7563 373.8506 468.4541 372.4385 467.6226 C
+372.4961 467.3994 L
+373.1592 467.6982 374.3496 467.957 375.6338 467.9448 C
+376.6895 467.9351 378.1279 467.7344 379.5879 467.2402 C
+381.1543 466.6982 381.8799 466.0112 382.4277 465.4902 C
+382.6094 465.6411 L
+382.6094 465.6411 L
+f
*U
+0 Ap
+0 D
+321.7002 386.957 m
+321.5518 387.459 L
+321.7646 387.9551 L
+354.2871 386.0352 L
+354.4375 385.5244 L
+354.2285 385.0371 L
+321.7002 386.957 L
+F
354.4375 385.5244 m
+353.4395 388.917 L
+354.8789 387.5039 357.2734 386.0996 359.2168 385.2451 C
+357.1826 384.624 354.6445 383.5166 353.043 382.2754 C
+354.4375 385.5244 L
+F
316.7822 387.7471 m
+318.8066 388.3682 321.3447 389.4746 322.9473 390.7168 C
+321.5518 387.459 L
+322.5508 384.0664 L
+321.1113 385.4883 318.7168 386.8916 316.7822 387.7471 C
+F
344.4658 376.5146 m
+344.4658 378.207 346.0859 380.043 347.8232 380.043 C
+348.8037 380.043 349.1006 379.4404 349.1006 379.0713 C
+349.1006 378.7285 348.8398 378.5127 348.543 378.5127 C
+348.2549 378.5127 348.0752 378.6836 348.0752 378.9629 C
+348.0752 379.2686 348.2549 379.3408 348.2549 379.5479 C
+348.2549 379.7275 348.0215 379.791 347.8047 379.791 C
+346.2842 379.791 345.4736 377.667 345.4736 376.5146 C
+345.4736 375.5879 345.8252 375.0479 346.5449 375.0479 C
+347.2471 375.0479 347.7959 375.543 348.2188 376.0195 C
+348.4082 375.9033 L
+348.1113 375.5156 347.4355 374.6162 346.2031 374.6162 C
+345.4375 374.6162 344.4658 374.9131 344.4658 376.5146 C
+F
U
LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_pattern_AI5 /terminate get exec
+AGM_Gradient /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/doc/equilinear.gif b/doc/equilinear.gif
new file mode 100644
index 0000000..b5c0773
Binary files /dev/null and b/doc/equilinear.gif differ
diff --git a/doc/fancyhea.sty b/doc/fancyhea.sty
new file mode 100644
index 0000000..83914fa
--- /dev/null
+++ b/doc/fancyhea.sty
@@ -0,0 +1,145 @@
+% fancyheadings.sty version 1.92
+% Fancy headers and footers.
+% Piet van Oostrum, Dept of Computer Science, University of Utrecht
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
+% Telephone: +31-30-531806. piet at cs.ruu.nl (mcvax!sun4nl!ruuinf!piet)
+% Sep 16, 1994
+% version 1.4: Correction for use with \reversemargin
+% Sep 29, 1994:
+% version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands
+% Oct 4, 1994:
+% version 1.6: Reset single spacing in headers/footers for use with
+% setspace.sty or doublespace.sty
+% Oct 4, 1994:
+% version 1.7: changed \let\@mkboth\markboth to
+% \def\@mkboth{\protect\markboth} to make it more robust
+% Dec 5, 1994:
+% version 1.8: corrections for amsbook/amsart: define \@chapapp and (more
+% importantly) use the \chapter/sectionmark definitions from ps at headings if
+% they exist (which should be true for all standard classes).
+% May 31, 1995:
+% version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage...
+% construction in the doc did not work properly with the fancyplain style. 
+% June 1, 1995:
+% version 1.91: The definition of \@mkboth wasn't restored on subsequent
+% \pagestyle{fancy}'s.
+% June 1, 1995:
+% version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain}
+% \pagestyle{fancy} would erroneously select the plain version.
+
+\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}}
+\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}
+
+\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}}
+\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}
+
+\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}}
+\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}
+
+\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}}
+\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}
+
+\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}}
+\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}
+
+\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}}
+\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}
+
+\newdimen\headrulewidth
+\newdimen\footrulewidth
+\newdimen\plainheadrulewidth
+\newdimen\plainfootrulewidth
+\newdimen\headwidth
+\newif\if at fancyplain
+\def\fancyplain#1#2{\if at fancyplain#1\else#2\fi}
+
+% Command to reset various things in the headers:
+% a.o.  single spacing (taken from setspace.sty)
+% and the catcode of ^^M (so that epsf files in the header work if a
+% verbatim crosses a page boundary)
+\def\fancy at reset{\restorecr
+ \def\baselinestretch{1}%
+ \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e
+  \ifx\@currsize\normalsize\@normalsize\else\@currsize\fi%
+ \else% NFSS (2.09) present
+  \@newbaseline%
+ \fi}
+
+% Initialization of the head and foot text.
+
+\headrulewidth 0.4pt
+\footrulewidth\z@
+\plainheadrulewidth\z@
+\plainfootrulewidth\z@
+
+\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
+%  i.e. empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages
+\chead{}
+\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
+%  i.e. empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages
+\lfoot{}
+\cfoot{\rm\thepage} % page number
+\rfoot{}
+
+% Put together a header or footer given the left, center and
+% right text, fillers at left and right and a rule.
+% The \lap commands put the text into an hbox of zero size,
+% so overlapping text does not generate an errormessage.
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy at reset\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[b]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}
+
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy at reset\vbox{\footrule
+\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[t]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}
+
+\def\headrule{{\if at fancyplain\let\headrulewidth\plainheadrulewidth\fi
+\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if at fancyplain\let\footrulewidth\plainfootrulewidth\fi
+\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
+\hrule\@width\headwidth\@height\footrulewidth\vskip0.3\normalbaselineskip}}
+
+\def\ps at fancy{%
+\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{\uppercase{\ifnum \c at secnumdepth>\z@
+ \thesection\hskip 1em\relax \fi ##1}}{}}%
+\def\subsectionmark##1{\markright {\ifnum \c at secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}%
+{\def\chaptermark##1{\markboth {\uppercase{\ifnum \c at secnumdepth>\m at ne
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}
+\def\sectionmark##1{\markright{\uppercase{\ifnum \c at secnumdepth >\z@
+ \thesection. \ \fi ##1}}}}%
+\csname ps at headings\endcsname % use \ps at headings defaults if they exist
+\ps@@fancy
+\gdef\ps at fancy{\@fancyplainfalse\ps@@fancy}%
+\headwidth\textwidth}
+\def\ps at fancyplain{\ps at fancy \let\ps at plain\ps at plain@fancy}
+\def\ps at plain@fancy{\@fancyplaintrue\ps@@fancy}
+\def\ps@@fancy{%
+\def\@mkboth{\protect\markboth}%
+\def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}%
+\def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}%
+\def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}%
+\def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}%
+}
+\def\@lodd{\if at reversemargin\hss\else\relax\fi}
+\def\@rodd{\if at reversemargin\relax\else\hss\fi}
+
+\let\latex at makecol\@makecol
+\def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex at makecol}
+\def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi}
+\def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi}
+\def\iffloatpage#1#2{\if at fcolmade #1\else #2\fi}
+
diff --git a/doc/logo.eps b/doc/logo.eps
new file mode 100644
index 0000000..b74e00b
--- /dev/null
+++ b/doc/logo.eps
@@ -0,0 +1,4406 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Photoshop Version 6.0
+%%Title: logo-huge.eps
+%%CreationDate: Mon Feb 19 2001 14:02:03
+%%BoundingBox: 0 0 180 180
+%%HiResBoundingBox: 0 0 180 180
+%%SuppressDotGainCompensation
+%%EndComments
+%%BeginProlog
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%ImageData: 180 180 8 3 1 180 2 "beginimage"
+%BeginPhotoshop: 7098
+% 3842494D03ED0A5265736F6C7574696F6E000000001000480000000100010048
+% 0000000100013842494D040D18465820476C6F62616C204C69676874696E6720
+% 416E676C650000000004000000783842494D041912465820476C6F62616C2041
+% 6C74697475646500000000040000001E3842494D03F30B5072696E7420466C61
+% 677300000009000000000000000001003842494D040A0E436F70797269676874
+% 20466C6167000000000100003842494D2710144A6170616E657365205072696E
+% 7420466C616773000000000A000100000000000000023842494D03F517436F6C
+% 6F722048616C66746F6E652053657474696E677300000048002F66660001006C
+% 66660006000000000001002F6666000100A1999A000600000000000100320000
+% 0001005A00000006000000000001003500000001002D00000006000000000001
+% 3842494D03F817436F6C6F72205472616E736665722053657474696E67730000
+% 00700000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000
+% FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFF
+% FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFF
+% FFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800003842494D04080647756964657300
+% 00000010000000010000024000000240000000003842494D041E0D55524C206F
+% 766572726964657300000004000000003842494D041A06536C69636573000000
+% 0061000000060000000000000000000000B4000000B400000000000000010000
+% 0000000000000000000000000000000000010000000000000000000000B40000
+% 00B4000000000000000000000000000000000000000000000000000000000000
+% 000000003842494D04111149434320556E74616767656420466C616700000001
+% 01003842494D0414174C617965722049442047656E657261746F722042617365
+% 00000004000000013842494D040C154E65772057696E646F7773205468756D62
+% 6E61696C00000ED0000000010000007000000070000001500000930000000EB4
+% 00180001FFD8FFE000104A46494600010201004800480000FFEE000E41646F62
+% 6500648000000001FFDB0084000C08080809080C09090C110B0A0B11150F0C0C
+% 0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C
+% 0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E14140E0E
+% 0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C
+% 0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC000110800700070030122000211010311
+% 01FFDD00040007FFC4013F000001050101010101010000000000000003000102
+% 0405060708090A0B010001050101010101010000000000000001000203040506
+% 0708090A0B1000010401030204020507060805030C3301000211030421123105
+% 4151611322718132061491A1B14223241552C16233347282D14307259253F0E1
+% F163733516A2B283264493546445C2A3743617D255E265F2B384C3D375E3F346
+% 2794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F63747576777
+% 8797A7B7C7D7E7F7110002020102040403040506070706053501000211032131
+% 12044151617122130532819114A1B14223C152D1F0332462E172829243531563
+% 7334F1250616A2B283072635C2D2449354A317644555367465E2F2B384C3D375
+% E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F6273747
+% 5767778797A7B7C7FFDA000C03010002110311003F00F554924925290AFC9A31
+% C036BB69718634025CE3FBB5D6CDCFB3FB0D43BAEB5EF3462C7A823D4B1DAB6B
+% 075E3FC25AEFF45FF5CB3FC17AB2C7C4AA871B35B2E7FD3B9F05E47EEEE86ED6
+% 7FC157FA24948FD4EA17FF00355B7159FBD77BDFFF006CD4EDADFEDDDFF5A4E3
+% 0776B7645D69FEBFA63EEC6F43FE92B4924A6B0E9B81DE96BFFAFEFF00FCF9B9
+% 23D3703B50C67F506CFF00CF7B5594925357EC01BAD37DD51FEB9B07F9B93EB3
+% 7FCD4DBFA851FCE31B955FEF55ECB07FD6AC77A6FF00FB7ABFF8A56D2494871F
+% 2A8C807D277B99F4D8E05AF693FE92B7ED7B3FB48C83918955E5AE74B2D67F37
+% 730C3DB3FBAEFDDFF837FE8DE8755F6D56368CB82E76955C346BFF0092E6FF00
+% 83BBF91FE13E9D7FE8AA4A6D24924929FFD0F5554F35F75A4E162DAEA2F7B773
+% B21A1AE353274786DADB2A759639BB2AF519FE92CFF05B158C8BDB8F4BEE7024
+% 304ED1C93F9AC6FF002DEEF6B1430E87555975B06FB4FA973871B8FE6B7F915B
+% 436A624A434DE2860ADAC01A27404CC932E738BB76E7B9DF4DC8CDCBA8F32D40
+% C96EDB4F83B51F3425C64FE31F11E57364C32C832FB5230FD6C41BE13BF14782
+% 7EAFEF363DB84803557D9D06DB5BB8705359882FEA0CA9E6AA8BADB844D556A4
+% 4FFA4E2BABFEBCF62B983FE3348E99797BEF2C52AFF993FF00D58B4E1EC5D949
+% 64B73BAA9E29A9A3B7A961247F66BAFF00F46A237A8750681BF1EB7C72596104
+% FC18FABFF46AD2C3F1DE47269299C47B64FF00BEC7EE4161C521E2E924A955D5
+% F11EF1559BB1EE768DAEE1B67FA8F6EEA6CFFADD8ADB5CD77D120FC15FC7CCE0
+% C95EDE584EFA465191FB169046E19285B557756EAEC6EE63B91FC47EEB9AA692
+% 990D6A2D7D76FD92F76E7C6EA6C3F9EC1F4B77FC357FE13FEDCFF83AACA065D0
+% EBAAFD19DB75677D2F3D9E07B67F90E9F4EDFF008252C6BDB91432D00B770F73
+% 4F2D70F6BEB77F2AB7FB1C929FFFD1F4ABFF004D994E3FE6543D7B7CC83B71D8
+% EFFAE6FBBFF41D5B5530FDF7E5DDE360ADA7F935B5AD8FFB75D72B6929AF98C9
+% 687F8183F02AA2D1B1BBD8E6F88591996BEAA0FA7FCF3C8AEA9FDF77B5A63F75
+% 9FCE3FF90B8FFF008C7CB70F370CB11A7311FF00C731FA25FF0033DB6C613E9A
+% ECC1EF7E4BDD4D4E2CA99EDBAD6FD227BD353BF37FE12DFCCFA15FE97F993555
+% 554D619534318DEC3409534B28A9B533E8B0409E4FF29DFCA77E72A59C6CCBCA
+% 674EA9C58C0D1765B84CFA64EDAAA6B87D1F5DEC7FFD6EB58C0711E106A03527
+% C07E91645FF6A8B9C5B8553B243496B9E0ED6C8FCDDD0EFF00A499DD5BD023ED
+% B4BB1DA4801FF49B27F3776D6FFE07BD3FDA7D53563F4AB292C82EB2E07D46B1
+% 83DBB5ADADC37DD63FF79FFE92CFF83B2743F23D77E1E66CB439BBEAB1A36EE6
+% 821B636CA897ED7D6E7B3DCDF63FD4FCC4F3180DE1E3C2647DDE1FDEFDC4365E
+% CAAFACB1ED6D95BC6A0C1047280C7598B636BB1C5F43CEDAAC7125CD77E6D56B
+% CFD3DFFE0AD77FC5D9FA4FA60C32EC2CD774F7BB7536836E19324800FE9A82E7
+% 13BBD3DEC757FC857EDA99756EAAC1B98F05AE1E45308E13577097A81FFBA1FD
+% 64A56DD6B7871FCA88DCBB072015470AC7BE9D9699B6926BB0F896F0FF00FAEB
+% 365BFDB4753E3E7F9CC06A19E62BA717143FC49FA506313B80DB6E630FD2691F
+% 0D5031EFA6BEA366335C3F5961C8AD9C1961655931FC9FD263BFFE32D7A1AA59
+% C7D1CCE9B991A5592DA9E7F9190D7E206FFEC4DB8CEFEC2D8F867C779AC9CCE2
+% C39CC270CB2E0E2E1E09F14BE4F97861F3FF00518E78A20123A3FFD2F4BE9DAE
+% 3177EFDB7387C1D6D8E6FF00D156955E9DFD18B470CB6E68F836DB1ADFFA2AD2
+% 4A52C7CF61FDA58CCEC3D4BBEE6FA5FF00A3D6C2CDEA8DDB9587778B9F51FED3
+% 7D51FF009E1657C7797F779394C0F560BC83FBBC2633FF00BF5F88D4BCD658E2
+% 6EA3AD5C2773DCFA9B1CEDAAA6D7B5BFF5DF596C2CEE9915E5F52C63CB7205A1
+% A7F72EAEB7EEFEAFAEDC867F6171988D4667A8113FE0F1C7FF00416C945D403F
+% 0ADABABE155EAD61829CAA2B003ACA891F667D731BACC4B1DECAFF00D06464FF
+% 0084F4EA55EC7E6E7FAD9D607E0D7898EE1552D70179B9ED6DEEFB439BED636B
+% D98FE8E3EEFD26FF00D6BFD0A2E559553D372BA5E4B8D6EF45F56338B86EB6B7
+% 37655E84FF00397337B31DECFA7EAECFF4F529D583788C12D77D99B77AD7643C
+% B5C6D6822CA6A6FE77D315B2DDF5ECF429F419F98A789118826B88122390EE70
+% FF00D194BD5C084DD53730E0E47E755935B5DF0BA715C3FCEB98B4163757CB7D
+% 9D4FA774BAC02DBAE16DCFEE0521D975ED8FE5D0D6DBBBFD2D3FE956CA832448
+% C78AF7909487FB3E2F4FFCFF007123AB5AAF6E7E437F7D95D9F3FD2567FF003D
+% B55955A9F76764BBB35B5D73E603EDFF00D1CD565327B8F28FFD152951EB5FF2
+% 73DDDD8FAAC6FF005996D7633FE9B55E547AD98E9B60824BDF531A06A4B9F6D7
+% 5B07F9EE537257F7AE5EBFCEE3FF00A7144BE53E4FFFD3F4AC4F664E5D3C7BDB
+% 6B7FAB635AD9FF00B76AB95B55327F4395464FE6B8FA16FC1E47A2EFECDFFA2F
+% FAFAB69294ABE7E3BB2711F530816E8EA89E058C3BEA27F93BDBEF56124D9444
+% A328CB58C8189F2929C8C7B9B7D2DB5A0B7772D3CB5C3DAF63BF94C7FB151EA0
+% DB3132ABEAB4B0D8D6B7D1CDAD8097BA99DF5DCC6B7F9C7E1D8FB1FE9FFA0BB2
+% 7D3FD37A75ABB998F6E3E53EFC76EE0F836D3A0DDA7D3AC9DAD6DDF99EFF00E7
+% 13D3914DED26A7076D30E1C39A7F75EC77BD8EFEBAF3CCB8E5CBE69C08B1094B
+% 1CE3FF003784FF00DC49B60D808722DBADC5AEFE9CCA32CBB6BEA36585B59691
+% A5ACBAAAB27C7F358A74DD7B713D6EA0DAB1EC6073AE0CB0BEB6B5A4FBBD7B6B
+% C7F6FA7EF7EEA98AB9E8F55763ACC2BEDC12F25CF6525A6B2E71DCF7FA17B2EA
+% 5AF7BBE9BEB657BD31E8F5DC41CFBEDCE6B608AAED82A907734BA8A2BA6AB76F
+% FC37AA9B58AAB8B4BBDA5EF7F77FCCAB56BF4AC7765F52C8EB5608AAC1E974F6
+% B9A5AEF488AFD7C87CBBFED5D9457E8FB19FAB554FFA55AB75CCA6A75AFF00A2
+% D130393E0D6FEF39DF4589AEBE9A1BBAD7068261A3924FEEB1A3DCF7FF002188
+% 55D76DF636FC86EC6B35A6930483FE96D896FA9FB8DFF07FF9EC4E5C678A5A42
+% 204623FAB0DA11FF00BA4B2C3A9F5503D4FE76C26CB63F79C7739BFD8FE6DA8E
+% 924A326C927AA94A966B7D7CEE9B853FCE640BEC03F73181C90EFEAFDA9988CF
+% FAE2BAABF48032FAAE5E70F7558CD18541991BC1F5B3DCDFEDFD9B1DDFF0B896
+% 2D3F8172E7373F8CD7A70FEBA5FE07F37FF8EF02CCA6A27C747FFFD4F51BE965
+% F4BE9B35658D2D7473AF821E1DCF7B5D55DFD2283B2DED3FB97347EE5CDF7FFE
+% 05FE0D5855F229B37B7231E3D760883A07B3FD13FF00EAAB7FF837FF0023D5DE
+% 94D8490A8BEBBEBDEC91076BDAED1CD70FA4C7B7F79152535B319A35FF0022B3
+% EEC4C7B9C1EF6C5834163496BC0F0F519B5FB7F92B5AD66FADCDEF1A7C567AE3
+% 7FE316038B9C1963A0CF1E2B1FBF0F44FF00EE1B188DC6BB35BECD96DFA194E3
+% E56318E1FF00818A5C97D9F2DDF4F29CDFF8B631BFF9F45CACA4B1B8CF87F8B1
+% 64434E1E3D2FF51ADDD69106D792F7C787A8FDCEDBFC84649240927526D4A492
+% 41CACAA312875F7BB6B1B00000B9CE738ECAEBAEB64BEDB6D79F4EAAABFD2596
+% 7B18946264446209913400DC92A43D472EDA595E3E206BB3F2DDE96231D25BBA
+% 373EFB76FF00DA7C5AF75F77FDB35FE9EEA56B74DC0A7A6E0D3854173994B60B
+% DE65EF713BEDBAD769BAEBED73EEB9FF00E95EA9746E9D92DB2CEA7D45A1B9B9
+% 036574C877D9E89DCDC66B9BB99EB58E1EB66D95FF003976CABD4B68C5C65ACB
+% B9F83FC3BEE7CBFABF9ECB52CBFD5FDCC5FE07FD36B649F11F01B3FFD5F55492
+% 492535EFC6797FDA319C2BBE20CFD0781F9970FF00A8B1BEFAFF00F024D4E6D6
+% EB0517034641E2A7C7BA3BD2FF00A3737FA9FF005D656ACA85D4D37D66BB98DB
+% 18796B8023F1494CD67DECD96B876E47CD17ECB9540FD56FDCCFF457CBC7C197
+% 4FACDFFAEFDA154EA197954B5B65983759076BCE3EDB801FBDB37577BBFB342C
+% 8F8EF273E679507144CF2E290946311739465E89C63FF4FF00C064C52A96BB16
+% 692A03AD61EB35E5020C10EC3CA07EE763A7FDB388746D596E3E0DC3C927F0C7
+% 5C97DC39CFFC4D9BFF000AC9FF007ACFC51EE3ED6F24A8B72BAB5F1F64E95680
+% E3A5996FAE8AE3F94D6BB2731BFF00B0688CE89D532F5EA79DE8D462717026B9
+% 1FB96E73FF005A77F5F13F67D8AEF2FF0001E7F29F540618FEF653C3FF008D8F
+% D67FCC5A72C475BF24795D5595DE70B0EB7677518918B4C7B644B5F9773BF458
+% 74BBF7EFFE73FED3D77D9FA356BA7744B59943A9754B1B919CD04515B27D0C60
+% E1B5EDC56BBDD65CF6FB2DCDB7F4D67F82662D167D9D5FC2C0C2E9F40C7C2A59
+% 8F4833B18225C7E93DFF00BF63FF003EC7FE91EAC2E97E1FF08E5F93F50FD6E6
+% AD72CFA7FB287F93FF00A6C33C865E03B2924925A4B1FFD93842494D04211A56
+% 657273696F6E20636F6D7061746962696C69747920696E666F00000000550000
+% 0001010000000F00410064006F00620065002000500068006F0074006F007300
+% 68006F00700000001300410064006F00620065002000500068006F0074006F00
+% 730068006F007000200036002E003000000001003842494D0FA016506C75672D
+% 696E207265736F7572636520626C6F636B00000004826D6F7074000000030000
+% 0001000000000000000700000000010000000000000000000000000000800000
+% 000000000000000000000000000000000000000000000000000100000000FFFF
+% FFFF0000000004FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FF
+% FFFFFF0000000000000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF
+% 000000FF000000FF000000000000000000000000000000003842494D0FA11650
+% 6C75672D696E207265736F7572636520626C6F636B00000004A46D7365740000
+% 000000000010000000010000000000046E756C6C000000030000001648544D4C
+% 4261636B67726F756E6453657474696E67734F626A6300000001000000000004
+% 6E756C6C00000006000000124261636B67726F756E64436F6C6F725265646C6F
+% 6E67000000FF000000144261636B67726F756E64436F6C6F72477265656E6C6F
+% 6E67000000FF000000134261636B67726F756E64436F6C6F72426C75656C6F6E
+% 67000000FF000000134261636B67726F756E64496D6167655061746854455854
+% 00000001000000000014557365496D61676541734261636B67726F756E64626F
+% 6F6C00000000144261636B67726F756E64436F6C6F7253746174656C6F6E6700
+% 0000010000000756657273696F6E6C6F6E67000000000000000C48544D4C5365
+% 7474696E67734F626A63000000010000000000046E756C6C0000001000000007
+% 546167436173656C6F6E67000000000000001246696C65536176696E67536574
+% 74696E67734F626A63000000010000000000046E756C6C000000080000001049
+% 6E636C756465436F70797269676874626F6F6C0100000017536C69636546696C
+% 654E616D65436F6D706F6E656E7473566C4C73000000066C6F6E67000000006C
+% 6F6E67000000136C6F6E67000000096C6F6E67000000186C6F6E67000000186C
+% 6F6E670000001800000018536176696E6746696C654E616D65436F6D706F6E65
+% 6E7473566C4C73000000096C6F6E67000000016C6F6E67000000146C6F6E6700
+% 0000026C6F6E67000000136C6F6E67000000066C6F6E67000000186C6F6E6700
+% 0000186C6F6E67000000186C6F6E6700000016000000114E616D65436F6D7061
+% 746962696C6974794F626A63000000010000000000046E756C6C000000030000
+% 00114E616D65436F6D70617457696E646F7773626F6F6C010000000D4E616D65
+% 436F6D7061744D6163626F6F6C010000000E4E616D65436F6D706174554E4958
+% 626F6F6C0100000012496D616765537562666F6C6465724E616D655445585400
+% 0000070069006D00610067006500730000000000194475706C69636174654669
+% 6C654E616D654265686176696F726C6F6E67000000010000000E436F70794261
+% 636B67726F756E64626F6F6C0100000011557365496D616765537562666F6C64
+% 6572626F6F6C0100000010496D6167654D61704C6F636174696F6E6C6F6E6700
+% 0000020000000D544457696474684865696768746C6F6E67000000010000000C
+% 496D6167654D6170547970656C6F6E670000000000000010476F4C697665436F
+% 6D70617469626C65626F6F6C000000001153706163657273456D70747943656C
+% 6C736C6F6E67000000000000000F496E636C756465436F6D6D656E7473626F6F
+% 6C010000001153706163657273486F72697A6F6E74616C6C6F6E670000000100
+% 00000C5374796C6573466F726D61746C6F6E67000000000000001251756F7465
+% 416C6C41747472696275746573626F6F6C000000000F53706163657273566572
+% 746963616C6C6F6E670000000100000006557365435353626F6F6C000000000D
+% 417474726962757465436173656C6F6E67000000000000000B4C696E65456E64
+% 696E67736C6F6E670000000100000006496E64656E746C6F6E67FFFFFFFF3842
+% 494D03FD0845505320496E666F00000000070000000000000100
+%EndPhotoshop
+gsave % EPS gsave
+/hascolor
+/deviceinfo where
+{pop deviceinfo /Colors known
+{deviceinfo /Colors get exec 1 gt}
+{false} ifelse}
+{/statusdict where
+{pop statusdict /processcolors known
+{statusdict /processcolors get exec 1 gt}
+{false} ifelse}
+{false} ifelse}
+ifelse
+def
+40 dict begin
+/_image systemdict /image get def
+/_setgray systemdict /setgray get def
+/_currentgray systemdict /currentgray get def
+/_settransfer systemdict /settransfer get def
+/_currenttransfer systemdict /currenttransfer get def
+/blank 0 _currenttransfer exec
+1 _currenttransfer exec eq def
+/negative blank
+{0 _currenttransfer exec 0.5 lt}
+{0 _currenttransfer exec 1 _currenttransfer exec gt}
+ifelse def
+/inverted? negative def
+/level2 systemdict /languagelevel known
+{languagelevel 2 ge} {false} ifelse def
+/level3 systemdict /languagelevel known
+{languagelevel 3 ge} {false} ifelse def
+/foureq {4 index eq 8 1 roll
+4 index eq 8 1 roll
+4 index eq 8 1 roll
+4 index eq 8 1 roll
+pop pop pop pop and and and} def
+hascolor {/band 0 def} {/band 5 def} ifelse
+/setcmykcolor where {pop
+1 0 0 0 setcmykcolor _currentgray 1 exch sub
+0 1 0 0 setcmykcolor _currentgray 1 exch sub
+0 0 1 0 setcmykcolor _currentgray 1 exch sub
+0 0 0 1 setcmykcolor _currentgray 1 exch sub
+4 {4 copy} repeat
+1 0 0 0 foureq {/band 1 store} if
+0 1 0 0 foureq {/band 2 store} if
+0 0 1 0 foureq {/band 3 store} if
+0 0 0 1 foureq {/band 4 store} if
+0 0 0 0 foureq {/band 6 store} if} if
+blank {/band 6 store} if
+gsave % Image Header gsave
+/rows 180 def
+/cols 180 def
+180 180 scale
+level2 {
+band 0 eq {
+/DeviceRGB
+} {/DeviceGray} ifelse
+setcolorspace currentdict /PhotoshopDuotoneColorSpace undef currentdict /PhotoshopDuotoneAltColorSpace undef } if
+/picstr1 180 string def
+/picstr2 180 string def
+/picstr3 180 string def
+/picstr4 180 string def
+/_rowpadstr 180 string def
+/rawreaddata {currentfile exch readhexstring pop} def
+/padreaddata { _topPad 0 gt       { /_topPad _topPad 1 sub def pop _rowpadstr }
+			 { _subImageRows 0 gt { /_subImageRows _subImageRows 1 sub def
+									dup _leftPad _picsubstr rawreaddata putinterval }
+								  { pop _rowpadstr } ifelse } ifelse } def
+/image2 level2 {/image load def} {{begin
+Width Height BitsPerComponent ImageMatrix
+Decode length 2 eq
+{/DataSource load image} if
+Decode length 6 eq
+{DataSource 0 get DataSource 1 get DataSource 2 get
+true 3 colorimage} if
+Decode length 8 eq
+{DataSource 0 get DataSource 1 get
+DataSource 2 get DataSource 3 get
+true 4 colorimage} if
+end} def} ifelse
+/_image2 level2 {/_image load def} {{begin
+Width Height BitsPerComponent ImageMatrix
+/DataSource load _image end} def} ifelse
+/beginimage {
+band 0 eq band 4 eq or band 5 eq or
+{image2}
+{negative {{pop 0}} {{pop 1}} ifelse
+_settransfer _image2} ifelse
+} def
+/readdata /rawreaddata load bind def
+12 dict begin
+/ImageType 1 def
+/Width cols def
+/Height rows def
+/ImageMatrix [cols 0 0 rows neg 0 rows] def
+/BitsPerComponent 8 def
+/Interpolate true def
+band 0 eq
+{/Decode [0 1 0 1 0 1] def
+/MultipleDataSources true def
+/DataSource [
+{picstr1 readdata}
+{picstr2 readdata}
+{picstr3 readdata picstr4 readdata pop}
+] def}
+{/Decode [0 1] def
+/DataSource {
+picstr1 readdata pop
+picstr2 readdata pop
+picstr3 readdata pop
+picstr4 readdata
+} def}
+ifelse
+currentdict end
+%%BeginBinary:     267313
+beginimage
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0E0E0A796969696969696CCE0
+E0E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE0E0E0E0E0A796969696969696CCE0E0E0E0E9FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0E0E0A796
+969696969696CCE0E0E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE0E0E0E0E0A796969696969696CCE0E0E0E0E9
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0CA919191
+908D8D8D8D8DC9DBDBDBDBDBDBDBA28D8D8D8D8E919191A2E0E0E9FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0CA919191908D8D8D8D8DC9DBDBDBDBDB
+DBDBA28D8D8D8D8E919191A2E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFE0E0CA919191908D8D8D8D8DC9DBDBDBDBDBDBDBA28D8D8D8D8E919191A2
+E0E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0CA919191908D8D8D
+8D8DC9DBDBDBDBDBDBDBA28D8D8D8D8E919191A2E0E0E9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE0E0A191908D8DA3DBDBDBE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFDBDBDBCA8D8D8E9191C9E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0A191908D8D
+A3DBDBDBE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBDBCA8D8D8E91
+91C9E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE0E0A191908D8DA3DBDBDBE9FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFDBDBDBCA8D8D8E9191C9E0E9FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE0E0A191908D8DA3DBDBDBE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+DBDBDBCA8D8D8E9191C9E0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C691908D8DCBDBEAFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBA48D8E
+91A0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE7C691908D8DCBDBEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBA48D8E91A0E0FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C691908D8DCB
+DBEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFDBDBA48D8E91A0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE7C691908D8DCBDBEAFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBDBA48D8E91A0E0FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C7
+93879FD9E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9C98C8C9BE3FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9E8FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFD9C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE9C793879FD9E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9C98C8C9BE3FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9
+E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFD9C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE8C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C98C8C9BE3FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE8C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8
+C98C8C9BE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99D82A0D9FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C98C89BFFDFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE99D82A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFE8C98C89BFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE99D82A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C9
+8C89BFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99D82A0D9FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8C98C89BFFDFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE59A879BECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59A87
+9BECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59A879BECFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE59A879BECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC3839CD6FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C386A1E5
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFEAC3839CD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C386A1E5FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC3839C
+D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE7C386A1E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC3839CD6FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C386A1E5FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFEC9F819EE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFC88A89C0FEFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9F819EE6FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFC88A89C0FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFEC9F819EE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC88A89C0FEFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9F
+819EE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFC88A89C0FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEA286C3FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+E49984C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFEEA286C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49984C3FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEA286C3FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFE49984C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFEEA286C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49984C3
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA1
+86C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59983C2FCFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA186C3FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE59983C2FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFEDA186C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE59983C2FCFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA186C3FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE59983C2FCFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFC783C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFE69995E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC783C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE69995E7FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC783C5FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFE69995E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFC783C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+E69995E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB849AFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD883A2FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB849AFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFD883A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFCB849AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD883
+A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB849AFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD883A2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF9C9FE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFBE8AC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9F
+E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE8AC9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9FE4FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE8AC9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFF9C9FE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFBE8AC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19E9DF0FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE19E9DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+C58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE19E9DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19E9DF0FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFEB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFC182CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9596E2FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1
+82CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC182CAFEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFEB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFC182CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FD8FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A95FA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD07FD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A95FAFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FD8
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFE9A95FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FD8FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A95FAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFD9EA1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD28ACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9EA1FEFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD28ACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFD9EA1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD28ACCFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD
+9EA1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFD28ACCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9DBBFEFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1
+9AC4FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFEC9DBBFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19AC4FEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9DBBFEFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE19AC4FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9DBBFEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE19AC4FEFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFD17ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9A94F8FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD17ED8FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFD9A94F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD17ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9A94F8FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD17ED8
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFD9A94F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29A
+F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFCFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFCC9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFCFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFCA9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9DFCFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFD29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFCA9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+D29AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFB
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2
+9AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29AF9FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9C
+FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFD39DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9CFBFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA11F94FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA11F94FBFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09B
+F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1256EFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFA12090FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFD09BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF883AF2FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF883AF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
+161230319EAEFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8936D9E8E8F4F6FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFCDA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDA3FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+D09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFCDB5940000000000272E61ACADFAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFCDA5F3E3E3E3E3E3E7E8EEF6F6FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFD09BFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFC
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFCFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFE
+E6100000000000000000002A339FB0D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFCE9DFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFCE5E3E3E3E3E3E3E3E3E3E8
+E9F4F6FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFF9BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFE42000000000000000000000000000A
+32329EB0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC9FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+EE82FAFFFFEAE3E3E3E3E3E3E3E3E3E3E3E3E3E4E8E8F4F6FEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF9BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FD2FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9B
+D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFF99FD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9BD2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FD2FFFF
+FF99000000000000000000000000000000000000283261B0B0F8FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFB9BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FD2FFFFFFF4E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E7E8EEF6F6FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9BD2FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFA1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE487FBFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE487FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFE51000000000000000000000000000
+0000000000000000002A35A0B4D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE487FBFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+BEFFFFFFFFFCE5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8E9F5
+F7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE487FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+D29DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29DFBFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFF
+FFFF400000000000000000000000000000000000000000000000000000083535
+9EB4F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFD29DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFEAE3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E9E9F4F7FEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29DFBFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC8FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF9BC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFF9800000000000000000000000000
+0000000000000000000000000000000000002A355EB4B4F8FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BC8FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FA
+FFFFFFFFFFFFF4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E8E9EDF7F7FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF9BC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFA9BD5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9BD5FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFF
+FFFFE31000000000000000000000000000000000000000000000000000000000
+000000000000002C389FB8D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFA9BD5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFCE5E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8E9F4F7FA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9BD5
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CE99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE589FCFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE589FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFF3F000000000000000000000000
+0000000000000000000000000000000000000000000000000000000838389DB8
+F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE589FCFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFF
+FFFFFFFFFFFFFFEAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E9E9F4F7FEFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE589FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8BE6FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFB8BE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8BE6FFFFFFFFFFFF
+FFFFFF9700000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000002A385EB8B8F7FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFB8BE6FFFFFFFFFFFFFFFFFFF4E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E8E9EDF7F7FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
+CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF983EFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFF983EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFE2150000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000002C3CA0BBD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF983EFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFF
+FFFFFFFFFFFFFFFCE5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8EAF5F8FAFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF983EFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCEA0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEA0FBFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFF
+FFFFFFFE18000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000073C3C9EBBF7FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFCEA0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E4EAEAF4F8FEFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CEA0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB89E4
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98CDFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB89E4FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF98CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFB89E4FFFFFFFFFFFFFFFFFFFFFFFE730000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000002B3C5CBBBBF6FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98CDFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB89E4FFFFFFFF
+FFFFFFFFFFFFFFFFF0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E8EAEDF8F8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98CDFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6B3B3B3ECFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE48AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFC6B3B3B3ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48AFCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFF
+FFFFFFFFB3070000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000002D409DBFD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE48AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFF7E4E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B09F9FA4D9F4F8FAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE48AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F8FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+EAB3B3B38C808080A6B3B3B38D808080A5B3B3C4FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F8FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB3B3B38C808080A6B3B3B3
+8D808080A5B3B3C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFEE86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF1800000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000640409CBFF6FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCE
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F8FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D09F9F9F
+7D727272949F9F9F7D7272739AA6B0C3FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DCEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFECB68C808DB1B1B1EBFDFDFDFFFFFFFFFFFDFDFD
+C5B1B1A68080A4C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+A7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ECB68C808DB1B1B1EBFDFDFDFFFFFFFFFFFDFDFDC5B1B1A68080A4C3FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFE700000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000002E445FC3C3F7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3D2A27D727D9E9E9ED1E1E1E1E3E3E3E3E3E1E1E1AF9E9E94
+77799CC3F8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC29C86B1EDFD
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDC39C87B6EBFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9CCFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFC29C86B1EDFDFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFDFDC39C87B6EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF9CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB207000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+002C449DC3D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C
+CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF7E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD8B779ED3E1E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E1E1AE8B78A7D9F4F8FAFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9CCFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFC3849DC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFEDB1879BE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7
+C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3849DC4
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB1879B
+E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFE1700000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000544449BC3F5FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3AE758CAEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3D39E788ACEE4EAEAF4F8FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE58AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000002E475EC7C7F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE927290CEE3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AB7574AFE3E3E3E8EB
+EDF9F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE79C82C0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFE48BFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C82C0FCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48BFCFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFB107000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000002D
+479BC7D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE48BFCFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E4E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE
+8B74ABE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3CE8D76AFE3E3E3E3E3E3E8EBF4F9FAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFE48BFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F8FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE82C1FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+9E83E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEE87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFAE82C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99E83E9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEE87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A0000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000447479BC7F4FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF9BD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F8FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E39B74ACE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CF8D75CFE3
+E3E3E3E3E3E3E3E3EBEBF4F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD1FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+EC82B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE38CFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC82B6FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38CFD
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFE70000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000002D4B5FCACAF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38CFDFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D274A2E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3CD759BE3E3E3E3E3E3E3E3E3E3E3E3E8EBEDF9
+F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE38CFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC395E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFB59EEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD2FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFC395E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB59EEAFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB30600000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000002C4B9B
+CAD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFF9AD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFF7E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3AE85CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A1
+8DD0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8EBF4F9FAFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9AD2FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFD19CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB39A
+EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC090E8FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFE38FF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19CFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB39AEFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFC090E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38F
+F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19CFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFF190000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000044B4B99CAF4FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE38FF9FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFD19CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39F89D5E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AB80CEE3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3EBEBF4F9FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE38FF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEC93E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87E4FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC93E8FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6F00000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000002E4F5ECCCDF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF87E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E39E9FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3D283CEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECEDF9FAFE
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87E4FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82B7FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB84B0FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFBFAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82B7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFEB84B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF
+AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFB20600000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000002C4F98CDD5
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFAAFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E4E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D474A3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D1759DE3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECF4FAFAFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFBFAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8BEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFE793E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFB3AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785EEFFFF
+FFFFFFFFFFFFFFFFFFFFFFA8BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE793
+E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3AFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785EEFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000034D4F98CDF2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFF785EEFFFFFFFFFFFFFFFFFFFFFFFFFFA8BEFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3CE83CCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E39F9CE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3EBECF4FAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFF785EEFFFFFFFFFFFF
+FFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C1B081818181818190C1D1
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B5FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFC0A9FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFF3C1B081818181818190C1D1FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB4B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+C0A9FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFE6D00000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000002C535FCDD1F3FFFFFFFFFFFFFFFFFFFFC0A9FFFFFFFFFFFFFFFFFFFF
+FFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D183D0E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D8AC9D73737373737380ACBAE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A0A1E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECEDFAFAFEFFFF
+FFFFFFFFFFFFFFFFC0A9FFFFFFFFFFFFFFFFFFFFFFFFD09BFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFE84EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFCE8785AEC6FFFDFDFDFDFEEDB0A081ACEFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF85E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE68CF9FF
+FFFFFFFFFFFFFFFFFFFFD09BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE84EBFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8785AEC6FFFDFDFDFD
+FEEDB0A081ACEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85E5
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE68CF9FFFFFFFFFFFFFFFFFFFFFFD09B
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1060000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000002B5398D1D6FFFF
+FFFFFFFFE68CF9FFFFFFFFFFFFFFFFFFFFFFD09BFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF6E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E275D1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B778
+769BB0E3E1E1E1E1E2D39D8E7399D5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E376CCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E8ECF4FAFAFFFFFFFFFFFFE68CF9FFFFFFFFFF
+FFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28995E6FFE1CEB48383838393C7D1FD
+FDBD80BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF8CE6FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFF28995E6FFE1CEB48383838393C7D1FDFDBD80BAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF8CE6FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFD18000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000453579AD4F4FFFF90E5FFFFFFFFFFFFFFFFFF
+FFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39EA1E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3D77A85CDE3C8B7A07575757583B1BAE1E1A872A6
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D183D0E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3ECEDF4FAFEFFFF8CE6FFFFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFB5B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF669
+86E7FAB3829CA4B8F4F4F4F4E0A4A48589DCFFBA71B0FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE994ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5ACFF
+FFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66986E7FAB3829CA4B8F4F4F4F4
+E0A4A48589DCFFBA71B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+94ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5ACFFFFFFFFFFFFFFFFFFFFED8BF3
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B0000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00002D576295B3FFFFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3A19EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DB5D77CEDF9F
+748B92A4D9D9D9D9C79292767AC4E3A6659DE3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3CF84D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E8EDEEA3ADFFFFFFFFFF
+FFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFA4FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF074B9F1AD81B5F4FFFFFFFFFFFFFFFFFFFFFA
+DD928AD9EA83A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC96FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFBF34F8FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFBFA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF074B9F1AD81B5F4FFFFFFFFFFFFFFFFFFFFFADD928AD9EA83A9FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC96FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFBF34F8FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFB0050000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000135FAFFFFFFFFFFFFFFFF
+FFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E4
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AA92E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3D667A5D69A73A1D9E3E3E3E3E3E3E3E3E3E3DFC5827BC1
+D07596E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B686E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3AA34F8FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEE90EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF293BCBC
+5697FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC5471E290BDFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DA
+FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE90EDFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF293BCBC5697FAFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFDC5471E290BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DAFFFFFFFFFFFFFFFFFF91D9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1700000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000008E0FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3D480D3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D783A7A74D86DFE3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3C44B65C980A8E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3A1A3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D823DBFFFFFFFF
+FFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFF096EDC98DDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFAC97FCB2BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BE
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF6574FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
+96EDC98DDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC97FCB2BBFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFF6574FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFE6A0000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000087FFFFFFFFFFFFFFFF
+EE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E177CEE3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3D686D3B37DC6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+9986E09EA6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E391A9E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E35A76FFFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFB7B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF398DAB2AAFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE495DBAFBFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFED92EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D65
+FCFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7B3FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFF398DAB2AAFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE495DBAFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFED92EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D65FCFFFFFFFFFFFFFFD299FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF05000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000072FDFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+A39FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D887C29E97E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CB85C39CAAE3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3D382D1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36F66FCFFFFFF
+FFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF46EDAAE8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE365FA73BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE81CF2FFFFFFFFFFFFFF91DAFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46EDA
+AE8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE365FA73BDFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9AFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFE81CF2FFFFFFFFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFC1B00000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000012F6FFFFFFFFFFFFFF
+91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+E6E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE77E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3D962C29B7EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3CA5ADF66A8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B689E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3CE1BF2FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF9BCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1CA88AFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE973CE8BF1FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC29
+DCFFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BCEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFA1CA88AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE973CE8BF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC29DCFFFFFFFFFFFFFB90E1FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD31000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000FE2FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3E38A
+B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E38FB4799CE3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CF66B77CD6E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E37BCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D226DDFFFFFF
+FFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78AFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCEAEB996FFFFFFFFFFFFFFFFFFFFFFFFFBCBC9DDFFFFFFFF
+FFFFFFFFFFFFFFFFDF7BE291FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6574FFFFFFFFFFFFE08DFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE78AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEAEB996
+FFFFFFFFFFFFFFFFFFFFFFFFFBCBC9DDFFFFFFFFFFFFFFFFFFFFFFFFDF7BE291
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF6574FFFFFFFFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF9100000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000087FFFFFFFFFFFFE0
+8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+F3E3E3E3E3E3E3E3E3E3E3E3E3E3CE7BE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3B79BA586E3E3E3E3E3E3E3E3E3E3E3E3DFB5B3C5E3E3E3E3E3E3E3E3
+E3E3E3E3C66DC981E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B78AE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E35A76FFFFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFD9ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27CCA64EAFFFFFFFF
+FFFFFFFFFFFFDF7A6C7E9D5A78AEFFFFFFFFFFFFFFFFFFFFFF909D9DB4FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A
+66FCFFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9ECDFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFF27CCA64EAFFFFFFFFFFFFFFFFFFFFDF7A6C7E9D5A
+78AEFFFFFFFFFFFFFFFFFFFFFF909D9DB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A66FCFFFFFFFFFFE588FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6110000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000074FDFFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3E3E3E3E3E3E3E3E3E3E3E18DB6
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D76EB459D0E3E3E3E3E3E3E3E3
+E3E3C66D60708C506B9BE3E3E3E3E3E3E3E3E3E3E3808C8CA0E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E37DCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36D68FCFFFF
+FFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA58875EAFFFFFFFFFFFFFFFFFFFFB941A5F2FFFFFDD6765CFB
+FFFFFFFFFFFFFFFFFFFF98916EF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC2A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE71FEBFFFFFFFFFFB0BDFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA58875EAFF
+FFFFFFFFFFFFFFFFFFB941A5F2FFFFFDD6765CFBFFFFFFFFFFFFFFFFFFFF9891
+6EF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A4FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE71FEBFFFFFFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF34000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000012F0FFFFFFFFFFB0
+BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE9E3E3E3E3E3E3E3E3E3E3E3DD70E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3937968D0E3E3E3E3E3E3E3E3E3E3A53A93D7E3E3E1BE6952DFE3E3E3E3
+E3E3E3E3E3E3878162D8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD92E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3CE1EECFFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC3A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF193B0C8FFFFFFFFFFFF
+FFFFFFFFD43CE2FFFFFFFFFFFFFF8669FFFFFFFFFFFFFFFFFFFFFF93BBA7FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+19F4FFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3A8FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFF193B0C8FFFFFFFFFFFFFFFFFFFFD43CE2FFFFFFFFFF
+FFFF8669FFFFFFFFFFFFFFFFFFFFFF93BBA7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE719F4FFFFFFFFFF8CDFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF950000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000013F8FFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3E3E3E3E3E3E3E3E3AE96E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D6839DB2E3E3E3E3E3E3E3E3E3E3
+BD35C9E3E3E3E3E3E3E3775DE3E3E3E3E3E3E3E3E3E3E383A695E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3CF7BE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE18F4FFFF
+FFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFA8B68FFFFFFFFFFFFFFFFFFFFFF47DE0FFFFFFFFFFFFFFFFFF92
+BBFFFFFFFFFFFFFFFFFFFFC2AA92EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFA5C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64BA0FFFFFFFFFB91DFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8B68FFFFFFF
+FFFFFFFFFFFFFFF47DE0FFFFFFFFFFFFFFFFFF92BBFFFFFFFFFFFFFFFFFFFFC2
+AA92EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5C4FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFF64BA0FFFFFFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFD7110000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000007ADFFFFFFFFFB91
+DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFBE5E3E3E3E3E3E3E3E3E3E177D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E396A27FE3E3E3E3E3E3E3E3E3E3D96FC7E3E3E3E3E3E3E3E3E382A6E3E3E3
+E3E3E3E3E3E3E3AD9782D5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E393AE
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3DB44A1FFFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+C2A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF294AAC2FFFFFFFFFFFFFF
+FFFFFFB47BFFFFFFFFFFFFFFFFFFFFE659FFFFFFFFFFFFFFFFFFFFFF8FB6A9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+6A68FFFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A7FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF294AAC2FFFFFFFFFFFFFFFFFFFFB47BFFFFFFFFFFFFFF
+FFFFFFE659FFFFFFFFFFFFFFFFFFFFFF8FB6A9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A68FFFFFFFFDE8DFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3300
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000007CFFFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E3E3E3E3E3E3E3E3E3AD95E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D78497ADE3E3E3E3E3E3E3E3E3E3A0
+6DE3E3E3E3E3E3E3E3E3E3CD4FE3E3E3E3E3E3E3E3E3E3E37FA296E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3D27ADDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35E6AFFFF
+FFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97D1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF97A991FFFFFFFFFFFFFFFFFFFFFE93E9FFFFFFFFFFFFFFFFFFFFFF
+A4D0FFFFFFFFFFFFFFFFFFFFC2AB7DEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF89E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7864FDFFFFFFE08BFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF97D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97A991FFFFFFFF
+FFFFFFFFFFFFFE93E9FFFFFFFFFFFFFFFFFFFFFFA4D0FFFFFFFFFFFFFFFFFFFF
+C2AB7DEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89E5FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF7864FDFFFFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF940000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000072FDFFFFFFE08B
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFF3E3E3E3E3E3E3E3E3E386BAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3869681E3E3E3E3E3E3E3E3E3E3E283CFE3E3E3E3E3E3E3E3E3E3E392B9E3E3
+E3E3E3E3E3E3E3E3AD986FD3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37A
+CCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E36B66FDFFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+8BFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6590C6FFFFFFFFFFFFE3D1
+E7FFFF7EFFFFFFFFFFFFFFFFFFFFFFFFB7B3FFFFFFFFFFFFFFFFFFFFFE9576AC
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+E620EBFFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78BFEFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF6590C6FFFFFFFFFFFFE3D1E7FFFF7EFFFFFFFFFFFFFFFF
+FFFFFFFFB7B3FFFFFFFFFFFFFFFFFFFFFE9576ACFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE620EBFFFFFFD596FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD610
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000011F0FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3E3E3E3E3E3E3CE7CE2E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35A80B0E3E3E3E3E3E3CABACEE3E370
+E3E3E3E3E3E3E3E3E3E3E3E3A39FE3E3E3E3E3E3E3E3E3E3E2856999E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AC90E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CD1EECFF
+FFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCAA689FEFFFFFFFFFF8A549953C5D465FFFFFFFFFFFFFFFFFFFFFFFF
+BF6FFFFFFFFFFFFFFFFFFFFFFFB99C9EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE88AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE819F4FFFFFF90DAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFA2C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCAA689FEFFFFFFFF
+FF8A549953C5D465FFFFFFFFFFFFFFFFFFFFFFFFBF6FFFFFFFFFFFFFFFFFFFFF
+FFB99C9EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88AFCFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFE819F4FFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3200000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000FF8FFFFFF90DA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE8E3E3E3E3E3E3E390ABE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+B4947AE2E3E3E3E3E37B4B884AAFBD5AE3E3E3E3E3E3E3E3E3E3E3E3AA63E3E3
+E3E3E3E3E3E3E3E3E3A58B8DE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE
+7BE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3CE18F4FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78F
+E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA896A9FFFFFFFFFFD78EF8FF
+F68925C0FFFFFFFFFFFFFFFFFFFFFFFFFF78FCFFFFFFFFFFFFFFFFFFFFE19A88
+F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+F54CA4FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78FE7FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFEA896A9FFFFFFFFFFD78EF8FFF68925C0FFFFFFFFFFFFFFFF
+FFFFFFFFFF78FCFFFFFFFFFFFFFFFFFFFFE19A88F0FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54CA4FFFFFF8EDCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000007B1FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3E3E3E3DC7FCEE3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E2968696E3E3E3E3E3BF7EDDE3DB7A21AB
+E3E3E3E3E3E3E3E3E3E3E3E3E36BE0E3E3E3E3E3E3E3E3E3E3C88979D6E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E396ACE3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DA44A5FF
+FFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFE8AA3C6FFFFFFFFFF69C6FFFFFFFF777CFFFFFFFFFFFFFFFFFFFFFFFF
+D760FFFFFFFFFFFFFFFFFFFFFFFF8FA7AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCC9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7366FFFFFF8FDAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8AA3C6FFFFFFFFFF
+69C6FFFFFFFF777CFFFFFFFFFFFFFFFFFFFFFFFFD760FFFFFFFFFFFFFFFFFFFF
+FFFF8FA7AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9AFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF7366FFFFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD510000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000079FFFFFF8FDA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFAE5E3E3E3E3E3D672E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E2
+7B91B0E3E3E3E3E35DB0E3E3E3E36A6EE3E3E3E3E3E3E3E3E3E3E3E3BF55E3E3
+E3E3E3E3E3E3E3E3E3E37F959CE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+B689E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E36668FFFFFC8FDFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88B
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBA286FDFFFFFFFFFC77FDFFFF
+FFFFFF4ED5FFFFFFFFFFFFFFFFFFFFFFB2B6D67A8986F6FFFFFFFFFFFFFFBC95
+A0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF6B70FFFFFC8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88BFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFCBA286FDFFFFFFFFFC77FDFFFFFFFFFF4ED5FFFFFFFFFFFFFF
+FFFFFFFFB2B6D67A8986F6FFFFFFFFFFFFFFBC95A0FBFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCE9CFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B70FFFFFC8FDFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+3000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000083FFFFFC8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3E3CE7CE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B59077E1E3E3E3E3E06AE1E3E3E3E3E345
+BEE3E3E3E3E3E3E3E3E3E3E39EA2BE6D7A77DBE3E3E3E3E3E3E3A7858EDFE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B78BE2E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35F72FF
+FFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFAB90ACFFFFFFFFFFF271FFFFFFFFFFFE8259E0FFFFFFFFFFFFFFFFFFFF
+BB8646C2E570B7FFFFFFFFFFFFFFE29C80F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFD85F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7967FDFFDF8FFEFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB90ACFFFFFFFFFFF2
+71FFFFFFFFFFFE8259E0FFFFFFFFFFFFFFFFFFFFBB8646C2E570B7FFFFFFFFFF
+FFFFE29C80F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85F1FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF7967FDFFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000076FEFFDF8FFE
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFF3E3E3E3E3E390B1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E398
+8099E3E3E3E3E3D765E3E3E3E3E3E2744FC7E3E3E3E3E3E3E3E3E3E3A6773EAD
+CC64A3E3E3E3E3E3E3E3C98B72DDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E176D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E36C69FDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA5FCBFFFFFFFFFFAD82FFFFFF
+FFFFFFB6537CFFFFFFFFFFFFFFFFFFFB7A5DD1FFFFC96FFFFFFFFFFFFFFFFF82
+76FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE722EDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECAFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFBA5FCBFFFFFFFFFFAD82FFFFFFFFFFFFB6537CFFFFFFFFFFFF
+FFFFFFFB7A5DD1FFFFC96FFFFFFFFFFFFFFFFF8276FEFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE722EDFFDE8FFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+D310000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000013F2FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3E3E3E38DB4E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A655B5E3E3E3E3E39A74E3E3E3E3E3E3A2
+4A6EE3E3E3E3E3E3E3E3E3DF6D53BAE3E3B363E3E3E3E3E3E3E3E37469E2E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E375D6E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE20EE
+FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFB9E8BC8FFFFFFFFFFA6C5FFFFFFFFFFFFDB6A93DEFFFFFFFFFFFFFFFFC8
+0AC3FFFFFFFD75FCFFFFFFFFFFFFFF8E94CEFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF82F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED1EECFFDE8FFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9E8BC8FFFFFFFFFFA6
+C5FFFFFFFFFFFFDB6A93DEFFFFFFFFFFFFFFFFC80AC3FFFFFFFD75FCFFFFFFFF
+FFFFFF8E94CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82F2FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFED1EECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F0000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000EF1FFDE8FFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE8E3E3E3E38FAFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF8D
+7CB2E3E3E3E3E394AFE3E3E3E3E3E3C35E83C6E3E3E3E3E3E3E3E3B209AEE3E3
+E3E168E0E3E3E3E3E3E3E37E84B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E374D7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D31CEDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8788DFCFFFFFFFFFFD69BFFFFFF
+FFFFFFFFBF489CFFFFFFFFFFFFFFD33493FCFFFFFFFF81FCFFFFFFFFFFFFFFC6
+70B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFF8788DFCFFFFFFFFFFD69BFFFFFFFFFFFFFFBF489CFFFFFFFFFF
+FFFFD33493FCFFFFFFFF81FCFFFFFFFFFFFFFFC670B0FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFDE8FFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF90000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E3E3E3DC81CDE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD6B7DE0E3E3E3E3E3BE8AE3E3E3E3E3E3E3
+AA408BE3E3E3E3E3E3E3BC2E83E0E3E3E3E373E0E3E3E3E3E3E3E3B0649DE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37AD0E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFA7A84FFFFFFFFFFFFFF7CFFFFFFFFFFFFFFFB7B13DAEF8991A6FFBB473D
+E4FFFFFFFFFF83FCFFFFFFFFFFFFFFC866B7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFC6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7A84FFFFFFFFFFFFFF
+7CFFFFFFFFFFFFFFFB7B13DAEF8991A6FFBB473DE4FFFFFFFFFF83FCFFFFFFFF
+FFFFFFC866B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A2FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD21100000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FFE489FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFAE5E3E3D574E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF6D
+75E3E3E3E3E3E3E36EE3E3E3E3E3E3E3DF6D11C2D57A8194E3A63F36CBE3E3E3
+E3E375E0E3E3E3E3E3E3E3B25BA3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3B090E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFB4B9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4798BFFFFFFFFFFFFFA82FFFFFF
+FFFFFFFFFFFF782D5586BD466771BAA4FFFFFFFFFFDB5FFEFFFFFFFFFFFFFFCC
+6AB1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFFB4B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFF4798BFFFFFFFFFFFFFA82FFFFFFFFFFFFFFFFFF782D5586BD46
+6771BAA4FFFFFFFFFFDB5FFEFFFFFFFFFFFFFFCC6AB1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFB4B9FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFF310000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FFB4B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3D675E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3D96C7CE3E3E3E3E3E3DF74E3E3E3E3E3E3E3
+E3E36B284C77A83E5C65A692E3E3E3E3E3C355E2E3E3E3E3E3E3E3B65E9EE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B48DE3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFB969C5FFFFFFFFFFFFFA71FAFFFFFFFFFFFFFFFFFF705F5F9931C8FF9CDB
+FFFFFFFFFFB4A2FFFFFFFFFFFFFFFFFC847DF9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFC5A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB969C5FFFFFFFFFFFFFA
+71FAFFFFFFFFFFFFFFFFFF705F5F9931C8FF9CDBFFFFFFFFFFB4A2FFFFFFFFFF
+FFFFFFFC847DF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5A1FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9300000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FF8AE3FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFF3E3E3DB71E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A55D
+AFE3E3E3E3E3E3DF65DFE3E3E3E3E3E3E3E3E3645555882CB2E38BC3E3E3E3E3
+E3A090E3E3E3E3E3E3E3E3E0756FDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3AF8FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB568C9FFFFFFFFFFFFFF75BDFFFF
+FFFFFFFFFFFFFF80A8677F8CFFFB7FFFFFFFFFFFFFBDAAFFFFFFFFFFFFFFFFFF
+8679F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE591F7FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFB568C9FFFFFFFFFFFFFF75BDFFFFFFFFFFFFFFFFFF80A8677F8C
+FFFB7FFFFFFFFFFFFFBDAAFFFFFFFFFFFFFFFFFF8679F9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE591F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD31100000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE5E3B096E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3A15DB3E3E3E3E3E3E3E368A8E3E3E3E3E3E3
+E3E3E372965C717DE3DF71E3E3E3E3E3E3A897E3E3E3E3E3E3E3E3E3776CDEE3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CC81DCE3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFB668C8FFFFFFFFFFFFFFB0BCFFFFFFFFFFFFFFFFFFBF7CF4E4FFFFC1ADFF
+FFFFFFFFFF9DD6FFFFFFFFFFFFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFF82EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB668C8FFFFFFFFFFFFFF
+B0BCFFFFFFFFFFFFFFFFFFBF7CF4E4FFFFC1ADFFFFFFFFFFFF9DD6FFFFFFFFFF
+FFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82EFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FF8FDEFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE8E388B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A25D
+B2E3E3E3E3E3E3E39DA7E3E3E3E3E3E3E3E3E3AA6ED9CBE3E3AC9AE3E3E3E3E3
+E38CBEE3E3E3E3E3E3E3E3E3776DDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E374D5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FC9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB668C8FFFFFFFFFFFFFFD59CFFFF
+FFFFFFFFFFFFFFFA75FFFFFFFF7AB6FFFFFFFFFFFB6EFFFFFFFFFFFFFFFFFFFF
+867AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FC9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFB668C8FFFFFFFFFFFFFFD59CFFFFFFFFFFFFFFFFFFFA75FFFFFF
+FF7AB6FFFFFFFFFFFB6EFFFFFFFFFFFFFFFFFFFF867AF9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF9200000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E38EB3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3A25DB2E3E3E3E3E3E3E3BE8BE3E3E3E3E3E3
+E3E3E3DF68E3E3E3E36DA2E3E3E3E3E3DF62E3E3E3E3E3E3E3E3E3E3776DDEE3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E375D6E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFB668C8FFFFFFFFFFFFFFFF7FFBFFFFFFFFFFFFFFFFFF65C8E1FFFF76F8FF
+FFFFFFFFC672FFFFFFFFFFFFFFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFC86F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF99CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB668C8FFFFFFFFFFFFFF
+FF7FFBFFFFFFFFFFFFFFFFFF65C8E1FFFF76F8FFFFFFFFFFC672FFFFFFFFFFFF
+FFFFFFFF867AF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC86F1FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2130000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FF8FDEFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFAE588B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A25D
+B2E3E3E3E3E3E3E3E371DFE3E3E3E3E3E3E3E3E35AB2C8E3E369DDE3E3E3E3E3
+B065E3E3E3E3E3E3E3E3E3E3776DDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E077D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB569C8FFFFFFFFFFFFFFFFAAC6FF
+FFFFFFFFFFFFFFFFB32E7288E561FFFFFFFFFFFF7FB8FFFFFFFFFFFFFFFFFFFF
+8779F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9DFEFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A8FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFB569C8FFFFFFFFFFFFFFFFAAC6FFFFFFFFFFFFFFFFFFB32E7288
+E561FFFFFFFFFFFF7FB8FFFFFFFFFFFFFFFFFFFF8779F9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCD9DFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8FDEFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF1F000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FF8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B096E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3A15DB2E3E3E3E3E3E3E3E397B0E3E3E3E3E3
+E3E3E3E39F296579CC56E3E3E3E3E3E371A4E3E3E3E3E3E3E3E3E3E3786CDEE3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B68CE2E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFBA65C8FFFFFFFFFFFFFFFFB181FFFFFFFFFFFFFFFFFF6EA6FF8A86A9FFFF
+FFFFFFFE65F6FFFFFFFFFFFFFFFFFFFF827CF9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFC8A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF67FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA65C8FFFFFFFFFFFFFF
+FFB181FFFFFFFFFFFFFFFFFF6EA6FF8A86A9FFFFFFFFFFFE65F6FFFFFFFFFFFF
+FFFFFFFF827CF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8A0FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFF8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F0000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FF8AE3FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFEDDB71E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A65A
+B2E3E3E3E3E3E3E3E39E73E3E3E3E3E3E3E3E3E36294E37B7796E3E3E3E3E3E2
+5ADBE3E3E3E3E3E3E3E3E3E3746EDEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3B28EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFB5B8FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2AC8FFFFFFFFFFFFFFFFF850DF
+FFFFFFFFFFFFFFFF6534E16388BBFFFFFFFFFFB56EFFFFFFFFFFFFFFFFFFFFFF
+419EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFFB5B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFA2AC8FFFFFFFFFFFFFFFFF850DFFFFFFFFFFFFFFFFF6534E163
+88BBFFFFFFFFFFB56EFFFFFFFFFFFFFFFFFFFFFF419EFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCA9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFB5B8FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFAE020000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FFB5B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D675E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF25B2E3E3E3E3E3E3E3E3DD47C6E3E3E3E3
+E3E3E3E35A2EC85879A6E3E3E3E3E3A162E3E3E3E3E3E3E3E3E3E3E33A8DE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B48DE3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFE4FA6FFFFFFFFFFFFFFFFFFA3B1FFFFFFFFFFFFFFFFE53D8CA7BEB0FFFF
+FFFFFF56D9FFFFFFFFFFFFFFFFFFFFEB50ACFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFC6A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEF82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4FA6FFFFFFFFFFFFFF
+FFFFA3B1FFFFFFFFFFFFFFFFE53D8CA7BEB0FFFFFFFFFF56D9FFFFFFFFFFFFFF
+FFFFFFEB50ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6A2FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFFE489FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71A00000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FFE489FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFED874E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E246
+94E3E3E3E3E3E3E3E3E3919EE3E3E3E3E3E3E3E3CC367D95A99DE3E3E3E3E34D
+C1E3E3E3E3E3E3E3E3E3E3D14799E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3B090E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87D87FFFFFFFFFFFFFFFFFFF985
+FDFFFFFFFFFFFFFFFF88FFFFB2B1FFFFFFFF8A75FFFFFFFFFFFFFFFFFFFF9F9A
+76B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEB1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF791E6FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFF87D87FFFFFFFFFFFFFFFFFFF985FDFFFFFFFFFFFFFFFF88FFFF
+B2B1FFFFFFFF8A75FFFFFFFFFFFFFFFFFFFF9F9A76B2FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF89EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFDE8FFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF5E0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE681CDE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD6F78E3E3E3E3E3E3E3E3E3DE76E1E3E3E3
+E3E3E3E3E379E3E39E9EE3E3E3E37B68E3E3E3E3E3E3E3E3E3E38E89699EE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37AD0E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D11DED
+FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFC8B62FFFFFFFFFFFFFFFFFFFFACC0FFFFFFFFFFFFFFFF80FFFFB2B2FFFF
+FFE24AFEFFFFFFFFFFFFFFFFFFC3287755D9FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF83F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB1FECFFDE8FFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFA1C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8B62FFFFFFFFFFFFFF
+FFFFFFACC0FFFFFFFFFFFFFFFF80FFFFB2B2FFFFFFE24AFEFFFFFFFFFFFFFFFF
+FFC3287755D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83F2FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEB1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD02000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000FF1FFDE8FFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF690AFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E07C
+57E3E3E3E3E3E3E3E3E3E399ABE3E3E3E3E3E3E3E372E3E39E9EE3E3E3C942E2
+E3E3E3E3E3E3E3E3E3AE246A4CC1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E375D7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D11DEDFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE4CE6FFFFFFFFFFFFFFFFFFF7
+62E9FFFFFFFFFFFFFF81FFFFB6B3FFFFFF88C2FFFFFFFFFFFFFFFFFFFF649759
+57FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEC1FECFFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9ECAFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFAE4CE6FFFFFFFFFFFFFFFFFFF762E9FFFFFFFFFFFFFF81FFFF
+B6B3FFFFFF88C2FFFFFFFFFFFFFFFFFFFF64975957FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF84F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC1FECFFDE8FFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFF61900000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000FF1FFDE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8FB4E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39B44CDE3E3E3E3E3E3E3E3E3DC57CFE3E3
+E3E3E3E3E373E3E3A29FE3E3E379ADE3E3E3E3E3E3E3E3E3E359864F4DE3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E375D6E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D21DED
+FFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFB36EC5FFFFFFFFFFFFFFFFFFFF9D71FFFFFFFFFFFFFC75FFFFF864C8CC
+8191FFFFFFFFFFFFFFFFFFFFBA74DA2D8AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFD85F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE71DECFFDF8FFEFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFA2C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB36EC5FFFFFFFFFFFF
+FFFFFFFF9D71FFFFFFFFFFFFFC75FFFFF864C8CC8191FFFFFFFFFFFFFFFFFFFF
+BA74DA2D8AF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD85F1FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE71DECFFDF8FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000EF1FFDF8FFE
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF9AB1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39F
+62AFE3E3E3E3E3E3E3E3E3E38C65E3E3E3E3E3E3E068E3E3DD59B2B67381E3E3
+E3E3E3E3E3E3E3E3A667C2287BDDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E176D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3CE1BEDFFFC8FDEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98A
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD74FC5FFFFFFFFFFFFFFFFFFFF
+FA6182FFFFFFFFFFBA73FFFFFFCB7F80C2FFFFFFFFFFFFFFFFFFFFFF68DC971E
+99FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9DFEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF8507F1FFFC8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98AFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFD74FC5FFFFFFFFFFFFFFFFFFFFFA6182FFFFFFFFFFBA73FFFF
+FFCB7F80C2FFFFFFFFFFFFFFFFFFFFFF68DC971E99FCFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCE9DFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8507F1FFFC8FDEFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFAC01000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000013F2FFFC8FDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE27BE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3BF46AFE3E3E3E3E3E3E3E3E3E3DF5674E3
+E3E3E3E3A666E3E3E3B57172ADE3E3E3E3E3E3E3E3E3E3E35DC4861B88E0E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B78CE2E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37608F1
+FFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF6D87FFFFFFFFFFFFFFFFFFFFFFFE85D2FFFFFFFFB3BCFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE460FF424CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCC9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C62FEFFFF8FDAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFF180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D87FFFFFFFFFFFF
+FFFFFFFFFFFE85D2FFFFFFFFB3BCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4
+60FF424CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9AFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF6C62FEFFFF8FDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6190000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000075FEFFFF8FDA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFF275E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+6178E3E3E3E3E3E3E3E3E3E3E3E276BBE3E3E3E39FA7E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3CB55E33B44A7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+B689E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E36064FEFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78F
+E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA45AEEFFFFFFFFFFFFFFFFFF
+FFFFFD7279F7FFD862F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF98EA3E55
+F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF7369FFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78FE7FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFEA45AEEFFFFFFFFFFFFFFFFFFFFFFFD7279F7FFD862F7FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF98EA3E55F5FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFA9C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7369FFFFFF8EDCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFF5A000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000007BFFFFFF8EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF889CEE3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E29250D4E3E3E3E3E3E3E3E3E3E3E3E165
+6CDCE3C057DCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39C87D0374CDAE3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E396ACE3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3666BFF
+FFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFD8528DFFFFFFFFFFFFFFFFFFFFFFFFFD80539745C1FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF6AD7C3219EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE78AFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54CA4FFFFFF91D9FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFA3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8528DFFFFFFFFFF
+FFFFFFFFFFFFFFFD80539745C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A
+D7C3219EFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78AFCFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFF54CA4FFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB0100000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000007B1FFFFFF91D9
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFA4ABE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+C0497DE3E3E3E3E3E3E3E3E3E3E3E3E1724A863DACE3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E35EBFAE1D8DE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE
+7BE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3DA44A5FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+8BFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A58FEFFFFFFFFFFFFFFFF
+FFFFFFFFFFE4D1E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE460FF5E2BB8
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+E819F4FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE78BFEFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF4A58FEFFFFFFFFFFFFFFFFFFFFFFFFFFE4D1E7FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE460FF5E2BB8FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFC1A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE819F4FFFFFFD596FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFF51C0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000FF8FFFFFFD596FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE97FE2E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3424EE2E3E3E3E3E3E3E3E3E3E3E3E3
+E3CBBACEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CB55E35426A4E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AC90E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE18F4FF
+FFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98D1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFA45AD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFBE9CF2516DF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF88E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE620EBFFFFFFE08BFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF98D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA45AD1FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE9C
+F2516DF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88E6FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFE620EBFFFFFFE08BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C00000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000011F0FFFFFFE08B
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF91BAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E39250BAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3A98BD74861D6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E379
+CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3CD1EECFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+C2A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF854A3FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88BC9923B3FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+7864FDFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A7FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF854A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF88BC9923B3FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFEC89F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7864FDFFFFFFDE8DFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFAE0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000072FDFFFFFFDE8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC095E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD4B91E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E379A7881F9FE3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3D27ADDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36B66FDFF
+FFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFAD52E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF6FFD5656F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFA5C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A68FFFFFFFFFB91DFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFD86ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD52E8FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6FFD
+5656F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5C4FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF6A68FFFFFFFFFB91DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41B000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000007CFFFFFFFFFB91
+DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFC7AD2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E39A49CEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E363E14D4DDBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E393AE
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E35E6AFFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC4A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5798AFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF929A6BB6FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6
+4BA0FFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4A7FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFF5798AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF929A6BB6FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE98AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64BA0FFFFFFFFFF8CDFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF5B00000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000007ADFFFFFFFFFF8CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB895E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DA6C7BE3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E382895FA2E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3CF7BE1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DB44A1FFFF
+FFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA72AEEFFFFFFFFFFFFFFFFFFFFFFFFF4EFF4FAF3FAF3FFFFFF
+FFFFFFFFFFFFFFFFFFFF6F1E30F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC2A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE15F3FFFFFFFFFFB0BDFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFF87EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA72AEEFFFF
+FFFFFFFFFFFFFFFFFFFFF4EFF4FAF3FAF3FFFFFFFFFFFFFFFFFFFFFFFFFF6F1E
+30F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A4FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFEE15F3FFFFFFFFFFB0BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000CF7FFFFFFFFFFB0
+BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF070E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E39525D4E3E3E3E3E3E3E3E3E3E3E3E3D9D5D9DFD8DFD8E3E3E3E3E3E3E3
+E3E3E3E3E3E3631B2BDDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD92E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3D414F3FFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFD9ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5716CFBFFFFFFFFFF
+FFFFFFFFFFBC5C8A5A2E662E67BCFFFFFFFFFFFFFFFFFFFFFFFF6D39C1FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7
+3FF3FFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9ECDFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFF5716CFBFFFFFFFFFFFFFFFFFFFFBC5C8A5A2E662E
+67BCFFFFFFFFFFFFFFFFFFFFFFFF6D39C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF8CE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB73FF3FFFFFFFFFFE588FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF31B000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000003EF6FFFFFFFFFFE588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC90B6
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DA6560DFE3E3E3E3E3E3E3E3E3
+E3A7527B50295B295CA7E3E3E3E3E3E3E3E3E3E3E3E36133ACE3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E37DCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A33FF3FFFF
+FFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE88AFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFD76078FFFFFFFFFFFFFFFFFFFFD1666A6B4F384F34D1FFFF
+FFFFFFFFFFFFFFFFFFCF608EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CD9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6570FFFFFFFFFFFFE08DFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE88AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD76078FF
+FFFFFFFFFFFFFFFFFFD1666A6B4F384F34D1FFFFFFFFFFFFFFFFFFFFFFCF608E
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9CFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF6570FFFFFFFFFFFFE08DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF590000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000085FFFFFFFFFFFFE0
+8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD87BE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3BF556BE3E3E3E3E3E3E3E3E3E3BA5B5E5F4632462EBAE3E3E3E3E3E3
+E3E3E3E3E3B8557EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B68BE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E35A72FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF9BCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB35F9DFFFFFFFF
+FFFFFFFFFFFFFCCDFFFFE2FFDFFFFFFFFFFFFFFFFFFFFFFFF06578F7FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64D
+A0FFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BCEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB35F9DFFFFFFFFFFFFFFFFFFFFFCCDFFFFE2FF
+DFFFFFFFFFFFFFFFFFFFFFFFF06578F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF8AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64DA0FFFFFFFFFFFFFB90E1FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFAC000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000007ADFFFFFFFFFFFFFB90E1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68A
+B7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39F558CE3E3E3E3E3E3E3E3
+E3E3E0B6E3E3C9E3C6E3E3E3E3E3E3E3E3E3E3E3D65A6BDCE3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E37BCEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DB45A1FFFFFF
+FFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF7653FBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFEA892EC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEE15F6FFFFFFFFFFFFFF91DAFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE786FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7653F
+BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA892EC9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9AFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFEE15F6FFFFFFFFFFFFFF91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21B00000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000CF9FFFFFFFFFFFFFF
+91DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFED177E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3DC5A38A6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3D07A29B3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B689E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3D414F6FFFFFFFFFFFFFFD398FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFB8B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9060E6FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA459D2FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEC91ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB93D
+F4FFFFFFFFFFFFFFD398FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8B1FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9060E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFA459D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFEC91ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB93DF4FFFFFFFFFFFFFFD398FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF570000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000003CF7FFFFFFFFFFFFFFD398FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED
+A49EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF8055CDE3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3924FBBE3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3D281D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A53DF4FFFFFF
+FFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFF79554A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEF616DCAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BE
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF6176FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFD86E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7
+9554A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF616DCAFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3BEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFF6176FFFFFFFFFFFFFFFFEE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA700000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000008BFFFFFFFFFFFFFFFF
+EE8BF2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E177CEE3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3DC854B92E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3D55661B4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E391A9E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E35678FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFEE90EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79353A1
+FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE66366C6FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DA
+FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE90EDFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79353A1FAFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFE66366C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFB5B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF326DAFFFFFFFFFFFFFFFFFF91D9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFC40E00000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000009E0FFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9
+E4D480D3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DC834A8FDFE3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CD585BB0E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3A1A3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D823DBFFFFFFFF
+FFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0A3FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF7796381E0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFBB36C5FB5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB97FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFBA3AF8FFFFFFFFFFFFFFFFFFD299FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFC0A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF7796381E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB36C5FB5FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB97FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFBA3AF8FFFFFFFFFFFFFFFFFFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000003BFAFFFFFFFFFFFFFFFF
+FFD299FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3AB91E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3DC6C5873C7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DF9F
+6055A1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B586E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3A63AF8FFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFB5B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF875
+7D719FE1FAFFFFFFFFFFFFFFFFFFFFFFF5C0847578B7FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE994ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6276FF
+FFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8757D719FE1FAFFFFFFFFFFFFFF
+FFFFFFFFF5C0847578B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+94ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6276FFFFFFFFFFFFFFFFFFFFED8BF3
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF8A00000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000008AFFFFFFFFFFFFFFFFFFFFED8BF3FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+F2E3E3A19EE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DD686F658EC8
+DFE3E3E3E3E3E3E3E3E3E3E3DAAB75686BA3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3CF84D2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35778FFFFFFFFFF
+FFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4936C7085B2ECF5F5F5F5F5F5F8C3A0
+776B79C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFF327D8FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFB2B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFF4936C7085B2ECF5F5F5F5F5F5F8C3A0776B79C3FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+F327D8FFFFFFFFFFFFFFFFFFFFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000009DFFFFFFFFFFFFFFFFFFF
+FFFF90DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E4E3E39EA1E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3D9836064769ED2DADADADADADADDAE8E6A5F6CAE
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D183D0E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3D824D9FFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFE85E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD8947E684C777777777777645A7389B8F4FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF84E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC38F8FF
+FFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE85E9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8947E684C7777777777
+77645A7389B8F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84E6
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC38F8FFFFFFFFFFFFFFFFFFFFFFD19A
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF2C000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000039FAFFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE8E3E3E276CFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C084
+705D446A6A6A6A6A6A5950667AA4D9E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E375CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A738F8FFFFFFFFFF
+FFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5CAB788888888888896CAD8
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3B5FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF6375FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEB93EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFF5CAB788888888888896CAD8FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB3B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+6375FFFFFFFFFFFFFFFFFFFFFFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000089FFFFFFFFFFFFFFFFFFFF
+FFFFED87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3D183D0E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DAB4A379797979797986B4C0E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E39FA1E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E35877FFFFFFFFFFFFFFFFFFFFFFFFFFA9BDFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFE990BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFEC96B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF128D7FFFF
+FFFFFFFFFFFFFFFFFFFFFFA9BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE990
+BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC96B5FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF128D7FFFFFFFFFFFFFFFFFFFFFFFFFFA9
+BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFC90E0000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000008DDFFFFFFFFFFFFFFFFFFFFFFFFFFA9BDFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF9E4E3E3E3CF80A6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3D286A1E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D624D8FFFFFFFFFFFF
+FFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0B4FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB94C5FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFBC36F8FFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0B4FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFEB94C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC
+36F8FFFFFFFFFFFFFFFFFFFFFFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A00
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000036FAFFFFFFFFFFFFFFFFFFFF
+FFFFFFEE89F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3D18EA0E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D184AFE3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3A736F8FFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE593E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F74FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFB1B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE593E9FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+91D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF8B0000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000088FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91D9FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFF2E3E3E3E3E3E39E9FE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3CC83CFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E35576FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFD39BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB084
+EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB782EEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFEE2AD5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39BFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB084EBFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFB782EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE2A
+D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39BFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000DDCFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFD39BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E4E3E3E3E3E3E39D75D1E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A374D4E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3D427D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE693E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFB5B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF815DFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE693E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B0FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFF815DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FD8CE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2900000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000006DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8CE3FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE7E3E3E3E3E3E3E3CD83CDE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3A1
+9DE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3735FFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+EC82B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFEF23DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC82B6FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE683AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF23DA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000AE2FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFD19AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3E3E3E3E3E3D274A2E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3CD759BE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3D520DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF87F8FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB081BEFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7
+9C84EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8722FCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEF87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFB081BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C84EBFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFF8722FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEF87F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC70D000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000031FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF87F8FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFF9E4E3E3E3E3E3E3E3E3E39D73A9E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CE8B75D1E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37824FCFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE79C82C0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFF315A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C82C0FCFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE89E85C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF315A3FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+2900000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000ACFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E3E3E3E3E3E3E3E3E3E3CE
+8B74ABE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3CE8D76AFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3D813A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8921FDFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE7A480A2E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC08482C5FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF8921FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFEF86F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0030FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF86F8FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFF2E3E3E3E3E3E3E3E3E3E3E3E3CE927290CEE3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AB7574AFE3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37A23FDFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFC6859BC1FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFECAE869DE9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFF315A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8
+C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6859BC1
+FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECAE869D
+E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF315A3FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+C60C000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000ACFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA8C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E4E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3B0768AACE0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3D29B778CCFE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3D813A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A380A3E9FD
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDC28484B6EBFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B1FFCFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFC2A380A3E9FDFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFDFDC28484B6EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF8B1FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFEE86F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF280000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE86F9FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3AD917291CFE1E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E1E1AD7575A2D1E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37C21FCFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFC488808DB1B1B1C5FDFDFDFFFFFFFFFDFDFDEB
+B1B1B1A68080A3E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFF816A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+A7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC488808DB1B1B1C5FDFDFDFFFFFFFFFDFDFDEBB1B1B1A68080A3E8FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF816A1FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FF86000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFA7C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3AE79727D9E9E9EAFE1E1E1E3E3E3E3E1E1E1D19E9E9E94
+727291CEE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3DD14A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F7FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ECB6B6B6A7808080A4B1B1A48080808CB6B6B6C6FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF625DFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F7FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECB6B6B6A7808080A4B1B1A4
+8080808CB6B6B6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF625DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFEE87F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC50B00000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000069
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE87F7FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFF9E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D2A2A2A2
+95727272929E9E927272727DA2A2A2B0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3575EFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6B3B3C6FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFC51DDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFC6B3B3C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC51DDDFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFF270000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000027E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCE9BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B09F9FB0E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3AF1EDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8AE3
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4699FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8AE3FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFE4699FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFC8AE3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8500000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000A9FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8AE3FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFF2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E23E9BFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF8C1FFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1FFBFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFC30B00000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000002EFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFD69BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E4E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+7D21FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3
+C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD21AD7FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFD21AD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFA3C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000006DEFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3C2FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3BB18D8FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8BE5FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF4A73FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFC8BE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A73FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8BE5FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF8B00000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000087FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFC8BE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E342
+75FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CE99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F21FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFF6F21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCE99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000002CFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE99FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E36322FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFCA1CDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA1CDCFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFE81C000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000026DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFC9FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B41DDC
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF817A1FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFF817A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C0000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000A9FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFEBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3DD14A2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+6C58FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C58FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFAB000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000064FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFD39EF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36059FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFA1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F0CDDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFF8F0CDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFA1BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE71B00000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000022DFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1
+BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E37F0EDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0D0FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD51A
+D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFAA0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD51AD4FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0D0FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFF4B0000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000006DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3BE18D5FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF81B74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF81B74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFEE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA00000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000080FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+EE82FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3DD1875FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C59FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C59FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFA
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE51B00000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000065FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD39CFAFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3605AFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFCF9CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF910CDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9CFAFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+910CDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000022E0FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFCF9CFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFEBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3810EDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9DFBFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA1CD2FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFCD9DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA1CD2FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD
+9DFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFA900000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000005DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9DFBFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C219D3FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCD9BFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFDB1371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9BFBFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB13
+71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD9BFBFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE41A0000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000007DFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCD9BFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3C31172FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD146BFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFDD146BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFF46000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000079FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C5126DFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFDD1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9C
+FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD1470FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA80000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000007CFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFF5E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3C51271FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD1470FFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFDD1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFCE9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE31A0000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+007CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9CFBFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C51271FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFDF166CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+CC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF166CFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4400000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000079FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFCC9EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFEAE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3C6146DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFB
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF166CFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFDF166CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFCC9EFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFA80000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000079
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9EFBFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C6146DFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFF87166DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87166DFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE21C000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000079FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFCC9CFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+78146EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC
+9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C0CA1FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFF7C0CA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFCC9DFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFF4700000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000001EA8FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9DFDFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E36E0EA2FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC99DFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF0780ED7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFCC99DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0780ED7FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC99DFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000001ED9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFCC99DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D66B10
+D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFCE8BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF1B2AD8FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8BD2FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFDF1B2AD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCE8BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFE21B000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000033D9FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8BD2
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3C6182BD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB949AFDFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E
+1869FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFB949AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E1869FEFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB949AFDFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF460000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000076FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB949AFDFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFEBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37E156AFEFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFEC499E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE048129FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC499E0FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE048129FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFEC499E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFAA000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000001CA7FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+C499E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3C74013A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8AD2FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1A5FD8
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCE8AD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C1A5FD8FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8AD2
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE11B00000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000006CD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8AD2FFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E37D1760D8FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFE24C129DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9596E2FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE24C
+129DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFF440000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000001CA5FFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFB9596E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3C944139EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18B1C5BD7FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFF18B1C5BD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE
+C58CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC00000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000069D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC58CBCFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D67C195DD7FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFF9E9EE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFCA21279EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9E
+E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA21279EFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9EE1FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFBB0600000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000031A5FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFF9E9EE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8
+E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3B41D289FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8497E4FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD4E0D6EFCFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8497E4FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFCD4E0D6EFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFCB8497E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE28000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000B
+76FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8497E4FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3B6450D6FFCFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFC48497E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFF2800D59D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFC48497E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2800D59D2FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC48497E3FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF7900000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000B67D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFC48497E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+F0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D7
+720D5BD2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2
+8499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4912125CFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC28499E5FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFF4912125CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFC28499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0050000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000002BD1FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC28499E5FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3D9811D26CFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC38499E5FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4
+91212498FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFC38499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF491212498FBFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC38499E5FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFD28000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000002CA0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFC38499E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE7E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D9811D2599
+FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFC38498E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFF38F212498FBFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC38498E4FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF38F212498FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFC38498E4FFFFFFFFFFFFFFFFFFFFFFFFFFFF780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000002CA0FCFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3
+8498E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3D87F1D2599FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC2839CD6FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE493222294
+F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFEC2839CD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE493222294F9FFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC2839C
+D6FFFFFFFFFFFFFFFFFFFFFFFFC0050000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000002B9DFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC2839CD6FFFFFFFFFFFFFFFFFFFFFF
+FFF8E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CB831E2395F9FFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFF4934F122296FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4934F12
+2296FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFC2A00
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000092B9EFBFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFC7958AC4FFFFFFFFFFFFFFFFFFFFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3D98346112397FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0819ED6FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4CD6521227DCFFAFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEBA0819ED6FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFF4CD6521227DCFFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEBA0819ED6FFFFFFFFFFFFFFFF7A0000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+002B8CD2FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBA0819ED6FFFFFFFFFFFF
+FFFFF0E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3D9B65A1D237FCFFAFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFF6E59565231A5193F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9
+C79387A0D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E59565231A5193F8FFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFC304
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000014629BF9FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFE9C79387A0D9FFFFFFFFFFF8E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DBCC85
+5A1F195394F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C7
+93879FD9E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFE7CF69221F217693F1FFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9E8FFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFE7CF69221F217693F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFE9C793879FD9E8FFFF2F00000000000000000000000000000000
+00000000000000000000000000000000000000000000000000001429889BF4FF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C793879FD9
+E8FFFFE8E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3CEB85D1E1E227894F1FFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C993908C8CCCE5E5F5FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E591654F131A
+5295F0F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE9C993908C8CCCE5E5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE7E591654F131A5295F0F8FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C993908C8F4D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000814649DF4F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE9C993908C8CBECCCCDAE3E3E3E3E3E3E3E3E3
+E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3CECC815A4612195496F0F8
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFE0E0801F1F23696DCFE8ECF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFF6E8E8E8936952141F217275CCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0E0801F1F2369
+6DCFE8ECF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E8E8E8936952141F21
+7275CCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFE0E18512120000000000000000000000000000
+00000000000000000000000000000000000712298484D0F2FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFE0E0811E1E1F5D61B8CED2DCE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DBCE
+CECE835D49131E227477CCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEE927252181F03
+1A6969696969696969696969696969696969221F1F1F227275CDEEF7FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFEEEE927252181F031A6969696969696969696969
+696969696969221F1F1F227275CDEEF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+F2F29B8464121200000000000000000000000000000000000000001212122B84
+84D1F2F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEE937454171E03175D5D5D
+5D5D5D5D5D5D5D5D5D5D5D5D5D5D1E1E1E1E237477CDEEF7FFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFEFEE987C727272727272727272727272727272
+727294EEEEEEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFEFEE987C727272727272727272727272727272727294EEEEEEF8FFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F29C8484848484848484
+848484848484848484849CF2F2F2F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFEFEE987D747474747474747474747474747474747495EE
+EEEEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+
+%%EndBinary
+grestore end % Image Trailer grestore
+grestore % EPS grestore
diff --git a/doc/logo.gif b/doc/logo.gif
new file mode 100644
index 0000000..959fd88
Binary files /dev/null and b/doc/logo.gif differ
diff --git a/doc/make-help b/doc/make-help
new file mode 100755
index 0000000..1ad3b6b
--- /dev/null
+++ b/doc/make-help
@@ -0,0 +1,12 @@
+rm -f ctsim.rtf ctsim.cnt
+tex2rtf ctsim.tex ctsim.rtf -winhelp
+hcw /c /m /e ctsim.hpj
+mv CTSIM.HLP ctsim.hlp
+cp ctsim.hlp ctsim.cnt ../../msvc/ctsim/
+rm -f ctsim*.html ctsim.hhp ctsim.hhc ctsim.hhk
+tex2rtf ctsim.tex ctsim.html -html
+zip ctsim.zip *.html *.gif ctsim.hhp ctsim.hhc ctsim.hhk
+mv ctsim.zip ctsim.htb
+cp ctsim.htb ../../msvc/ctsim
+
+ 
diff --git a/doc/makeidx.sty b/doc/makeidx.sty
new file mode 100644
index 0000000..4fbb9ae
--- /dev/null
+++ b/doc/makeidx.sty
@@ -0,0 +1,11 @@
+% makeidx.sty 20-Jan-87   modified for international usage
+%
+% Modified by J.Schrod (TeXsys).
+% according to the suggestion of H.Partl (TU Wien) in german.sty
+% to make caption names adaptable to other languages.
+ 
+\@ifundefined{seeterm}{\def\seeterm{see}}{} % <-----------
+ 
+\def\see#1#2{{\em \seeterm\/} #1}
+\def\printindex{\@input{\jobname.ind}}
+ 
diff --git a/doc/maphhc.pl b/doc/maphhc.pl
new file mode 100755
index 0000000..da839d0
--- /dev/null
+++ b/doc/maphhc.pl
@@ -0,0 +1,39 @@
+#!/usr/bin/perl -Tw
+
+my $mapfile = "../src/ctsim-map.h";
+my $hhcfile = "ctsim.hhc";
+my $newhhc = "ctsim-new.hhc";
+my %map;
+
+open (MAP, $mapfile) || print "Unable to open map file $mapfile";
+while (<MAP>) {
+    m|^\W*#define\W+IDH_(\w+)\W+(\w+)|;
+    $map{$1} = $2 if ($1 && $2);
+}
+close (MAP);
+
+open(HHC,$hhcfile) || print "Unable to open existing hhc file $hhcfile";
+open(NEWHHC,"> $newhhc") || print "Unable to open new hhc file $newhhc";
+while (<HHC>) {
+    $line=$_;
+    if ($line =~ m|(.*)\#IDH_([A-Za-z_]+)(.*)|) {
+	my $varname=$2;
+	print NEWHHC  $1 . $3 . "\n";
+	if ($map{$2}) {
+	    print NEWHHC "<param name=\"ID\" value=\"$map{$2}\">\n";
+	} else {
+	    print "Warning: unable to find IDH_$varname in $mapfile";
+	}
+    } else {
+	print NEWHHC $line;
+    }
+
+}
+
+close(HHC);
+close(NEWHHC);
+
+unlink($hhcfile);
+rename($newhhc,$hhcfile);
+
+exit(0);
diff --git a/doc/mysober.sty b/doc/mysober.sty
new file mode 100644
index 0000000..a6f73a6
--- /dev/null
+++ b/doc/mysober.sty
@@ -0,0 +1,154 @@
+% SOBER.STY van Nico Poppelier
+% Adapted by Julian Smart for his own
+% nefarious purposes
+% --------------------------------------
+% Koppen van secties, subsecties, ...
+% --------------------------------------
+%
+% --------------------------------------
+% fontgrootte en regelafstand
+% (met de notatie X/Y wordt bedoeld
+%  'letter X op regelafstand Y')
+% --------------------------------------
+%
+%                10pt     11pt     12pt
+% \scriptsize    7/ 8     8/ 9.5   8/ 9.5
+% \tiny          5/ 6     6/ 7     6/ 7
+% \small         9/11    10/12    11/13.6
+% \footnotesize  8/ 9.5   9/11    10/12
+% \@normalsize  10/12    11/13.6  12/15
+% \large        12/14    12/14    14/18
+% \Large        14/18    14/18    17/22
+% \LARGE        17/22    17/22    20/25
+% \huge         20/25    20/25    25/30
+% \Huge         25/30    25/30    25/30
+%
+% de syntax van \@startsection is:
+%   \@startsection
+%     {Name}{Level}{Indent}{Before_skip}{After_Skip}{Type_face}
+%     Indent     : inspring van kop vanaf linkermarge
+%     Before_skip: wit boven kopje
+%                  (< 0 geeft aan dat eerste alinea niet inspringt)
+%     After_skip : wit onder kopje indien >= 0
+%                  horizontaal wit na kopje,
+%                  met kopje op de regel indien < 0
+%
+% notatie voor <glue>: <dimen>(<stretch>)(<shrink>)
+%
+% in LaTeX's standaard-stijlen (onafhankelijk van \@ptsize):
+%
+%               Indent     Before_skip           After_skip     Type_face
+% section       0          -3.5ex (-1ex)(-0.2ex)  2.3ex(0.2ex) \Large\bf
+% subsection    0          -3.25ex(-1ex)(-0.2ex)  1.5ex(0.2ex) \large\bf
+% subsubsection 0          -3.25ex(-1ex)(-0.2ex)  1.5ex(0.2ex) \normalsize\bf
+% paragraph     0           3.25ex( 1ex)( 0.2ex) -1em()()      \normalsize\bf
+% subparagraph  \parindent  3.25ex( 1ex)( 0.2ex) -1em()()      \normalsize\bf
+%
+%
+% in een soberder uitvoering (onafhankelijk van \@ptsize):
+%
+\def\section{\@startsection{section}{1}
+%{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}}
+{\z@}{-2.5ex plus -0.5ex minus -0.1ex}{0.5ex plus 0.1ex}{\large\bf}}
+\def\subsection{\@startsection{subsection}{2}
+{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}
+{\z@}{-2.25ex plus -0.3ex minus -0.2ex}{0.05ex plus 0.05ex}{\normalsize\sc}}
+\def\paragraph{\@startsection{paragraph}{4}
+{\z@}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}}
+\def\subparagraph{\@startsection{subparagraph}{4}
+{\parindent}{2ex plus 0.5ex minus 0.1ex}{-0.7em}{\normalsize\it}}
+%
+% --------------------------------------
+% Hoofdstuk-koppen
+% --------------------------------------
+%
+% LaTeX's book style (standaard documentstijl) definieert
+% de hoofdstuk-koppen onafhankelijk van \@ptsize
+%
+
+\def\@makechapterhead#1{\vspace*{20pt}%
+% Next line repaired by Piet van Oostrum - June 14, 1991.
+%{\parindent 0pt\Large\bf \ifnum\c at secnumdepth>\m at ne\thechapter \fi
+{\parindent 0pt\LARGE\bf \ifnum\c at secnumdepth>\m at ne\thechapter. \hskip 1em \fi%
+{\raggedright\LARGE\bf #1}\\\rule[10pt]{\textwidth}{0.3mm}\par\nobreak \vskip25pt} }
+
+\def\@makeschapterhead#1{
+ \vspace*{20pt} { \parindent 0pt \raggedright
+ \LARGE\bf#1\par\nobreak\vskip25pt } }
+%
+% --------------------------------------
+% List-omgevingen (itemize en enumerate)
+% --------------------------------------
+%
+% De volgende parameters zijn relevant in een list-omgeving:
+%
+%   \labelsep     : afstand tussen label en item
+%   \labelwidth   : breedte van label
+%   \leftmargin   : afstand tussen linkermarge en item
+%   \rightmargin  : afstand tussen item en rechtermarge
+%   \listparindent: indentatie voor vervolg-alinea's in item
+%   \parsep       : verticaal wit tussen vervolg-alinea's in item
+%   \itemsep      : verticaal wit tussen opeenvolgende item's
+%   \topsep,
+%   \partopsep    : wit boven item 1 = \topsep + \parskip
+%                    (geen alinea-overgang boven lijst)
+%                   wit boven item 1 = \topsep + \parskip + \partopsep
+%                    (alinea-overgang boven lijst)
+%
+% zie verder LaTeX-boek 5.7.1 en C.5.3
+% --------------------------------------
+%
+% De parameters voor niveau 1 worden gedefinieerd op top-niveau en
+% \@listi definieert uitsluitend \leftmargin
+%
+% size = small (9pt, 10pt, 11pt)
+\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep}
+% \topsep 4pt(2pt)(2pt)  6pt(2pt)(2pt)  9pt(3pt)(5pt)
+% \parsep 2pt(1pt)(1pt)  3pt(2pt)(1pt) 4.5pt(2pt)(1pt)
+%
+% size = footnotesize (8pt, 9pt, 10pt)
+\def\@listi{\topsep 0.4ex \parsep 0pt \itemsep \parsep}
+% \topsep 3pt(1pt)(1pt) 4pt(2pt)(2pt) 6pt(2pt)(2pt)
+% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt) 3pt(2pt)(1pt)
+%
+% size = normalsize (and bigger)
+% \parskip    0pt(1pt) 0pt(1pt) 0pt(1pt)
+% \parindent  15pt 17pt 1.5em
+% \topsep      8pt(2pt)(4pt) 9pt(3pt)(5pt) 10pt(4pt)(6pt)
+% \partopsep   2pt(1pt)(1pt) 3pt(1pt)(2pt) 3pt(2pt)(2pt)
+% \itemsep     4pt(2pt)(1pt) 4.5pt(2pt)(1pt)  5pt(2.5pt)(1pt
+% \parsep  4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt)
+\topsep 0.4ex \partopsep 0pt \itemsep 0pt \parsep 0pt
+%
+% \leftmargini  2.5em \leftmarginii 2.2em \leftmarginiii 1.87em
+% \leftmarginiv 1.7em \leftmarginv  1.0em \leftmarginvi  1.0em
+%
+% \leftmargin\leftmargini
+% \labelwidth\leftmargini\advance\labelwidth-\labelsep
+% \labelsep 0.5em
+%
+% \def\@listi{\leftmargin\leftmargini}
+%
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+% \topsep 4pt(2pt)(1pt) 4.5pt(2pt)(1pt) 5pt(2.5pt)(1pt)
+% \parsep 2pt(1pt)(1pt) 2pt(1pt)(1pt)   2.5pt(1pt)(1pt)
+ \topsep 0pt \parsep 0pt \itemsep \parsep}
+%
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+% \topsep    2pt(1pt)(1pt) 2pt(1pt)(1pt) 2.5pt(1pt)(1pt)
+% \partopsep 1pt(0pt)(1pt) 1pt(0pt)(1pt) 1pt(0pt)(1pt)
+ \parsep \z@ \topsep 0pt \partopsep 0pt \itemsep \topsep}
+%
+% \def\@listiv{\leftmargin\leftmarginiv
+%  \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+%
+% \def\@listv{ \leftmargin\leftmarginv
+%  \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+%
+% \def\@listvi{\leftmargin\leftmarginvi
+%  \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+ 
+
diff --git a/doc/mytitle.sty b/doc/mytitle.sty
new file mode 100644
index 0000000..9f7c84f
--- /dev/null
+++ b/doc/mytitle.sty
@@ -0,0 +1,31 @@
+% mytitle.sty
+
+\def\maketitle{\begin{titlepage}
+\let\footnotesize\small \let\footnoterule\relax \setcounter{page}{0}
+%\null
+%\vfil
+\vspace*{2cm}\begin{flushleft}
+{\huge \sf\@title\\\rule{\textwidth}{0.5mm}} \vskip 3em {\large \lineskip .75em
+{\sf \Large \@author}} \vskip
+3em {\large\sf Manual Version \manvernum\\\mandate\par}
+\end{flushleft}
+\par \@thanks \vfill
+{\sf\small\begin{flushright}%
+kevin at rosenberg.net\\
+\vspace{0.3cm}
+Heart Hospital of New Mexico\\
+504 Elm Street N.E.\\
+Albuquerque, New Mexico 87108\\
+\end{flushright}}
+\null
+\end{titlepage}
+\setcounter{footnote}{0} \let\thanks\relax
+\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\maketitle\relax}
+\def\abstractname{Abstract} % <----------
+\def\abstract{\titlepage
+\null\vfil
+\begin{center}
+{\bf \abstractname} % <----------
+% {\bf Abstract}
+\end{center}}
+\def\endabstract{\par\vfil\null\endtitlepage}
diff --git a/doc/psbox.tex b/doc/psbox.tex
new file mode 100644
index 0000000..63ca8bf
--- /dev/null
+++ b/doc/psbox.tex
@@ -0,0 +1,520 @@
+%
+%              %%%%%%%    %%%%%        %%%%%%    %%%%%   %     %
+%              %      %  %             %     %  %     %   %   %
+%              %      %  %             %     %  %     %    % %
+%              %%%%%%%    %%%%%        %%%%%%   %     %     %
+%              %               %       %     %  %     %    % %
+%              %               %       %     %  %     %   %   %
+%              %         %%%%%%        %%%%%%    %%%%%   %     %
+%
+%              By Jean Orloff %
+%              Comments & suggestions by e-mail: ORLOFF at surya11.cern.ch
+%              No modification of this file allowed if not e-sent to me.
+%
+% A simple way to measure the size of encapsulated postscript figures
+%   from inside TeX, and to use it for automatically formatting texts
+%   with inserted figures. Works both under Plain TeX-based macros
+%   (Phyzzx, Harvmac, Psizzl, ...) and LaTeX environment.
+% Provides exactly the same result on any PostScript printer provided
+%   the single instruction \psfor... is changed to fit the needs of the
+%   particular dvi->ps translator used.
+% History:
+%   1.31: adds \psforDVIALW(?)
+%   1.30: adds \splitfile & \joinfiles for multi-file management
+%   1.24: fix error handling & add \psonlyboxes
+%   1.23: adds \putsp at ce for OzTeX fix
+%   1.22: makes \drawingBox \global for use in Phyzzx
+%   1.21: accepts %%BoundingBox: (atend)
+%   1.20: tries to add \psfordvitps for the TeXPS package.
+%   1.10: adds \psforoztex, error handling...
+%2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 2345678 6 2345678 7 23456789
+%
+\def\temp{1.31}
+\let\tempp=\relax
+\expandafter\ifx\csname psboxversion\endcsname\relax
+  \message{version: \temp}
+\else
+    \ifdim\temp cm>\psboxversion cm
+      \message{version: \temp}
+    \else
+      \message{psbox(\psboxversion) is already loaded: I won't load
+        psbox(\temp)!}
+      \let\temp=\psboxversion
+      \let\tempp=\endinput
+    \fi
+\fi
+\tempp
+\let\psboxversion=\temp
+\catcode`\@=11
+% Every macro likes a little privacy...
+%
+% Some common defs
+%
+\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution
+\def\psm at keother#1{\catcode`#112\relax}% borrowed from latex
+\def\executeinspecs#1{%
+\execute{\begingroup\let\do\psm at keother\dospecials\catcode`\^^M=9#1\endgroup}}
+%
+%Trying to tame the variety of \special commands for Postscript: the
+%  universal internal command \PSspeci at l##1##2 takes ##1 to be the
+%  filename and ##2 to be the integer scale factor*1000 (as for usual
+%   TeX \scale commands)
+%
+\def\psfortextures{%     For TeXtures on the Macintosh
+%-----------------
+\def\PSspeci at l##1##2{%
+\special{illustration ##1\space scaled ##2}%
+}}
+%
+\def\psfordvitops{%      For the DVItoPS converter on IBM mainframes
+%----------------
+\def\PSspeci at l##1##2{%
+\special{dvitops: import ##1\space \the\drawingwd \the\drawinght}%
+}}
+%
+\def\psfordvips{%      For DVIPS converter on VAX, UNIX and PC's
+%--------------
+\def\PSspeci at l##1##2{%
+%    \special{/@scaleunit 1000 def}% never read dox without trying!
+\d at my=0.1bp \d at mx=\drawingwd \divide\d at mx by\d at my%
+\special{PSfile=##1\space llx=\psllx\space lly=\pslly\space%
+urx=\psurx\space ury=\psury\space rwi=\number\d at mx}%
+}}
+%
+\def\psforoztex{%        For the OzTeX shareware on the Macintosh
+%--------------
+\def\PSspeci at l##1##2{%
+\special{##1 \space
+      ##2 1000 div dup scale
+      \putsp at ce{\number-\psllx} \putsp at ce{\number-\pslly} translate
+}%
+}}
+\def\putsp at ce#1{#1 }
+%
+\def\psfordvitps{%       From the UNIX TeXPS package, vers.>3.12
+%---------------
+% Convert a dimension into the number \psn at sp (in scaled points)
+\def\psdimt at n@sp##1{\d at mx=##1\relax\edef\psn at sp{\number\d at mx}}
+\def\PSspeci at l##1##2{%
+% psfig.psr contains the def of "startTexFig": if you can locate it
+% and include the correct pathname, it should work
+\special{dvitps: Include0 "psfig.psr"}% contains def of "startTexFig"
+\psdimt at n@sp{\drawingwd}
+\special{dvitps: Literal "\psn at sp\space"}
+\psdimt at n@sp{\drawinght}
+\special{dvitps: Literal "\psn at sp\space"}
+\psdimt at n@sp{\psllx bp}
+\special{dvitps: Literal "\psn at sp\space"}
+\psdimt at n@sp{\pslly bp}
+\special{dvitps: Literal "\psn at sp\space"}
+\psdimt at n@sp{\psurx bp}
+\special{dvitps: Literal "\psn at sp\space"}
+\psdimt at n@sp{\psury bp}
+\special{dvitps: Literal "\psn at sp\space startTexFig\space"}
+\special{dvitps: Include1 "##1"}
+\special{dvitps: Literal "endTexFig\space"}
+}}
+\def\psforDVIALW{%   Try for dvialw, a UNIX public domain
+%---------------
+\def\PSspeci at l##1##2{
+\special{language "PS"
+literal "##2 1000 div dup scale"
+include "##1"}}}
+\def\psonlyboxes{%     Draft-like behaviour if none of the others works
+%---------------
+\def\PSspeci at l##1##2{%
+\at(0cm;0cm){\boxit{\vbox to\drawinght
+  {\vss
+  \hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1)}}\hss}
+  }}}
+}%
+}
+%
+\def\psloc at lerr#1{%
+\let\savedPSspeci at l=\PSspeci at l%
+\def\PSspeci at l##1##2{%
+\at(0cm;0cm){\boxit{\vbox to\drawinght
+  {\vss
+  \hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1) #1}}\hss}
+  }}}
+\let\PSspeci at l=\savedPSspeci at l% restore normal output for other figs!
+}%
+}
+%
+%\def\psfor...  add your own!
+%
+%  \ReadPSize{PSfilename} reads the dimensions of a PostScript drawing
+%      and stores it in \drawinght(wd)
+\newread\pst at mpin
+\newdimen\drawinght\newdimen\drawingwd
+\newdimen\psxoffset\newdimen\psyoffset
+\newbox\drawingBox
+\newif\ifNotB at undingBox
+\newhelp\PShelp{Proceed: you'll have a 5cm square blank box instead of
+your graphics (Jean Orloff).}
+\def\@mpty{}
+\def\s at tsize#1 #2 #3 #4\@ndsize{
+  \def\psllx{#1}\def\pslly{#2}%
+  \def\psurx{#3}\def\psury{#4}%  needed by a crazyness of dvips!
+  \ifx\psurx\@mpty\NotB at undingBoxtrue% this is not a valid one!
+  \else
+    \drawinght=#4bp\advance\drawinght by-#2bp
+    \drawingwd=#3bp\advance\drawingwd by-#1bp
+%  !Units related by crazy factors as bp/pt=72.27/72 should be BANNED!
+  \fi
+  }
+\def\sc at nline#1:#2\@ndline{\edef\p at rameter{#1}\edef\v at lue{#2}}
+\def\g at bblefirstblank#1#2:{\ifx#1 \else#1\fi#2}
+\def\psm at keother#1{\catcode`#112\relax}% borrowed from latex
+\def\execute#1{#1}% Seems stupid, but cs are identified BEFORE execution
+{\catcode`\%=12
+\xdef\B at undingBox{%%BoundingBox}
+}   %% is not a true comment in PostScript, even if % is!
+\def\ReadPSize#1{
+ \edef\PSfilename{#1}
+ \openin\pst at mpin=#1\relax
+ \ifeof\pst at mpin \errhelp=\PShelp
+   \errmessage{I haven't found your postscript file (\PSfilename)}
+   \psloc at lerr{was not found}
+   \s at tsize 0 0 142 142\@ndsize
+   \closein\pst at mpin
+ \else
+   \immediate\write\psbj at inaux{#1,}
+   \loop
+     \executeinspecs{\catcode`\ =10\global\read\pst at mpin to\n at xtline}
+     \ifeof\pst at mpin
+       \errhelp=\PShelp
+       \errmessage{(\PSfilename) is not an Encapsulated PostScript File:
+           I could not find any \B at undingBox: line.}
+       \edef\v at lue{0 0 142 142:}
+       \psloc at lerr{is not an EPSFile}
+       \NotB at undingBoxfalse
+     \else
+       \expandafter\sc at nline\n at xtline:\@ndline
+       \ifx\p at rameter\B at undingBox\NotB at undingBoxfalse
+         \edef\t at mp{%
+           \expandafter\g at bblefirstblank\v at lue\space\space\space}
+         \expandafter\s at tsize\t at mp\@ndsize
+       \else\NotB at undingBoxtrue
+       \fi
+     \fi
+   \ifNotB at undingBox\repeat
+   \closein\pst at mpin
+ \fi
+\message{#1}
+}
+%
+% \psboxto(xdim;ydim){psfilename}: you specify the dimensions and
+%    TeX uniformly scales to fit the largest one. If xdim=0pt, the
+%    scale is fully determined by ydim and vice versa.
+%    Notice: psboxes are a real vboxes; couldn't take hbox otherwise all
+%    indentation and all cr's would be interpreted as spaces (hugh!).
+%
+\newcount\xscale \newcount\yscale \newdimen\pscm\pscm=1cm
+\newdimen\d at mx \newdimen\d at my
+\let\ps at nnotation=\relax
+\def\psboxto(#1;#2)#3{\vbox{
+   \ReadPSize{#3}
+   \divide\drawingwd by 1000
+   \divide\drawinght by 1000
+   \d at mx=#1
+   \ifdim\d at mx=0pt\xscale=1000
+         \else \xscale=\d at mx \divide \xscale by \drawingwd\fi
+   \d at my=#2
+   \ifdim\d at my=0pt\yscale=1000
+         \else \yscale=\d at my \divide \yscale by \drawinght\fi
+   \ifnum\yscale=1000
+         \else\ifnum\xscale=1000\xscale=\yscale
+                    \else\ifnum\yscale<\xscale\xscale=\yscale\fi
+              \fi
+   \fi
+   \divide \psxoffset by 1000\multiply\psxoffset by \xscale
+   \divide \psyoffset by 1000\multiply\psyoffset by \xscale
+   \global\divide\pscm by 1000
+   \global\multiply\pscm by\xscale
+   \multiply\drawingwd by\xscale \multiply\drawinght by\xscale
+   \ifdim\d at mx=0pt\d at mx=\drawingwd\fi
+   \ifdim\d at my=0pt\d at my=\drawinght\fi
+   \message{scaled \the\xscale}
+ \hbox to\d at mx{\hss\vbox to\d at my{\vss
+   \global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{
+      \kern-\psyoffset
+      \PSspeci at l{\PSfilename}{\the\xscale}
+      \vss}\hss\ps at nnotation}
+   \global\ht\drawingBox=\the\drawinght
+   \global\wd\drawingBox=\the\drawingwd
+   \baselineskip=0pt
+   \copy\drawingBox
+ \vss}\hss}
+  \global\psxoffset=0pt
+  \global\psyoffset=0pt% These are local to one figure
+  \global\pscm=1cm
+  \global\drawingwd=\drawingwd
+  \global\drawinght=\drawinght
+}}
+%
+% \psboxscaled{scalefactor*1000}{PSfilename} allows to bypass the
+%   rounding errors of TeX integer divisions for situations where the
+%   TeX box should fit the original BoundingBox with a precision better
+%   than 1/1000.
+%
+\def\psboxscaled#1#2{\vbox{
+  \ReadPSize{#2}
+  \xscale=#1
+  \message{scaled \the\xscale}
+  \divide\drawingwd by 1000\multiply\drawingwd by\xscale
+  \divide\drawinght by 1000\multiply\drawinght by\xscale
+  \divide \psxoffset by 1000\multiply\psxoffset by \xscale
+  \divide \psyoffset by 1000\multiply\psyoffset by \xscale
+  \global\divide\pscm by 1000
+  \global\multiply\pscm by\xscale
+  \global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{
+     \kern-\psyoffset
+     \PSspeci at l{\PSfilename}{\the\xscale}
+     \vss}\hss\ps at nnotation}
+  \global\ht\drawingBox=\the\drawinght
+  \global\wd\drawingBox=\the\drawingwd
+  \baselineskip=0pt
+  \copy\drawingBox
+  \global\psxoffset=0pt
+  \global\psyoffset=0pt% These are local to one figure
+  \global\pscm=1cm
+  \global\drawingwd=\drawingwd
+  \global\drawinght=\drawinght
+}}
+%
+%  \psbox{PSfilename} makes a TeX box having the minimal size to
+%      enclose the picture
+\def\psbox#1{\psboxscaled{1000}{#1}}
+%
+%
+%  \joinfiles file1, file2, ...n \into joinedfilename .
+%     makes one file out of many
+%  \splitfile joinedfilename
+%     the opposite
+%
+%\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution
+%\def\psm at keother#1{\catcode`#112\relax}% borrowed from latex
+%\def\executeinspecs#1{%
+%\execute{\begingroup\let\do\psm at keother\dospecials\catcode`\^^M=9#1\endgroup}}
+%\newread\pst at mpin
+\newif\ifn at teof\n at teoftrue
+\newif\ifc at ntrolline
+\newif\ifmatch
+\newread\j at insplitin
+\newwrite\j at insplitout
+\newwrite\psbj at inaux
+\immediate\openout\psbj at inaux=psbjoin.aux
+\immediate\write\psbj at inaux{\string\joinfiles}
+\immediate\write\psbj at inaux{\jobname,}
+%
+% We redefine input to keep track of the various files inputted
+%
+\immediate\let\oldinput=\input
+\def\input#1 {
+ \immediate\write\psbj at inaux{#1,}
+ \oldinput #1 }
+\def\empty{}
+\def\setmatchif#1\contains#2{
+  \def\match##1#2##2\endmatch{
+    \def\tmp{##2}
+    \ifx\empty\tmp
+      \matchfalse
+    \else
+      \matchtrue
+    \fi}
+  \match#1#2\endmatch}
+\def\warnopenout#1#2{
+ \setmatchif{TrashMe,psbjoin.aux,psbjoin.all}\contains{#2}
+ \ifmatch
+ \else
+   \immediate\openin\pst at mpin=#2
+   \ifeof\pst at mpin
+     \else
+     \errhelp{If the content of this file is so precious to you, abort (ie
+press x or e) and rename it before retrying.}
+     \errmessage{I'm just about to replace your file named #2}
+   \fi
+   \immediate\closein\pst at mpin
+ \fi
+ \message{#2}
+ \immediate\openout#1=#2}
+%  No comments allowed below: % will have an unusual catcode
+{
+\catcode`\%=12
+\gdef\splitfile#1 {
+ \immediate\openin\j at insplitin=#1
+ \message{Splitting file #1 into:}
+ \warnopenout\j at insplitout{TrashMe}
+ \loop
+   \ifeof
+     \j at insplitin\immediate\closein\j at insplitin\n at teoffalse
+   \else
+     \n at teoftrue
+     \executeinspecs{\global\read\j at insplitin to\spl at tinline\expandafter
+       \ch at ckbeginnewfile\spl at tinline%Beginning-Of-File-Named:%\endcheck}
+     \ifc at ntrolline
+     \else
+       \toks0=\expandafter{\spl at tinline}
+       \immediate\write\j at insplitout{\the\toks0}
+     \fi
+   \fi
+ \ifn at teof\repeat
+ \immediate\closeout\j at insplitout}
+\gdef\ch at ckbeginnewfile#1%Beginning-Of-File-Named:#2%#3\endcheck{
+ \def\t at mp{#1}
+ \ifx\empty\t at mp
+   \def\t at mp{#3}
+   \ifx\empty\t at mp
+     \global\c at ntrollinefalse
+   \else
+     \immediate\closeout\j at insplitout
+     \warnopenout\j at insplitout{#2}
+     \global\c at ntrollinetrue
+   \fi
+ \else
+   \global\c at ntrollinefalse
+ \fi}
+\gdef\joinfiles#1\into#2 {
+ \message{Joining following files into}
+ \warnopenout\j at insplitout{#2}
+ \message{:}
+ {
+ \edef\w@##1{\immediate\write\j at insplitout{##1}}
+ \w@{% This text was produced with psbox's \string\joinfiles.}
+ \w@{% To decompose and tex it:}
+ \w@{%-save this with a filename CONTAINING ONLY LETTERS, and no extensions}
+ \w@{% (say, JOINTFIL), in some uncrowded directory;}
+ \w@{%-make sure you can \string\input\space psbox.tex (version>=1.3);}
+ \w@{%-tex JOINTFIL using Plain, or LaTeX, or whatever is needed by}
+ \w@{% the first part in the joining (after splitting JOINTFIL into}
+ \w@{% it's constituents, TeX will try to process it as it stands).}
+ \w@{\string\input\space psbox.tex}
+ \w@{\string\splitfile{\string\jobname}}
+ }
+ \tre at tfilelist#1, \endtre at t
+ \immediate\closeout\j at insplitout}
+\gdef\tre at tfilelist#1, #2\endtre at t{
+ \def\t at mp{#1}
+ \ifx\empty\t at mp
+   \else
+   \llj at in{#1}
+   \tre at tfilelist#2, \endtre at t
+ \fi}
+\gdef\llj at in#1{
+ \immediate\openin\j at insplitin=#1
+ \ifeof\j at insplitin
+   \errmessage{I couldn't find file #1.}
+   \else
+   \message{#1}
+   \toks0={%Beginning-Of-File-Named:#1}
+   \immediate\write\j at insplitout{\the\toks0}
+   \executeinspecs{\global\read\j at insplitin to\oldj at ininline}
+   \loop
+     \ifeof\j at insplitin\immediate\closein\j at insplitin\n at teoffalse
+       \else\n at teoftrue
+       \executeinspecs{\global\read\j at insplitin to\j at ininline}
+       \toks0=\expandafter{\oldj at ininline}
+       \let\oldj at ininline=\j at ininline
+       \immediate\write\j at insplitout{\the\toks0}
+     \fi
+   \ifn at teof
+   \repeat
+   \immediate\closein\j at insplitin
+ \fi}
+}
+% To be put at the end of a file, for making an tar-like file containing
+%   everything it used.
+\def\autojoin{
+ \immediate\write\psbj at inaux{\string\into\space psbjoin.all}
+ \immediate\closeout\psbj at inaux
+ \input psbjoin.aux
+}
+%
+%  Annotations & Captions etc...
+%
+%
+% \centinsert{anybox} is just a centered \midinsert, but is included as
+%    people barely use the original inserts from TeX.
+%
+\def\centinsert#1{\midinsert\line{\hss#1\hss}\endinsert}
+\def\psannotate#1#2{\def\ps at nnotation{#2\global\let\ps at nnotation=\relax}#1}
+\def\pscaption#1#2{\vbox{
+   \setbox\drawingBox=#1
+   \copy\drawingBox
+   \vskip\baselineskip
+   \vbox{\hsize=\wd\drawingBox\setbox0=\hbox{#2}
+     \ifdim\wd0>\hsize
+       \noindent\unhbox0\tolerance=5000
+    \else\centerline{\box0}
+    \fi
+}}}
+% for compatibility with older versions
+\def\psfig#1#2#3{\pscaption{\psannotate{#1}{#2}}{#3}}
+\def\psfigurebox#1#2#3{\pscaption{\psannotate{\psbox{#1}}{#2}}{#3}}
+%
+% \at(#1;#2)#3 puts #3 at #1-higher and #2-right of the current
+%    position without moving it (to be used in annotations).
+\def\at(#1;#2)#3{\setbox0=\hbox{#3}\ht0=0pt\dp0=0pt
+  \rlap{\kern#1\vbox to0pt{\kern-#2\box0\vss}}}
+%
+% \gridfill(ht;wd) makes a 1cm*1cm grid of ht by wd whose lower-left
+%   corner is the current point
+\newdimen\gridht \newdimen\gridwd
+\def\gridfill(#1;#2){
+  \setbox0=\hbox to 1\pscm
+  {\vrule height1\pscm width.4pt\leaders\hrule\hfill}
+  \gridht=#1
+  \divide\gridht by \ht0
+  \multiply\gridht by \ht0
+  \gridwd=#2
+  \divide\gridwd by \wd0
+  \multiply\gridwd by \wd0
+  \advance \gridwd by \wd0
+  \vbox to \gridht{\leaders\hbox to\gridwd{\leaders\box0\hfill}\vfill}}
+%
+% Useful to measure where to put annotations
+\def\fillinggrid{\at(0cm;0cm){\vbox{
+  \gridfill(\drawinght;\drawingwd)}}}
+%
+% \textleftof\anybox: Sample text\endtext
+%   inserts "Sample text" on the left of \anybox ie \vbox, \psbox.
+%   \textrightof is the symmetric (not documented, too uggly)
+% Welcome any suggestion about clean wraparound macros from
+%   TeXhackers reading this
+%
+\def\textleftof#1:{
+  \setbox1=#1
+  \setbox0=\vbox\bgroup
+    \advance\hsize by -\wd1 \advance\hsize by -2em}
+\def\textrightof#1:{
+  \setbox0=#1
+  \setbox1=\vbox\bgroup
+    \advance\hsize by -\wd0 \advance\hsize by -2em}
+\def\endtext{
+  \egroup
+  \hbox to \hsize{\valign{\vfil##\vfil\cr%
+\box0\cr%
+\noalign{\hss}\box1\cr}}}
+%
+% \frameit{\thick}{\skip}{\anybox}
+%    draws with thickness \thick a box around \anybox, leaving \skip of
+%    blank around it. eg \frameit{0.5pt}{1pt}{\hbox{hello}}
+% \boxit{\anybox} is a shortcut.
+\def\frameit#1#2#3{\hbox{\vrule width#1\vbox{
+  \hrule height#1\vskip#2\hbox{\hskip#2\vbox{#3}\hskip#2}%
+        \vskip#2\hrule height#1}\vrule width#1}}
+\def\boxit#1{\frameit{0.4pt}{0pt}{#1}}
+%
+%
+\catcode`\@=12 % cs containing @ are unreachable
+%
+% CUSTOMIZE YOUR DEFAULT DRIVER:
+%    Uncomment the line corresponding to your TeX system:
+%\psfortextures%     For TeXtures on the Macintosh
+%\psforoztex   %     For OzTeX shareware on the Macintosh
+%\psfordvitops %     For the DVItoPS converter for TeX on IBM mainframes
+ \psfordvips   %     For DVIPS converter on VAX and UNIX
+%\psfordvitps  %     For dvitps from TeXPS package under UNIX
+%\psforDVIALW  %     For DVIALW, UNIX public domain
+%\psonlyboxes  %     Blank Boxes (when all else fails).
diff --git a/doc/scangeometry.ai b/doc/scangeometry.ai
new file mode 100644
index 0000000..76ed0a1
--- /dev/null
+++ b/doc/scangeometry.ai
@@ -0,0 +1,740 @@
+%PDF-1.4
%����
+1 0 obj
<< 
/Type /Catalog 
/Pages 2 0 R 
>> 
endobj
2 0 obj
<< 
/Type /Pages 
/Kids [ 3 0 R ] 
/Count 1 
>> 
endobj
3 0 obj
<< 
/Type /Page 
/MediaBox [ 156 246 456 546 ] 
/Parent 2 0 R 
/Rotate 0 
/PieceInfo << /Illustrator 30 1 R >> 
/LastModified (D:20010216141549-06'00')
/ArtBox [ 181.25 269.60352 487.33301 504.53125 ] 
/Group 201 0 R 
/Thumb 204 0 R 
/TrimBox [ 156 246 456 546 ] 
/Contents 206 0 R 
/Resources << /ExtGState << /R1 29 1 R /R2 103 1 R /R4 144 0 R >> /Pattern << /P1 107 1 R /P2 162 0 R >> 
/Font << /F1 126 0 R >> /XObject << /Fm4 141 0 R /Fm8 157 0 R /Fm12 181 0 R /Fm16 197 0 R >> 
/ProcSet [ /PDF /Text ] >> 
>> 
endobj
5 0 obj
<< 
/CreationDate (D:20010215174020-06'00')
/Creator (Adobe Illustrator 9.0)
/Producer (Adobe PDF library 4.800)
/Title (scangeometry.ai)
/ModDate (D:20010216141549-06'00')
>> 
endobj
29 1 obj
<< 
/SA false 
/OP false 
/op false 
/AIS false 
/ca 1 
/CA 1 
/BM /Normal 
/HT /Default 
>> 
endobj
30 1 obj
<< 
/Private 31 1 R 
/LastModified (D:20010216141549-06'00')
>> 
endobj
31 1 obj
<< 
/CreatorVersion 9 
/ContainerVersion 9 
/RoundtripVersion 9 
/AIMetaData 32 1 R 
/AIPrivateData1 35 1 R 
/AIPrivateData2 43 1 R 
/AIPrivateData3 59 1 R 
/AIPrivateData4 67 1 R 
/AIPrivateData5 83 1 R 
/AIPrivateData6 91 1 R 
/NumBlock 6 
>> 
endobj
32 1 obj
<< /Length 1456 >> 
stream
+%!PS-Adobe-3.0 
+%%Creator: Adobe Illustrator(R) 9.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (C:\\ctsim\\doc\\scangeometry.ai)
+%%CreationDate: 2/16/2001 2:15 PM
+%%BoundingBox: 181 269 488 505
+%%HiResBoundingBox: 181.25 269.6035 487.333 504.5313
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 5.0
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 169 -233 755 533
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 300 300
+%AI5_RulerUnits: 2
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: 23 595 2 1345 943 18 0 1 11 68 1 0 1 1 1 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:169 -233
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 0
+%%EndComments
+endstream
endobj
35 1 obj
<< /Length 7978 >> 
stream
+%%BoundingBox: 181 269 488 505
+%%HiResBoundingBox: 181.25 269.6035 487.333 504.5313
+%AI7_Thumbnail: 128 100 8
+%%BeginData: 7450 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD29FF7DA87DA8A8A87DA8A8A87DFD06A8FD6AFF7DA87D7DA8FD11
+%FF7D7D7DA8A8FD62FF7DA87DFD1AFFA87DA8A8FD5CFF7DA87DFD20FFA87D
+%A8A8FD57FFA87DFD26FFA87DFD54FF7DA8FD2AFF7D7DA8FD4FFFA87DFD2E
+%FFA87DFD4CFFA87DA8FD31FF7DA8FD49FF7DA8FD34FFA87DFD47FF52FD38
+%FF7DA8FD43FFA87DFD3AFFA87DFD41FF7DA8FD3DFF52FD3FFF7DA8FD3FFF
+%7DFD3DFF7DA8FD41FF52FD3BFF7D5227527D7DA8A8A87DA8A8A87DA8A8A8
+%7DA8A8A87DA8A8A87DA8A8A87DA8FD087DA8A87DA8A8A87DA8A8A87DA8A8
+%A87DA8A8A87DA8A8A87DA8A8A87DA8A87D7DFD39FF7DA87DF8277DFD17FF
+%7D7D7DA8FD06FFA8A87D7DA8FD19FF7DFF52FD37FF7DFFFFA8F87DA8FD15
+%FFA87DFD0FFF7DA8FD17FFA8FFFF7DFD35FF7DA8FFFFA87DFF7DA8FD12FF
+%7D7DFD12FFA87D7DFD15FF7DFFFFFF7DFD33FFA8A8FFFFFFA8FFFFFF7DA8
+%FD0FFFA87DFD17FF7DFD14FFA8FD04FF7DFD32FF7DFD04FFA8FD04FF7DA8
+%FD0DFF7DA8FD19FF7DA8FD12FF7DFD04FFA87DFD30FF7DFD05FFA8FD05FF
+%7DFD0CFF7DFD1CFFA8A8FD11FFA8FD05FF7DFD2FFF7DFD06FFA8FD06FF7D
+%A8FD08FFA87DFD1EFFA87DFD10FF7DFD06FF7DFD2DFFA8A8FD06FF7DFD07
+%FF7DA8FD06FFA87DFD21FF7DFD0FFFA8FD06FFA8A8FD2CFF7DFD07FFA8FD
+%08FF7DA8FD05FF7DFD22FFA87DFD0EFF7DFD07FF7DFD2BFFA8FD08FFA8FD
+%09FF7DA8FFFFFF7DFD24FFA8FD0EFFA8FD08FF7DFD2AFF7DFD08FFA8FD0A
+%FF7DA8FFA8A8FD25FF7DFD0DFF7DFD08FFA8A8FD28FF7DFD09FFA8FD0BFF
+%7DFF7DFD27FF7DFD0CFFA8FD09FF7DFD27FFA87DFD09FFA8FD0CFF52FD0B
+%FF27527DFD0DFF7D5252FD0AFFA87DFD0BFF7DFD09FFA8A8FD26FFA8FD0A
+%FFA8FD0BFFA8A87DFD09FF52522752FD0CFFA852275252FD0AFFA8FD0BFF
+%A8FD0AFF7DFD26FF7DFD0AFFA8FD0BFF7DFFFF52FD07FF7D522752277DFD
+%0BFF5227522752A8FD09FFA87DFD0AFF7DFD0AFFA8A8FD24FF7DFD0BFF7D
+%FD0AFFA8A8FFFFFF7DFD06FF522752275252FD0BFF27522752277DFD0AFF
+%7DFD0AFFA8FD0BFF7DFD24FF7DFD0BFFA8FD0AFF7DFD05FF52FD05FF2752
+%27522752A8FD09FF7D522752275252FD0BFF7DFD09FF7DFD0BFF7DFD24FF
+%7DFD0BFFA8FD09FFA8A8FD06FF7DFFFFFFA8522752525227A8FD09FF7D27
+%5252522752FD0BFFA8FD09FFA8FD0CFF7DFD22FF7DFD0CFFA8FD09FF7DFD
+%08FF7DFFFFA82752275227527DFD09FF52522752275227FD0BFFA8A8FD08
+%FF7DFD0CFF7DFD22FFA8FD0CFFA8FD09FF7DFD09FF7DFF7D522752275227
+%A8FD09FF7D275227522752A8FD0BFF7DFD08FFA8FD0CFF7DFD22FF7DFD0C
+%FFA8FD08FFA8A8FD0AFF527D2752275227527DFD09FF52522752275227A8
+%FD0BFF7DFD08FF7DFD0DFF7DFD20FF7DFD0DFFA8FD08FF7DFD0CFFFD0452
+%275252A8FD09FF7D525227525252A8FD0CFFA8FD07FFA8FD0DFFA8FD20FF
+%7DFD0DFFA8FD08FF7DFD0CFF7D2752275227527DFD09FF52522752275227
+%A8FD0CFF7DFD07FF7DFD0DFF7DFD20FFA8FD0DFF7DFD07FFA8A8FD0CFFA8
+%522752275227A8FD09FF7D275227522752FD0DFFA8FD07FFA8FD0DFFA8FD
+%20FFA8FD0DFFA8FD07FFA8FD0EFF275227522752A8FD09FF7D5227522752
+%27FD0DFF7DFD07FF7DFD0DFFA8A8FD1FFFA8FD0DFFA8FD07FF7DFD0EFF52
+%2752525227FD0AFFA827525252277DFD0EFFA8FD06FFA8FD0EFF7DFD1EFF
+%7DFD0EFFA8FD07FF7DFD0EFF525227522752FD0BFF52275227527DFD0EFF
+%7DFD06FF7DFD0EFFA8FD1EFFA8FD0EFFA8FD07FFA8FD0FFF2752275252FD
+%0BFF7D52275252FD0FFFA8FD06FFA8FD0EFF7DFD1EFF7DFD0EFFA8FD07FF
+%A8FD0FFF7D275252FF7DFD0BFF275227A8FD0FFFA8FD06FF7DFD0EFF7DFD
+%1EFFA8FD0EFFA8FD07FFA8FD10FFA87DFFFFA87DFD0BFF7DA8FD10FFA8FD
+%06FFA8FD0EFFA8FD1EFF7DFD0EFFA8FD07FFA8FD15FFA87DFD1CFFA8FD06
+%FF7DFD0EFFA8FD1EFFA8FD0EFF7DFD06FFA8A8FD16FFA87DFD1BFF7DFD06
+%FFA8FD0EFFA8FD1EFF7DFD0EFFA8FD06FF7DFD18FFA87DFD1AFFA8FD06FF
+%7DFD0FFFA8FD1DFFA8FD0EFFA8FD06FFA8FD1AFF7DFD19FFA8FD06FFA8FD
+%0FFFA8FD1DFF7DFD0EFFA8FD06FF7DFD1AFFA87DFD18FF7DFD06FF7DFD0F
+%FF7DFD1DFFA8FD0EFFA8FD07FFA8FD1AFFA87DFD17FFA8FD06FFA8FD0EFF
+%A8A8FD1DFF7DFD0EFFA8FD07FFA8FD1BFFA87DFD16FFA8FD06FF7DFD0EFF
+%A8FD1EFFA8FD0EFFA8FD07FFA8FD1CFFA8A8FD15FFA8FD06FFA8FD0EFFA8
+%FD1EFF7DFD0EFFA8FD07FFA8FD19FF52A8FFFF7DA8FD14FFA8FD06FF7DFD
+%0EFFA8FD1EFF7DFD0EFF7DFD07FF7DFD17FF7D527D7D7DFFFFA8A8FD13FF
+%7DFD06FFA8FD0EFF7DFD1EFF7DFD0EFFA8FD07FF7DFD15FFA85252FFA852
+%A8FFFFFF7DA8FD12FF7DFD06FF7DFD0EFFA8FD1EFFA8FD0EFFA8FD07FF7D
+%FD15FFA8A8FFA87DFD06FFA8A8FD10FFA8A8FD06FFA8FD0EFF7DFD1EFF7D
+%FD0EFFA8FD07FFA8A8FD20FFA8A8FD0FFF7DFD07FF7DFD0EFFA8FD1FFF7D
+%FD0DFFA8FD08FFA8FD0AFFA8A8A8FD0BFF7DA87DFD06FFA8A8FFFFFF7D7D
+%A8FD08FFA8FD07FFA8FD0EFF7DFD1FFF7DFD0DFFA8FD08FF7DFD09FFA827
+%272752FD0AFF7D7DFD08FFA8A8FFFD0427A8FD07FF7DFD07FF7DFD0DFF7D
+%FD20FF7DFD0DFFA8FD08FFA8FD09FFA827522752FD15FFA87D52275227FD
+%07FFA8FD08FFA8FD0DFFA8FD20FF7DFD0DFFA8FD08FFA8A8FD08FF7D2727
+%2752FD16FF7D27272752A8FD06FF7DFD08FF7DFD0DFF7DFD20FFA8A8FD0C
+%FF7DFD09FF7DFD09FFA87D7DFD18FF7D7DA8FD08FF7DFD08FFA8FD0DFFA8
+%FD21FF7DFD0CFFA8FD09FFA8A8FD24FF7DA8FD07FF7DFD09FF7DFD0CFF7D
+%A8FD21FFA8FD0CFFA8FD0AFFA8FD25FF7DFD07FFA8FD09FFA8FD0CFF7DFD
+%22FFA8A8FD0BFFA8FD0AFF7DFD26FF7DA8FD04FFA87DFD09FF7DFD0CFF7D
+%FD23FF7DFD0BFFA8FD0BFF7DFD26FF7DFD04FF7DFD0AFFA8FD0BFFA8FD24
+%FFA8FD0BFFA8FD0BFF7DFD27FF7DA8FFA8A8FD0AFF7DFD0BFF7DFD25FFA8
+%FD0AFFA8FD0CFF7DFD27FF7DFF7DFD0BFFA8FD0AFFA8A8FD25FF7DFD0AFF
+%A8FD0CFF7DA8FD27FF52A8FD0BFF7DFD0AFF7DFD27FFA8FD09FF7DFD0DFF
+%7DFD27FF7D7DFD0BFFA8FD0AFF7DFD27FF7DFD09FFA8FD0EFF7DFD25FF52
+%FFA87DFD0AFF7DFD09FF7DFD29FFA8FD08FFA8FD0EFFA8A8FD23FF7DFD04
+%FF7DFD09FFA8FD08FFA8A8FD29FF7DFD08FFA8FD0FFF7DA8FD21FF7DA8FD
+%04FFA87DFD08FF7DFD08FF7DFD2BFF7DFD07FFA8FD10FFA8A8FD1FFF7DA8
+%FD06FFA87DFD07FFA8FD07FFA8A8FD2BFFA8A8FD06FFA8FD11FF7DA8FD1D
+%FF7DA8FD08FFA87DFD06FF7DFD07FF7DFD2DFF7DFD06FFA8FD12FFA87DFD
+%1BFF7DA8FD0BFF7DFD05FFA8FD06FF7DFD2EFFA87DFD05FFA8FD13FFA87D
+%FD18FFA852FD0DFFA87DFD04FF7DFD05FF7DA8FD2FFFA8A8FD04FF7DFD15
+%FF7DA8FD15FF7DA8FD10FF7DFFFFFFA8FD04FFA87DFD31FF7DFD04FFA8FD
+%16FFA87D7DFD11FF7D7DA8FD11FFA87DFFA87DFD04FF7DFD33FF7DFFFFFF
+%A8FD19FF7DA8A8FD0BFFA8A87DFD15FFA8A8277DFFFFFF7DFD35FF52FFFF
+%A8FD1BFFA87DA87DA87DA87D7D7DA87DA8FD17FFA827F852FFFFA8A8FD36
+%FF7DFFA8FD3FFF7D52F827FFA8A8FD38FF52A87DA827A87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D527DA852A8A8FD3A
+%FF7D7DF852FD3CFF7D2752A8A8FD3BFF7DF8F827A87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DF8F852FD3EFF5227FD
+%3CFF5252A8FD40FF52A8FD3AFFA87DA8FD42FFA8A8FD38FFA87DFD45FFA8
+%7DA8FD18FFA852A8A8FD19FF7DA8FD48FFA87DFD17FFA852FF7DFD17FFA8
+%7DFD4CFF7DA8FD15FF7DA8A8A87DFD14FFA87DA8FD4EFFA87DA8FD13FF52
+%A8A8FFA8FD13FF7DA8FD52FFA87DA8FD11FF7DFFFFFF7DFD10FFA87D7DFD
+%56FFA87D7DFD0EFFA852FD12FFA87DA8FD5BFF7DA87DFD1CFF7D7DA8A8FD
+%60FF7DA87DA8FD14FFA8A87DA8FD68FFA87DA87D7D7DA87DA8FFFFA8A87D
+%A87DA87DA87DFD74FFA8A87DA8FDCCFFFF
+%%EndData
+endstream
endobj
43 1 obj
<< /Filter [ /FlateDecode ] /Length 47 1 R >> 
stream
+H��Wmoܸ�
��A� AkK$EJ4��^rn��p�+ҤX(�+D+��%���Crw����]?�㵵�y��3C�埮ޟ&u�Y����;y��e:�r�sϲ�����i0�Wׯ=y��"^�������~�0�����5�wݏ�����k��ڬ�4S�����TMc����O�ƪ얺_�i؞���C$0��T�O�O��x�p��Q���M�T���
��&�Ʊ�n�j���P�r#w&�!
�1Ơ�qF����j^�n��J�cڷ�0�{�켷�+��A�m��SmY}=�)�n����Д��u�.;��g�Y���b*ۦ:Vx�u���S
���A�{;�ɕm��o����{د8c�e��_�f���
y �����P�

��G���\����c��
Ai��	�M9Mz�Q=*T�+�b9~ly\���l�ޢhZ
�����g���nG� U6ϖ-���i�%���q�F
�\K�>^�ec������L�כ�-�0zeR��/��NΧw'����u�1��j	8"��#�(>0�tJ���o��3��:?WW��A���]"�Q��W6H���޴�S�c,g�c���w�{QT��"z����"�=��n���0C��s�]��]��az��W�����s��ۮ1-D-O�Ŀ�kݞ[X�ԋ���<ڕ����)���L[��d�Z|��n^���j3
+����Fw7��6L�!"M�C�d�\YP
�xW7C{{F٨�F�W@���,��|�%��*7z���t~J��H�$�A�-�7z�0퇰
��
M}�z��c�~}����"�n�v�ϻ:�צ<����|�vh���z�U�\��T�=C���f��j���g�<5��Q{r�=���|{F���{F���gjwW*[9 bޜ��x�I������V{R���7
 G
��Q�_���s�����0l6cL�u�\�a��~�
h�/���~�U?�eW��r�;97����/��{$�ζa��}FC���K+���>��N���r\�zm�MM[k���
pL���N��~��^2��G��? =v<z��)+dA�~5��-�����ͦ�AAD������lw6���^7]�A=�>��Te�����nV��{^@���ee�BZQTAs
��{?�HZ����>|+�y��zƌa���o�U�nڶ�%
΃Z�c5�6�86���� 
�*�/�ǎ9zDR?�0���yL�����&��'f~���.?��~n�a%?R�zN�¹�8��8����g
�̥S�t
+�G
+�.�˃��k�i����L��7t�o��oZ��ͪ���B��~�
����Gڥs]
��6
���}:�S�κ�S�)}�k�T㤚#�AF#
�s�;�~S���Dzu�1
��٩���|/����u˓M�v�>yq�����}q3��>:���Η��z3�ν�����5��oտ'���X�a{�n��l7�Dq|�~p�F�
���x��
�������mוk]{���$pA|�k�d��3��'/��ȋ�H
U$�,�"*D���`-H�E��Y��*Or��y����a�r��<Ȋ,ϲ,�T�d2�ёE��xf,�ɂ�H�4K�T�I*�8�R��4LYJS��P��T��J�T���P\��)�����I�dI��$Id'Q"��	KhB�@2��L����2����P2I%�A\�y��i��$�1b��X�<cӘ�ATDy�Ei��$�Q
E��xF,��Q�\d"J$B�XDB.B�D F^�g<�'���<�s
r�)'x�+�<��4Ta�0�P�<
CҐ�+X� [...]
v��?�>�x��փ?�C�$��=bG�#~DbGюbK�,J�Ƒ���2K9�0d�p?(<��Pe�
��z���@AB���	4"�Q�0	�H9
��%	L)`+�
+�O ��=
F," 3B1�Y�-��
8��g	\�@x
�$�Ct@�N���Q`�
��;1�H��r$ �m�G���}X�'�3B�*tn���}���s$���#L�4)0#B�
�	R`�p̗S(�RHY���"i3M`�IL��(,�̿�������������_6=rW�
����dc��� ~4�l�p�Y
+d��@$?��WU,6{4Ɇe |�F��.߻�����K=�
�T=U�߃���L���^���#�z���pUAM����
��՚�uc�n��
�-�C�#dyT=+
��Jg8j/�=��~��z��
N=�Z\�{��W�X����T����x���	�zt"ϝP���~�Ϯx׏�gq�-+��
W�X��y>���Sn��[��׭�ڱZP-�v�L�}#�>@Z}�3J�N����40���H`j!u@ [��W9X��7D��:�� {fOH��#H��
+�u�hw���	�E�s�r�� �-�BX��)�*�ÊM�"v��Z,mԘz����2a23V�b9Ƴ+���[Öz�i`9{یe�zX؆�݀z�>c㘰8n�c��
Kb�v��!��1�<8

+Fɡb�

+�ٯ�V:�4o�\7,W�
+�n���
��
ܔm�M�›]7�{�䅉��Ї�7�ǎ��vdX���O�9֢�
�/��T{�
+���\ͥ�WTgŊݹ��շShL^�_5��`ͧ��9��p��E�����
��!�r"�}A�D
`'�N;�
�s O�
��	|�$�I��  %J��@=
9% r$r(r,r0r4
E<r at rD2HJ���I�
�
�
�
�
�
�
�
�
�
�
�
�
�
��k3u����!�"��V�VW� �� ����e4�
�(sv�B�E�l 6	����]
 ц-�
�g�/�����(�p�tC�un������d��hn�
�l�2[�8�!�����1o'�p�hdfn�
���3�X�P7=�]�a����G2����h��2�hi-���2���hL3�A�`v`V`6`&�K�M�M�g	�I}-�7ywiwY�gV������#�Y�]�]�%�9U�<���F�SG!�Hr�����Z�s��!��Bn]b���w3��
7L�
a*{��(�q�i��./{<��׸���5]j�{���k��S���+��u�s��n�4�C��
+{��	�7묙W��EVk�ۢ!&��ڬz��[��2W�3FIv�\�P/t��sÄ� /t��Fk������䚂U� ��[:Ij���
�ٚd�P��
'	e����$
�H G	c� 
19�	=��Aɟ
�I
����������8JQ
+�� ��p��.4����]���C��1��C����,�mE���Vh�U���gm�m����.����i!��$���EsHƐ,a�F00�������y9٬9_=��8���<�<�
�NB
�t���	tN�SB�'΁7�1�M���6	l�8�$�q�q�q�q�a����!L
��gq���˝���H��,��t��x)�
+NE�j��z��5>y����z(�zA4)e5�jSg�|��yg~�w��;c�
S�+��PKΚളJK֩�:�t���E�c���&�M�Q�>�U�ěr�.�	�]crO��m;���4X�SF�����6I/�F�t�`�C��r���7���F��hDH݀戓F˸L΢p�1K�����ZE	��Ě���O�S��y�z
+T�T?5㷜fͿ��_޾��W`��Va�w��X��қ��i辭y������Vڻ��vT���{��/��'���Q���>����
��������������?~�W|e���>������[������~���߾9���Ꟗ�zfm��ת�
+�����W�]��c}6���D������C���m�M�Z�]�Y�U�Q��Xs�,N+�e
f
n
+��h��$+p#p�& @��Y���o���oYu�~��&�b��[	�

:"��C(��d9elHiғ�
[�


*<΋u��+�Q�j�O_��X�4�w���ݣ��ǥI�
T���1���[�O1<�y����OWu7]E��?��;A��xrw�����'�ۧ��[��ۦ�f�
s���e��38"8/� �=�9�5�1�)�%�!�
����2B�A7�Q��������������(�s���E�s��Q�
��U�� Z�5-���#�:�B+Zt��#�����Ъ͚P��б��
�Zwh�  O(�0o��_԰��;��=��j���ڹ#oP�e
��	�]���q�a��
+7�q�.h�^/h�����VS0����a�z �?��+>`�s�y�
�k}�+�EV�Ɖ/��WTO���hC�S��r��oJ���ל�����EO�۫q�u�VK�0�ȹUȑK�u�Ն��,|���o%�
޻�=j�.�V��}~���M�Ƽ�A�I���͟:�W����b m
�&�L+#�"�%[4�k���BK3���܍��F>_�Ab��t�
�q��;��U$�:">m�.V
`��T��ݰ�{��[۱�;��gF��=01Kvfaf`��k�q��n�2�2�2�r�r�2�2�2{2s2kJ��t��aIfH+�eV�`CfB�
h�|�z�x�vd:d�Z�3�n�lv��̀Ÿ�������.�%3AO�.?���k���OV��y�������E�q��2��9�]햨��N1sMArجs��b��s��GNҔ��5��1�V�3��(~n1�N1�v
+��b� �*�N��8�*�2ڎX$]J�c
��GS2���5��!�:G�-��)��.՞=*�nW��Iq����Vd�ch][�\[���E�k���1F��C,I�c����QVA��Q�
d=�z�����*�zt�X-���g�(���RgK��%K��X]����K��+>�;Ie#�l%����@�$�k2�Sn���4i �H$ J{��(���H v�bG��6G��B��6��(N�\c�?���N�Q�;2�^}��d&�?���F%�t"["!�fM%'EF���a�b�
�ݣ�zNɤeg%�L˒��������^�բY}��T#*բPOeE�FT�E�*zo5%�uh�)�
�1��
S��ghz3IkZ�i�*}1u1m1e1]1UAS��^�b�bzbj2�$�#��4�����õÕ#��Y5>�Q5��%�~
+� �_1���EP.h�J��讝w����:<k�'zq�#7:s'T���[;��.�{'����	&:Q*�)|�Q6���Q�`��7��w�,�LT��0(-��
[L
!f�N�aTnX�
n�A���a�	b-2D]��Q9bA
6aW��a�v�)&TcQ��M�lb��b��b��<c�K5�d)�G�F%�EY�Fڨ�7%�~e���sǦ�Q�����1��G�_��e�m#��
��1�l��X
�x�e��n��=�?�{�X�(��݃d!��閨�d��y���f��@Z��ܼ���sgQ�o��lP>(#��9/v���q�:3�s�����x)/�N�+��#F䜈��SP�RP�Q%
[YbH����I�9�3��
Q|�ѿO��L���v�
XEmR�c�Ұ�"~EԆ�pO��`�
��7l0�0
`��x��8�{��?͇x�������m����@`p��U�����/���-h����;������tx�3�p����� y���r[Avq���
!
!�=�9@�=���`W0�
�!�#$���H���7��
+�_�k3"�C at i����*XF��@e'���
+P"<��a�(��(��:�Ü+��]�R+<���b��
��ñbT,
k�Ȣ�IՀU:V��eca�Y8�����
��T���g�h���VA+!C�!~WD��U$&�b0�Q��H�;��
L���U������� GS���g��ėO��؂�3����|&F3_
<>�u���,��=����vJ�fBQoT�+*F)�@5�i�
[�ث� ՠz$�ȕ#��[�ƫ4#�	�J3.(��Tc��NJqY/��P
Q��f���\��b������!�<3��+��q����zPY3S�S�Rm8�6��NP���T�
~/
+9���w>?���;y�|'gV]�3�l�����Y̊���
ΰs|>��yv]�sz��/?n6�t�� �72���I�OK'V��}�M-K��/B~bO�
�y��
��?������o_
�>>��w�ǿ�>��~?������N×o��}�n�;�է�A���׋;Tyf��Xm�5�KAgoԁ���Q,{J�@��(~�զ�"XRE
+U
EEUE!��U��(�Q
�@/HX�%�4��M�8FiTaYQIA9�E
+!5�0@E �_
�k!zo����7BC
+Ț����2�@�:��r�	h�X0
+ >ZU at fJLy�LZ�5�^c�5�Ή;'s�'b&�H2� 
�р@���cb���pe

c���<�
���1x@#
N��Rw0F<�	��Ãpx%
�,�������3\�[[�ZZ�.r\b]`��q������j]`[�Ⱥ��Hg��2�8[���(Rs\v4�h�
�Ej�T��(c��f�`�
��<�U��
�6��0���g�}v�gs�Ή;'nq"�?����<�����/E!�z����
��7�C?j������	�7���U��Ä��������Ƿ/_�~�;��__��{��~��ߧo_�?���]�C�ix�}c[0UOL�[L=d�
+.�,l�ŕ�m�Ď�,���r+
#�fw�
}���5�7��pag�㾌��]�ߗvP2�,�!tt�	l
+ �6�
+�V���_ 
+���$�Ip�
+�5,�� (�R2�m�o̿��kТ:D?s�S�D�`�E��@8f�3Z&�"���
d�]������O��������\�i]�y����5�k	�
'���Н������hGx�%��Oz<�	�Eܝ��^�ף&��h�@���=�x�#�t��,P��E�
��8�
+>�Q_�h��pԗ�)����?�>�Q���j�B�H�H.��ʨ�Ҹ�s�
��Yq��q
�*|������q@ĭ�6=޿{A�����[��C
	�Q��
=��	R�{�D��M�t�v��@��bN�ːJQ��U�����
�x����� Cz����c”0'�fr�<��:�
��&�V���\�Oh��b��S�kH�q'���r?���*�|ao�C�\������v��͆r��
�;)Ę8`��إ�ɮJ�$%�K.r��9Bƨ5��itM��A%�8�<�@E
���Д���%4	��4�6S �]�^Io�C`�]۔0'�C[�7�y
����.
����퉛(�ڣ<&
��3x���2��W�/DsL<x�a0�������}M��x���k�
2�mФ�Ɛ��ٲp���
w��n�Sǜ�1��1�_j��7Y�C�C���װ��a�̰����!���c6p�
+�Z`��p����a���q8oF�����#���Gx��g7��
+
^@
f��w���n���
ܿB
+( 3R��t�#%��<rC��PA�
H�
�
�/z䌀��<$�
+&Q@~f$�	�GR	��;�����F��
�݀��!�H>	�F*A�?!#
�J
S��䐠j�}�� LHX�VW���<5�����d
U�����DM)�G�J
,��<=�* 8+�ֿ`կa�+�ʳ,I
s}�����x��C&z�`|�,ɴL6ΘS�;�BM
+�0hb.	��$f&o\j��*�/nika��Y�-e��K&
S�U�>ۄo�8�
����)�j6�R6MF(
T
+���Ee��QYʦ��I˝���N�0T9*,U�Vlt
n6�
+c��`m�0W�+�%�`尰Xy,LV.
����h�t)�r&̞��G&��.
ˏ*�^�����
	�ˢ�81��ߪ7���s0%�
+j������zj�·�Y���f>���²����f��n�u+?k##�V��)躙u;�i
p�i;k�ST)��Y���<��}���V��_���P~L�1a00�fq5\D��)�W��
��U�h��E.�W�[˻�[4U�v���!kW�j
��t�Z�7M5�Tm��P���!�C�l�u�
�4�'H:^T��\�����
3'Z

����y�8<D��A�Xȵ���EX#�.~t�����.	�Jz

;BK�ǎU�C
+
9�5pԙBQ�<T��L�T�T�����kT8�T+*�F���0͚-��)�t�`G4�����	�ةhsR���M�-$}sVj���
��*
���.
�z�|��_D����t5�׈9a9G��d
&����6��� m��A�[	�
c��0��dje�]�aU�C��K��
��O
#�
��1�٠6�Z=
�.Ic���`�
3��3����\eʃ��j3
J
Y�x�2Hq�`
r��}����h��� Ud(3l

2A��
�
ƳB
鍏sù�pw1
ݾ}
��.��5L뗶6�9Ò#���H���7  ��IB��)�mQRdb.+��2�������_5=r�F�n��a.
$��(��$Q
+rr�a����
��&�y��(Qju{�8N0]X��[*Q����K:��nY���������z���,SQř�Iw<��y:r+w��~�� �
A�3x!�9RXG���
��
����Ғ>�b 5L$��C�8杍6��ÌQ�p/
a���8�:���9s
W_ˡ
+�|"�.!�L��\�b�
x�\աE�43@,G�挴#�`��8����D\ �M��	*C�W
��z(b�D�!���i����m�~���`�um�������y����^���
X�`pa45��̉m^L�Xwi�ԓ�+k���y7&M=��4�i��}-n����ˌ
&\��
zfO����g���^M}ZWy4shx����$��x�����3qg6�rh�~84l�ô
]����0˻SS2��
����נv���� �ݳזͷ�k ����ͻ-��F�oP��ᶔyʙ{�'Z�g�cڤ�È���S�9�=u��+N���l�m��h Tޭْhqm�9��׊[s�D��B��@Q:d�B��
K�s�z�#Kv,�`��#��,H�q
+��K�-�b�=m�YC��&{ZZ���{�=��!-�
�F"�5�*R��QA��s$2P)�\�EA�Cb�((T
*�}
Q'��)�g�2A�����W3�$�Q$
;9��� F�Z_|OS��
���:A�`��҉�qG6u�X}�U��6�.�ݎͿ
'BI���������)��������?>�j���I�-��������
xuW�
���U]_~�>
+��e\�sr>rM�jBx��P=�7X�6���`�V.��i��������=(�~ʗݨOp
~Œ��2_��
���
�
X} /����\�
L��Җ���z�^(�&�ƿ��O���O~���_�����_>�����}���?>~x�پzr����]~�gL����R��>���ŦV5࿲Ʒ�o
�:��L����Y���a�om���߳���P쿘���� V�"@N1 i�D
[
�4�@�VLCAc�@c���*
h<Ѐ�����XHИ �-1&hP���N�
�J+��A
�

$:Hx��P�D
%FH��(!ak�+��Bn�-V����}��D	%f$F
1����b���G

b!
�?�E��"Ad��Hb J(a,�[��.�Jː�4�0���+�E	-Z�����k��(��
f��`���A�|�r��0b�U�j�j�j�*m5
J��1n�i�p���ea���
�]�~U� ��*o���*o���I<�U��e2�j���v���X�D�p�7C�y�C��:�������
�J
�K
��W���J��5���P���ׇ�8>��1^�}��[m<��K:�z
�
�=���a��:���ǡ����ϩ����Z���
��
+j)�+�QX��Ī��
2{�	;
D�H�l�׃�
��d�����6I�U�R�	��(E���i��)‰�pvE4)���2�PIg�)�*�=%�SBb�
���ך�-�;�:����)j
�,S�T���"\"Y
�*S�%)P�Dz�M����H	�L0�
+�!�
(���p�'�7�(�-���ǎvp�
3�-�
+Nvx�������uLXOƺV��a�
�
P����c��f��
+�:�����v�$�Ą=�؛�v�+�=
ػ�
L��	;���x3,�a�=v<`�#� �,&�I�IY���qj�q�	�9��d��Mp8k�38{�(H@�Td�c�V9��5��Q�&�*_+��o
�
�_�8��������m ~#p���	����
+Uv@��& b&b�ddLȊ�s���	� ���0Q�k�|��z�y󘺀鋘„i�`3�s�+p�V��
�߈9N��	��1�X#`�t`l
,w����a×uU��**�

+	�¢ ���	
�
<
��1<���h0 �/��� ��C�E
�
���C��I���0� *��1c�VSU�V�/�W
��ݗ|�:~����m���@�I�|V!+�
�\輕ڙ`ճ��`��F-��t��T����

+
��ٺy
:꿖���:����
�����.��	G�p(�DŃ6�>�{����;g�}'�gq���=��}�W���
(�g�*:��8��*����
����
�=:��](<(N|5:����{�Q�;����n�H#;�
[E-t�&m��Rݩ�M��
+
��f��k0Y�Du#��荤F'�
�Ts'�E{��v�'��|��X8)��2sbΥ�뇶`3n3e��]J/S��i�����<��&&F�]ɍZ�Va�#q|+�*�z�|Ո���H]ե'���б��zp7G�u��HgG2�	�2S*"sXJ�%�W�j��d5��:�T�S�AN��)5��,dD*
+�!!�$�A=B<
�P('�n:���L��zrjb�`v{Ҋ��P��DZ�	iDHD(D	D�CɣPǑ8
҆GS��768�eG��
+
c��c���Z<P��h�u��*iU��T9�;K��39�QJm/sj~IR�BV��:��
+K]��~���z�W���Yu��Z�(��])��I���t�#���fu������O�*}V�A�v�
��œ����*{�P�X��"�m-�f�U|�`x\'�:�+߯3��*�����hA:��:֦�]2���tv�l�u���|��%G%jcg�~1[�[���,�i�ۂ�n�Z�w�'h&�?�z���(�L����V�E_�uk�Y�U��0���3�.����_+�˃�"8K
|u�V#,�p�0UK��d�Y�	���J�I�H�G�F�E�D�C�B�A���v�ٹG�g��s<�F�f$Ӭ`�e����w`�H^VY�(�'\�L"<�,R&�fW�D�8o0�G�\܅��a|����y��X؂AG�&�e:����׮����������/��O���
�7���0CiGLƀ��1%
���"c�*
�j�,�����C�;�Y
Moa��
�����Tv��ڀD��n�a�
z�r��n�V
R�ט�"�
<�1K8�����(F���T [...]
8����2o�L
33G�X#��g��=$}d揑	$Z�BV�!ӖD�SY��b:+�a���T[��J�1\L0
)��&���R���2`m�*�� 	��"�
L
+%�g�\+'��h�	
�d�20� &k�4�&����`����[o
���	�?̋ �=3�s��^
�c�1b�Ƥe&"
�#��9u���g��$È��m.wg�/5]է�꫒�����H��s�P�@`Xh���\x
��t; ^
�n_;�]�·��%p������
�10
�%�ޚ���%�|���w����i��<sk���������
�6Vm�6?���
@��	[��|��	��e��cu
$˝[��
+0>��JպT���#�~�����-f�~���׀�
�l�	S6����c���tM�t������w�{�9!1�t���_���Ťoדּ�]Jy��s��zc�a�j� 
�~�:�3��<�ϬI�,�vs��gZ��h?ۯ0rCS7��z�:�
{��2��������x�ً��ۛ�Wvgw�����}�|�������u��n5����Ń�����}��E��m�m�{���{d�I�

� ,B�
a2TT�aH-HF謔$
K�4�<)DY��J%K)LX�a^^�@9�@��"Eʔ@
!O)V�\9�\��E��
i�%
���-J�^��d:.�.
��h���
+-[�\	{Z��`A^
Y�H�"��
�.R��j#%�1Z��J)#�LO�E�)�¦����4|dkm{�<ڶ�d;&k#9�
%Q�Y�˭�2��!��v��Nߑ�������T�u��x,̨l�t5]	[
[e���j [	Y	[�(�-�*
+Y����P�pG$+g�����J��@�)_�	����
4e	g)e	c�g�X-#0����WNW=�j��GD�FĶ�Uǰ�p&��*9+�LU���]�*9��T ,9BU�U{rՁ\�dՑ����U���(�(�����tV�c�$�wZ?E�Xb}5���������Ɏ��N�=�7�d���q�+�Y�-iYxY��&^��Oq�jf<�=ߩ"��Τg>��s�o��Q�Gg������N��H�3�W<�l�t�|
��Q�1�����L�V�v���k�k���(�EAZ�_���]xZ���&K��G��P�0��eL(Zz"CX��H��F	z4�v������(X ���ߛ&=>�h���A9
z�D����a�r6��Q�?!)ב�vZKz5YN�Ԕ��[�w���Z�Sw�=Y��������6[c��6XK֢6��ޚ/㯼�����!�h��(d�G��H2
H��uW-(_T�g^O��c���+>�����C��*��B5BU"pC�J'T)Ƭ[��E+Z��d
ъD�5w at AD5��{jǁ�t2�h%	2���hN���Dsˎ�
3�ą��KK^T��q��D����#�s ��,�D���HsQb6C��I[p�祣�S�N�S�Xe����\�ݚ~�-g��x�
+dޮ�_��e��i�,O�C
���H:� [�=�ܞ��&l�pgF ^�c�nGB��� �0a��y��(h�
q�0�t<
�0V
yƆ���j��v8\a�%�Gh��v�n����}$���`o �
���L�I>b���@��e�d���}����@#�Cfy'�!��r|�h!�+�o��GF8

/�G��Š�d��h>���%��p�T�g�I��t
xv"N� AK�?�
x�����x_i�7�o3���oIϿҾ�~G�w�?V<_S��Q;u�_E�ǑG�ǐG�ǏF��"�q�Q��A$����xYG��J��o_ňF�g��c���FF�
+�	����֢Acg���� ���@���f�\˹����
��
o��zZ}=�������G��oկ�U<���|Z�����K�`ցU��/�:"��OəȔ�n�%�93N�
%���e��e�-� [CRHZH�*`�$DFRl�<ݽ����6�2�ЄM��/]ӢuM
6,ĝ��H�|}y���{
ٽ�ZdB���1�n���o�1qp���W��^�d�
j�'�������g/��oo�_ٝ�ͳ�{��i���~�}u�f����}|y��漻k��{�\W�g���5���d�sT4ČZ'9"�L���}�
Y=e6
"�Ƈ^Ci%�c5���r��OP�y�#+��iK6R.ҊI+��*$�
��zh&�
�h at -=9f����Z'��ٱ�iY玬k��
�gFV2R�Dh�
E;A����
��9
�ش*
�������P��K�w���}Ը�bUb(�J�U�7�p����
+�k���w��P^D�ko�����5ͭ���ֵJ���J�:�*�La][?�ć��b�m1Q3� �I?�I���V������b9n��[8	w�~����/n�_��?�䓚��_./��7���/�^��yq��������+�y)dU_6]�I�/M�O,}})ֶ|��|������O����͟���
�k���+��Lu�/9��2O_]�˟�cyy�i�R�� ����M��o�j�{Aml7cj~��|9�ˈ�N�M�anx������ �in�N�E����j�0M2>
���/�;��G���\6�����9�|f����g6�sT?�����?Uz/
�bp�ϖ�n@~�p����7e�|)��}
��eB����]�C�1�-
�ژp�i6je
/��>�����;
�K�Kl��=���V��}��!��^<�j;D#|T1pis	�
�6��+c݀b��Z��|X�]E��6�l��*����4[]g����_��t�o�
Kk�:0U�>%B|5��?Uz/�.�Kww6;[}f�ۜ�c铥�O�څ��U
\�\"D�����xU�L��Բ��ץLU��Θ�V<࣊���o.��i��-�>�zw�_�4��������GI��[��:����+�Y6�4�r��5��_4�����z�Pz�W|����u��������„M�I'�
|�"f���
��w�Ry��3��-etِw�o(ۛ7rX�>�S�{x��~z���g7�j���K�B&��/���q������/���
 @˾��q|�d�7k��.�M��e�+�E+K�y�
����:F�~ȒQ��b���
�5ƹ,f׶P
6��w�˼x]��N�,�2 6sH�nhӈ��ޭ�5Z�)qj�e܌-��7�ab�m����
+��JG�n�xʾ�Hm����7��g&�;�&���n��u�n�
�S��qÝ��aZ_a�� �����ܤ.���a"�Cӫݛ7c�����[_�
n
l�7nB�O0H�X^B�QM�F���P�=
Q�]N� v��ʑ$�a�W�E�6r�	Ř��u&b���IVSrƙ�D� $�]"kx4�.[��λý*�W�
���i���˟2�t�M���q��џn<eC_����]��NǏ��ЮO�J���
t�{JR��[�\����)�[�	B#
5�R��]���W����v�' �p0���P-ɠ�ݵ
xOR�Y{�-�
&e�*[Q�������Ʌ�
+�\֊~K�t+-Y��k��ʵ�
��I#�n�ˢ�`���?�¸�|�Sk���#!�`�@��r@	�qąʉƄJ
�}�X!�ɢ^ˉw��X^*�2ہ�B˧"%��xOJF�A��1O�(9.�aQ�b�+N�`K]
�1�J�YUw�2bǭ]-�n��.�k&
Y�58��1����Ʌ��7�n��W
�<�B
ީ�A-�t��#�vN�hgg&��s�hD�waƀ��UQIZ��D-���B�7���^�����5ʅ
�@�WB]���+�f�B��L�
���ҁ;��jx[d��}�<�ESơ՛�ߙ@�����������
�c4U1�IH�&�;���� (0��Jv���盅�e>q����A�%�!{_*�Z4'	Q��Ҹ�yd?��㚍�Iڶ��B��Ja3*���P6u�C�
;ʾ�m�f��j7:BL�vE��G,��J~-�@�Ĉ��
�[���1>ax���Z�ɕ}���B�f�Q at u��E
+t���"���>��o��ܬ��/�
q���-k~7 at d-�t�T�n
/"M�n=�
��Q�b���њ�X���Nۛ����@r�H�@۵l�o��<_t�����8�d���es_�љ��q
W&�s/&u[�_��Td�ʵX�~}�S��z��T�E�s�w�&�,40�rnQT'�a��n
�B�Pi�H�����.�
���F��*O��˷�0�d-��-��m�]���#�x����x�S�X���
c�)Y�ż�
U��Uz�`<�*Ѵ�}��
��*�_�q.��Z\�#�zn۷ٺ]xdt���[�b���|.	�r7c�
�>�x�9��e!����k�`
+�h���4&�����*xq޿
 �r��
endstream
endobj
47 1 obj
16169 
endobj
59 1 obj
<< /Filter [ /FlateDecode ] /Length 63 1 R >> 
stream
+H���M�G��H�w�K$r�U�v�D9�j� "�H�B0IX�l4�|���\��ϲ�E�L���vٿ*���Nq󴻸ޝ���x����?_�zavc�7�ۜ,�dO~3�<B�=)=�:��
�&I�ɉ!ލs2+V��	�`��Mܧe�
+ub�
EO_����
^U�jO߫/m���Ml��u��S�f�۴��&8�c��������-��ر��8dV]������m�s��m�/�܏Mt�uBs�.�/;��؜
/;
�u�ٶ�VI��zh�{�I�H���b&�&�&ᾌ��2	��5u�G�������Q�-nN��.ƾ#�w�	^wTG��Yr�
��b<�P֑�E�>!������1n���f�j�x�\UOtmwrΗ�`����5vf}��Z�|e03{IRN�LG�؈{�I*Y�MZu�e��(��0t���YT�]ڣZݤ����BԼ�=��\���p{�
�N��; "�����
dFؾ�VM���H�ɮjq=@E=��h�<��3��q?`��	WI�/C
���"
n	I�=�\�$I���[�y�հ��m�Fޚ��\��*6,�}��ͅ�����/��
PC>�Z�@3�!
Hű�Q]��|�5�е�a�<��
���ң�?�+n�X
W ����+��ހ!l��q '��b[���i���`���G����&����Е�b}^��"?���)w(Q�h+��Ϊ��6a]}T��e��n�
P��܏g |��
 ��ɴB`�-��[�Cn�>�<���>���-��V����L�H�hkg'?�LбJ�E���|��8R��k��QJ�G}�C�

+�1�e�=h�dM����T��R�O����ܴE�^��]J���ǹ��TǛc��J[]{�4�C�� ���l+}M�+
+�\ۺ���r��ǭW1

_����xR���R�ǫ0�L[W�D�8Y��vS�&U'�=��Þz0�]~���/~�{�������wU���/o����?�_�{����/�s�Zk:~���
6��
��������m����^�yϟj�Q��nj;
O���
���2K
�.��CG?����7|��ծ�`��﷫#o��oN����O��
��L�=Y›��l�
Y��P���&%�rW��O��1�̧ *})���,�y�+bW��y�=�}������o�B�4�l�F~�_L����z���?b�͘;1�T���ܷWI������w�
+
Kp~�Tp�^<��ݓ�7w������Q����o.
�Vޱ������v]�~����5|�pY}�
>
�#b��
̻22n7���n"�Ķ���+"]xw?~�f�
zY&��3~ѩ�q��E��(��хu��q:�)�����
�e�qjqy�:M��8�
�ϗg��=�z{��˃g��*�wMԟJ��/K ��{�k�=t,K�E7CĤ�i�Ѵ𓩔%�I�Ց#�yJ�T�K}�"d�ro=k�٢r���.B�p�B1;h����m���1V��/'�QWU+�� �M�?GE��`�z��e�C�[�6G����Q�
Y��=�>��#�V1`b�G �v��t��)��s��sB?��L��P!u��dr�OUDZM/2��PU��R�
��+a���)��&����		%��qتA3�ʭ�%��:���x��ͶE_����A�	\'�\;q�o+s��44xZV8���Su!E�]%��!�
��
▅�#��".� m
6�&�Gj�t�&���dg�J-��y>a
9�˸b
�C�n�D2��-��.�"��3wn1W"��u�lWx#r��.d!�;��O���nr���d��x�W������cxE7J�m�	]x���]9)���.�@rR��<yZٕ�Q���.�
O�Bn��^����*�Gv���.†���ɴ�nb7u��<\8_��GG~EB�r^��Ԯ�	�Tr�Wt�o�0��%�'r!g�a�H3�B�\1��D.<���J.���Wt!�9���pk*�]B_H>
��;�mB7U8v�����*��O�7��
+���&x�-���{��
+/��Q^��l�?�+�a�Vx��v��#�M~��,�Don��D/
�_Kq<�KN۳_�l�W|!
�~�r4'��o������O�B����"����/椐�]�3'Z�Ş| Z��-��%4L���p߹Cۀ`���	_h�Va/�7��9�����
I�|qZ��_ā�
�y-��+A#�_C���/�(@aŗ��
mWa<���W�e�`�	_D��|�<l|!��	_ȓ��^�\���+Z{՟�E�m){���.ω^��k�2j�^u
_������^�'|�U@%\�s�+��z�[�3�
�9eZ�eč
+
�|nxő�M�c��N���|���B�-�\ɶw� .
9�'p�m1� ��'����殣q��P�n�Br���Qx�����_����^��}�e���GZ�kF�9�
Bts�E/�J7c��.��Xw�ž|�"78q8
���1>��{ �'_PN��"����8m�+�[������3���Yi��R���ՖBJ��!-���M�A~���˂v_���$�F_��
+�uv��;@����`�N+S���ɪ����
DǓ��K��gWb�(�Xj��i�;y�cg��H�u-
“�5���r"�u��~'aW��]N�|����j[��:�����b� ����<II
:8Ȉ�I82����}֪�����=F


��^�{���Z%uѶ�D��l�A\o8ŏ#�p0�\�ŏ

+�+��f�v�R��_�y]lJ"#����g��tr������jrU��O2�
��H���=<�Q�{T�� ��vɶ ^*���,6�޴�t���V�)�;���&�b6*�?i�BC�Q�3�G�Ŷ
��A�mc]�8��?�Y�n����F�{�����orK
��^-��&����`0z�D:��I"$
���ƿy����)s�'�q��MUb�������=�3�"�:qX��}0�Ճ������yG�x��1`�/��e.i�'��
>j�c�ژv��i����V�)�>�r1޲�s�Ƚ�����̑K��kq�����B�y�gsօ4�ׂ��X�f4J)���
+`Uq��
� tq1��m����g��Ĺ�`�Υ������h�@�Q�KP)֕g6�&f+t܅���|�=4oA�Com|��Xf&��_�N�D��J"���J'����2�~�k��jS����UD'u^��auS.2�x
+�p8����r������LL��j�&lHNۘe׆~ ;��%�	���%>���Vc��
��
+��
�
4�,�+r�PN��RP0C�a^���)%":�җV�$f!�D=	��08'��湔�
�2��6���Z���26';@YR�0��,�x�,2�A�P.�l�������.Vm�DbD����E0�+>�:\��=%��
�]&[,�G5
@H�*=�� �.�Q�N(f�`
B��X�a�>$�
�7c����}$�P"���,7��\��z;�\�
N�I4@{�IN��ĵ��Je����\������T��^�
y
��w�:K�‰)��
����~ "��6k
+��X�u=��t���Z�y���75�AT�&�v4�jU�����4�j
�Z1�+��F�v
@Ae�%F
`g�҅O
��jN�/�� D��>���̖�Bv$e���vX~MSn��
w���Z#!����%\HNF&�=�9Χ
6#P֥;
D�s�){�4;�p�r�ε�l�0��
+!� ��hE}	\P����A��8�j7�OQk�S�X �?��)�+՛
gE6��+=�\ǣ1�Fr�(^��MaTbXGkO���
*"�<���QU�0R��i1�SZv�
�@�i�iD��j}l, ���xt� ��
-l.*X�װ�.Ŗ�7J�����=��ņ�!l�� �j'�ϛ4���.�
�ɻQ>��
�,��a�h$��d��&�E���Xj����ᤵ�g�']�0�]�^_��l��-hT�r 1���8
L��!�/J��򍭉BF�`�-{���ΚT�`�����B��
�ɬq/fN���l�#�d}���{��"�R���b
.�z�A���H����_"5��
U >�|^J7)�*$�'����nv��{��/���$�![��Y����*II`�8�B1��'Wě�*mrmP� 
+��I#ғ����vf3ڻ��50J�0@�se^���}K#[^(��d=E	��Dot�"-���� �D
+����;a9%1�Y���0��;�T��0�=
C������(
+��v�ZK�H
�L^r�j	1���,eJ���0�h��w}Za�H�o��ڻUu���q&V@'6�� 
�jl(�
��$T��u��IX��"dž5�8�l/�i����|
p�IA��q�L��鼘͇^>3����v�42=C64�D ,�l�^}� ������
+b�����Mk�+��,�)ʥa��K3�8���=����u=�K~s�
�-��7�z�/�4HS�J�' Zu^��-Z��ⱛ�)�����
+׊J
+D�2M14MV��u��:\I�F�k(Tk��|Q�/s�`VQ'��eތ��?��h�":
���֨���Nm���l2A��H����ro��XV�`���
"^����+�h�,�4s_��?o��m8 �E�~�����W��U�㦶�,5��<tDӁ
,&�*�%ϥ�s���W����݀Q��b��h�jJ�)��a����&�P�����w`��K1
�d������-�Q�	֥S�pS$�Z���:c� �b�V!�7�S��� ῦ/�
��
.
��N<���t#�\C”b)A��qP�ޅMOǔ�p_v�����Y3���C��Mv܆*/~�m�I��
쫒��s
�Qꤡ�Yhv�>J���B�
������\���yy���_��\�}����󏫛�w���}����ק����W߽]�{rx�g�G�n񋓟W?��� �%-_���[��̫�U�f�^D/���K<��@�Da�_���_>h�70=�Nqв�/�#`��� ��.��h�
�ǟ�
����/?
�}z*L����gz/��t�3��a���C��\�)�L�!{|��߇�^���͟߿�y���է��? =��
bD�=Y���������ϟ?{����?�\���w<�G��Pp
<F�&��*�Ǖ�
�rb^�һ�:pj�T
��
�B*7��F�i�y0���4d	�C��u�
0 at X�Ν�.࿽��#�?���W�`oct3�D
'8}w�1��wz;�rc~b��9�[:�������n~`���a��+�~4�P��V6|��1�Ʃh�#4�O��B*
�Nn����
+g[#�=c��2�]��s���ŋ�]l����N��džI��k
+ϓ�q���t�;�a��̹�
���G�
/���� �=>H~cH�-!������ѓB;���o��I�4Y
+��h�;j�b�]��A+��/��,���{{_-海�RD77F
��&�:��_cH����7W\��J��-|q��N—Z��?�|�6�MH��O�&*w���Ć��k9���}0�Ay"@6�2Ų�b��د�;�#��?܍af�|Ff,gd/l���Ƙ�G�u/����OdD>��V[ȍ�

�Qިx�8!� ������/�ӊ��iŸ�p������u��`��c5-�8�;���/����7��;�ȯ#@�����zM5��w�G�/� �y���>�e�TDr�L;�X\�٤קŅ!�.���Ar�6�?��'���|������7��u^[zt�ϝ��AW�|�b�b�q���j����M��
+\� fٍc�
�@��cW�n3���h��c���7����g�@H�װ������A:�

�X#�
>4��`W
i�L�
�!�T�ȫ�>��
۝�уF�`Q<,t
W���
g5ڣ;VS�
h������r��	

1,��0q�>X�7��e
j
����>��=�)8�"
i����	b�
ߚ ae
���A�=b��B�m�H>��pJ,�C�ZJM﬏!SQ
P6�Đ�TR��X;7K�LП�cw����8^s)޾TBli�m	7k���.���)�Dd�0���X��Q�_�k��J�	�݂������=��sg���sէ�+�DN��W���y���`.Y�Tb݁Y�nX�x��,!d�} ('Y6��O���[Ь̝k|1ѐ9�ˆF�Q��	�~zM��T/qe�0���0d[���(+�Õ���0�-18eXRPq���T��*����ː=iZH��z��f at x�Uay,�RٚX�=���h �6�m,�6�)��@
D�:n�=��~�x��\-{��5�0��h�����p���+f-�hy`������
���nI`筑8z��s
++h�+׸���Ռ�s
̡��*TI�[�� q��,�B�`5^]@paM�
LJS/�O�Și�¶�+
HW�Zd�Zc
•��f!I�Y��h5��P̯X�[]2�q�/������I�]�ð�>�������X�#�r ):�>L<��}���
a?X|�	
4
��u�{L�Q
?��"<�$�:��q�]��D�L�Ŵ1�6��#�
x7�BY��<�)٨�2hH�H��*[9���n~��ס�٩zH.���;6
�Vx\���ɥ�)����3N�BM�ڽuz�I���,
��A��Sr�\o@�R�4���?ç���Ͽb�,�edU�+|?�0^K����"peѶ9Bp�K9f�
��ZҺ�0����|���իo��k�O�MX$[��M�_��+��/�
���W�y�N|��k��ٹ?���o~��
�mZ��3^���
š!؁��S!"#��AP~��_3�ww?����O�x�������~��O~|¿	�݇?��i�������?\|�	�|{�����N�.������Ÿ���t���t�����tVۖ-�$�RZp}�s�
+o���}n�%��	�#%〃��#��8~ޯ���Z��]��k�]$�B��t���e/ej��&�3�بqu��J��KY�Sn���k�Y_1�]BZ���
�9�C�
s��h���z���]n�#���ݷ���]�� ��=��,%��M0��n�i)(א�k�;h��K/J��+Ź��Eo�<o
go�R�
07
P$�V�r

��qa
�5L���U�
_Gx�m��i d����>����Vϭ�����ڪ��@D�x��/_}}y����U�X���y��l
�w�{�U�-i�
+5����[���߱�K�'
�T�ѕ�dž
WY�&�*k;V
�$a+:
+��-���r�m�����
��Ҹ^ۮu��K���r��
U
��{xP}�M��.6��(
kߦ�ˍ���
���,�X1��kK�
oz��
+|�ၑhS��w>��?cM�[��Z���t���9÷��Bp����Y���5����ͱ�F�'
|��c'�a�J�i�n��VM��w�ط�ⴃnu�Ͷ<��
s4n���>�*y,�����i2E�p%���)�R_�]˗���ܧ�q!8\XIG �
���>�p����KG�j(^ѓU
Z?���
�r�w;G'����7����=�<:�t�;��`��16]���04
o�/m4�)���%�Ud���p#�lcU.9�mN
�\ŕTi��\Si[
f�	�D���ǝZU���O�9��b �\Q0�;|�8�N2����
U4"���]��H�{���g5
�J��bX�NOQ��
z���]�i��7�ca{�>���v>���a�͖�.�
+#�l=�O�K
+fJK;Z��8Q_
�S��4
����ء˂}.�
`��a�� Br�nI�+�UI\|��`##���
+��@�c
�1��?℺\

Z��N�c�uV�c��FJ�B}������@�Y/�Z�m!��p����7e��qWe�l'�vf'�qa���r��]\	nj��$D�C� ��!�\�JJ���LK�vE
�M�(XK<�Xm�{KW���r���]�������
��q�@@�T�y�R����8<�_�
����1ղ�\���V���U�
?�ζ\�������-CN�t��{󠆅�e�4
�GM⭏��\sS,�f� ���vy4���V
�Ym
>� ����Ƅ�%>�Wi
WvoO��[�H��q�ϙX��
�Vl��
B���x�Ru�2b�M��6+���k��a!c�=�5
�N�
km7~o��ݔ�c�[�&�6�
31�p,Ԕ;����P�5�[&%#��&�
��8��ھ]�心XUTw�"
ǻ��M��lM�KZ�0X+ WK��b�
��u��oOt駦n�ݽ�+�8/iZ���Y�)�m֠����!k�S�M� ���;�����m�it�
���%m�k�y�6	�_�WK�^����6ۋ�ߏ�
g�0!! ,!���b4
�"���ԣ����8a,
��[]]u�)U�U6ne
cثv�:��-]t��RZ)�˨c��ؓv^ �;��#�B��@��q?L⟄�pc<�/zD���A��!ʒ���Ak���[m;y�qI�
^/��d
�Ѧ&�p�T�N�qW�
4�G
�¡� c��̞�&�>� �T�u��U�3&���r:ӫּ{
�e�Zƈ �
�à�
���
|9'
+�N|y,�!7��ר�Ș�k(���q[�5��W��a8�>L��� S�K�+�n��]#���ź����p�.
֜t���
��5ip���灧΍��xY',h2�a�
�c��U`p.[�d���U�@���;ȯ��a�O�?
n�-m	k�[�`k '�K���y�5ͥH�ׂ��w\��j���r��
r���Vv�	tq��y�pi#�yx��E%;������#�\
����q���
W���=8+�{�~w\����F�u���ʙ� M�6M��՟��6x^��&�h���ꟁ�VR�e���ʙ�h�Y�a��a�F�mSv��
+��v�g��;�Ŏ�X�g
�ŧ�ᯥ�67d�p'��
�汸�TԦ����,�m�����ps��k�|&�+Ը9RC����^'���L�=P����O�oA�^R��2"���HL�[�>�v�Cp�5�(�z+4D�>�Ec`�Rv?�,���̏����C@��ʹ�֨	2���C�=�Ă܁(��L�k
r�6�!"�v�D!?
��;�߈�,��\N��
�h+�r�Z�,����Q·�zUcעbuR2ֺ���6�\U���
L��>J�]U�į���^�E�Q�x�M�c���
��A�5�ˤ~XA�)�6���K�]��<����

$�aj/��谸�j\t����Yބ[L˕�K����/�n��Hh�8u	8d�'$��#7hB%
��X�BD���E�lc�&�g)����� !
�*U.A�Hr�劸�@�)�
+�e�#p׺r�w2
�b�rAi���bD��B�x��=jH|6&yi!����
{��)B�#� c)J�����L5�!�ފwpe
���K���
b��rIr(DҌ�A��Pn� �쫥
,�
��Ƣ�ߪ�pg�%
�>��.��,�R�<�� <H��<4�e`�6
}l�Lh�"��:�wp��
/�y����c��fL�L�t��.42�uPŨ�!M�[*ז|�O�_�����4��
��ub�W���B
#��� �Ǽ)G�xD���*��_O娙�M9*�0zgS��p�
*
�n�Q3��+�pTܹl�Q
�U�kK9*1�
eS�
+���U�J�-�������&
T/�M8���Q�C�`��0�'�pP��t���!8��
T�s;��
+��6�Һ]9j&��T�AYiSKp�h
+h����)�M[3�C,o�QANZiS�J�p![娕���M9*����
���d�
�1��	M��C9j���r�^��0�R����_��Q��&
.(�� V�KN� �ʖM7j�ږnੇ�l�Q{
2������pNO�pP
�G؄���kۄ�AW�)
�g��ah5����"�S6ཇ�3���U��&T�,���ݗ]6��������]6��-�p���
�@'D
��5A���
i��U7��pé�}iW��
H�P.Ս
+r�8�S7&fp0
+�J�M6^�
� ��0N�����8��BK��'N��W�֖Qy
�8�o�Ԭ"~��y��U�i!���Jr0�~�$G������Q.�-��)	
x�'y~�5H}�b�_^&����Rz���ko�
���ɐ4� �
ȑt�]8d&%Y�h`�.;E
	JC��\`J���*���
�f���<��נIp!Gf
+j�u
s�bF�T���J��I�:�.����Os��eHW4���)�R�T
S��m
{Xj3?_��.<�Vꑛ����E�a[��Z���>+7�̙^ѥ�Cw\����,Χ%C�J�g�UG�Ð'����W���}n?7'��f��^�
^W6a/�y����(Ix+��=���`$�c�OK 
a?� �
�+�8��l9a-������g���͑�����1�וM�K}���Y=��߾�������w������y��ݏ_���?~��O?���1�ݧ���eǿz�����7߾��s�o������?��K�����-�~��_��#μ��p>/b���*�@���D�g���3��x�
+��r�Yi�_�RmM��4��߿����M�
��r�7p�ݿ�����߾���u�(���=��ꭀ�I�7&J�ͱ���F�Ar��
�x�]��ao����BD��G��Z�=$��	����9�\U���!�b����]��c�q^=�S���
)P��V=��B6�N�� Qg,xx��.���k
+�7j����p�U��&�!a�7s��>��v
F���_+�u�e���ly�kq
�1(Vt��y�z�^FO���R:���L�~x0?������ca
�4n��y^;�,QC��}�L��q��	2�5�UpÒ�C��	C�{,��B��JM�h�ŀ��|n�a�E�j ��3�bU�L1�
��%�>����4�`fO���P��48�Q�

�!�_핢�qYt����
H-7?`��i���q�R�+,`a'����$��x�m�u�rhQ�zz�[YS�ywG,��<�m��24�f�1/%�
���!�ȝ�L��槁G���#A �K����)�ӳ@�����
���:lX<E���BM��\R?J8y9�J@��j*+���
�}[8x+�o��)g��Ǣ/]?Ve��Kz�ۘ��*u�@f�j9���
H���G{ٽ�u
a�>���	��*���^�n/ZTRlL
�#;�K��+��������s�#˱�����gwv��:�s�V�UN��A���7�.�Z��~	��j-.��k2!ʠWc�ۅ��ع�-�7�
k��a��\M�gl�y�3�*�)��+W?,�]�K9��q�ӯ�Y�
����R�*�����
�&����J��h
+��
m"1j��
�Z3��E�zi,�%��|`W\�
�#z��D��g<e�L�V6�Q
R��U��
�`�H�?��������W�&����7��Mk�R�ʌ����,�i�q�ʝ�����B(k�!�u6ϗ1f�?r�%���

RWU����uT_#��Sr?���C���Aq�|H�
+�����#�=j�Ы�ُ?�ӆ.
.��cj���Pq�&*~5����!m�]&�(����Ԙ��;���.F�������h�ցGT�Ѫg/T�P��$��2W�{1Y�
s_�Ac�
��m���EG#�������.��/,�Z���ז���H �
+w_7qj�"E��|�}���E==z|z���o^^|��/���o�>���������wn/�i���߮�����77�ޞ�yLY��⛏�_�����~�W���_N���?�eNo����� �I_z(e��V7�x��j�+�-���UH�B=�W
�A)ů6
��Y~�ժ��A���,{H�X	�&}KϿ���L�jL�iWB|�.���Gp(�.
+�/�>�
$
��zR(]���B$�[Ə�=�2�p��k�lECM*+KlԳ���V��|�6�簮��2���ħ��D��e�Y������}��ř��x�yT��a���Ӝ[�L(��3~m��
��3�hk�&��"�an�=#���+-�:
�Оd]<}I۳�^`s����g�l�W��iH�z���s�<���d�8o,8Bl�J�"0׶����z����c2Q�pfm


~t�
+�8��l����l��42�c#4
*MQ����2����绠�Ls(���
r[�.��#��|�é�>��j-�ۊ�kL뜀
�d:��$oC����xW�VT�
OC��Mȹ�}VF�QC�r�%l[Z�~]u��\����*�����
�M�O1���J��y=�M(�E�{q��NAN�Ia�o�7[N���N���cؿ�_d���
�xl8+)6B�+h&��i^{��g��.��z���`	��Z$����ʬj�U*)��o�Pjc�����6��r�%�V���^����2ץ����`�Y���ʪY+����.:�����K���2Z�lH�4J����l�Z�o�N��jZ
����,6���
�q�6��7n���2�vc@��e׽�D��nq���.�=XΫҠ�|ʋ$���޶�e�]�Pd��VM�
X�»�*CbOY��pÝ�CT�4j�!M�V]��!�ej=J�M$�ЅC�N���ɕ���qL�YYO,J���F/ƏѺU��k��5��aJ��sHX���H>�W<g:,y�>�(?.P!���u��D�}9-s��
�����w��
`1,�)���F��t��-y̖�K��>��ZDe�B[5�*����AZ#�#��v*�u�9�j�v���N
W�i��}���E$e�'�#��$~�3h�G�!��m���C9��__9�/PNE,��V�lPr���6�w_vmR��zN� [...]
+�'SQ��P�,d��[)��jó��U���6�q�wF	H���z*�1�x��CS�{z{_N�oz��X�x�O8m��Z�hf�h��y�_!
���C����v��
G�㧬c�
������X,���ޤ�ֳ_\p��Z�z��Ie��%&~@�!1jl-h=PBp��گ�r�;ُ
+N
̧r����Vy���J�u62X�����
)�逓��@���f6|V&��7����N֯2P��k���<��~~�"���O(���������|������?߾����x�׏~o/Q
sM�O߽������ӣ�O�\_�y���Z���;Z�G����{���P���ѿ"S��m�C�:��
[X %Sӗ��mNlЅ�0vq��}�O�C7�x�\D*
O�T���ɢ�M�s��
{0_�rn��,�FI��p[Y����ZL�2��nk�I[��
y�h��׶r��͙�{
�zL�;�ӣL	|+�$

�*�}�k�QG��2��PG�
M��註Z��8ǜg\ݥ�o��6E�w0������m��
+��i����
��G����Qu��P=�G�6S���Q���si}&*��w��lx�q�&Kv������M'm���
M��W.٬��B>l��h��Jy$���G�Y���x�O�47�r�)����5�	��B��!	��;�k@[��%/!�[��c
�Ǒ^�U�-�)���;0��X5X[�d#P��~Y��s�-�!�@_ϧ��
V��Z7ׂ�IN� +h�-Q�B�zZVwi�m�A��J�w���b�1�fHH��@�
�4�K�xrf��
9��C��Y�!2��u��H�4�5�й��⺍�y	��k����N�|O_��R<F)Y�Dq������a �b�pSC��r0�u�� U��	x��D� ������X�9�ö+j<�V�
��M@&U��1r�R�kv�y�x)U�Qس�σ�i�1rJaS;������9É�0�wC�[�,q?U�}��Fqep�E�x6�S�(�����`�!��e/�'�V�zʍT��H�e�#�����T�$H��{Bu�a�=U�G��*�Q�
h��Ց�T�bڸ�~����
+e��B��x�ut5��Hv�+�Rݚ�����
�ܖ�� ��.o ��Ҝj\���6 �H	���m��B�
��Y+��*��"�Z|J��^B�����&jS^�Fe�	XLJ;":"n�6P"D�\
��c��*��,���W
h����!��P�"fc]
���g��7��U�,Yn���;��Mp�e���ݦ��B���,>��*��� ʰ�zoѲ�mlp�5�d��$+XR{f-O7�JC���ٞ���P;�Ж�k��m�Nx�{w�ł	~��_���dHz�e��#.���m���
�E9N\�p��Ʌ�}�dS�K�D��v�C���/�
��
�j����Tp�x���[Qk���,Wf���
X)s|	
\��CCB})
d?�P���]Te���	���� c�!���Wg�xe�Uh���t�ױ
�:��f-zM����
2�L�.�";�=�G	�Ǝ
J�������A#�|#����k���?����Y�W��s�w��
��7��b:��"kC��m&mb�X��X�Wd?	�����ߋ1�R�S��[JW'M_�ˀ+)�
V�.&~n%���������K�N��Bc�m�
���m�f�4vpV�/p�6����ـ�?�M�:6�8�� b5������
B����}
Ի���Q2�G
x�)
���30�Q�=d��' xf���EeċMv��F��C�c����S
�AZ6�Jo-@)n7�Ch�B�&7���c\����/�� 
��7iA
��������
+
+�#�
/��y��Qba��g��e����A+ͭ3�*e8�¥&��
+�
.n�q���ρQ�l�r: ����˒��jկPNE/��qu��>JGQnn�Wt�bP�����P��+j��b�M˜�
F��!2��煣��%S�}s����f�V$ ч&��>��x��H�c�}���k5s
�A�W���PӴ7=����}�B�;��-}�_�w���o	A�,��NP���|����ʇb49b�O�j�-(u���`-/UU��i6����+G��[,i�Þ
��̞9�͞~��ҧ��g �"�&�
+lF	V���J��P�)h
z1���� ��
�1�"��m���D�ԡf\3L'���\��R��~ǻ���T���\)�l�
�j�������Xf_
yZ3F������|��w�u�p����un�cl3�n��3��vNS�bN�i(y�;�$XO���7��)S x�A)�V�-L�?�kݹ�f�ᐭ%����Vl���",���
ږNpw��;��֏���g%*�L~�,8U�;��
j|��8/�Ki�oen,R��CF_�R�C��
� {e>3��d�|gX�̊�6��^�����̰9�<æh�
��ufؔ������h�gX�g�y����.,U=
G�v�����p^0�����2G���v��z�GM�0χ���G�6�.c.�!"��I�
�+KඳO
��c8t`12�0�ڙ�8ء�$u
����|:��$~
����xD$�ٮ?�kkk��[��yZx�#�
+��~�l�0�����G���JC0��(L�¿?�ᓁb�L2Ow���Zj;�*�@
����Dڌ��ٕ�1���&��'�����8v�ߥ8�Y ����'�{���0����DBp�^]KzE�U��8@�F`Z^$�j�ȯy�soл��a@�B���9�p����UK{�ԸX�Tw������g��{�z�J�^�:��oʱ�'j�]�f�
����|�q��@����(3��\
+�7�
�BEƻ6�K2)
dG������G��P�mKP
�ĸ���#wL:�<
Ybʻ#
+n��NW�4GCeun�
�Pf�;}���,�j}
���/��fsx>�������
���])i�c�r�r�x�=K��>.��)~�k���CM,:h=N��
N�
�S��+\��Ov�:�l²�]ꅩa/\$��G�
W�q��4���'�S
�kX�B<�:f�1WP�Mͫj'�w�H�>�Iz�g�Iy'���Y�.��Z��(�]�P[
+�
���Ce-J!]��Z�A�%S7��؉��rz����a�
����L��bq-�f�Y��hA���zW�Nxu�T����|���`�qUvV�V��bU��hS�g�P�
��O�1(�"�֮��"黌�8
' E����i0[Q�Rh_h)�����a�B��_S(�i�@� 
��a��n�L�(���.z>�~e\�ok�ߥ�I�nL	p9�k��i?o�J���jL�о''�)E���(ɨ�~:
+�;F�>�{
�}��{m������0�`NIZl��d@&���
U
~,�6F�}�eq��৿�������R���'��|�;����Gr��F�=�^��!��~8�����sZ1�ˠ
$qτSp�ok�,���4yC������|�E�,�b):È	]ߢ\�b⮠'��x�p:gia�Y��t5u�F.@����
+Q�:�Xш�R܊�
��d
$���u��nx�)m_ᆫd��B���ǩ��lꑭ�����d��c����(�L0$1��
��ěըbXQ�>ۀ��\U���]'O����}���
N���E������~�T�v�Ɩ�B�Z�~>���
+�u�]�����F;9I&�y㋣ �x�mY��xC�Oiw@���:�^���MA@������fU�l"�����n��^k�G<�~��Z�C
J��
�)3ЮM�{�E|ބ;�����Mʃ�.~КVƖ�PZ{�}~q/s6hB�ב_�MĨA!�k�X|��T�NS<�Ï����N��S?"�v8Jpέ6NL�)����<�!ɻ\!z);�쩥��㟘e�ׁ�Ͼ%��\�?6�{��Z[(���g�E�ũ⊟��1���Pɉ�̝����^���>��7@������^K�j��.��?�-�IL�1�iFk��u��:��=�[t�>��W���x)��𳵬�b��j� 6��V�1�$��c�?u� �;�dFXг E6�yU��Q�E��YIJ�9�[��RdC�
g�/	�X�	��v6�~5	©�����]�Ȳ�8�CA+%���-����@�R��˒(. �U��
��<�S��80
+[�	�LJGf� gk�85<�^�����W
:�P���9�\h�/u�L�&��)�4_�Tӓ�n�,�"���LJP;e�w҂�PI�����>.,@�u���m��v�u���r�f�C�:3?�)�e|TS�����Ֆ�v�|���]����R
 �F]���|��'��}��q��m�T��`����Aŷ5p�
{��
��=��\�:�����.���^=�:>�D��k5d��s%t%�u.�5i��.��c�T��|)�9�
�C�O]���{x����ҏ��
+w��H�s��޼�7�G��m\C�T�������/zw]��
/�@,�hM�
/"�J�����e����ޥ"`pu�����
�*$���� ���&!�Z-��� A��>0R�33��iE*�5�}��'�Uqs+���p�GF���Wc){�U
,�ydIt�-[{S_|�-�5�|���'�%�<VW�wc繁�ʈ����I'����ࠢA!����,f� G�� !
�H��@�@�?q -�k<YR�\�{����@�H�-����#��'�Sjی �ض6#�v��?�^m��9���c����1��D�響������W�E��
R:[I'����
+��q
��P ��^�s
��>�S��6�X �fm�l	��'ptt�{
0ے����h|�O���"M
�wA����.J,S7�j�s���EAg�+M>"���e�����(י�V�=O ]�#��EKz�ձ'�
{2 ����eu/�WM�ې� �������{$1�
�n���Q0W6L���vUk�b�}B��;�����|��S["�l�
��[���vH
�$�\��i5g{�A��̂��#�1�J+���>���
�מ�J����
`��^!H�܌�����T�{�����9-�����4��1밵5�
͞��|�]J��	�$���b$�k
҉��o^�?q��x����Zd��Q�U�{z�N��
�����V�.�F
qB
+��j�D���dx�U�>K�t�9
3��
c~U�\��sDGo7ix�/�*��;&7v&�g���c�1���i���@�F{��a*�bZ�~�elj./H%xJ˒K����v�b at t�f`2�
+���C��q�+���Ҕ�#W,h���vi�Tmu�
����ZR`prI;)�
`p���ړ��o�m?�VLZ�
8�u��yI߻m)�9����k�~ھG6����J��`��e�ԟtb�n�+��£P+
��.���{�~�I�������`����_��[ѣQ�-�t�)��sߕ�%�
��V?�v0�J\'a�d(8G�I���܌��V['���1���
8s����
��ƣ Xƚ���|v`e������{p��y��캒�$���	C������{��������Ѿ&g8�7e�e�|ii�+�|�`
3v�͗�i�50���`�0/t����mC��oz{l����g���` Pfev
endstream
endobj
63 1 obj
18796 
endobj
67 1 obj
<< /Filter [ /FlateDecode ] /Length 68 1 R >> 
stream
+H�tW;�47�
�w���6� )1��/������%Q=�lP���(�ν<���ׯ���$��7�O_�a�Q�4����G�����
��F2�L~�?ڵM0�jX�OJ�6�/�I���(?��ם�=���e@ч����a�v�U��(l~��N���.y��$m��� �� x�^&.I�R�`i_`�h�
�j^g׭��2!=��z|p{�>--�/`�H� 4g�����\t™�x
�ew��[1(�i�r���d�=�́6pɞ/��n����qNp�}~�8�Њ~�k���v
|��
Ӈ��Г����R��ֺ��4�7; :eOf*"���79�W~� `��/P�^�9 s��0w�	��P�"�@���L�E��sԊ.����
+���*�B!
I�Y�\
��S���M�`.1�mD]u�z]���\���
_���X�\J�Eǫ���; �<��
��"�eȞ���`��q�$�R�ykF�;L�A)7;��X'�|���,8C
d��,+�C�K�©,�j&��܀
+	`y��°"��N���� vs
�*��hց�-��#
}�g�0��/m�wܧ�U���'���f�J[��$<�(�xa�r4��t���Ey�eM�u?9�=䮱?%�'
#�i��N�Y�#�p@��8,v�J���g�S�
+b>M,P�[`C�6L�a����"�&$�
��'V�3-c�
M�C<2 �����2����k*�G�[��;�����QM:�me|���+�YBf`�ĢZB�fd ŚS�\�B�2+�B�Yt���Gd�%�jY��k}61$8��f�f��9fE� U_����<����`�a��m���+}���P���V�Q 
�qe�2A��;���$��\�0��!��-�ֻg�K�@�ދ�B1/�S

��ªԽ�R���'!�6�-�F���&�Ջ�b2z 뚚7΃��?���b g
��3�@=4fn3 �r*\��e����4;��>�eLi�=��j���0">�of���N���e��i'��r����s�
j
A{���>��
5t*Dg\��L�1f�’���U��-?v����������[�,%��bҚ���:�����{���ա|���V�VS��J��� �	nJ,�#��"�ԭ:����e�l�B�Rr,c� ��R������ [...]
8LD$�^

>�v�▩N)�-�ӱ,�
,�izaz����̆�Gӗ@��C�'
+T2�J�V(�>q��8�V���5��!�g͸���4o-
Wb D�_��r
ﻱcY�u�{�7����Y�ҽ�YLˤ���,Unh�	9�"�|���(���49��}�I9��.����W�����>&�\�޶�:=_;)cm�I�r���x�QAY~�Nj`�B��c�O�I���4����n�;i4!��޽���Nbp�@��k���
>�'.�\0ݖ���V�X1dfᬥ����4�q-
�u7�޸��i]"sA�
���6� �k+�
�T������鱏��&�;:q1
�<�i�^LCz��4��,�!�g1�`XLo��x�^L�	q1��rd�rl/[!a/
��C�?�
/�qv��Vҵ�T��avm��%�|0��bz[K�:
+>�2u�	�R��e��U�nk�E�r
+
v���*0 
%l�2�,$@f�P����d�53�۟���ѧ�\�������8	[�'���\�g��c�
l ʼn6�'�kd=و1�c��Z:�T_|1U�r���-�ȿ���_'��KVw�ꭽNi�"ͭ��hɫ���=KX��&�t��ׄ�Q�r�_�:[���k
������
_F���
cLO��pw��56��{���:��^�̮gvJ�6�O�*�
�7���i�n�������k���,��
�yޙc�R�)�z�DQ�H7�����
�༳��̩�[
+Uk{����`HUq}�ێ���|�c�>�0���V��r[ yl�-8�����V�<��z�I^-��ߠ�[��׬zIlR� ���T��d��I|�
'�-1�W���:]�C�t7�
+����A�i}��j��QP_��c������N]��l�'���
�тo��[�^�w���ݥ��L��G�v�1�U���P��!�������L0�2���z|�A-�g+m%�uh�m��������u�㶭B� 6�R��x��c�2�6z�c#�mP��`��e-=����E%�	�I�{�"�5g\pp�P]r"e�
+GN ���KO�
+��[O$���$��L��$�z�$�p	J��Jp��c+����yC��֗� ]
�R�W�7L,��҉F(�8Y��(�R^G��g
+w�*#Կ
�{v8�v
mi�{����; ��Wy��b��� (�QL�O^=+أ�|	�
A9\z��z�:z"� s`�ڳ�Q�i���<۾-���U�}��}t����fm
��[�x)��׮����bw^;`��Z�g�
�-4'n�!�g�
������r��p��b�V3}�&�ozX0�fº�H/z �Y�� �.��E��
���]K��9@��v}�;��.f�y	Į��������%���p�Q�ۀ#g�ڣ{ǫ#�W ��^G]v�[D�F[0�|�	�l��%��W�@ #.x�%�
+f�/@���W� c��
�S���U��Z���$�_�X��qZ�]���[ѦV>��?��]G����[&�$R���i��

�s����"���)vw�>����
��>A���>䂘&���-��P
�p��M���U���̢����i
��$�ۓ�z�OB��z|	%�f"���@
0�)�A(!����~%wb��XtI��i���i�կ�I�E�

�#���&Aab
F�;�R��!��c���x%��*�?L�s��{�R7��P��|�$
g⓰��O�K�g�=��D�D��N�ZA'���
�������Z��|�ľ��C<M]�� ��>|���OmI�Ö�qɖDlɖ��_'c�m0�W��?eoFX�
��R�G�
��9Z�q�N�ޥ��]/F֙{DmheF�76������U_l��(B�Ԅ��PNL�ޥ�"�X�m}���c�7ڵ���ޠ�]�g �a�t���uPz���!����+�D��,�_pE_���{�+��(Ka��
+Sq�m��#�\׻���r�7�m�fpG�~Y^W�F�k��Zt���R��(�Z�k���uy1������c����g�F}Y�&rp4�,�^Ɗ
�2(�j�p�^��J�f�|2J�ʦ�茡��ѯ
�c�[P��r����dž������Ե�Ī�
�k�����'�/޴��D��N��O�nM��CyO���"�B�H�p.`���ۢjwh����jj�С���n�$�g7����t�"N*�D��3x�O�.��}M`���}�w�
�C��㽽�/���NH� (�]
+r�s=��
+��PR�W���/�!�V���Ê�$~k��ЏNJ������m:����c%����nV���|'�`��3�������5~x+jL��
���W��|���Zb�K�@Q��g
+���ݩ>�i��I��<{d.1��v�m7����e���"���m?�4e�F���>�y�țP8[��C]�5,	��TY2,(�ٵ�_�T�x�_�cA5�e��Q�����j��.���c>ñ �t�b���ɰht���ZMp��k����+l�+q�ᑁG�#[�ӯ �m5�@�4Pk6�����1`"(�B��¯�Ӟ�.��o�sߓ7,ߋ��y�­�aQ��j˷%�S.'@౸~.ퟆE��ݰ̟�E@�4,L%��3��aIdÒ�
Ò�u
K�@nhL�"�a�
��׺~E2���.D�E|e�"X��ە
f��p�m���Q����xD��:�CJ��mx
+{u��S��5(��V"����mlf�
�#7Ĭ�:ǧN
����P�c$rC]�
�䆸�eTՆb��g~d0+��i�0q'�_�5ur��e��_��뗿���>H1)�M���O��z����3�±_��[�X�t�g��i x�t��
+��S?vAf4�&.�(�=���>L_uP���^��<�������O�#
�Y8d.��n8�Ĩ�o����<Q�PQ��s'�JYq���k�2�m��X����	��u�ƒҬE57ji
>
�b�[5V�vam��Yͱ����<�f��1K�h�d�H[[C�Y{7�1�O�w��	�u�w�"~���b���}��X��H�:`����U����9��E��0����� ������� 0j����
�ͥ�œ>�Ӷ�9�ja� ���(VU��S��SBu7C��j`���E0�Lj�?
��
;��� �j��
}�
�JQא��~�Z	6���_
o=�<Q

�����
����%$C�*���J�Zn��ݖ�+j�{Z�쎍�-*TAwAr"��k��-�� �u�
���3�Q�Q���\$��^AK�b3�`O�_p���'�F�� J�Ϛc��qv8����=|a�ޗ �c�>�9c�ZiH7z���e���h
R;2Q`����L�g)ݘӞ��Ʒ �h3�o��A�ǽ�qU�Z�;s4��d`k:V�Tg��}-���|�tv�+Ϟ��1�G �e%p���ù}��y���
��]
)$%4�+\`��Â��>�P%W��Z�����/|����$�𰓼�@0c�"
n�h�VA�;u��D[�%����X+s$�B�0_p�i�*m�|W
�1�HO5G���\�’�l�
��4[�B�J��^;)m��6>�g*v~�MKfO�R��g�H���3 �QB,r���b�;>���g
�O�4x.�n�,n��s�����=�� [...]
��$�����_+�=� s�l�~�R���bE�ق��Jud���V����=,/
c����P��@Ƙ�
�j�#�۽�����7�s <�YK��
R�#zX�K=��MD`v
���F�
Y\�Ue_&7�;FW��RK�X�ԣ9U8/j�;��Ms�pkNm�(c
+�7
����������
1�拫�K����1�X+6�%�w�����7#��ۆ}c�YГ�d�!�=��fٖj_�
+�����T�Зa{�4��i�z��=�
x�*�ux�x���x��|@�>w������/�.a)PB
�L`}81=�+�]J�dJ���
�t��E�^��#0T;lX�-�{�"��l7�ɏG��c�v5>�h%D7����.˻�~��֍`��ӥ.��gꀩ��3��K��]��u6���9�'uA��0�4�����pQ�ш�K��0�yѳP��<�����ل����(�v�q�כ�|w�{�3C\��C:��D�)بܪ+"�����h���x�
i��zySC�S�6S��6�Z���8-ߪ�D0z��Fl���^�6�֏�,�$��{��6��
+�'�?HA�ƞ�[�lW��])̽����w!^��'t:_б���)�@�ۑ}�A ���
dP5�
�j�Z
���*^�.Ө���w
5K��U��n�8 �Z+Κ�-��mu ��Gwc��ե����3�
 �˧�
��a߁��p�GIL94M
xz-��,]w�~R����[+
����_��ǵS�����&oXb�=
!~���I#�K�#ڍȝ1Ap��
��!�ޕP���%��u��{<o��K}b5sd��Z���f6 -�k�è�d��
��+O�aT�2�a����i��y��
@
Fs�g�W���a��&]=�
F�	gS�Q� lKV�.�w��v�̤�%���=��a	�6�-y���C�۠�m@��H�ɵY�e� �Wy�����6;�J��2{�6��O�dn%,����
B at T^�4�Oלc"T�X��7x`Jk� �8�Q��O%<lȑ=�D�w�6~�-s�����~�W��ܦT1�bn����nZ�
�^�	�Va
�'��W, at q���9��c���3病�iu6��}���o��]�Z=�24����
Ԕ��XR�� ��Q@�sR�����7�dP-�� 
+
�ۼp��V���ֽ{�
���BV��S�=���
pS_Lg�$�r�1�CCd��Őv���\��S�%"�
+}P����9�


�L�?�b�L�.�y�Ter�K����
�JD��J񾊃
+�P�,M�%4XH켟K��w��A�\d<�o�3x�h��2jx�{gFE���K���� a�P
ڧ]�l���E�ǃ�`:��Qw�c����,�X�W��
���
�͸ܢ��9yC0����!T��D���^O)`��{�
="hY�{������4-Sܦ�#��5��ƷZ
�R�fW�\ݮS���
+�y�;�g>#DJ�3n����$�9
U�Pe�����
�)�g�M��q7]+��y�<�IKa�jH��-�ŎѴ�FF8\\()�@ؾ�9Vx��
�A��۳�@���Q���k��%�B��M�{'��0�Ϸ�sBَg��R��ୂSJڊ��S�d�ӱ�-�PH;�x��@��$7].!�"���yP��Eհ�Q{�6*2t
+�ɝ�(-"��3�z�S�����C�����9F���"#�p�v}�F�Ҙ2����2���l�R��z ����S��ч=����q��(��:]V�b�n��Np�Y�{���a��W�di�8��
1�K!����Yay$#�]\��OI���(j7�?�H�=�g1������R�%�`��eȬV3H��Fu���e�:��f��Ŧ�KLƝf|�f.Lt��_¢2���!����
���uI�L�0C,�r��iw��^�>4��ǒ��j�]�tq��f0;t��MC�Vu눰xq��:[u�.�<T��>D*�{�m�>3ύoO�G�߀ŲS��Z�{�v
���̟i���(�慈l����g*��[J��
�ֵ'F��ʸ�<4e�%�Zu�|��C't4�I.�L����T�r�Ӌ���]�Ǚ���	�� ���� ��K[
_�h�K-�ͷ��/��8�l��l��7�L
��ƻ�
{/&f��

���s���]eO��&A�cFN���wr�q������#�k�/j���[��?��w
�iEh;A*̍d�C�H
ϒ�CwQ����f��l 6�9�W�Ŏ閭@;�
+�>mR��,c
U5A�V&��u
��&�C-�#&�2x������ӾB�A��]�4��nΙJ���.58�	L&��R�C�p����%pJ��Hwg�˦N��H3�:dV,�u�u_v�5��!�|~�/
[V���h����A�����k�Ye�t�A��e����e>[��>b���� ر -�\O$
�w
vVW�9J0�\�m�_
	_`N$��٪��Gm�mLd)���|
X`q�U��3vY��
v��6ۛ��O���}�[�m���kzՋ�H�[Ԅ<�ZN$�V���i�m�p^q��v��˞�,#hj5��llN�|J�Q
�݊�a�Dh�hUd1A�b�+�7m���}H����� ri�V�{<��Yvv�r��~�]�-hM�<��P�����'��u.�\��d���
ܥ^ց���6�ҹS�aܦ�>
�4��˄���%��=��
ǛJ `�� &������N�k��oؐ@����6�jn at 0���8��� ��]iT�y��qضi��<�^��_�|n��v�v��_���0�h�G<F��45ڴ/~��~�b�&m�����&<���c?7V2ꞡ�� JӬ�^̑t�2��%��4$J�:�_(ʆ��k{̱��
��͞�.��ҵ>�]�F��W����@^�Q�(q�Z���>��r� ��b�6����ś۸P�J
�G���|������
++$��⧂(�ڶo_%ޟE)�0�cw��VV�!� #^ݧ�=O�C)�]WҢ��Y'���&B7ޭ�TS��;�Y�t��g��0/8
��/�
��m���馅��lD�#S��k��
�K?�2j����'��
�  O�-��_m� .&b���
&�~�00�B���$^� %�:
Ў;�_��]�
�n�ښL�����H�>���5���d#Ӑ���]N����]y��+�04K[�xA��
�]��6����Dc ��
�ְ$WVO4u����߭L+��^�w��7j�\����^gl^�ǢK^�s�Z�&��jX�i�_�>�rV��R1
�~�y���|1|��7X(O���H��5_��W,ڱ=
���5��@�o'���d�G@�m�ύ烍���� dC.Q:�5������	
6��	��[7D�#��f�P���W���\+��k�a8MbT��I��lH�.�LK�quX��,��-����K��拧�.0��Օj ���V �$$Ѫ6� ��Є�J [...]
 ����t fۙ
+k����
ɲ���;�-���b��r���͹�$6���Y|$�̡���
+�'�#KO-w��#� |��	#p�?�$HpR��
ߧC�&e��fU��ڧ��
����HC�� ���l�ק/$R+CKK~jJiɔf�5O�zp�I�q
+W�~�5N ���"���H���o�*5��� �Rl���f{��i�Y;����8�*`�þ���V;�
�
eVs
������sD��Rp��%d��G�a�
�d��M94�@I��������Š�tsƿ����wV��ƻ
ty���T
h\:W	����8�/m�L��D��˲+f��IfȨ;�D��tI^���"k�ܧ[0ӏF�~#��F�.�>*�s������u��U�#[~�3L%L��(iV�"��@
J�4&��p��O�j)��J��?E-]�
	ֹ�����8C{l��	lh���%�
mo����/#]G�Pϭ�=�![����Ѵt��O3�
��?�Vz���D�����™�(���f�<Nf
�G�,5�#p
i��{���
�<������C����dL�zt!e���C��
�?XodPKԅ#��
+bod
�1_�W��G`�Q�#(۳��!�2�=o�P�	��ܨB$
�P�f��%��ԙA`�}��!
�<�4"pr�ܱ0w��� ܆G�ӽ2�2�9�����@�̤�o�*NhG�
`�"`6��FB�
J��k+n1wx״ChāCL��p�6D}~�8�I��k�
3d���k���� �hY9\ k��8��_OI\S�uђ�}`LzoYT���� ��j1*٧0*���0Ȁ�����1?
+���U�_�L7�iO�ܥ��~~��Q=.=�us��ci`�vH�< 
2(�M�@�%`&nw!ы�~7�Y���P}3��՞��[�}B����YJ�6�H�M�(�]L��s�֡XLs����
�bh�d�`'�Mn�:u!8����4uV
pz
Otԅ�SLđKo�G�CJM_��U3��/5Pai7�HG��Jf�֐�r������N>�ɀTa
�
��>3" �1��R&�_�L��E�[YK��&�+�M m�Z&)�1U��d�.�FY;��:���Y�Iţ[u�>
���
+�I~��
v]H�,�>p�ZNY��"ҽR�U@���C��z]�R�h6MM'��t�c��c� �~
ݕs

���g��T�q8�M/o��@�
ܕ0�fuח�Pc"s.[�,�cImS��[�Z1�.C �_��rMY%�T�垸�+�HS���^!"�X{��S˼+~g�yXʏ�����/���
+
�q�����&$IJ4�W�@�*�k/K�`��a�6ez���#�����/�`�dAcwͥ

����a�),
|�؆o�`�y����x��3�)a��%-�&�b�+#�;?Y��Հk��}�̔��0#V/i;�o��u��,n��]�L:J
G5t�D ��
����	�Z���[
+�&�L>˃�GӅc at k =����n��Nd#}��*�,�����|��������Y�������������h��6)}΃��Ÿ�HA��
����&�� m�T��B5Hc�f8��n"�#���U4�@�3'R�Y���l�
=���t�V27B` �NW�7T��,I+���.ɭ~�8�Ꞷ��)�ڻ
֚�
���jddR���[�eu��
�!��0�
aa$�ff
�P�E��mc�֬��Z�ft����ͻ�6<�ҟ�}���J��Ʈ
+ at Hwr'�w�%_c�'R�#Z��i
��{����U�|d�[�v
3?[n�G��X��� }:��w7�p�
��#EV���M%�E<�J�!���$�<�2���
j9�=���x_�U_��sl����62S�Hu���ASǻ�/ m����J“���Jz�ۭj+=�m��iX�T�~qL�]���EE`�pS�3XF��Vb��T*ˍm��vm<�}�Mⵕ.��V�w	��=ⵕ���1�Vg�w=�҅��
�:�{��n��r�㖢�~z�FOŃ��u
�p�]e�345�f�
#]��_#�mn��
+Һ�
�
+[ޟ����1RR%^�a�6��7�4�������"�9��
�a��*��C6 at 3��[d
9n�C��=
д�׳��Sw�%'=��zxNU~)�� ���jD�s�p�l��M6�xz]�JӀ��iY�c�;,�6kHˮ��cYk�}�1jxn��G��X"-A��Q?� ��_�R�B[3� e
�4��[��$u������>�@*Ԥ`=ʨ
QU�5-	L���S�����E��<�Yȭ6��7ctѹ�X���+͝�nb�i���1�J���5R!��؁[Y�|=-<���iK��M��+�m
�5%�55-�ƪ��bO�#��Zە��%� ���B�x�4�Y��n��
z�g�ܥH���8Х������9�5\���e�F���Q���:TE��
�Յ���m�[Z�]{�ߧ����W�P���=�q���'�t�w&���E�}Q{� ���U
+oʪ��Z��	;
f	�;�
qw�;�]
+B�s,ih��̇��R[�&�:
�
L�^ ����,cw]�:�~3��!n�m�8ܩ:O4-&��W�v���}3� ���W+l�� ���xD.\M���[S-vy���G7�]�8p4B��y}�H�vI%���\qx����[;M���"��x
��{��8��l}��A�5=,2�C+��p��I��{�V�YdR�8�E��$�_���u���bf���<�p����B�uƕu��# K�`�u�i�}Q{� V�g��]/�X �Dn��D�
����G����吕��AOu�pVk%�3U{?\Q��\�>��k��
4rq�d�/~
�;�Z=[��"�D�+_�y�c��%�W�m��Y �\�G] �s<% Y���>�ϪX��N؞��4{��
+�XY9�Ŋ
�α�mt��-��޺�H��ȧk�����댓C
+��/��K,n��B��KY.��m����W�r=��ۏ�«�E�����&`b���K{�"A!!`,!�Hy�f�X����z��~#�Yht�ouuwթsN��{��r'�aP?y
��������bF6o��@�7�S?p3��(���Ždg���m�r�hɮ�{v֚�܆y���ܰ��u��m�#~ڷ7M���
_
��F��F�E�Z}8�Z��E at Y�D㤈���5.��qĒu�#�<Yb�ō%��܋b%��S�n$�4�IK0o4�
�&�W�L��K���:o���M�G�Zz:����r
,�x�V��܋�<�r<���G"
�\�GQX,���<�res�Y��&��;ib�&�}�h� ��V[�E[Ml�.�؎o��O�M�:N�H�oDo-��X
'p‹d�(O�m��5����'~Z�
_�am�Y���f
���0�p��"�?qlƋ2��
�:��!�Eej�N�J�����]����ti���7idS���\��B9�N���:u�����\7=�3 j���tB����������f�q?=`�l_��'oL� fȃ�f��r�j�+��>��g�`�����Z�h�o�jI��zm�ZNЛ�?�
�U�T5_V�rY��i�\��6 �� Sp��
\��
�P�9 E}���2O�^n`B;���9F�� ��`�`[
���
�a���͌
S�t�8Ҍ����
<�P���0�B
2�N�y���/E�8���6C�s\�ݰ�(�@m�|�z�(,Q�X�.�\TQ��5z)����l�C%�b�� �$}1�Y�=�*��"�$/d��(U�0�k���^��P���V�&C4E�5;�I��ː����@#����怽����W
+g߮|�&��d����|���\
+B/7���ꝷ2�A��\$�	��Ā�Ԋ7��T�
�u�"�3\
Z���#
+���gD��rpf�e^�~v�m~����B
���6�, �Q�?T/:ѫ�@<)��`Z�p]k=�$MM�>���dM9��E�zi+u
�1���Y\�F4�h�	Q��u@�	�W@
Ӱ[gǐ�
I�� ~��:��XH38-	CW�
���~��
_��I��}�b�P�<
+xX����}�^Rߛ�@
G%�)� ��U�M���>�c������[�e>�i,�Js���xb�<���z��籥���v�r;���aw
�X\�ş�P��s���|B � �P�=z�!�G�s)jُQ��1!Fx�
i`����s1z���*q;2#��v�w���b��<�w��`�;�,��vw
{��<�v�g;��~�x
ڵ��)�.��ȷ���4P��T{c1^{)��;�a�~U߱����p�A�hӳ�Fi���I�����d��]2%ɬVq_�˸��/��!^
\'�4o�+v
��zWlF�MB ��I�7��&!�'8KB �?$�nG�aZkEg���%����q}���7�?���������w?~��?�����>����F��>���/'���//�?}�p���ބ�ۧ7��>?��� ?����o�ۿ������?�9\���9}�N-UY�.�@%�����	����8by��~ϩ��L�~_ܩv�a�
�
��7�f��
jk
�aQ�x�� [...]
�}���sK�mʱ�˷%���L�$����f0�l1s�e����,�q����85o9���1K��쀗���
���˛T8�Q� (�앸�c�X+>s0V������1�/��6)�j`�Ŧ����
Q%�a�6\��f��X�
*�D/z�[�㢛]pMp�UH����Z\���y���#L+n�Y

3�B�B��( s�*%g2�b7gu� ��8��0
�نuf����z�
����e�X� ��� 2DA��<A��u�= t���e�u<�jz�B�y��"�k�<�6o������7x��U�-�.�L�FQgv4lD�[�Z�kB�,�x��P#�0Zl׫)
%��w��f��x=�����
)��	sv2���Ǡ_ ���%S��C��WҊ���q9#-���"�(i0LcLj5
��1����`�q3��dg����zL���5�����
��*���0"������~��ih

+�+�y
�+r�m�9��M���U4l�L���1�\s�Q��{{&�W���"�t����ƣ0�h��i�u�;F���_j���n�D�
+X&��j`ߒ�=^O�2�Nbܜ
+������J�@�$b4���}|��"{u�{�׫	Hj���q`�
+yc��)X��h� >F.�
E.�m螼�:+`9FO�O5,0��S��7%(vh
gޕ���p37
'��nf�t"��d��E=;�ƒ�G���p�:��P
�����K��=J%4��>-C�G at cX\��5V�Y�i�|@�r
\���&��ݼ
��ub.�f)̋�	k�;\��� �[��l��:�蠖��i*�=�
Q4d��	�d�dMȠv,@ȥ�"� �9�a�G��r�
���r��
��Z�aWm����5� R�
+V�4�M�*{��� v��c�0��,�p��>��,@�^�n9OC���p��v�u��
�i����=J��� ,��X�A+@�9�W��`śh��r߬S�Y�L���
��4�dK��
+��P�ػ1\1��aѴ\�[�sss*�`�{�!�Sd[��Ӄ�����F���55�=��)�>�������
�Y�nC���;���LnQ�M�L�F��=4���JQ�,���W)+lo��]�L-:o�<��ـiix�T�?��
<�
���"��ʨ��G֛͐˹;�7����y\��%�8�����I''h-���]%Gv�0,�	A��}�,�� �욹tu���$. �Ž�޺e�j���.
n�����]T�6���s#S���O���M�p�C���7��#D����w��8�1�-6�b�����X���?/|q
�7����jɶ�=�{G�S�c
\�k���ظ�Q�
<��0xUq�x��t9ь���
M��4���F<���Zrhc�����@���"l�cq� W6峢ԏ�F��܅T1|�l�������f����E���)Vl�A�p�'��7��Z1��A�7�L�ֆl��`��}��
��ug3����Δm�J�	q�]d;\4��Vj{����/��?��a�.�Bx;��^��ۍT�/������Ek��vD �a�]3���j3z��/���}amjp��:��).���+&p��Y?�p-9ãD:#�wTaVx��?�/}q�L��ԩ�;�R/ǚ�����z�*P��G[�..:	��p�gі������ѰE�X�fk���>-����Vbk�.>݌-�F�
M
J���[4¢�,��l�E����V�'�Ńij �����[sga\�����0�yZ�2�Z'�g}r�5�>��B���s �S��7@
�6�L_���������2���
��>��<�-��KA�d�-OC�T�7����N#L	��r� �r
��+W����ݠ�]h�[lE�W�h�6���p
_����d�`<s�-��J��$�ߏPqc��h��
c�
V�Έ�=~�S�٥�l�x�EʠP�G�`�l�>SOΞU+�� J|���p0�f
J�,�L\��
�a���/�NJ/�P��[�W�W��q&j
�qB��Cm�V��.8��(|&�^[���4b)��F<j�L�u���#�p��k��������#�ժ��f�� �R��e�6{w�h<
�\ߓ5v��
��)�ƠX���A�`͗
c5�G��Q2��[�����@��b�&���R���"�X�
y�R������	Z1�
D>i���wQS��� >�fs���*G
��X�8:���uq|Y��_m1�(h�z>�T��;�B�,EmsM��k0�N6>��Jwx8s+�9 �����
d ؠ��t�.P�
K|\'Aэ7N����p�:�"�P���H�%�l�GX�Y8܎ÉdϿ� ��E�C�G�0)�9�{����0
6��3NS�Ф \Glxh
���4�s��
+!��]�B�{��Y����	4/ԻCm�Ⱥ�H|��p��
��
+tli��I|��<��0��L��v�3?�d�Dm����Z�w�8�U�����i��7�Ŏ�f��-��2
+������� �����+_`�O6ڬ��>MK2d�![ G��n�$f V�\���]Q�?�S�y4@�R��
�	����2_+��e������N�#�k�
�(����������jn���Uj��|
�X��%��ґ�_�Z	C2J2N
���^h5�H�Y算�o�u%�C���</�ý����p
-š|��V�ju���x�l]��� CZ)3�5�Ǿ}Ou�T��~EM�B�޳ґrR �V9�lf�!Y�d��L<�j_��:`�Cý�"oՈϲA�$Z?0���Ȅ�K�]���L�-�'n��m����3�ý�o����Xj1�
6NR�
��d�\��1
I±�v�}8ܙ��V
꤆w\W�S�2��~���N�D8nSfՓ�m��5�N��m�x�6�{u����th���P�&�g�V
��3�&�
�����f
|��p�T���T��c��*G����Z
+
��T����r���T
����ʟR��
��Z
s`E�y��5��
Ct9B^u�`ܶR�uW�;w�z`�ɂB
l��%�����;�q�v�Ks�����s�!����/��	p<�o����sY4��T{�:�VR�v	,�6�
��ʣ���
K���`;�1�\�8��B`����2y��d���Yb�̹ݖ"���$�bf��R�ً#��yT��&��,c�ʷ2�:�Z����W͐
�SO�?
��"�s^$�!F�e {�
gu�/�5���ޅjI��4����1���k=�
p��,��_\�{9�*�n|�cն�3?�9W��
�m�Y0J
��~�������~m!#��+fvj�CY ��*ѻ� 
[+pD�<<���F�� e�{]�����jk�T�Ϯ��%KgnfOM`��Mۦ����,�j�"6�G�
�Xx�i�9s�J/$ pm�R~��w^@ɝ#|��\�.�2�L�5{
_
,�-�����݆'� W�����K±���ˋ�\�sCb�3t� [...]
fJ\a�IpΦ��:0�v(3�k�ӊ�܇���Ĝ���nW�'&㽭����A�
5��볎�
A��[��0Pv����ܸ;=:GQ�{�e��ZO��e��Ѫ�9�w�V��X0<
��
}�RK�+�j
+�8u��/���*�2h��u�	��A	^���R>$M�d�b)�@�p;W'��.�ۅo�
��lͅ�D�L�J\^�x
�^%ɕ%7��C]�
91�uy�[8�;�k0	��/��7�~>&��;

o��9x
+]��c
\����2 ��D(����Q6�C1����qh��B��O at 7
ݶyvs��'
��������
atb�`�jQ���G;�x�6�
��(�ZR
�b����4գ
�+����v���
��� I�
�&8�4��"�EF�� �w��"��R6!��×�Sb� ����.�j�ג��f����8�f����b��i[M�8��3
+fe��x�P!�:rfo
�k��.��J5�"?��]�F��k���r�L��Z�(w�
�� �@py�|∀�e̦{ؐ����
�D#N֞�rq�0j�
5� R:���`���Ԇ�w�o�>��d��ɥ���Tɟh��co��~��Q��s#Hx�%'��&ώ�e`
S�0#
���]�q
TY��f�>�d5�'�ڀ����Y����\X�

O���*?��
_�XC���
�`(�T��
�_�Ck6������N���K4��Ro!D-d��]�����"��9�gJX�E;�� �3C�=(;-
+��(��[��"3�ʡe�
lQ��a��/x(��ϐ1�~#v��?r�F���\2�l���
t�b�
�"
+o[
+�s�
���_
����r�yAs���U�$.���
�A�b6��M-��H
P� ��q�ȫ�cw�?��<�%f��lyA�id5�����o�óg%=ؚ|™����.&�N�,�x
���*�$
�\�TBvj*z��7���nN|�
+tsT\6�ϹQ ���Ҍ�/B8��`�om��{7r�
���*�XڜP�̭� ���qG
3���p	�

�^d\�\c�\m*ij!�u)@!� �Ǚ�
sz���{p=�	����+�*�
+�G�
���'
\��,��#H~�XQ�~�� ~� z��<�����[b�ޓ�����ۘ�A�L������>�w��s$L\�ր���ժƺ
+5�gX�1�D���*E�6g�-G|y4�F�<�-�v��-�!,t|�
7E���p��
!ᤘp|S� F��8��
kA��Qy
jjTٵl%��X�ht��e�m!�	^��
�|s���۴M��DZ~}f���v��>UyἫuR)����5h�^%�ϖ��]�i�2�t���������?!�
���� ��j�>�n�N�Z�FY�뉄���>�M
m'� Gl�b]YM

�I�ݷ�z��N��&i�6&8 S1C�_5���}�^��>~���d�F�^��{����.�8�+p��|p>�ov������f'>�pLG���e��cL9�"q�%�kt����
lE�%����,	�{��Q���Vxؕ�� W���U�P�N��$';��mgl��?�]x�b��Ћ�9+SE7(;��_V_g)U��SR���<҃M�R�W.Ҫ�O Ӏex�E!�m|��i�4��c`*����
�
�Wajh�>���uK����wUK�gE�fG��{
�#s `qv#����4ѵ0՘�`��E��ٱ
���Zg2ɘ<
�3�H�\ �)�7����3�c���H��~���.��
,8�)��K
N7��o(�P�'�:�’����`�:
+�,�E��w4U��!��w�����+���2��:��=r��>%�p�
u�̌Più\~�3L�ltt�
8>"Q#���"WD��
���~,��
�K�N�%�_���Rһ��}+�4Bw�
��e�36��b�"�@�
8n��5����i�
k��1��r��P�6C{n]����V����>^g���*��|:���B���ѽ���̦۾^�;Q�������ɲ�oe�4����6�G�����`?��+ѭ��<o�캦
 l��ѿ�-������^��}�PK��aDχl?��D����J�l=[��������l(�)��X�;;°���ld �q��I�/�l�Zc�s�
*��z�36$kU5���S��r�� ��m��m�P�\U�7�F�Pl�+�nM
+�
M,HIc�8�?%��
w'�u�Λ�ؾ�y��Ra��d�j��
���M�`˻G�6y��G5���
+�;D0��
���ϫ�n]���m+�u��.�Z����
~x�,�UN����c�������}��N�Ć;��1��|�D]u̩u�.P�A2 픮�Ny�}$i�a/
+
�E���޾�+ 
��(T�6�B�6E!�/Ő�0St@���7ܬ1e.-�Y�L.ؾ�r���
/�:�]<rȿHa�(��4�Xo]��j���(�v�v�=M`J������=$p��۶B\���
 ��78�����AH�Lf���gtL��?���O��+�>t�� �^ࢵ����P3��z��~���۴%5zsJ}�r���r����u�7���W_��#	Ӆհ�
���So�}�2���B�Y����C�7�۴ +�� �t��g���
+7s��
+�
S�jDE
+�e"-�3�O=]ׅ��5�7͚,��LJ�Jl�ȇ�'�qO�T��o{i�����JpHN��3b�]��
2���V*����h�O��LD�%a.t����_̼ey:I�<f]�d�P�R������>��e��1�Q�8Y���l+�uxl����o1Xl0�_�½��`�Σ  _�J^w��#��|�� GU���n4]�y�7��n�1�oo���+�?���][]��i����݌��퍍ߟ
�-=�Ƶ�uމP�
�ʥ)]�����/v����m��I�)|�h]Ѐ��#�Í�o;}�`GsKe�Qk/繡�;߁�
3�F��sF5sg
�)�륿o����y<X��Ć����-���]%G������ߩ6H�v���G~H���8ff�
���÷1�l�@ST�q�q��mD�.��Q��d�v�P=ֵ�KL���L=��!
PG�g�5xtg6R��J��#u��!7c//�l��3���]�^�x �an��c��ҕ�sZ#������� �h�$��� o!y
An"M���!;�%�#�"Km�ܤ�t|Tr���9�'�s�Ԕ ��AK���>n�{u�\��C�
��� ��3��F�\�j^#�L�uae�0�Ͽֱ	]!���I7a
"�ڷ�.�N3����V�v��U��f�7�'�1Q�ZK��^�^�d�Wp4�i>;�Z����Õ-,���C�;�Ɂ\�%]7/�f%��o
����Vl$��k�H
�� H�K�
endstream
endobj
68 1 obj
20489 
endobj
83 1 obj
<< /Filter [ /FlateDecode ] /Length 87 1 R >> 
stream
+H��W]�
�}����������IZ�!A&��D"!֎��֠H��������Z~1B��3=�է�N�QN��6�X'�m�X_2 �rb"�[#kk}��y�x�;�����϶
o\%��Ea�^�Sis��6)-�S�I�J
�,�j5���h`�|��Mپ2C}��H
�E��	SZ��wsl�8L��68�c��חٲ��)��B
G)�m׶7�j:7p�j��>��8�黖~
��I�C��/T30��f��Z~oAvW�hr���y�E�����L#��i�f�ڠq�B)5��M
���r�_8�+��X��Z6�S<��AH;
�|�{
���>
��<{�#�[,'�����������Qs
5Yi0
9��%��}ġJ�#�ں�s� @�v�xV
#�N�A O]ݩVP�na�zh��]�wL+��&�>�����J��ew��/x �N���3�����@<�| k&��
����y�c�A
	Y퍜V��=J��;;�zS69@*� t���x��vg�Ơ����
<�"'���2#�bK&�`	����`V��\�
�7��}Q�$�i��cմ�
��pq�,��q}Hs�`gS�� (kgh��H9�R��r�.���[Լ��

+����Glݝ���;��F�a&Z�(�GP�y@k�Hg�B"�%i9����'��\�Q�x���|��Q^(I'�yW{��B�q�薌.��Y'8?�6
f̈~d���7��<9��[�
!�|Ə; .�IJƠ`������k
��#`�4"-�쒄=��6J���6B�1ӳ�'+�X����1 at h	i�6fK1a���1� 1�D�vu�ݱ��lo�BOǺ~
_��>��O�cq��F�����g�P�%�z�*��*@O^W�g�?�,�
�c`2뛊/j�;�5�$*'��N�V�KA�2�J���>����t˻�
I(a�
稜h��u��Xo���U[�$�J��F��еu��
$�"t�^
�/\�;��2B)�e΃9�*�
M
 �,����a��l�:8�%���I�#�:��cC��,���
+��x��� ~�������v,�6�HYE�d�֝�ptD)Vk�>;.]M����/0��	8ˤča`�
���4�4
a
�v���AQ���d۾����m�����Y;Ŋ�Q�Â��}ņe�`
-��h�ޝ��Z�4��Ȅ���*�w��(n
$����J.��]=E�����h�e�je/��3 s��d�'��M���M��#�
�2m�a:�H
�F�&.}۽&�'Y����`�g&c7B�A+�ñc
[6���7�k���4�{�av�VыK葉�h��"�!i��!�m&>�b��t�!��F
��\R2����
�v��ȱ2VK}�룅�O�G���J���Htȹ��2��ݠ[hFV@
+�R���)�a���~(��
+ѱh�	
+5�8��}���yt����/��6
^$ޜKm�|�XC}��^�	����I��f�P�|ֿ�*�]��������74�=Ŧ���A�^5P�=.+��um�Wܥe��ۛ�=}����͓�_<��|����^|������Ǐ���yb��xw����������g*5��<�t��<~P�n����I��g<�����}���e����7v"D�����'�
�[��a�D��y�����gf��k���0��/�S���N	��
ل��?
1�A��z{݉H(�Q�N����~�B&tKM��R���
6p��<�x[�R���ߴ�١�"�@�%��i���5kkKx�H�
%
-š$�L�:X�հ��u���,m�x����zw��ݏ�o?���
���)*���϶/���û���/^<������?�յ϶���?�?J8.OJx�<�i�w������$Z��NM.��.�� �O �X���
�6�:�s���R��L�)D�eo?�z
+W:����Z�WOq��r��?��ŵ���DC4��,;��)�w������?���<�
��Xh�W�N#~��H�r ,�Z+�g3�W#�'�bY�:4���S��5��
ۦ�Բ[g4��hB$����n��յ�^����� |~���c]�Z݀�q| ��
+�J��Ԋ�1��e��<�&=u�Vףz�X�=�C��~���9��2w���ɪy��>�q���*6�>�=��`�V��_=���1��R���� �fѸUp��
l�#

����s����Y�[q�
��

+eƼoT�ō��y�d�.J	��q��}8��x�fA
`e��������}��W�ȯ���"�d����Q�V`��R��Y�2��X�F�u
R��
)Œ.�=Ik�r��^�W��zA\q�ᮝ��+R�-.�4���/�!Ȯ�u�.�P,|�JTR�
־5j�&��7S�`a�ϏKj�T�	
+��Z���A��
�>�<h���e�!ڞf��Vo4&��Z�|� �N}�	0�g(�b�t���vOV�kjK��jA��
.Wܕ�
����3�:_( ͺ�(n���;Ȃ..�n]�</ve޼�:�
���uRx%�ׂ}�M�<hh��L��Eye����:~H���
k��v��/�8?.�~��
����|�&�U�Q*�[�j��=
}I�#�Q�
+6�*�U��Id��i��V���n8�a���&�i��>4�����P�1�n��{��
��YI�眽�?h���,��Hii	z8t��ڼ\�
/�����-��y9d�d
65
+��^��/J�\��&��AD2/`��&f7	{*>Ku�1�Īb\�
�y���s!�#b}�>ʼ2�]0y�R���"��)9�$O�o��
A���z��
�P�u��-���m	2Id�����*���b��ĵTTCQ"�$�w�{{	v��dNG�ŊM����q.<;~j�_�i�=o�z�r�`,��S��#�ڮ�]2
����h���"_���\��
�k�{
��`a�46�81_�?<��7,*�l�
SD2�?#;W�/���Y��N��5�̄��
roĤ
+
���O�Q�B���n@�;�} �����/9[�JL[rV5
�-�?[�5<���V�]I@'p
+�K�I��`���
L�%��Ҡ@^ܔS^��7/S���]�$�\���b��է�/}�)U�q.�p����N�!D�Sl`�M�C��
�6,ު�z�‰�+��4
�8�?S��B�ڲ�
e�
��
/����At4�����^G�[�����
�3J��b/�#q�T�W��
Ϥdt�IJ�1�ET�	vR���+y�{������Q߆*%z�	��+z!���޷�Ƀ]-q)86=u�����š-��,/8<zq����?ܽyv������뇇��w�G
}���ww���ww�o߾Y��G�����
h_-/�_��_���?-��[�
�ϻs�
��c�}�� 
�����!��t�*����~z��ͻ��w?ݽ��e�
b|�ϒP	����w���~\
?{�������
^��'�o����/�9�I�1�T�3��DN<x;���ÙC��;�Z ��j4�t�[ �����Y�1�F�[YUI�
ұ�.Z���٩CC�F�%�%�d,,�
��p���l��k8H̤Ǣ6��P?7��E_��W��O���In/ ^��C5�C�]�z�3fL����!�bG�ϓ&�T�|���a��vN�����#a�P �r�3;>�-M��M|f���E����0�
�	�(L���
��(Z
'}rv2b�(��/
+�I��_-d�5�A�M��.�����v�$xt����.�pc/��m__7FzB��
��W5�ᤳ̷j9
��O���8ehX�'K��R+��9��e2@H
S
�Qu�5?�~
���j_�@!c�(� /"3v���0�����H ��xc+&���4, at x�c*�`7�j�E���g׵�:��"�&�Q�C��I'��Z;J��vN;v�t��J������
���1h (�(`�%mAYH�7�m;
$`��o��_-@��e}�Ê���F`��JM�	Q�:�|±f�l
x��)�D
����l™j˂���Gst|���}�U}(��e�1+�>k���F��ĩ�B��r�=���
y5�-ݼ�A��>wU�f��V�s���ZQˮ%I�KV��n^EK�d�7gu�x��W�d8��
WY��	`
�+��
@

s�q�-�%��(s ��fA'��7���BQl������
�u��c��⋤X�B�:t�1p_��R1^JQ<��u�� �	L��WG+F��,䪆�+�x��/4�C�j�'�cQ��

!Ov�,��A��6Bՠ�,X_1���W'5�;^\ͻ��	�h~Q]-�8�S��bS#a�V�<�P=k�*�1[H#�&��^���x��Z���ɲ
nN}��G%Q<���Yh=��6#k9�ز�<kJe�ܼ>}�ٞs
����7�z�uM@�"x�A���e@�sPLK �	)�h4+��x�Bhu(
���Ȩ�+烚��������t��`�rV��� 
7.<���6�4��8w�Xq
G x�ge��:�����-E�x��V��b���c�!6
+�b��\�
�^�)[mf:.{�ݬ��bA��S1o]�k
���g.�g]y�a�����pa����Y*�Ɏ{8�u�8+�ӕ�/T5s.��|�N�q�L,Nƣl[�c����8F/

�  Q��)�О1�3�}�(� �k(��.e��X��w~ׅ_�1�і̜βʸk�f.��L���<S�q|߼��	#$o$;�<4v,u������2�!�� |u2������D/w��&aл0
0o|�Ԡ�C/&
_��B
Ҩ��io���vy����ۍb�/�"c�4��¨�
�S
b
�����ʍ+Z]����`��4�B���
+�ɑ<d��KPeƚƨ�j {+����K�\$`JL�F�4ڐ���0L
]H>�c2R�)�~
Ci|�*��\^T�
B�Z���"�e,N=h��93��E�
%�6`l͚(�`�ee�-�E�Iwæ�g2
�����I��o\�0���T�썌 sňcn(W��)��[�o�ŀ%k�A�M��4�.�BM�b k���,��a˪Mp"�|,s�(�0�#E*�J�'�d�z>�f���0��\S
���+
Y�
�)+[!;�-�9=ǭk]kp��.����E��9%���-�ULzY��3r
Ԉ�z��2�x3
MI� �I*�`���Aw����%���h;X[o���
c��*v��K֮�
�C�/���"y�Jk|�e�ځ�]ۘ�f@� �d 嶹,R���0�1ܬѹ,�A?�8
/�Ze�դ�$z
��6��|,�$-�x
+Gg�y�� �.�S"a�oM��
.P
�52�e7��x�M}`�=«-)O�j07[�|����b�Rw
|�H�4��Bk
p�ќ�l�l;�|WI�\9�J���D
���z[�|�m� �
��#�
Q
�/`^}C�Ԃ
+��5R�M���9�bj���
+r��~-n��\ݪmP���0�C٧P?
/����{�)ѿ�2X����<V�ד=;A��ڨ��|��1��~4fs�u������3�AIu�7x�h�# m-ҳS�q�aAq�~_�To�}9)Y�
v�@y���ɸ
f����h�� 1/��6M�����iC����5��1�u���L0�
���X��
o��3��3s��r�ӴǏ��U��3�B8#����ݸs\�����;l��fg'����i*��	��B��nI�@VLi�3�=�/��Te��'T��6��lNe�!^�ׁ�y��5�y?
~���.�MFn�жV�{����,�vvV3������7�'�
o�˔����4��Ȭ11�N�T#�_��c���;
$B��G�`���J�YL=���I����z

��7�s۔�z�m�9��ǩ�|�c��Y_���,͡m�0���]�?����Ǿ�/%��zC���	~�J�~���g�rZ���'B�9���g���
-�=~�^$����� [...]
堙�
J��^䆟�
+{ZeO5`lw���y�
��YB�暇��
������7������m�O�6�����'��u�u����5..
��V�v�
S���Ċ/I⒦$mz�MWvp6:�o�,� }�.�
+���LrўkzⅠ�����j��~��� V��j�̔Z,x�=#s>6���
+�Z�
�,��0aj�+�=�N������a��->p�
�f]E
\W�B�5�W�-d��1 c�v�Q&�|%�u�XY�����"&�����T���@��n�Gp.2�6ƩA�{f�U��_�q�2����1�D� )pYh{�~ �B��`X�w��
����5S���I�/ �Ġ�}���~f*��H� �݆fw�džs�2[A͖�ؐ[��
+u�����*����O���n��d E��i+d�M04N4�!=*��-1hG�br��,�K!#
�:)�������Y���{��R�7�C{������J��B�)h�S;�/�&������P��x�W����U!P��-]��-xuoDv� �3�5҅�v\��3Ӏ�+S)K�Vs^�-}8���<,S�{7�.�Y�EK#އY�ۗ�-S
��DQ����)	�AV�<JE�`��`K�e �<�@��
W�Nk["mO�(���`�xt,#3M��R
��5�ʈ���m�
|�b��R5����k
s_�t4M�WEl�����Ŷ] �5��\��Lq�h�v&Ǩu{��3s�$������z�>���
���k`���b�'z2�����}>D
�b��}�I/ŝ
)�*��}5��/rj���q6gL�1qQZ�GZh*�|>����E�
+�;o�5i'��b��#�����3WF�n��`�B����Y
�
��(`��]�� +�=vhZGg�Jxi-��
`��Q�d��i��Qٔ9�ڗ���c纯�����j����'�ˋ��Z�q�*����V�
+�,��q*�x��� M�:m0Խ�*\�' e��]&g��,��gh="=��v���U0��~V&�Fo94*�Y~:�r�^�ց_���8��&%�%
+�;��]���^�3
:���KخxRl���+�p|!���VSs��wR)(�2���h��,ǿ��;K�R�fk9y�r���#
���5
�	�V�R�����x�2�R`.�+�<��J����q�$�����^;�E#�+3M��
5ys
\f�
+_��y�'o0�����{�N����x��،Wd�z
'�D'ت��V2g=o˞���-;x�(u��J�v��r��U�Zl�ve�R�(�����v_K#��s�?�
>d�T�[f^��*�@���U�1CHV��]�C{\|?)�@Z�E�����
3
���\��J���m������F��
�����Y
⥩��j�~�����N�����S�t,I��yE)-),��BJ�bE��+��5���=w�D��j{K�P�ҧ�{�v�)�uA�S��_����Wg˛4ŕ���Ğ�����mr o�r��	�0�W�
��G�b۝F��zU�Z'�Ng{�r�;��ن�
�%�V(MӜ��Q� x4�L`��BlV�j�����uxf6L��՝��JM\ò_t�
�\�Ek%�
+8Ӆ�95��-����-\�b
+7��
󎃃e]~��&��n�����,L(g���0Ⱔ+�WgV��Òh��P���Qz?�ݶǃ�p��SU��+pw�7�+�����Wk�-�J)��@�!��VP�V[
֨���Y�~�p�.��E��g�tV�\�pU��:�
�!�p�
p��Ơ���
z=
y&?<gt�jm�𜇓�;_��p

+���^\{�	s����9��Z�
5k���ÿn��h�
���yUxR�~-�Z��X��«%K�
Un宠�~i\��EM���
aHr��~�L

�ǘ�+F)1�ֈM/�P�M�jpJ%d+�
^�+��\�<��r˻ �O؂�󋖟_'�d,��2Z��q�q�,�A�CE���Ѡi�'��
�?s��hZ.�ơ�rX!p�a7�
�
�9w��A;ϴ7R��3�}^}���{B �Ҹf��ys�[wi�ۓ���_v3��<����_2�r��~
#&p�{	�W`u�gB!�G,5�
+�
+8�p�(h
��X���b
���!�ۂ22_�s[�8��n=&�cZM��Ʒ|o^u�
�k��Ʌ������!���
+�D��n
<�eZW�?Fv�cw��NM����}�����>�&���Z^�1N�5X&�3�F�v>��|Y�qEl���(@LMS3!��
��R
+aI�����8���O,�'
��0��[pf�
y�1�<��
c�W��z�������k[�.��8%s�M
Ԕd

܏��r�k\E��
�v�92���%X5�k����u�Kp+زk�z����)�<���hU�
�A���Iñ�8D�\J������W?�n�V����Μ.-��
�p���0��'.~&���x�>կ�n�����,��z��[�_��4�}�F
|�ә��e$����'�;�:�u���

�U��]��Y-k�[�X�����▉}%�1 at a�{M�MC�h�-4h����` �3�5
�k��-+2�X�N���=����i��T$Bfdk}T
|�?OY$�8���U�
gQB�pI������
���'��A�,W��|)ص�F�Z�$�&?6	�2Cwըd��9�L39����m�0y9}��~�w�ٕ��k��Q.���R�EqN��3�\&U���#Ʃ�կ,�>���o�9��`�W8��A_��;h��~��n��lKg

��r�ɝi�\{�
�J�_M�δ�Q8��Π/v�o�T�4
�՘<H�T�јl���ϱ��D�{z�����P	�C^w)KpEB���K��]���Jڦ=
�
�f1ջ�.�?������W]n\�g��]�?{�TR7�z񲅼�~=������&Xe^��������c�*����N����W�<�pa&!�9A���u�I�k;4���v)��X���߀a��

^��ǡ� �#���
7B<F��?��^�	"���ߠ�Z�iѯ�>}�gn�ۉ��W�����pO��":�{��"s_
+�����牫�V<�

Ӗ���
+`ə�dBPC�ۄ��5�F�7w5�_85t��auS����hS�ߑ�}� ���m�Fj��3L.
l�3�k�1�L~������=����ڿ�v��#�<}�x�OF/�42�[�eF2^��*�G�*���}D�a���
λ�/]�,ā�&\��7*<!��:�z�
+��2�f��ҋ8( G��J	�g���-ȍ�4��8܁��
�-8��W�n�~�_8�l�j,
ӣ��?�71�
�Δ�0�8�1/
�7��5�s��	��Fk3����H���ͣAJ�Zf'&o��ۅ��|
[�e��2M�
�Ж/���S�[�_A���{Z[��	x*�uǫ=J�
���6'v�t��Ï�����d>K�������Vӿ11ԗ�r-��+�A�Rգ�'4 Wn8u(L�i���E�]�Tr���
 ���1B�s�	���G�a�ݡ�X�~.k�
�k�f[T�����(����|�6�u���#I���8#�	^s�F�����}��N�p�0���M��2���~�>G
��? 	Zڏŧ0F������/����d����	�0{�#���V�N�
�	6^�;�dv?a=g���
Om%���XV:�2A��B����^�5��	KrkalV?�.��c�Y&�^|�����7��ن��:ÀS!!���*z�h]�>8��-��yxHJ�n���Q�T���kq�?
,��M�[J��
X���q��<!��X��Ln�v�'��?�W�w�xl�3;�<��>c�K��}g�*�z�AR
��f�h(%�X���FQ&�m�c���Yl�F&kݲ6Uu���6��� X����`�ۼǫQ���g�P�S���>nL�S����&T�-"v�
���h8xo;�e���
�6ػ��e�
�
j���F�
.�'Xەa���Y�6��{�B
f*W�$4w��Z�2��ˍ����͠7�s<c_��*U؁�a�J5A�7O3�P��q)aJ�
�H�
lQ(kƳ��
�#@��*��yk����Ƕ#?��m�^^1�ԩI>�|F��x�(�OrRl#VJ��5�N��-��΢���J���kes��2y�u\_3�A��"��
�,��X�ڈjMtp�Z/IjЋ`/�?�Ϝ�e�f�fC�qP��Ąk�*�Ԡ*�v�{)h`K�
�^��
���N���Pƕ�M��<�E�8'�|.�>��&8�F��M��t��L=Fx
7���[�!<�S�\�
mP��7�T�sʝ�h�L�
0KH�ڏ�.�M�h�k��ˆc����y��~� �c�;����B,�X�k�5‘��Y$ƔI
�Jc�K��[���"�)�5⑋\�#�N`?�
�"��o�"�<CQ9JnzI d�XR��^8h��\�����K��
�����m`'`E6x=�-S��/��Y/����'1��'��} el;laEڄ8����a`E��BA��:��
+�`�����
; un�=[M?
|�w�)�ډw)/+���'��SP�7Yι��_ů���j!Cn`'"�ô�s���H^H�Gx�$�q����
+�����Ck��	b ���ݡ��J�e ���`���!�r�j*m"�n4����ej ���T��[l�{j	����ip}��$��
p�SQQ9�����AtK�-�y�!���`��7~�%��d�}��0��Q�oIu�7�R�z��\@<RP���[��\w�Bu>���8�o�+w�*������Wٝ�P�*�O�����b�e��7k-����&�S�5!{�ϱ�L;������J�[��%pp�fJN4*n\����
�~���q�U�Z߽
C
&|1vL�M�o��,�U0z6��>��

ű�Ǜ�w$��[�чAKO�jx�s���ٔ;ܵ�U[!�P����_�$K�n�qJ�`�s��2�zu�ɓ��fނ�{�r׮���� ���s������7�����Õ_������r#
sN���7xϾQ-#u�\y�~��:��{��8
+QpS���7��)�v��W��yq�yT݃�f�i�7��}�˲���X���{w��C;����ȶцb��3S�B)Qu�-��x*��
+�am��q̀��?ApF��у��ݧtY�
��?�6|��\�� ]�_nQ
�[�?AP�%���;�E�Zo2Ϩ��!4ѳ���7�z��!�]õ��k�i��s��j?-��X
#�;]ƨ�wl�v�=q�|�J��PO�7�-Sl�_ϊ@6�9���~v���CKs�^--�.�j0�����a͛�bl
+�Ql��.y�����u�ZG�;�LEw,.-�9���)�ʠF��{�wUi�؈� <���� m�C���f��%����9�=�����"��ڴQU�;�ּ6���	
̋�xI
�8b�J���2�e���,V)�����Y�+킅q���h�12;\Wu�焂2�sh� ��T�}�9��|<>������ܯ�ՠ�.�N=*X�ʛ���h�G���p�R���J�s�o@>
�YJ|q/���'�9ѳX�{�<��Ն?/o���Ӫ����V>�
4��׷
?�gZvU��[
?q�	��B���x�kl�m��`�S��� �
�p.&K'FGq�*��[3�rNWSR
��y�Mos�[e��������$ �K踦[���4k�'�	nw�L��tf�0��岃.�{�M��
�>�E�v�0N0݉���{�\i����u��R�z���	�������g�U-�o���HsϦ�lc��iV!V��D,�V=��ܖOl�0�X����Mq��g�¯�K�A�
&�1�}��>�n^]�)�K
��
`�f�5���&�"�a��:R�'@�\�0���l{���p�m.�`��?��Fw��[��C�G� �<.���c`6M
̕�bӖ���ѕ�$x%�+Rߢ�&4��z��4c���V>�acf�#�!��NK��x2pw��,	R�˅dx��N4����2�偍b
`�CV:V�p���u�Z>p�JZ�U�A?a�‰�:k+��|�x>M�
��5��e���ta�#���qO�>�E
۱�p�����F�Npe
��uE�����
�u������7��ӵ�"8A�w׋��؟�'#F������o��s�������
��Rؽ��jU
�9xH�_���?�U�:�*�
�)t1�E|�D�n��ְ9��#Nm��
�̒�
3����{�F
+��8�/��ЈU
;3p�[���Ɍ�+V���7���$�?cnP!7��#�Zw�,�b�qb9x�I[;�Ku����
�e�����q3����ϯ���<�A��s�U��(��8�)�g�˳C�JA_J�Pj<(kŞ��!+ at VI[�RY�#���)rXR���8������56x�/[j�
}ż�g����!�p-���hx��뚎s�݌���&O�Ps$�C����i`�*^���3���
:R���M�S�T��&���$X�!v���7���61pj��$�*�B
�v5m�t�T\�
37�Z�`�a��Dc\
>���G֬F�\)����
�Àj��09�J�E� m6��:
��4J�pq���hG0$�������-�Q}� `inX�8P�v}'��'HY�A��
&m
����c/F�_3��K��Fn|P�8��!�

+1
+n�q1�޽@WHP�^�������t��U9/7���R�;��>����2Z���a�e���ԛak����)�}��x
V�����q��U.��c���(�?�"�9
+Ϣ���%�$�Q�#�<Zx�{��e�39+�ot
*�]
RW��Dx5ɵ]y�>��A� ��f�6�^e�D��
%2�w�����(� �+2|�KL��s�u#�a�1��0x��1DV�P�z�>g�)��Z��zxC�%��[�[��Nt��Y�d�m�_��8��V�N�ZB���O鵒
�b`�>�՘
(ɧʉ���J�eY�y�0�Pֶ,�9���/�FAwz����#%m9��BO�0���@���`-~aI�h��Ol��5������E놣�v~?V
�����!�ޯjW�E�?�y4u���Q��`ϥ\�4��M +��'�����֡ރ k@�	����Qp�%���A��\��>�-�����DP�{)�՜�w%^q�QT�����0�98:��tnahL�z/���^S�Rm
\-Hv�+gbB0d57Wy
+v�{��K���B�W#��W�&ո
[��� ӮN����b�P��U'm�y��X�r�Yir�'���A_#bk�A� �NR�3���t��yH��W\�'?ˇ��_���E����?|������%���B�@D�QF"��f����9�����1X3gꞮ�>u���G�cC˥�t:�%%
+���
�>�G�I7 ��b��:�j�d9�Z��
��a���A&~��
+�LN�텸��ʚ�%��(j�6#.)�z6.�Eܚ1Sp�֕��`R{�{o�=�7R���6��-�Q3Lr ��'��yoI�<8K�bPz*Ӷb�'���k
+%��
<�aksmN�����w95��ko�v���KS���|�� ��
����,�u]R�����,
�P���p�M2Uuz1�����%꾶r?���
N��Q
���.�i>Tu�챪�Gc�Z�N��!�p;8��$��>��kf�{�1
+�:ƅ8�`�b8��1`�ژ�t��w�`�u;�ӡ�]�i��-�ˏs����jq��=W&6�T����w��Ғ�j
'0A3R�@eH0M�G�#J2����7�}�n�a�W�>�@��b�3�m�jI#�N���;:MhR��u��nl��FH
�E��qw��
VLM(r��V�p���v\=+h
i��{6M���.��x�+�H���\v̙�p���(>�\p���Э����i1*��VL|�+�:�x�(ZT/���r�w��%Y�����h��Wk%�NW�
I��ݽ�|��f�
+Q�t
�=Ǐ��E�-^@<=�Vu�In�v5�S��\�=���Th`
e+��`���R�}�:c�d�&� �C�ޯx�j�
�6�w��uo$��X� c��4���[p'A2h��*�
+&<"�
�.K��#�J��)[TE�߃<�$ҿ�)~�  �H
+p�&��/sJ�"��*G�K�Ѷ���(��'~<�A+2ud��
P6ŧ��j�hq��O5mχ�4�ˁ�J�����Xc�< �B;��(n);n'A���v
c�މ�A��k8��!84-�O�n�3��b�����=K嘏I�n'XKݦR\v��
��F�7uR=��V}#w����Z�p��봊���d0���o�ګ�Q�WP'X�t�JY��/���;���«أU_�����M	�X����H�h�;Z�6Q�n"�տ��<�"vx��"^x$:������V�
+&�j3��`0��'������
�m
t��o���K�Q��!������HYs��
�ȶ����0"��|�����1'`G �W�
�u��E ��
+�D��3�Ӌ�:��h�s�`���hl�.O:r�� ��2�e�W�11������K^@��zhA�2]�3�~4_\��@e\s�1�mg/0���f�����v
n�]��w�QW�l9�
o5��F&曛�$`%�;��G��\�j�S
��2)w.Q�V�bx�ۋz��!l:,5<~{Q<*�p������	HݤZfP�����)K�g\۴��u��gg�u�)h8�=�ܯ
�+����7�(�~����~YL{�����0�
#�e�ٙ�(`�u#Pb4E�Y~6��������h������Җ�
���+�~kum�H��J9�,vp�ݭl��;�M���/
CF��u:P.`���@L�p
ǺYY���؎���(����)�G|�c�՘��[�
�(���I�MA����
�y*P;�3�K\�"ꊫ.0Bd͆���"
�LQ��S��Qu
ԣ�6=3]�ɛ
�~�����`�Z�[�wN�Z�:��b��B0��w�`�@����
+����
�{�fBl�b���
>~�:(f��k`�/�yv�T/�'�i(�zdT
��KwwHx&-�n3
��u>���!��-3s��{v�4�����]����Wqߛ�qHH�nO�?�-]�i�-7u�
+;������vg�`�f�Wf�e����|B����
˭f�9�%�&
�A"Z<���6�O�0{vA�45�I=
%7�B�@��xk�GȻ�b�
��a`��h �f
+;�sR����t�	x2����`(5����i���ވ��)=�
��#�s���X�� �c�,�qx!�����K�X�
c_D
N.����&�ю��C�uMϦ�5�ȩH�M5�ɸ<Bƨ�e�X��v�!x}TlW�K��&)4S�C�x��K�Z
c<��$uȵU/�"XeQs�Z�O)q✇&�)倥�'�X�gЍ㍦� /����eц�@��q�I���}�zѴ(��d�s
+p����
��
>R�bf�"V(��f�B⮠�B\��N���m
�[��T��
 J��Y�zM�3�U��E��pcԗ9h4%��g0,���	��*��U��m���qf��
��/�䤠��~1�kY%�s�6�$eD,%���ٝ�5i��ۈ�`	i��X�z<�A�ْ[ɮ~�d
��σt��M�����C��0��
��.2a����a
��[��7����m�
��.���٧�ܝ�]����U:��߯x	�o��g���qܾyu��LJÏ�����wϟ������׏������LJ���������7?~����^=>�۷��?�[���߇�1�~���[�������'�|x7��Y�c��O5�.	u4��~?��N}X�X<�o<�X�/H
��,#O$�煂0���SXJ����
��#��
����mb�ی�&�+hq_�
QRe$%/{+Z����Tkz����P�����`|:R���!�W-$�4".1�5��MpJ�@���P�C2���/;���៏�p�f�Ɍ���[�c��
����2�	
�a�⍰�
#��u�B�Z���e���O
���
J�t�ή^��y��U=��y�}SH�8���h�^%�U)j�*C�!v����}�N���������_�K�D�������v�i��9�ja��)�����{��i�x��d�`
��F�u��+�����,���s�������iY
b�
Tl�,Ƕ�cx��
����c�r�[�@�{
�`��%
�8�c
+�h��� J�t�Sc�M�W$��0
��H�R��QO��ؓ0s��#^F�7��7*�-V�{
''U��
�U�IF�.^��2����lስ�
��N��M�����:ݠʏ���!n9:�Z��ꬣ�L�H;�i�:|InF��B�ɻjT�x`��=J��,�	ؒUV k-��'R��nj��)~���2� J�5&�W�1����s�1K����.��Jm�\�`� ~<Z
�b4�[/���ޣYv�D����\���q�ؕ9<� 1tN��m�HAT�9V��խ��LL��

+��<���
�S	�2�zt��c��(^�(#	x��{fm�,�'�=`ŏ<�����h�� `\jm4;f�o���k�S��n�l�V��
�ә��n���Ħ�8b�� .�<��&^�'�y+v�>
�i�=���n�wݺzj.

�.,iB���EƓ6=]E!�����9彁��1�
��+����0s���
C����
Y��<v�����<"��m��9G�7�D��ng��#�gs�cY�K�f���7���� '�OS�����
��&Dž�6gG�F��H���@l��O;${��<ޅ��F��2Ű��: %��l"[�)�L-�����
�%����T1�qz��0]:�0f��������E�H������`�=~e.2�҂�6��挻���2.Uv���P�
+��q@��𪡃E$�(�ޖ��{����
�G�F#���a�~ �$�[A���� d-����W�c|�[�
����s�
#
�\�4���#�6
^
�����Y�XzP���Y��K��JA�<�
Zj'����[�9|���g5��p��6
�
Q�M��h�
��z����{M�!��H\$������_}�����ǿ�}���O�_���/H�_������ׯ>~x��?w_~��7o���ݿ~����~u�g{�W�����2
���uJ
+m��x*a������o��$��q0��K���:���1���oH�ͤ��G�1�$�3
������� ��Xt��Xy�̼w���|
_0QJ
2�n�w��2
'��nCAc
$�P�c�|	Wj7;"f>���~����}z6���e9���<m
\�
�[���
�Mx�b�W��a;�~�Z4�yPv���|r�	�$��|Y?w�����&��`�KbT_B���;�,1�_.<��s��.��
K�S����d�t�L����`��/���y_c�cl�^ ���.|~@�!	�a���m%8+�J��l-��>j��-�1�$dP����t�V�i��gl�[5��U��9*q�<��?.é��˨�*�����#�#+u�z�IF-8��� Q�i���d��ZL��O�;�Ld���4 at 6��E���.��1�sϏ�!�$ ��(����mT����|�v� 
[ǭ�t���z �Ƒ�
J��.ִjî��Īӌ�q\���[�W" �^��\F� I?/"/ܽၮ]k$4���L�CZ�j��f�.
'�w�1Pi$ػ�zK�

������p�9Q����X~�Fگ�v�C
�[V
�ݣrp�H����;��P�t���st+E>[�=�mҾ�>ގm����G6p�u��pqb��;��#���
?5
�)@n�#q4� �j� �Z�q����Bf����B���o�,�
�v��d��a���c�I�������,5h3����5�t�{2響���HG/�mx�L��e��
�h�>>�T��O&�ǹ����I���ݶ�n,
��Y˅>˭
��x��ꗁ�2��⭷��ݓ9��3~aV����
�Fו!v��J-fmrC|�Q���F<`�+q
m�۱�I���*Ύ1o,�>��I�t`z
��
$l�эk�Om�_4+^`Kf�mB���Q/m����I�
�,H�*`k� ���Q��z
ˮ�n�g,��k8�Ҭ��򁥧ì�rl�>>Кia��
m�c	
fiH�����@� [...]
�
�6k�Q��\iog��wqQ�e at w�.��ͫ�x��g|7I{D���E1����U���IW79[q�< �'���\�]_K%u��qC�6�2 Ś��\n:C��B����v5� �u ��e!˲l
ݬ�7e@UT��B�������=�1�K, �U.Ț+�/�񜚠j
#2� ��o,'8K��U<��r#�/
) ^"�Hq�o-����v~W�ύՕ]i�0��)���|Ke��觓��^���
R������:�pIc���
�u�]=V�Z۝�s�콝��@f
�?G���_av�ǒ7�9F;
֣i
��f�Dsd~�#.>�Y5�6(�7'g�>i�
<�=���/f
�[�{O������c�9�CZ��&*���E{�����i�<`����1%�$�sL7��S����XҒس]��|��1��Q�;na6�9ǘô�+��@-�Nd(
c@��!�<�����>��D�G�6c"������C^���x�樅�d-�$$J�‚@��К=�4���L�A�K+�C
G"���w��n�R��W`�Ƙ뜘0iG���r|�/�8�z��;�FX�Z�GA\���F!פ�]�1f-'hCg
0vq�&"q�!.��i���w������D'!�t��C
��+���VB��1X̖gY=ռ[�Lˎ'�\w��gvq�݈��j

��u9�Y@
�Ғ�u�Fp��� �͎+�&��@�|ϣOMܟs�(��y�
�m�#Y�c��&�c[���S�D�z��j�����!�UR0
�5[�䒘����x�J�`�B`.~�
�.x-� �)����Tw��8�t�*���������cl{�\_3O2
+w�F��E������>dSk?��hBF.�C�Z'j�C8]�dK�,��pE��Z[�-.[?�4�g��I:)
<8�z��v�a膀k�큻����c�nX
v����w�El�:E�Z�óQ����t3��
�V )63S
+�
gϹ�
��38���0*�r�� �e4�k�����dƦU!`��Z
�A���}������ٯa}�:�L>g�>Y�����X�"O��`NHZ�[

���Jٟۤ� ,�� $�Q
~@[t�p��aլFy7j�� p���aY��[��bN}�o;�+�A�
��D�h�m�k\I��5`O�c
5��=ؖ*A�OI4�M�:=�2��ŀ�"����J��
�k'i�)b�ƥ(H�=ބm��� ֗�
endstream
endobj
87 1 obj
19978 
endobj
91 1 obj
<< /Filter [ /FlateDecode ] /Length 99 1 R >> 
stream
+H��Wko۸�
���_
+�@#�_j?�}���	����"P-5Qב
En6����K�l�mڸ۽7�
�G�����p$f��4C��,I����`o_*�B�иJ�$iP$�`fA�y��=��0xt6>h��մ��u�ܠ'��GgC��LI!Fh|�6U}�����t��<����
�����gf%
��M�b�.=.R�
�1EdY*-H$�n��qr��| W*u
!�1�	���%�`�w M���!yjq��80b�SI*�۵,��HӻA��#t����W��E]L����Q޶eS��N�����wu�_�20r�h����`o9�� �(|Oo4�3�}�1���F؜
j��P	�X��R���G���9�
� �q��������%����$�\,���ȵ�����sJ����k��DbbQd	�Lm���[B
e����Q�7D&��
3x0��DӐ�$�����3y̎
E�!��t-�m�6�*��"_��YY������r��ۛE�/Dl��`�6v�2K��E�V(���ҁ��Ij�)l7
��rW�/�,ᄊL�H|)�˘�����o�R��\�����V.�$�K�s+�}܋��.�.��8J9�]��� ����s��)\8�đI%���Dڑ����2Vԓ�,aBؘI˜�<E	
+e@�����{�p�8!}��pL��å����1�@jd%|�3�i$p@1�TsǴ*[S��TR�ј%*��,+aij����,�
+AA2bE��̒(����G�Q�7j����6]
�
J�@=��� �~

t1tG�!��u��>����m
�<K$T?`�G$��:'
��r�p,Rp�
ʂp�X�
D��:NI�k�
�&0��r���]>��6�y]��Ѩ�c�*����� ���$Ӧ�&�V��U\@+#��"���Ae�!"0���Ȕ��o���*\�6]

�
N�Zvn���sҏ��.�.��8��]��p�ݢA�p��!�43�J"5ߒ�P��6���p�^���� aTXB�$�R�K#�������aGx�1��fvl�$�u��G}f�lez��C��qH(r������`'=�]��f�4uF���ܜy��Ӓ�;�K�ˁe��p�fî��b
RK%)����
-�z��]�A3�g�.Q�o�����w��פ�X�w
�WNqn��	�����O�V{
+�薆�t�"Xllk74�=X�
τH
A�*���g�R��ip�����GP
-�����H�d��f��
͖�����r����A1_�w��y���
:l��}�!�O��Yu�䋋j�L���1hѢ���E�-�#�� ����O�l� kJ�i����<�~�shT�����˺ؚ�±O֛�L�r+���Nf�
�w���d�
j�+0ϋ2�Y_�����b����3.%���?h+��-�o�M{�Nڼ���d�>o痕�5��ۦ����
�����>���z�����>�ț�<,�f�/��������
�.�{;�6��

�udg}m��������n�n������cW_��>�(����*o�����Y�l��rV]�<�������
Y����� A�wu�_�b�yt�f����(����'�б��y�0����i���=ڰGVB�6Th�ld���N��&�y�4
��v�P� 
+zQ�m2;H��F??խ�n^�m舽��3fw��
��!��nb2�B>��
���öp��߾�/��&q��Itѽ)��vD�~��8PHm1���
��PŻ �ks��+�Z{��_�
+�!Tv���(h�%	�oQN��-h�h�3I�p�}�g���d�A�G]=�1��V
��%u����5�-"��F���l����.C�g�j(�oe٩UF����&��T�E�:�
�uфc�$*z1%D:}�%���֥���)��ݩ�5;�
+��em���E�*"�D��	�K����ښ�i�֖�FQ�
��p�\�%b5�{����εu�B��:��1:5�C��]g����t��A�
�Ac��'��K���mӇ�W;?4S1�?z�]�MWR���C0F
#e���i��\O<_օ˝�i������I��,o��0���B�˘�`v2��S��R:{�d��Ey�.��38[N�h{�_��um~�':�z^������
��i[}*���g�˅^���L��OlS�ȚXxd�Cg�x�0h��~f�$����1���r� j~�g��<� �y�77&	��%��{�]u�~z���׍��3�}���5����<�����Ӕ�S4�C�h����)21���p�{��=��Ųjo�l�`��g�\�A�$
z�k�N󻐠-WH��
+ �	�?��*_|*�����(lGQ����
5!�a�y�W
(l�����%>\�3~[��Mug߫�ECmw��w	m��6�f1
"6>.AڇW��Nu0����wZK3$,旮Z�Z���e�1/�*�K=�}h\lVD(�q��+g�?�o/>���/�J��M�;#\�
���%ř��ʕ��)��(��Һ��s��֊�}���}���ݱ��L>h�
�����~�=�?#�w���{c4���5|Wװ�
+t��EU�-#�j
ٓs=t2����{
��s8(��KtP�i��e^\�
�Q���$� mG��yU�U�En��g��jg�$@��+X���;�����ۼ����j�m�ȢeR 
�[���s- ډk��9�d��#q,��I����?����aJ��%�aAs^�{��s�-u~�>����!ݙ�^�N��
��@':i1��9���[B����:��/��]
+���G �A��4��V�7T/�P�xC�ހa��������>H���r
+PA*�
"o �Dc�*�i6	���r����.��
	�;H�YX�����l�E*��E����
�u0����d�����;��i=�'#��B*�_A+�NZQ
+y,+��.'�~^H�Y�&��� M(��
+��:o,
�'�t����% Z��z#غ��'{r����+7B�� UV/�t��e�S����}�%_PE�9��.��CP��V��)O�f9�
|=�)�A�%
l���(�<
P*�
 e!�D^�������J�O�聎�J���Ot4_�d(
��H�6`q������П$�)���+�龈���n������
+����$����#
+-�m���ӄ�	�>�q�\����k��0��
	+���2����MEg6���U1�*\5�I�tJ=ܾ�g\a�QR���|��c>��Z(�8B7�S��;�RD6a���D�̩=q:k��Y�'��IҙV4�:q��KA*��ls��,@�4�殩
�wV�.:+G�գ�λ52�Zc��W�͛�	#��
X�U��&Y�/쁸���K�O������=��T�${$��vc$�b�����}����\w��K ^
��tĎ2�禈���5|������’4��(Ԡ�DQ8��"Q8��"Q�jX��AjT�e*�eYUU��H1MM�Q��5ճG���
+U�
+=��	�ozꠧVʯ9�ۮ��?���Fu<$ �c�@�[�%��v�}]�R02���Z�GXhُj*�n
*ԍ-��&�Ye�lE�?�A�G� �v���l
�AGa��
9�s�(n��L\�=�l
��Ӂφ���X�
��,��O����:��������~[_U�&-(�P~�Q�V�M��:M�\+�
�I��������0t䆯_�����x8�~&
����~6�]^b��0�W�
2��7
����z�g-��?������ݣ~Ͽ>>=�#���=�D^�xC~O�A4 ��~�:ခ��	��Q���aS�
+���!6�����I�Q
dB�M�)�"vJ�<��%���
��I��<�k�~�|˫
��?����	�b�P6�E�ΧA�p�>�	O�/���?@G�`��Χ
o���!|1���"u�pLya��@�̋�>�O��í�Œ�E
�M=\[����:���\x�Ʈ^�R�w�:��j���CI�PnL".Ao�8R�_i�X�n�,ǖ
+
�z���B��\�*?1�P�+窽B��y���=��d*�0)`q�'l�Mq�OV��rs
��˛��%��m���z
�o��sM?.�ވʵl����
e�+
�?�d��%/E�K��4�C�2�����$�\�
��
+�y��o��S��;~�?
dW���H���
�v��6Ȣ$}�����=�l{U9�@�AEk,�ڪ\Wz�M��>@�+�����
CK��?"wcy���+s�]xG��1TTc�h�cUST�� )�`c��޻�:t̟��R�^�G����{]17�rX/�(?�(L�{.z
��.8��t8�^�^\�������+�����on
N��IG<��'����_#�~s�����?����_�/��Hxj�x�C	��p86����z����+���
����=�`E9�u��FpF��jHO
+�ׇ��.sC\'}Fy�G��&�)�
+R0$�,5T��SX���#}B�CX7(�S�A�*���@�K��)@ĝ��Sp�>��&t��dna�ڸ�ˈ�} �I�xC�c�Ρ��6�ɪ-%��I�{��R�Qe�˛��%�Gw>��n2�L�9'��+ª����BjKW�=�I-�5���8	�sBȈO�R���P�Mq�OV��rs
��
������dZ����t'P�jy��� F�?y�J� X�=iķ��4*e�b����ѯUK�s�U����s�(���EI��y4��=�`�z��O���d�_�I}딢Y\r*��
!j!b�ɦ�
I
7Ij�OY�X� ���B�[�sTY�`aek��� گ,�M��f�h
`�>+�
�M(�w��E[Q�.J���w��`� ;�!��$�Z�ឮ�*���Be�$��
�7r}�M�#�֔m/��5TC+����	��Q���
+�S���}f����
+X���M�%\���o�r�
�
��X���j��,H "G�*Īh	�
pLLE%���B������H�iۍ@�b�W~�cp�R'�V�������a�e�6�����3�gz������`!
}͗�=��)}L�e�z' �=�_2�xP�~��]���_�w�[ω�28�
'>�K����������('��rt��$�j`,K����yR,D��k79�y{�xE(�[�m�����#.�-�8
�4Ւ
�H�X�h�6����%5�Q{���y?��ɗ2�^y�c�i3&�F|�`z1�d1��ٓL
�u�º~8�(�Lje�&��߅A/�
�`t|��ی�X=�$a�z���u>���8���ʗ#9��A8af�7������V
-
�2
8�d�
+Ѱ%�N�%�D�
�u�7z���#z�/C�)�aK
!�7�_�J*���$�S����D۟��l�*'*0[�OR���2=;�D��)�
����%⨖tB�l�_��D
Yz>QQ��2� “(���Lr�9u��E�ґ�-B������m9��
�?l�;�*
������P@�/��N�u��C at I�ņ&U�t����ޙ]�r)�'YA
�
�e8�����D�R�$ˊO�	�X
+v_��_�W+"ڀQ����-��B,�}'Pk
��M}���0�X%T�Y
� T~nʅ�X�
��!��j�
+��+a�6F����X$|4IoM�5�߮�ZIG�B�|cH����0Go�.*�o�ZM%��`
+�H�aV���%N�:�d��*ӸJ_j
�`����J�J��6BVݾ��{�P�^�d�(��2Y`�&��2l�
�Ճ^<�;�ŭ|@��{4��]��@Ą0��6���aq�Zu�D�B���I�K��Sw9����ٺ��敨]n�Yt%V��̀�+$8e-�$iޤL?���l5�<��vR�����)n֝�b<���Q{%��8�]M��R��CfU�+r�Ic
�lca
��0��t
+'R�
�f�i[��#�
+�ֲrƕ_���%�p΍���7�X^^UI��a\��ӭʺ̖��7CP��cl�[�tx��]qoU���X�L��04���HF�8K&YQ��
Y�����72�$$U]<��]:]즣�ƒe]��Ĵ�|G@����n�Γ�4��R�+��r2�*���Tt%�����o��vG/l~Tp1lI3.��=[��͛AT~ӣ�L����,].�������ċY���],���]:�
G.��Z�� SQ��{<.r�5IL.�8�J�8A��[��jRw� ���}��B�ȰsH�z�J/�q��^��NUW�R�j2�
+^ŰI]��)ԍ2v;#�"��%�!< hE�ި8`cXT��갮�>�oD;�p����MY������l�c@,�fD� '�z%J�g�&:q:�oQ�*� �2�� �aY/fd�Z�~�wc��]�B$p@��sҺ݆a�$ �dv1b�7�����j"=ܤ��ɨ_�h�<�'M���.ɫ������ǚ��S|M'xp��E�)��A	��j\��L��(�=�8�
��z���ݘ�rD���q>��,���>le�|���5
�b�`�X��2�'`1��E�Ԛ\r<�S��x�H��,F�
���$n���j^CW����RrB�ZYm	Q�z�@nl��~�aR�1�:��ꁜ%�е
 �폃Ӌv�/~�'�A��.�j�������"�$�0��7����%�ߪw��]�(��4K��”5���
S���xp���4'ɤ�&��3�}���K��i������|�/�(�s�w�K��\��_<.�g(����嫙�f���j��Ќ���
��z�y�����J���uG
u�:R�� [...]
d9����q���;�Ș�� $��9
�ѐ�C]|�B'���8{2�;���%Ґ:�h�wm
���}N�Q"\�`��e( f\2D�Q�

�!t��c����=�q�a���
+� 2���/�
΅���{uO����
"�1

b�6FC�����3���0�>��F�->
��0�a�
���ES�j�i�%���\i�)��P��h��r�.B�
��p84I�f5��g/z?K�����
���{9�o���&,�m�R���$�؃
�
@���{�RU�:�@�s*o�
��R�� ���MUp'�|��F ����q���<,�<�\�
l1HLa�j
+��
( a�y�>����
�*n�X^�ŮUq?r<��֢�`Ij�
Q�n4�8Qy�Cc�S���z��؀�E}""P$�b����]�A��rl
+Q�ꌫ�㮇o��xS�i߰=�1���'�]���� B�2=�L�pӐ�-��Z��l6׉"�Rdڜ��D��@k�^���4l�j���F�Z|\|���%b����(�^�����O��D%����!�)�]�
��Fe�˙�%������D^$��s0دU��l��-
�-6
+�zhi�mO�54
���o� <~�9CA9�U�f<7��ܽ�Lpv*���'����������	Q�
+��*�N���FA��M��*�WY���C\D�"��,b ;W�Eph�p��

6o7���!
�� �yN��֪j)�E)����B�F���
+ˢ�4	�
3l�y�j-�'Tᗊ�n��	��i��H�'B(�'F���B�;�2��KFE�6��"væ�#
+{+|�'��}�`t!�J}��c��A��O�����.Y�8��,�8�Ft�;��&�B�
��M� �� ��h����GKi�B��LC���28��o����
/��H�������C�gR�/��w<�!q�;�
� �j-3��0 ��Q�R)
���=�GF3I��r��*�Q&�y��;8����w	���:,.	��#/,�#�SD)0(4[_4Z������~
���1��AY���*-�| �!�����'�WU���p8
L&��eQ���'G��/
+G%��0	P�ز�U�X$�l�B��rf�<�P��ӧ*
�Aa���w��`�ʼn

+:
+X 9�8<� 
6

ˡ�0�������m ��+�|ɡ����]I	JU�92d"9v�����YmqU�K���μ}3C�k�d/��Cb
��j¢��Й�%�?���BZyUB�[S�"�5<��
�W�C�
����������~�Y	���

|cfh}{cn����4��E�-��
��c)�0Q������m��f�o�2��6"�<����
���SIO-7W�2q��j�y�??�
+�~��6?��{�G���Z�*	��&JN����D��\Y�3,N��iۨ�FĆ��z�%����:oL2K���s(��F�埱�%�T[�y�>'1o
,��ֶ� ��>�;��ؤ���ꮓ�Z�Xw��a��'A�@�w����Ô�ǡ�]
 �{9�z9_�4��%�s4��M�R������׫��v&���	�H��U4�����(��A��ɼ%�1���Z
Y�y}�$J�w?�z����2��ڧ��:�������Up��AJU�a��@ 7������Kbed�1�3����[/�(�Wq�0�J�	7&<��0FBL�
�m��'(#�i#<�-��/,
*��Z�t�*)�\V`�l���'AH?0�>��)��X��#�Fp�Xx��=�o
���)�4i��!�����u��
� oP�S�
�3��J2�{��q�_�i;o�Iy�G_� ������]d[W����fswSe��aX���GeEA;�[��̭7e��}��$t�;p<+o��<�֛*��
�OW-LDs���Owת��A��
jvH�s����
i��
>~�.�g-
�lW%h{u���
�(C
+�{t�8lf4:�:=��K� ��y
endstream
endobj
99 1 obj
9006 
endobj
103 1 obj
<< 
/Type /ExtGState 
/ca 0 
/CA 0 
/BM /Normal 
/AIS false 
>> 
endobj
107 1 obj
<< 
/Type /Pattern 
/PatternType 2 
/Shading 109 1 R 
/Matrix [ 1 0 0 1 0 0 ] 
>> 
endobj
109 1 obj
<< 
/ShadingType 3 
/ColorSpace /DeviceGray 
/Coords [ 298.81445 387.55469 0 298.81445 387.55469 81.88805 ] 
/Extend [ true true ] 
/Function 117 0 R 
>> 
endobj
117 0 obj
<< 
/FunctionType 3 
/Domain [ 0 1 ] 
/Encode 118 0 R 
/Functions 119 0 R 
/Bounds 120 0 R 
>> 
endobj
118 0 obj
[ 
1 0 
]
endobj
119 0 obj
[ 
121 0 R 
]
endobj
120 0 obj
[ 

]
endobj
121 0 obj
<< 
/FunctionType 2 
/Domain [ 0 1 ] 
/N 1 
/C0 [ 0 ] 
/C1 [ 1 ] 
>> 
endobj
126 0 obj
<< 
/Type /Font 
/Subtype /Type1 
/BaseFont /PRNWTW+Times-Italic 
/FirstChar 0 
/LastChar 255 
/Encoding /WinAnsiEncoding 
/FontDescriptor 127 0 R 
/Widths [ 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 250 
333 420 500 500 833 778 214 333 333 500 675 250 333 250 278 500 
500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 
611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 
722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 
500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 
500 389 389 278 500 444 667 444 444 389 400 275 400 541 250 250 
250 333 500 556 889 500 500 333 1000 500 333 944 250 556 250 250 
333 333 556 556 350 500 889 333 980 389 333 667 250 389 556 250 
389 500 500 500 500 275 500 333 760 276 500 675 333 760 333 400 
675 300 300 333 500 523 250 333 300 310 500 750 750 750 500 611 
611 611 611 611 611 889 667 611 611 611 611 333 333 333 333 722 
667 722 722 722 722 722 675 722 722 722 722 722 556 611 500 500 
500 500 500 500 500 667 444 444 444 444 444 278 278 278 278 500 
500 500 500 500 500 500 675 500 500 500 500 500 444 500 444 ] 
>> 
endobj
127 0 obj
<< 
/Type /FontDescriptor 
/FontName /PRNWTW+Times-Italic 
/FontBBox [ -169 -217 1010 883 ] 
/Flags 32 
/CapHeight 653 
/Ascent 883 
/Descent -217 
/StemV 76 
/ItalicAngle 0 
/XHeight 441 
/FontFile3 208 0 R 
>> 
endobj
129 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm1 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 224 300.5 373.5 300.5 ] /Length 130 0 R /Resources << /ExtGState << /R1 29 1 R >> >> 
/Group 131 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 224 300.5 m
373.5 300.5 l
f
endstream
endobj
130 0 obj
74 
endobj
131 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
132 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
133 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm2 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 370.98828 295.74512 379.53516 305.25488 ] /Length 134 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 135 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 379.5352 300.5 m
376.6953 299.4463 373.1719 297.6484 370.9883 295.7451 c
372.708 300.5 l
370.9883 305.2549 l
373.1719 303.3516 376.6953 301.5527 379.5352 300.5 c
h
f
endstream
endobj
134 0 obj
212 
endobj
135 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
137 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm3 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.96484 295.74512 226.51172 305.25488 ] /Length 138 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 139 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 217.9648 300.5 m
220.8047 301.5537 224.3281 303.3516 226.5117 305.2549 c
224.792 300.5 l
226.5117 295.7451 l
224.3281 297.6484 220.8047 299.4463 217.9648 300.5 c
h
f
endstream
endobj
138 0 obj
212 
endobj
139 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
141 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm4 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.96484 295.74512 379.53516 305.25488 ] /Length 142 0 R 
/Resources << /ExtGState << /R1 29 1 R /R3 132 0 R >> /XObject << /Fm1 129 0 R /Fm2 133 0 R /Fm3 137 0 R >> >> 
/Group 143 0 R >> 
stream
+q /RelativeColorimetric ri
/R3 gs /Fm1 Do
Q
q /R3 gs /Fm2 Do
Q
q /R3 gs /Fm3 Do
Q
endstream
endobj
142 0 obj
82 
endobj
143 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
144 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
145 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm5 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 224 300 373.5 301 ] /Length 146 0 R /Resources << /ExtGState << /R1 29 1 R >> >> 
/Group 147 0 R >> 
stream
+0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 224 300.5 m
373.5 300.5 l
S
endstream
endobj
146 0 obj
96 
endobj
147 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
148 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
149 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm6 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 370.98828 295.74512 379.53516 305.25488 ] /Length 150 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 151 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 379.5352 300.5 m
376.6953 299.4463 373.1719 297.6484 370.9883 295.7451 c
372.708 300.5 l
370.9883 305.2549 l
373.1719 303.3516 376.6953 301.5527 379.5352 300.5 c
h
f
endstream
endobj
150 0 obj
212 
endobj
151 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
153 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm7 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.96484 295.74512 226.51172 305.25488 ] /Length 154 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 155 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 217.9648 300.5 m
220.8047 301.5537 224.3281 303.3516 226.5117 305.2549 c
224.792 300.5 l
226.5117 295.7451 l
224.3281 297.6484 220.8047 299.4463 217.9648 300.5 c
h
f
endstream
endobj
154 0 obj
212 
endobj
155 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
157 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm8 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.96484 295.74512 379.53516 305.25488 ] /Length 158 0 R 
/Resources << /ExtGState << /R1 29 1 R /R5 148 0 R >> /XObject << /Fm5 145 0 R /Fm6 149 0 R /Fm7 153 0 R >> >> 
/Group 159 0 R >> 
stream
+q /RelativeColorimetric ri
/R5 gs /Fm5 Do
Q
q /R5 gs /Fm6 Do
Q
q /R5 gs /Fm7 Do
Q
endstream
endobj
158 0 obj
82 
endobj
159 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
162 0 obj
<< 
/Type /Pattern 
/PatternType 2 
/Shading 163 0 R 
/Matrix [ 1 0 0 1 0 0 ] 
>> 
endobj
163 0 obj
<< 
/ShadingType 3 
/ColorSpace /DeviceGray 
/Coords [ 222 467.5 0 222 467.5 0 ] 
/Extend [ true true ] 
/Function 164 0 R 
>> 
endobj
164 0 obj
<< 
/FunctionType 3 
/Domain [ 0 1 ] 
/Encode 165 0 R 
/Functions 166 0 R 
/Bounds 167 0 R 
>> 
endobj
165 0 obj
[ 
1 0 
]
endobj
166 0 obj
[ 
168 0 R 
]
endobj
167 0 obj
[ 

]
endobj
168 0 obj
<< 
/FunctionType 2 
/Domain [ 0 1 ] 
/N 1 
/C0 [ 0 ] 
/C1 [ 1 ] 
>> 
endobj
169 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm9 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 222 309.5 375.5 467.5 ] /Length 170 0 R /Resources << /ExtGState << /R1 29 1 R >> >> 
/Group 171 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 222 467.5 m
375.5 309.5 l
f
endstream
endobj
170 0 obj
74 
endobj
171 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
172 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
173 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm10 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 370.33984 305.1709 379.70508 314.61523 ] /Length 174 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 175 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 379.7051 305.1709 m
376.9707 306.4736 373.2266 307.748 370.3398 307.9883 c
374.9482 310.0684 l
377.1602 314.6152 l
377.3164 311.7227 378.4824 307.9424 379.7051 305.1709 c
h
f
endstream
endobj
174 0 obj
221 
endobj
175 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
177 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm11 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.79443 462.38525 227.16064 471.82861 ] /Length 178 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 179 0 R >> 
stream
+1 1 1 rg
0 i 
/RelativeColorimetric ri
/R1 gs 217.7944 471.8286 m
220.5293 470.5259 224.2739 469.252 227.1606 469.0117 c
222.5518 466.9321 l
220.3398 462.3853 l
220.1836 465.2778 219.0181 469.0581 217.7944 471.8286 c
h
f
endstream
endobj
178 0 obj
221 
endobj
179 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
181 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm12 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.79443 305.1709 379.70508 471.82861 ] /Length 182 0 R 
/Resources << /ExtGState << /R1 29 1 R /R6 172 0 R >> /XObject << /Fm9 169 0 R /Fm10 173 0 R /Fm11 177 0 R >> >> 
/Group 183 0 R >> 
stream
+q /RelativeColorimetric ri
/R6 gs /Fm9 Do
Q
q /R6 gs /Fm10 Do
Q
q /R6 gs /Fm11 Do
Q
endstream
endobj
182 0 obj
84 
endobj
183 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
185 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm13 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 221.6416 309.15137 375.8584 467.84863 ] /Length 186 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 187 0 R >> 
stream
+0 0 0 RG
0 i 1 w 4 M 0 j 0 J []0 d 
/RelativeColorimetric ri
/R1 gs 222 467.5 m
375.5 309.5 l
S
endstream
endobj
186 0 obj
96 
endobj
187 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
188 0 obj
<< 
/Type /ExtGState 
/ca 1 
/CA 1 
/BM /Normal 
/AIS false 
>> 
endobj
189 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm14 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 370.33984 305.1709 379.70508 314.61523 ] /Length 190 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 191 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 379.7051 305.1709 m
376.9707 306.4736 373.2266 307.748 370.3398 307.9883 c
374.9482 310.0684 l
377.1602 314.6152 l
377.3164 311.7227 378.4824 307.9424 379.7051 305.1709 c
h
f
endstream
endobj
190 0 obj
221 
endobj
191 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
193 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm15 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.79443 462.38525 227.16064 471.82861 ] /Length 194 0 R 
/Resources << /ExtGState << /R1 29 1 R >> >> /Group 195 0 R >> 
stream
+0 0 0 rg
0 i 
/RelativeColorimetric ri
/R1 gs 217.7944 471.8286 m
220.5293 470.5259 224.2739 469.252 227.1606 469.0117 c
222.5518 466.9321 l
220.3398 462.3853 l
220.1836 465.2778 219.0181 469.0581 217.7944 471.8286 c
h
f
endstream
endobj
194 0 obj
221 
endobj
195 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
>> 
endobj
197 0 obj
<< /Type /XObject /Subtype /Form /FormType 1 /Name /Fm16 /Matrix [ 1 0 0 1 0 0 ] 
/BBox [ 217.79443 305.1709 379.70508 471.82861 ] /Length 198 0 R 
/Resources << /ExtGState << /R1 29 1 R /R7 188 0 R >> /XObject << /Fm13 185 0 R /Fm14 189 0 R /Fm15 193 0 R >> >> 
/Group 199 0 R >> 
stream
+q /RelativeColorimetric ri
/R7 gs /Fm13 Do
Q
q /R7 gs /Fm14 Do
Q
q /R7 gs /Fm15 Do
Q
endstream
endobj
198 0 obj
85 
endobj
199 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K true 
>> 
endobj
201 0 obj
<< 
/Type /Group 
/S /Transparency 
/I false 
/K false 
/CS /DeviceRGB 
>> 
endobj
203 0 obj
/DeviceRGB 
endobj
204 0 obj
<< /Filter /FlateDecode /Length 205 0 R /Height 100 /Width 128 /BitsPerComponent 8 
/ColorSpace 203 0 R >> 
stream
+H��W=kTM����_����q-"�ZӪ(�BAXӭi��� q-"�E�-,�X�����h��}��a�{�9w>����)����3�y��E|��u:�����x<?�)=��&"{�����$����
v�o	;� ��@؝�Aȝ3G�I�*�#���g�
+xҾt�*��aZ��W-Rż	����h4��RnS����
�9<| �:d�cRj�@=.5�f�"�Z��u4�(gS���wz��V�,�ɓ'��"5� �
��֭[kkk7n����l
�߿-���S�nmmџ��A�w��voo���;w.T#��`^7��D���T؎C�u��'hC�>@�
�$�&r��t��s���wLV
���
�R)�F��s=�r��J:�
��y�	�f�1L7�|�M*<��JU��
��pSא��!�9o�Ĭ��� �ȍ��jQ��GV���Om��.�}�Drؿ֐|��ehJR�
b��NiZ�k
1Y�>L�1�j]�ZD5-D&Cr�B�X·G�-��h$f
I>
1��\�|A���!���d�	�Iy���"U	+
oH�F
��**lO������۷o�.���G!�W�^���{������Y&���T����$��.�
������ϟ?�{�M�
~�$�$�ԺIpX�K�W�kr��7o�vvv�{޹sG���,���VC���أДv�
PCt1���P����Xm62뚀�d�Cږ\��ӯ�������zx�Jտ��Y�����ֶt


U��0
+T�+U>z%�
5	�A<m�d�j0�̶h��O�]��a��M���7��\j���#��l>Y�/O4�6�N~`�)pA��o�ɏ`hK���������q&���UW�n����7o��a����1�d"��/_�����\࠿��I=��?��$�2Ur�Ֆa��$,-7X���FI
+�J.���Y��)�?
�g��k$i��h� �C=��\`���;%�����[>�7b�� ��R.x������
����"��� �̍
+A���D�DX9�KU�i𛸭r����HF����4=(��O�	�����h�b���'����O at z1\���b��x1���A8�K���/B����8���s�����1�	9�����y�P.8��O�M�
�w^��v����_�~��=�[���x<�/�
������d{{�������bH�$��9�����1
����
2�� �7��{�

+~��z��
�	Ƴ�����|q�{��a���t��_4!ì�����ǻw�$N����U]X?E�
�K�)�|�O�Ŀ��C�N���3�(���A�
�_�r�6ă���7�nhAD�?�U��,@߰6���(�?v�itC�2�e6�)�666��Ë/�_����ϟ?�5�h����t:x��U�ӧOT�k�r Ƥ��=�ӆ�tY�_�oa<mP�]*K�F�A�Ʉ��f���V��D��
x&r�
(9 at X����yU�
�jn�2鬴�C�)PT\`�E���T���v�(4X�����JI�Jhc��.��u����#H���#*���ёuY��,T�*���M�1(���?U+l~�럤
+���s��
+���J"�6K(DS��
�$�_�����Jɵ�Ճx0�$��:���-��t��!	'	
��~s�
j
I89W!�->�1Q at .�gk]PkH>��`�iLJo��@z�
�UT
��vZ�
��0�
�lR
+���YU

��
2�!t���"�D'���%�%�y�i
p0&/@ɼA�
�=���ҥK/_�T/�u,Txĸ��&����އ�	q�իW{��`0�77�տ�^
��$�}����څ
���� ���ؘww�ޝ�fxx��A��'�
B�ϟ�v�Zj:. y��Ǐ߾}�-�	������,N
�.@��-����ZKG,
��/�&�ԟ˗/��95_<��s���9
35�@:�yg�E��
+A
9��|||���=�L�jO����V9�d��/��T�}cs�����Ã����g+de���0����[[[(>���&������Z���ճC���P
�;
}ʠ���{{�?]bec���1福�2(��>rQ};��JC�,�wCX�R-���x��dO��
+�� +C��
endstream
endobj
205 0 obj
2169 
endobj
206 0 obj
<< /Filter /FlateDecode /Length 207 0 R >> 
stream
+H��W�n�8�������c'� F<v#��EV���Q�Y��S�%R걁d.s1
��"�v>˳]��i��u�?ܿzU^V��C׮�-�$]d'JkvS^=��.�'�:
�n^�fg�E����tX�h�u�^
>�|Y~l��g }�а�k��ͷ������`������l��{|�٭w
���R�i�]`�Zma�r]���q����k������go
+��[����;��@�1�. |����Ӎ`��(�Hn�6��黶f]��V{f���{�t�\8oئ�0��q>0�4��*/���Ҙ	�
�
�ҩ	�Aro'9�;骋1Vr�dY��
�4e�.�=�6gI�=�����JpMA7Zsᵂǧc,T�Gf���1VcxY����鶬�#Œ��-"�(��G�y[����B����f��f����>������ޥ��?*�
�}0�
?��CZ-�#D.�s�"C�pg1[S>�h�4
+��@\U� '��
G��l�v\j�^�4!I
U܈Q.���L���\ki'}A�$�2�
ς
9W�Y���~��xv����������@[�:I���F�Ș��)�@ix��%�,:qF`���N��,�ct39H�hY´��>	2:A��2�u�MӤlu�ȷ�(�P
æxv�_�m��h
��a�Pg����
+
>h
u��[�=��3}BP�ޠ;a�l�D�
+3A	H�h���},�!�\
~R�,K&M���Y�#�܏i��SPV����p�ڵ	p�Fn}�}0�<�
�g����h�
�Hk&��"���G�4
+��$iBF}�.a�a�Jx�%�=
+'�L_B�PV�Y��,����,�G+�܁�.��=h�E��
�ph�j�K,Jt���c��m]��9ny�Z�Ӌ����T$�u��ˇ�������<~��Ӏc]Ԭ��\�����҂E�y������}_m��A�p���~w��
�.&~8�w��H�b	pQ��7��X��<
�g~k�Ў�bS�����b�
�U����Mu�nWL��FgGg�`
Z(�
�3*���@֤�|Q�#��`>�
�:"Ђ�����1�p�hoy@�#_����`9�RC?8Ɖ$4K�VQ� ,*Ӄ�H����A�.'�##J�
a����Et��+�O�>�Jg8�D���ɟ�M��Z��fD[�?��H1!���ʃ��Y*�KcȒ&d�FGxˆ�Gғ$���ʙ����d�4k�{�s��Q�{^n����niZJe¯�L*��Yye�޲1�lW�u�:����MT)P<�=\Yg������PмG��7��S� �o�;
endstream
endobj
207 0 obj
1295 
endobj
208 0 obj
<< /Filter /FlateDecode /Length 209 0 R /Length1 710 /Subtype /Type1C >> 
stream
+H�,�mHSq����V���6ۮ�̷��-H��TrJ��������m-�Y�ӵMKMڜS���XN�
+�
"+Ab~
+���S��߇�����p�y�y�q�����JS�ɪ%
8�S�`z�1>�de��arY�� O���~���m綀B)�A���R��8
���s�� W�T�"�V���Ġ�3�|ձ��q%��S�L�0�"�DG6�h��fp���4����0��h�^���n4��i�2Ǧ�KQ�F1��0
n��f���V-$c5�9g𘪤
�Zty$�11mj�	
�QN�7�5�#�:�T"Չ� <$��ⴁ�d����v�M
������
TF
~�	�J��o�=�-���/����`���fa,��~�0���A��y�/6i;��SxM��V���v8(;)�
].�x�c�F�`1<
�4c�
+���� �)�.����a��jnfe�SX�

v��?����u�*�
+R$uf����}w����
+�,�b#�ū�榦K�&��̻[�0#4K�>b�����Ky,'���,�J�n��$H�����7�>J`R>���549��M|��|�lQ��6*`dS��C���*5gD�Fȓ7ۻ��em �
Zq���}�
|���F�2 G�q��fxW�R�6�
+�w�����#o�<?�:��
��{�ֿ��F�>A�o����-��h�g���H�_ ��0�
endstream
endobj
209 0 obj
700 
endobj
xref
0 210 
0000000004 65535 f
+0000000016 00000 n
+0000000069 00000 n
+0000000133 00000 n
+0000000006 00001 f
+0000000663 00000 n
+0000000007 00001 f
+0000000008 00001 f
+0000000009 00001 f
+0000000010 00001 f
+0000000011 00001 f
+0000000012 00001 f
+0000000013 00001 f
+0000000014 00001 f
+0000000015 00001 f
+0000000016 00001 f
+0000000017 00001 f
+0000000018 00001 f
+0000000019 00001 f
+0000000020 00001 f
+0000000021 00001 f
+0000000022 00001 f
+0000000023 00001 f
+0000000024 00001 f
+0000000025 00001 f
+0000000026 00001 f
+0000000027 00001 f
+0000000028 00001 f
+0000000033 00001 f
+0000000855 00001 n
+0000000965 00001 n
+0000001046 00001 n
+0000001308 00001 n
+0000000034 00001 f
+0000000036 00001 f
+0000002818 00001 n
+0000000037 00001 f
+0000000038 00001 f
+0000000039 00001 f
+0000000040 00001 f
+0000000041 00001 f
+0000000042 00001 f
+0000000044 00001 f
+0000010850 00001 n
+0000000045 00001 f
+0000000046 00001 f
+0000000048 00001 f
+0000027101 00001 n
+0000000049 00001 f
+0000000050 00001 f
+0000000051 00001 f
+0000000052 00001 f
+0000000053 00001 f
+0000000054 00001 f
+0000000055 00001 f
+0000000056 00001 f
+0000000057 00001 f
+0000000058 00001 f
+0000000060 00001 f
+0000027124 00001 n
+0000000061 00001 f
+0000000062 00001 f
+0000000064 00001 f
+0000046002 00001 n
+0000000065 00001 f
+0000000066 00001 f
+0000000069 00001 f
+0000046025 00001 n
+0000066596 00001 n
+0000000070 00001 f
+0000000071 00001 f
+0000000072 00001 f
+0000000073 00001 f
+0000000074 00001 f
+0000000075 00001 f
+0000000076 00001 f
+0000000077 00001 f
+0000000078 00001 f
+0000000079 00001 f
+0000000080 00001 f
+0000000081 00001 f
+0000000082 00001 f
+0000000084 00001 f
+0000066619 00001 n
+0000000085 00001 f
+0000000086 00001 f
+0000000088 00001 f
+0000086679 00001 n
+0000000089 00001 f
+0000000090 00001 f
+0000000092 00001 f
+0000086702 00001 n
+0000000093 00001 f
+0000000094 00001 f
+0000000095 00001 f
+0000000096 00001 f
+0000000097 00001 f
+0000000098 00001 f
+0000000100 00001 f
+0000095790 00001 n
+0000000101 00001 f
+0000000102 00001 f
+0000000104 00001 f
+0000095812 00001 n
+0000000105 00001 f
+0000000106 00001 f
+0000000108 00001 f
+0000095894 00001 n
+0000000110 00001 f
+0000095994 00001 n
+0000000111 00001 f
+0000000112 00001 f
+0000000113 00001 f
+0000000114 00001 f
+0000000115 00001 f
+0000000116 00001 f
+0000000122 00001 f
+0000096166 00000 n
+0000096279 00000 n
+0000096306 00000 n
+0000096337 00000 n
+0000096360 00000 n
+0000000123 00001 f
+0000000124 00001 f
+0000000125 00001 f
+0000000128 00001 f
+0000096447 00000 n
+0000097669 00000 n
+0000000136 00001 f
+0000097899 00000 n
+0000098202 00000 n
+0000098223 00000 n
+0000098300 00000 n
+0000098382 00000 n
+0000098841 00000 n
+0000098863 00000 n
+0000000140 00001 f
+0000098940 00000 n
+0000099399 00000 n
+0000099421 00000 n
+0000000152 00001 f
+0000099498 00000 n
+0000099894 00000 n
+0000099915 00000 n
+0000099991 00000 n
+0000100073 00000 n
+0000100394 00000 n
+0000100415 00000 n
+0000100492 00000 n
+0000100574 00000 n
+0000101033 00000 n
+0000101055 00000 n
+0000000156 00001 f
+0000101132 00000 n
+0000101591 00000 n
+0000101613 00000 n
+0000000160 00001 f
+0000101690 00000 n
+0000102086 00000 n
+0000102107 00000 n
+0000000161 00001 f
+0000000176 00001 f
+0000102183 00000 n
+0000102283 00000 n
+0000102428 00000 n
+0000102541 00000 n
+0000102568 00000 n
+0000102599 00000 n
+0000102622 00000 n
+0000102709 00000 n
+0000103012 00000 n
+0000103033 00000 n
+0000103110 00000 n
+0000103192 00000 n
+0000103660 00000 n
+0000103682 00000 n
+0000000180 00001 f
+0000103759 00000 n
+0000104228 00000 n
+0000104250 00000 n
+0000000184 00001 f
+0000104327 00000 n
+0000104727 00000 n
+0000104748 00000 n
+0000000192 00001 f
+0000104824 00000 n
+0000105166 00000 n
+0000105187 00000 n
+0000105264 00000 n
+0000105346 00000 n
+0000105814 00000 n
+0000105836 00000 n
+0000000196 00001 f
+0000105913 00000 n
+0000106382 00000 n
+0000106404 00000 n
+0000000200 00001 f
+0000106481 00000 n
+0000106883 00000 n
+0000106904 00000 n
+0000000202 00001 f
+0000106980 00000 n
+0000000000 00001 f
+0000107073 00000 n
+0000107102 00000 n
+0000109415 00000 n
+0000109438 00000 n
+0000110813 00000 n
+0000110836 00000 n
+0000111646 00000 n
+trailer
<<
/Size 210
/Info 5 0 R 
/Root 1 0 R 

>>
startxref
111668
%%EOF
\ No newline at end of file
diff --git a/doc/scangeometry.eps b/doc/scangeometry.eps
new file mode 100644
index 0000000..c95f8fc
--- /dev/null
+++ b/doc/scangeometry.eps
@@ -0,0 +1,9376 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(TM) 7.0
+%%AI8_CreatorVersion: 9.0
+%%For: (Kevin Rosenberg) ( )
+%%Title: (scangeometry.eps)
+%%CreationDate: 2/16/2001 2:16 PM
+%%BoundingBox: 181 269 488 505
+%%HiResBoundingBox: 181.25 269.6035 487.333 504.5313
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentFonts: Myriad-Roman
+%%+ Times-Italic
+%%DocumentSuppliedFonts: Myriad-Roman
+%%+ Times-Italic
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_typography_AI5 1.0 1
+%%+ procset AGM_Gradient 1.0 0
+%%+ procset Adobe_ColorImage_AI6 1.1 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_pattern_AI5 1.0 0
+%%+ procset Adobe_cshow 2.0 8
+%AI5_FileFormat 3.0
+%AI3_ColorUsage: Color
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
+%%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 169 -233 755 533
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 300 300
+%AI5_RulerUnits: 2
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI5_OpenToView: 23 595 1.5 1345 943 18 0 1 11 68 1 0
+%AI5_OpenViewLayers: 77
+%%PageOrigin:169 -233
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI7_Thumbnail: 128 100 8
+%%BeginData: 7988 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD28FFA87DA87DA87DA87DA8A8A87DA8FD057DFD69FFA8527D7D7D
+%A8FD11FFFD047DA8FD62FF7D7D7DFD1AFFA87D7DA8FD5CFF527D7DFD20FF
+%A8527DA8FD56FFA87D7DFD26FFA852A8FD53FF52A8FD2AFF7D7DA8FD4FFF
+%7D7DFD2EFFA852FD4CFFA87DA8FD31FF7D7DFD49FF52A8FD34FFA87DA8FD
+%45FFA852FD38FF7D7DFD43FF7D7DFD3AFFA852FD41FF7DA8FD3DFF52FD3F
+%FF7DA8FD3FFF52FD3DFF527DA87DA87DA87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA852FD3BFF7DF8F8F827527D527D
+%527D527D527D527D527D527D527D527D527D527D52522727F827F827F827
+%2752527D527D527D527D527D527D527D527D527D527D527D527D527D5227
+%52FD39FF7DA852F8F87DFD15FFA87D27F8F852527D7DA87D7D5227F8F827
+%A8FD18FF52FF52FD37FF7DFFFF52F85252FD14FF5227F87DA8FD0BFFA87D
+%F8277DFD16FF7DFFFF7DFD35FF7DA8FFFF527DFF5252FD11FF7DF8277DFD
+%11FF7DF8F8A8FD14FF52FFFFFF52FD33FF7DA8FFFFFF52FFFFFF5252FD0E
+%FFA827F87DFD15FF7DF87DFD13FF7DFD04FF52FD31FFA87DFD04FF52FD04
+%FF277DFD0CFF7DF827FD18FFA8F827A8FD11FF52FD04FFA87DFD30FF52FD
+%05FF52FD05FF52A8FD0AFF7DF87DFD1BFF2727A8FD10FF7DFD05FF7DA8FD
+%2EFF52FD06FF7DFD06FF277DFD08FF7DF87DFD1DFF52F8A8FD0FFF52FD06
+%FF7DFD2DFFA8A8FD06FF52FD07FF527DFD06FF7DF87DFD1FFF5227A8FD0E
+%FF7DFD06FFA87DFD2CFF7DFD07FF52FD08FF277DFD04FFA8F87DFD21FF27
+%27A8FD0DFF52FD07FF7DA8FD2AFF7DFD08FF52FD09FF277DFFFFFF2752FD
+%23FF2752FD0DFF7DFD08FF52FD2AFF7DFD08FF52FD0AFF277DFF2727FD25
+%FFF87DFD0CFF52FD08FFA87DFD28FF52FD09FF52FD0BFF2752F8FD26FFA8
+%F8A8FD0BFF7DFD09FF7DFD27FFA87DFD09FF52FD0BFFA8F87DFD09FFA852
+%527DFD0DFF7D5252FD0AFF5227FD0BFF52FD09FFA87DFD26FF7DFD0AFF52
+%FD0BFF522727FD09FF5252277DFD0CFF7D52275252FD0AFF277DFD0AFF7D
+%FD0AFF7DFD26FF7DFD0AFF7DFD0AFFA8F8A8FF27A8FD06FF7D522752277D
+%FD0BFF7D27522752A8FD09FF7D27FD0AFF52FD0AFFA87DFD24FF52FD0BFF
+%52FD0AFF5252FFFFFF27A8FD05FF7D2752275252FD0BFF52522752277DFD
+%0AFFF87DFD09FF7DFD0BFF7DFD24FF7DFD0BFF52FD0AFFF8A8FD04FF27A8
+%FD04FF525227522752A8FD09FF7D522752275252FD0AFF7DF8FD09FF52FD
+%0BFF7DFD24FF7DFD0BFF52FD09FF5252FD06FF27A8FFFFA8522752525227
+%A8FD09FF7D275252522752FD0BFF277DFD08FF7DFD0CFF7DFD22FF52FD0C
+%FF52FD09FFF87DFD07FFF8A8FF7D2752275227527DFD09FF525227522752
+%52FD0BFF5252FD08FF52FD0CFF7DFD22FF7DFD0CFF52FD08FF7DF8FD08FF
+%A8F8A87D5227522752277DFD09FF7D275227522752A8FD0BFFF8FD08FF7D
+%FD0CFF7DFD21FFA87DFD0CFF52FD08FF2752FD09FFA8F852275227522752
+%7DFD09FF7D522752275227A8FD0BFF277DFD07FF52FD0DFF52FD20FF7DFD
+%0DFF52FD08FF27A8FD0AFFA8F85252522752527DFD09FF7D525227525252
+%A8FD0BFF5252FD07FF7DFD0DFF7DFD20FF7DFD0DFF7DFD07FFA8F8FD0CFF
+%52F852275227527DFD09FF52522752275227A8FD0BFFA8F8FD07FF52FD0D
+%FF7DFD20FF7DFD0DFF52FD07FF5252FD0CFFA852F8522752277DFD09FF7D
+%275227522752FD0DFF277DFD06FF7DFD0DFFA8FD20FFA8FD0DFF52FD07FF
+%2752FD0CFFA82727F8522752A8FD09FF7D522752275252FD0DFF277DFD06
+%FF52FD0DFFA87DFD1EFFA8A8FD0DFF52FD07FFF8A8FD0DFF7D2752F85252
+%FD0AFFA827525252277DFD0DFF7D52FD06FF7DFD0EFF7DFD1EFF52FD0EFF
+%52FD06FFA8F8A8FD0DFF52522727F852FD0BFF52275227527DFD0DFF7D27
+%FD06FF52FD0EFF7DFD1EFFA8FD0EFF52FD06FFA8F8FD0EFFA85252275227
+%FD0BFF7D52275252FD0EFFA8F8FD06FF7DFD0EFF7DFD1EFF52FD0EFF52FD
+%06FF7D27FD0FFF7D2752527D27FD0BFF525227A8FD0FFFF8FD06FF52FD0E
+%FF7DFD1EFFA8FD0EFF52FD06FF7D27FD10FFA87DFFFF7D27FD0BFF7DA8FD
+%10FFF8A8FD05FF7DFD0EFFA8FD1EFF7DFD0EFF7DFD06FF527DFD15FF7D27
+%FD1CFF277DFD05FF52FD0EFFA8FD1EFFA8FD0EFF52FD06FF7D52FD16FF7D
+%52FD1BFF27A8FD05FF7DFD0EFFA8FD1EFF7DFD0EFF52FD06FF527DFD17FF
+%7D27FD1AFF277DFD05FF52FD0FFF7DFD1DFFA8FD0EFF52FD06FF7D52FD18
+%FFA852FD19FF27A8FD05FF7DFD0FFF7DFD1DFF7DFD0EFF52FD06FF527DFD
+%19FF7D52FD18FF277DFD05FF52FD0FFF7DFD1DFFA8FD0EFF52FD06FF7D52
+%FD1AFF7D52FD17FF27A8FD05FF7DFD0EFFA87DFD1DFF7DFD0EFF52FD06FF
+%5252FD1BFF5227FD16FFF87DFD05FF52FD0EFFA8FD1EFFA8FD0EFF52FD06
+%FF7D27FD1CFF5252FD15FFF8FD06FF7DFD0EFFA8FD1EFF7DFD0EFF7DFD06
+%FF7D27FD18FFA827A8FFFF5252FD13FFA8F8FD06FF52FD0EFFA8FD1EFF7D
+%FD0EFF52FD06FFA8F8FD17FF7D272752A8FFFF527DFD12FFA8F8FD06FF7D
+%FD0EFF7DFD1EFF7DFD0EFF52FD07FFF8A8FD14FFA827F8527DF8FD04FF52
+%7DFD11FF5227FD06FF52FD0EFFA8FD1EFF7DFD0EFF52FD07FF27A8FD14FF
+%5252FD04A8FD05FF527DFD10FF5252FD06FF7DFD0EFF7DFD1EFF7DFD0EFF
+%52FD07FF5252FD15FFA8FD04FFA8A8FD04FF527DFD0FFF277DFD06FF52FD
+%0EFF7DFD1FFF7DFD0DFF52FD07FF7D27FD0AFFA87DA8FD0BFF272727A8FD
+%05FF527DFFFFFF7D7DA8FD07FFA8F8A8FD06FF7DFD0EFF7DFD1FFF7DFD0D
+%FF52FD08FFF8FD09FFA852272752FD0AFF7D52FD08FF527DFF27272752A8
+%FD06FF7DF8FD07FF52FD0DFF7DA8FD1FFF7DFD0DFF52FD08FF277DFD08FF
+%7D27522752FD15FF275252275227FD07FF527DFD07FF7DFD0DFFA8FD20FF
+%7DFD0DFF7DFD08FF5252FD08FF7D52272752FD15FFA8FD042752A8FD06FF
+%F87DFD07FF52FD0DFF7DFD20FFA8A8FD0CFF52FD08FFA8F8FD09FF7D7D7D
+%FD18FF2752A8FD07FFA8F8FD08FF7DFD0DFF7DFD21FF7DFD0CFF52FD09FF
+%2752FD23FFA827A8FD07FF2752FD08FF52FD0CFF7DA8FD21FF7DFD0CFF52
+%FD09FF7D27FD25FF52A8FD05FFA8F8A8FD08FF7DFD0CFF7DFD22FFA8A8FD
+%0BFF52FD0AFFF87DFD24FFA827A8FD04FF5227FD09FF52FD0CFF7DFD23FF
+%7DFD0BFF52FD0AFF7D27FD25FFA852A8FFFFFFF8A8FD09FF7DFD0BFFA8A8
+%FD23FF7DFD0BFF52FD0AFFA8F87DFD25FFA827A8FF2727FD0AFF52FD0BFF
+%7DFD24FFA8A8FD0AFF52FD0BFF7D27FD27FF277DF8A8FD0AFF7DFD0AFFA8
+%7DFD25FF52FD0AFF7DFD0CFF2752FD26FFA8F827FD0BFF52FD0AFF7DFD26
+%FFA8A8FD09FF52FD0CFFA8F8A8FD25FF7DF827A8FD0AFF7DFD0AFF7DFD27
+%FF7DFD09FF52FD0DFF7DF8FD24FF7DF8A8A827A8FD09FF52FD09FF52FD28
+%FFA8A8FD08FF52FD0EFF5227FD22FFA8F87DFFFFA852FD09FF7DFD08FFA8
+%7DFD29FF52FD08FF52FD0EFFA82727FD21FFF852FD04FFA827A8FD07FF52
+%FD08FF7DFD2BFF7DFD07FF52FD10FF2752FD1FFF2752FD06FFA852FD07FF
+%7DFD07FFA8A8FD2BFF7DA8FD06FF52FD10FFA82727FD1CFFA8F852FD08FF
+%A827A8FD05FF52FD07FF52FD2DFF7DFD06FF52FD12FF2727FD1AFFA8F852
+%FD0AFFA852FD05FF7DFD06FF7DFD2EFFA87DFD05FF7DFD12FFA852F87DFD
+%16FFA852F87DFD0CFF7D27A8FFFFFF52FD05FF7D7DFD2FFF7DA8FD04FF52
+%FD14FFA8F827A8FD13FF7D2727A8FD0EFF7D27A8FFFF7DFD04FFA87DFD31
+%FF52FD04FF52FD16FF27F827A8FD0FFF7DF8F852FD11FF7D27A8A852FD04
+%FF52FD33FF52FFFFFF52FD17FFA852F82752A8FD09FFA85227F87DFD14FF
+%7D522752FFFFFF7DA8FD34FF52FFFF52FD1AFF7D52F8F8F8FD0527F8F827
+%527DFD16FFA827F827FFFFA8A8FD36FF52FF52FD1DFFA8A87D7D527DA8A8
+%FD1AFF7D52F827FFA87DFD37FFA8FD0452F87D5252527D5252527D525252
+%7D5252527D5252527D5252527D5252527D5252527D5252527D5252527D52
+%52527D5252527D5252527D5252527D525252275252F8A87DFD3AFF7D7DF8
+%52FD3CFF7DF852A87DFD3BFF52F8F827A87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D
+%A87DA87DA87DA87DA87DA87DA87DA87D7DF8F8F8FD3DFFA82727FD3CFF52
+%277DFD40FF52A8FD3AFFA852A8FD42FF7DA8FD38FFA87DFD45FFA87DA8FD
+%18FF52F8277DFD19FF7DA8FD48FFA87DFD17FF527D52527DFD16FFA852FD
+%4CFF52A8FD15FF2752F87D52FD14FFA87D7DFD4EFFA87DA8FD13FFF8527D
+%FF52FD13FF7D7DFD52FF7D7DA8FD10FF5227FFFFA852FD10FFA87D52FD56
+%FFA87D7DFD0EFFA87DFD12FFA87D7DFD5BFF527D7DFD1CFF7D7D7DA8FD60
+%FF7D7D7DA8FD14FFA8A87D7DA8FD67FF7D52FD047DA87DA8FFFFA8A87DA8
+%7DA87D7D7DA8FD73FFFD047DFDCCFFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+	put
+	/packedarray where not
+	{
+		userdict begin
+		/packedarray
+		{
+			array astore readonly
+		} bind def
+		/setpacking /pop load def
+		/currentpacking false def
+	 end
+		0
+	} if
+	pop
+	userdict /defaultpacking currentpacking put true setpacking
+	/initialize
+	{
+		Adobe_level2_AI5 begin
+	} bind def
+	/terminate
+	{
+		currentdict Adobe_level2_AI5 eq
+		{
+		 end
+		} if
+	} bind def
+	mark
+	/setcustomcolor where not
+	{
+		/findcmykcustomcolor
+		{
+			(AI8_CMYK_CustomColor)
+			6 packedarray
+		} bind def
+		/findrgbcustomcolor
+		{
+			(AI8_RGB_CustomColor)
+			5 packedarray
+		} bind def
+		/setcustomcolor
+		{
+			exch 
+			aload pop dup
+			(AI8_CMYK_CustomColor) eq
+			{
+				pop pop
+				4
+				{
+					4 index mul
+					4 1 roll
+				} repeat
+				5 -1 roll pop
+				setcmykcolor
+			}
+			{
+				dup (AI8_RGB_CustomColor) eq
+				{
+					pop pop
+					3
+					{
+						1 exch sub
+						3 index mul 
+						1 exch sub
+						3 1 roll
+					} repeat
+					4 -1 roll pop
+					setrgbcolor
+				}
+				{
+					pop
+					4
+					{
+						4 index mul 4 1 roll
+					} repeat
+					5 -1 roll pop
+					setcmykcolor
+				} ifelse
+			} ifelse
+		}
+		def
+	} if
+	/setAIseparationgray
+	{
+		false setoverprint
+		0 setgray
+		/setseparationgray where{
+			pop setseparationgray
+		}{
+			/setcolorspace where{
+				pop
+				[/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+				1 exch sub setcolor
+			}{
+				setgray
+			}ifelse
+		}ifelse
+	} def
+	
+	/gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+	userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+	userdict /level2?
+	systemdict /languagelevel known dup
+	{
+		pop systemdict /languagelevel get 2 ge
+	} if
+	put
+/level2ScreenFreq
+{
+ begin
+		60
+		HalftoneType 1 eq
+		{
+			pop Frequency
+		} if
+		HalftoneType 2 eq
+		{
+			pop GrayFrequency
+		} if
+		HalftoneType 5 eq
+		{
+			pop Default level2ScreenFreq
+		} if
+ end
+} bind def
+userdict /currentScreenFreq  
+	level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+	{
+		/setcmykcolor where not
+		{
+			/setcmykcolor
+			{
+				exch .11 mul add exch .59 mul add exch .3 mul add
+				1 exch sub setgray
+			} def
+		} if
+		/currentcmykcolor where not
+		{
+			/currentcmykcolor
+			{
+				0 0 0 1 currentgray sub
+			} def
+		} if
+		/setoverprint where not
+		{
+			/setoverprint /pop load def
+		} if
+		/selectfont where not
+		{
+			/selectfont
+			{
+				exch findfont exch
+				dup type /arraytype eq
+				{
+					makefont
+				}
+				{
+					scalefont
+				} ifelse
+				setfont
+			} bind def
+		} if
+		/cshow where not
+		{
+			/cshow
+			{
+				[
+				0 0 5 -1 roll aload pop
+				] cvx bind forall
+			} bind def
+		} if
+	} if
+	cleartomark
+	/anyColor?
+	{
+		add add add 0 ne
+	} bind def
+	/testColor
+	{
+		gsave
+		setcmykcolor currentcmykcolor
+		grestore
+	} bind def
+	/testCMYKColorThrough
+	{
+		testColor anyColor?
+	} bind def
+	userdict /composite?
+	1 0 0 0 testCMYKColorThrough
+	0 1 0 0 testCMYKColorThrough
+	0 0 1 0 testCMYKColorThrough
+	0 0 0 1 testCMYKColorThrough
+	and and and
+	put
+	composite? not
+	{
+		userdict begin
+		gsave
+		/cyan? 1 0 0 0 testCMYKColorThrough def
+		/magenta? 0 1 0 0 testCMYKColorThrough def
+		/yellow? 0 0 1 0 testCMYKColorThrough def
+		/black? 0 0 0 1 testCMYKColorThrough def
+		grestore
+		/isCMYKSep? cyan? magenta? yellow? black? or or or def
+		/customColor? isCMYKSep? not def
+	 end
+	} if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset Adobe_typography_AI5 1.0 1
+%%Title: (Typography Operators)
+%%Version: 1.0 1
+%%CreationDate:(6/10/1996) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_typography_AI5 68 dict dup begin
+put
+/initialize
+{
+ begin
+ begin
+	Adobe_typography_AI5 begin
+	Adobe_typography_AI5
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+ end
+ end
+	Adobe_typography_AI5 begin
+} def
+/terminate
+{
+	currentdict Adobe_typography_AI5 eq
+	{
+	 end
+	} if
+} def
+/modifyEncoding
+{
+	/_tempEncode exch ddef
+	/_pntr 0 ddef
+	{
+		counttomark -1 roll
+		dup type dup /marktype eq
+		{
+			pop pop exit
+		}
+		{
+			/nametype eq
+			{
+				_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
+				put
+			}
+			{
+				/_pntr exch ddef
+			} ifelse
+		} ifelse
+	} loop
+	_tempEncode
+} def
+/havefont
+{
+	systemdict /languagelevel known
+		{
+		/Font resourcestatus dup
+			{ exch pop exch pop }
+		if
+		}
+		{
+		systemdict /FontDirectory get 1 index known
+			{ pop true }
+			{
+			systemdict /fileposition known
+				{
+				dup length 6 add exch
+				Ss 6 250 getinterval
+				cvs pop
+				Ss exch 0 exch getinterval
+				status
+					{ pop pop pop pop true }
+					{ false }
+				ifelse
+				}
+				{
+				pop false
+				}
+			ifelse
+			}
+		ifelse
+		}
+	ifelse
+} def
+/TE
+{
+	StandardEncoding 256 array copy modifyEncoding
+	/_nativeEncoding exch def
+} def
+/subststring {
+	exch 2 index exch search
+	{
+		exch pop
+		exch dup () eq
+		{
+			pop exch concatstring
+		}
+		{
+			3 -1 roll
+			exch concatstring
+			concatstring
+		} ifelse
+		exch pop true
+	}
+	{
+		pop pop false
+	} ifelse
+} def
+/concatstring {
+	1 index length 1 index length
+	1 index add
+	string
+	dup 0 5 index putinterval
+	dup 2 index 4 index putinterval
+	4 1 roll pop pop pop
+} def
+%
+/TZ
+{
+	dup type /arraytype eq
+	{
+		/_wv exch def
+	}
+	{
+		/_wv 0 def
+	} ifelse
+	/_useNativeEncoding exch def
+	2 index havefont
+	{
+		3 index
+		255 string
+		cvs
+		
+		dup
+		(_Symbol_)
+		eq
+		{
+			pop
+			2 index
+			findfont
+			
+		}
+		{
+			1 index 0 eq
+			{
+				dup length 1 sub
+				1 exch
+				getinterval
+				
+				cvn
+				findfont
+			}
+			{
+				pop 2 index findfont
+			} ifelse
+		} ifelse
+	}
+	{
+		dup 1 eq
+		{
+			2 index 64 string cvs
+			dup (-90pv-RKSJ-) (-83pv-RKSJ-) subststring
+			{
+				exch pop dup havefont
+				{
+					findfont false
+				}
+				{
+					pop true
+				} ifelse
+			}
+			{
+				pop	dup
+				(-90ms-RKSJ-) (-Ext-RKSJ-) subststring
+				{
+					exch pop dup havefont
+					{
+						findfont false
+					}
+					{
+						pop true
+					} ifelse
+				}
+				{
+					pop pop true
+				} ifelse
+			} ifelse
+			{
+				1 index 1 eq
+				{
+					/Ryumin-Light-Ext-RKSJ-V havefont
+					{/Ryumin-Light-Ext-RKSJ-V}
+					{/Courier}
+					ifelse
+				}
+				{
+					/Ryumin-Light-83pv-RKSJ-H havefont
+					{/Ryumin-Light-83pv-RKSJ-H}
+					{/Courier}
+					ifelse
+				} ifelse
+				findfont
+				[1 0 0.5 1 0 0] makefont
+			} if
+		}
+		{
+			/Courier findfont
+		} ifelse
+	} ifelse
+	_wv type /arraytype eq
+	{
+		_wv makeblendedfont
+	} if
+	dup length 10 add dict
+ begin
+	mark exch
+	{
+		1 index /FID ne
+		{
+			def
+		} if
+		cleartomark mark
+	} forall
+	pop
+	/FontScript exch def
+	/FontDirection exch def
+	/FontRequest exch def
+	/FontName exch def
+	counttomark 0 eq
+	{
+		1 _useNativeEncoding eq
+		{
+			/Encoding _nativeEncoding def
+		} if
+		cleartomark
+	}
+	{
+		/Encoding load 256 array copy
+		modifyEncoding /Encoding exch def
+	} ifelse
+	FontName currentdict
+ end
+	definefont pop
+} def
+/tr
+{
+	_ax _ay 3 2 roll
+} def
+/trj
+{
+	_cx _cy _sp _ax _ay 6 5 roll
+} def
+/a0
+{
+	/Tx
+	{
+		dup
+		currentpoint 3 2 roll
+		tr _psf
+		newpath moveto
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		dup
+		currentpoint 3 2 roll
+		trj _pjsf
+		newpath moveto
+		trj _ctm _pjss
+	} ddef
+} def
+/a1
+{
+W B
+} def
+/e0
+{
+	/Tx
+	{
+		tr _psf
+	} ddef
+	/Tj
+	{
+		trj _pjsf
+	} ddef
+} def
+/e1
+{
+W F 
+} def
+/i0
+{
+	/Tx
+	{
+		tr sp
+	} ddef
+	/Tj
+	{
+		trj jsp
+	} ddef
+} def
+/i1
+{
+	W N
+} def
+/o0
+{
+	/Tx
+	{
+		tr sw rmoveto
+	} ddef
+	/Tj
+	{
+		trj swj rmoveto
+	} ddef
+} def
+/r0
+{
+	/Tx
+	{
+		tr _ctm _pss
+	} ddef
+	/Tj
+	{
+		trj _ctm _pjss
+	} ddef
+} def
+/r1
+{
+W S
+} def
+/To
+{
+	pop _ctm currentmatrix pop
+} def
+/TO
+{
+	iTe _ctm setmatrix newpath
+} def
+/Tp
+{
+	pop _tm astore pop _ctm setmatrix
+	_tDict begin
+	/W
+	{
+	} def
+	/h
+	{
+	} def
+} def
+/TP
+{
+ end
+	iTm 0 0 moveto
+} def
+/Tr
+{
+	_render 3 le
+	{
+		currentpoint newpath moveto
+	} if
+	dup 8 eq
+	{
+		pop 0
+	}
+	{
+		dup 9 eq
+		{
+			pop 1
+		} if
+	} ifelse
+	dup /_render exch ddef
+	_renderStart exch get load exec
+} def
+/iTm
+{
+	_ctm setmatrix _tm concat
+	_shift aload pop _lineorientation 1 eq { exch } if translate
+	_scale aload pop _lineorientation 1 eq _yokoorientation 1 eq or { exch } if scale
+} def
+/Tm
+{
+	_tm astore pop iTm 0 0 moveto
+} def
+/Td
+{
+	_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
+} def
+/iTe
+{
+	_render -1 eq
+	{
+	}
+	{
+		_renderEnd _render get dup null ne
+		{
+			load exec
+		}
+		{
+			pop
+		} ifelse
+	} ifelse
+	/_render -1 ddef
+} def
+/Ta
+{
+	pop
+} def
+/Tf
+{
+	1 index type /nametype eq
+	{
+		dup 0.75 mul 1 index 0.25 mul neg
+	} if
+	/_fontDescent exch ddef
+	/_fontAscent exch ddef
+	/_fontSize exch ddef
+	/_fontRotateAdjust _fontAscent _fontDescent add 2 div neg ddef
+	/_fontHeight _fontSize ddef
+	findfont _fontSize scalefont setfont
+} def
+/Tl
+{
+	pop neg 0 exch
+	_leading astore pop
+} def
+/Tt
+{
+	pop
+} def
+/TW
+{
+	3 npop
+} def
+/Tw
+{
+	/_cx exch ddef
+} def
+/TC
+{
+	3 npop
+} def
+/Tc
+{
+	/_ax exch ddef
+} def
+/Ts
+{
+	0 exch
+	_shift astore pop
+	currentpoint
+	iTm
+	moveto
+} def
+/Ti
+{
+	3 npop
+} def
+/Tz
+{
+	count 1 eq { 100 } if
+	100 div exch 100 div exch
+	_scale astore pop
+	iTm
+} def
+/TA
+{
+	pop
+} def
+/Tq
+{
+	pop
+} def
+/Tg
+{
+	pop
+} def
+/TG
+{
+	pop
+} def
+/Tv
+{
+	/_lineorientation exch ddef
+} def
+/TV
+{
+	/_charorientation exch ddef
+} def
+/Ty
+{
+	dup /_yokoorientation exch ddef 1 sub neg Tv
+} def
+/TY
+{
+	pop
+} def
+/T~
+{
+	Tx
+} def
+/Th
+{
+	pop pop pop pop pop
+} def
+/TX
+{
+	pop
+} def
+/Tk
+{
+	_fontSize mul 1000 div
+	_lineorientation 0 eq { neg 0 } { 0 exch } ifelse
+	rmoveto
+	pop
+} def
+/TK
+{
+	2 npop
+} def
+/T*
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	Td
+} def
+/T*-
+{
+	_leading aload pop
+	_lineorientation 0 ne { exch } if
+	exch neg exch neg
+	Td
+} def
+/T-
+{
+	_ax neg 0 rmoveto
+	_lineorientation 1 eq _charorientation 0 eq and { 1 TV _hyphen Tx 0 TV } { _hyphen Tx } ifelse
+} def
+/T+
+{
+} def
+/TR
+{
+	_ctm currentmatrix pop
+	_tm astore pop
+	iTm 0 0 moveto
+} def
+/TS
+{
+	currentfont 3 1 roll
+	/_Symbol_ findfont _fontSize scalefont setfont
+	
+	0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	setfont
+} def
+/Xb
+{
+	pop pop
+} def
+/Tb /Xb load def
+/Xe
+{
+	pop pop pop pop
+} def
+/Te /Xe load def
+/XB
+{
+} def
+/TB /XB load def
+currentdict readonly pop
+end
+setpacking
+%
+/X^
+{
+	currentfont 5 1 roll
+	dup havefont
+		{
+		findfont _fontSize scalefont setfont
+		}
+		{
+		pop
+		exch
+		} ifelse
+	2 index 0 eq
+	{
+		Tx
+	}
+	{
+		Tj
+	} ifelse
+	pop	pop
+	setfont
+} def
+/T^	/X^	load def
+%%EndResource
+%%BeginResource: procset AGM_Gradient_Sep 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient_Sep 5 dict dup begin put
+/AGM_Gradient_Sep_private 100 dict def
+/initialize{
+	AGM_Gradient_Sep begin
+	AGM_Gradient_Sep_private begin
+	_compositeJob{
+		initializeSinglePassSeps
+	}{
+		initializeMultiPassSeps
+	}ifelse
+	initializeSeps
+	AGM_Gradient_private begin
+		/_fillSD newSpotDict def
+		/_rampSD newSpotDict def
+		/_nCustomColorSD nd
+ end
+	AGM_Gradient_Sep_private 
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient_Sep
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop	
+ end
+}def
+/terminate{
+	currentdict AGM_Gradient_Sep eq{
+	 end
+	}if
+}def
+AGM_Gradient_Sep_private begin
+/initializeSeps{
+	/currentoverprint { _of } def
+	_noImage not _level2PS not and{
+		/linealFill{
+			currentoverprint{
+				0 0 1 1 rectfill
+			}{
+				mySave
+				8 setImageParms
+				_color{
+					_nCustomColorSD begin
+						cyan magenta yellow black
+	
+						_spotColor{
+							spot1/tintImage spot1/tintValue get 1 exch sub makeByte8 put
+							spot2/tintImage spot2/tintValue get 1 exch sub makeByte8 put
+						}if
+				 end
+	
+					4{
+						makeByte8 4 1 roll
+					}repeat
+					true 4 _nCustomColorSD ncolorimage
+				}{
+					_nCustomColorSD/black get 1 exch sub makeByte8 
+					_nCustomColorSD bwImage
+				}ifelse
+				myRestore
+			}ifelse
+		}def
+	}if
+	/_whiteBytes 1 makeByte8 pt
+	 /knockOut{
+		_noImage _level2PS or currentoverprint or{
+			gsave
+			false setoverprint
+			1 setgray 
+			0 0 1 1 rectfill
+			grestore
+		}{
+			8 setImageParms _whiteBytes /_image load 5 execImage
+		}ifelse
+	}def
+	/newSpotDict{
+		11 dict dup begin
+			/nSpots 2 def
+			/spot1 7 dict def
+			/spot2 7 dict def
+	 end
+	}def
+	/initSpotData
+	{
+	 begin
+			/name nd
+			/tintImage nd
+			/tintValue nd
+			/spot_C nd
+			/spot_M nd
+			/spot_Y nd
+			/spot_K nd
+	 end
+	}def
+	/initSpotDict{
+	 begin
+			/cyanInk nd
+			/magentaInk nd
+			/yellowInk nd
+			/blackInk nd
+			/cyan nd
+			/magenta nd
+			/yellow nd
+			/black nd
+			spot1 initSpotData
+			spot2 initSpotData
+	 end
+	}def
+	/copySpotDict{
+		/_dst xp
+	 begin
+			cyanInk magentaInk yellowInk blackInk
+			cyan magenta yellow black
+			spot1 spot2
+	 end
+		_dst begin
+			/spot1 spot1 maxlength dict def
+			/spot2 spot2 maxlength dict def
+			spot2 copy pop
+			spot1 copy pop
+			/black xd
+			/yellow xd
+			/magenta xd
+			/cyan xd
+			/blackInk xd
+			/yellowInk xd
+			/magentaInk xd
+			/cyanInk xd
+	 end
+	}def
+	/setCustomColor
+	{
+		1 index /Black eq{
+			6 1 roll 5 npop
+			1 exch sub
+			setgray
+		}{
+			6 1 roll _ccAry1 astore exch
+			dup null eq{
+				pop 0
+			}if
+			setcustomcolor
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		
+		_colorStyle 0 eq{
+			0 0 0
+			4 -1 roll
+			1 exch sub
+			_spotColor{
+				/_colorStyle 3 pt
+				/Black
+				1 index
+				1 exch sub
+			}if
+		}if
+		_colorStyle 2 eq{
+			3 npop
+		}if
+		_rampSD _fillSD copySpotDict
+		
+		_colorStyle 4 eq{ 
+			pop
+			9 2 roll 3 npop 6 -2 roll
+		} if
+		
+		_colorStyle 3 eq _colorStyle 4 eq or{ 	
+				
+			_fillSD begin
+				/_spot1 spot1 pt
+				/_spot2 spot2 pt
+		 end
+			
+			exch dup _spot1/name get eq{
+				_spot1 _spot2
+			}{
+				_spot2 _spot1
+			}ifelse
+		 begin
+			 begin
+					/name xd
+					1 exch sub /tintValue xd
+					4{
+						tintValue mul 4 1 roll
+					}repeat
+					_spotColor not{
+						/tintValue null def
+					}if
+			 end
+				/tintValue 0 def
+		 end
+		}if
+		_fillSD nsetcustomcolor
+	}def
+	/renderCMYK{
+		spot1/name get null eq
+		spot2/name get null eq and
+		dup not{
+			pop
+			spot1 spotConverted
+		}if
+		dup not{
+			pop
+			spot2 spotConverted
+		}if
+	}def
+	/currentInk{
+		true
+		_inRipSep{
+			currentcolorspace 0 get
+			dup /DeviceGray eq
+			1 index /DeviceCMYK eq or{
+				pop
+				currentcmykcolor add add add 0 eq{
+					pop false
+				}if
+			}{
+				/Separation eq{
+					currentcolor 0 eq{
+						pop false
+					}if
+				}if
+			}ifelse
+		}{
+			currentgray 1 eq{
+				pop false
+			}if
+		}ifelse
+	}def
+	/currentInkN{
+	
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		{
+			currentInk
+		}{
+			gsave
+			_spot1 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			_spot2 begin
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					currentInk
+				}{
+					false
+				}ifelse
+		 end
+			grestore
+			
+			or
+		} ifelse
+	}def
+	/fill_ /fill load def
+	/fillOvp{
+		currentoverprint{
+			_inRipSep{
+				currentcolorspace 0 get
+				dup /DeviceGray eq
+				1 index /DeviceCMYK eq or{
+					pop
+					currentcmykcolor add add add 0 eq{
+						newpath
+					}if
+				}{
+					/Separation eq{
+						currentcolor 0 eq{
+							newpath
+						}if
+					}if
+				}ifelse
+			}{
+				currentgray 1 eq{
+					newpath
+				}if
+			}ifelse
+		}if
+		fill_
+	}def
+	/fill{
+		_nCustomColorSD begin
+			/_spot1 spot1 pt
+			/_spot2 spot2 pt
+			renderCMYK
+	 end
+		
+		{
+			fillOvp
+		}{
+			_spot1 begin
+				gsave
+				name null ne{
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+				}{
+					1 setgray
+				}ifelse
+				fillOvp 
+				grestore
+		 end
+			_spot2 begin
+				name null ne{
+					gsave
+					true setoverprint
+					spot_C spot_M spot_Y spot_K name tintValue setCustomColor
+					fillOvp
+					grestore
+				}if
+		 end
+			newpath
+		}ifelse
+	}def
+	/expandSpot{
+		_spotColor{
+			/_len xp
+			_rampSD begin
+				spot1 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+				spot2 begin
+					tintImage null ne{
+						tintImage _len expandOne /tintImage xd
+					}if
+			 end
+		 end
+		}{
+			pop
+		}ifelse
+	}def
+	/rampImage{
+		currentoverprint{
+			rectImage
+		}{
+			_enabledSmoothShade{
+				fillRamp
+			}{
+				_color{
+					_rampSD begin
+						/cyanInk _cyanData 0 ne def
+						/magentaInk _magentaData 0 ne def
+						/yellowInk _yellowData 0 ne def
+						/blackInk _blackData 0 ne def
+				 end
+					
+					_nSamples setImageParms
+					_nSamples expandSpot
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 _rampSD ncolorimage
+				}{
+					_rampSD begin
+						/cyanInk false def
+						/magentaInk false def
+						/yellowInk false def
+						/blackInk true def
+				 end
+					_nSamples setImageParms 
+					_blackData _rampSD bwImage
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/nsetcustomcolor where{
+		pop
+	}{
+		/nsetcustomcolor
+		{
+			/_nCustomColorSD xp
+			_nCustomColorSD begin
+				4 copy
+				/black xd
+				/yellow xd
+				/magenta xd
+				/cyan xd
+				4 copy
+				0 ne /blackInk xd
+				0 ne /yellowInk xd
+				0 ne /magentaInk xd
+				0 ne /cyanInk xd
+		 end
+			setcmykcolor
+		}def
+	}ifelse
+	/nsetcustomcolorend where{
+		pop
+	}{
+		/nsetcustomcolorend
+		{
+			/_nCustomColorSD null pt
+		}def
+	}ifelse
+}def
+/initializeSinglePassSeps{
+	/_decodeNorm	[0 1] pt
+	/_decodeInvert 	[1 0] pt
+	/spotConverted
+	{
+	 begin
+			name null eq{
+				false
+			}{
+				tintValue null eq tintImage null eq and{
+					true
+				}{
+					_inDistiller{
+						false
+					}{
+						false
+						currentpagedevice/SeparationColorNames get{name eq or}forall
+						not
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/dictImage
+	{
+		20 dict dup begin
+			/Dict xd
+			/Decode xd
+			/DataSource xd
+			/ImageMatrix xd
+			/BitsPerComponent xd
+			/Height xd
+			/Width xd
+			/ImageType 1 def
+			Dict
+	 end
+		/_image load 1 execImage
+	}def
+	/bwImage{
+	 begin
+			gsave
+			currentoverprint{
+				blackInk{
+					[/Separation /Black /DeviceGray{}] setcolorspace
+					_decodeInvert dictImage
+				}{
+					5 npop
+				}ifelse
+			}{
+				/DeviceGray setcolorspace
+				_decodeNorm dictImage
+			}ifelse
+			grestore
+	 end
+	}def
+	/ncolorimage where{
+		pop
+	}{
+		/ncolorimage{
+		 begin
+				renderCMYK{
+					cyanInk 
+					magentaInk and
+					yellowInk and
+					blackInk and
+					not
+					currentoverprint 
+					and{	
+						pop pop
+						gsave
+						cyanInk{
+							8 copy
+							[/Separation /Cyan /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}if
+						magentaInk{
+							8 copy
+							[/Separation /Magenta /DeviceGray{}] setcolorspace
+							4 -1 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						yellowInk{
+							8 copy
+							[/Separation /Yellow /DeviceGray{}] setcolorspace
+							4 -2 roll
+							3 npop
+							_decodeNorm dictImage
+						}if
+						blackInk{
+							4 -3 roll
+							[/Separation /Black /DeviceGray{}] setcolorspace
+							3 npop
+							_decodeNorm dictImage
+						}{
+							8 npop
+						}ifelse
+						grestore
+					}{
+						/_colorimage load 10 execImage
+					}ifelse
+				}{
+					6 npop
+					gsave
+					spot1 begin
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							4 copy
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							1 setgray fill
+						}ifelse
+				 end
+					spot2 begin
+						true setoverprint
+						name null ne tintImage null ne and{
+							[/Separation name /DeviceGray{}] setcolorspace
+							tintImage 
+							name /Black eq{
+								_decodeNorm
+							}{
+								_decodeInvert
+							}ifelse 
+							dictImage
+						}{
+							4 npop
+							1 setgray fill
+						}ifelse
+				 end
+					grestore
+				}ifelse
+		 end
+		}def
+	}ifelse
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_renderCMYK not{
+			_rampSD begin
+				[/DeviceN 
+					[
+					spot1 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					spot2 begin
+						name null ne tintImage null ne and{
+							name
+						}if
+				 end
+					]
+					_inDistiller {
+						/DeviceCMYK [
+							spot1 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 1
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							spot2 begin
+								name null ne tintImage null ne and{
+									spot_C spot_M spot_Y spot_K 2
+								}{
+									0 0 0 0 0
+								}ifelse
+						 end
+							5 1 roll 6 -2 roll add
+							dup 1 eq {
+								pop
+								8 /index cvx 1 /exch cvx /sub cvx
+								9 1 /roll cvx
+							}{
+								2 eq {
+									8 /index cvx 1 /exch cvx /sub cvx
+									10 1 /roll cvx
+								}if
+							}ifelse
+							4 1 /roll cvx 5 -2 /roll cvx
+							8 /index cvx /mul cvx /exch cvx 9 /index cvx /mul cvx /add cvx 7 1 /roll cvx
+							3 1 /roll cvx 4 -2 /roll cvx
+							7 /index cvx /mul cvx /exch cvx 8 /index cvx /mul cvx /add cvx 6 1 /roll cvx
+							2 1 /roll cvx 3 -2 /roll cvx
+							6 /index cvx /mul cvx /exch cvx 7 /index cvx /mul cvx /add cvx 5 1 /roll cvx
+							5 /index cvx /mul cvx /exch cvx 6 /index cvx /mul cvx /add cvx 4 1 /roll cvx
+							6 -2 /roll cvx /pop cvx /pop cvx
+						] cvx bind
+					}{
+						/DeviceCMYK {}
+					}ifelse
+				] setcolorspace
+		 end
+			/_nColorSpace currentcolorspace pt
+		}if
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C0_Space _nColorSpace pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					spot1 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne{
+							tintValue
+						}if
+				 end
+			 end
+			] pt
+			/_C1_Space _nColorSpace pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/initializeMultiPassSeps{
+	/invertXfer{
+		[
+		{
+			1 exch sub
+		}/exec load systemdict /currenttransfer get exec /exec load
+		] cvx systemdict /settransfer get exec
+	}def
+	/ccThrough{
+		gsave
+		1 setCustomColor
+		currentcmykcolor
+		grestore
+		add add add 0 ne
+	}def
+	/spotConverted
+	{
+	 begin
+			_isCMYKSep not{
+				false
+			}{
+				name null eq{
+					false
+				}{
+					tintValue null eq tintImage null eq and{
+						true
+					}{
+						spot_C spot_M spot_Y spot_K name ccThrough
+					}ifelse
+				}ifelse
+			}ifelse
+	 end
+	}def
+	/spotChannel
+	{
+		_isCMYKSep{
+			pop false
+		}{
+			/_spotDict xp
+				_spotDict/name get null eq{
+					false
+				}{
+					_spotDict/spot_C get
+					_spotDict/spot_M get
+					_spotDict/spot_Y get
+					_spotDict/spot_K get
+					_spotDict/name get
+					ccThrough 
+				}ifelse
+		}ifelse
+	}def
+	/getChannelData
+	{
+		_isCMYKSep dup{
+			pop renderCMYK
+		}if
+		{
+			_blackPlate{
+				4 1 roll 3 npop blackInk
+			}{
+				_yellowPlate{
+					4 2 roll 3 npop yellowInk
+				}{
+					_magentaPlate{
+						4 3 roll 3 npop magentaInk
+					}{
+						3 npop cyanInk
+					}ifelse
+				}ifelse
+			}ifelse
+			{
+				true /nonZeroData
+			}{
+				true /zeroData
+			}ifelse
+		}{
+			4 npop
+			spot1/name get null ne 
+			spot1 spotChannel and{
+				spot1/tintImage get dup null ne{
+					false /nonZeroData
+				}{
+					pop false /noData
+				}ifelse
+			}{
+				spot2/name get null ne 
+				spot2 spotChannel and{
+					spot2/tintImage get dup null ne{
+						false /nonZeroData
+					}{
+						pop false /noData
+					}ifelse
+				}{
+					false /noData
+				}ifelse
+			}ifelse
+		}ifelse
+	}def
+	/renderChannelData
+	{
+		/_tmp xp
+		_tmp /nonZeroData ne currentoverprint and{
+			pop
+			_tmp /zeroData eq{pop}if
+			4 npop
+		}{
+			_tmp /nonZeroData eq{
+				{
+					invertXfer
+				}if
+					systemdict/image
+				get 5 execImage
+			}{
+				pop
+				_tmp /zeroData eq{pop}if
+				4 npop
+				knockOut
+			}ifelse
+		}ifelse
+	}def
+	/bwImage{
+	 begin
+			gsave
+			dup dup dup
+			getChannelData
+			exch pop false exch
+			renderChannelData
+			grestore
+	 end
+	}def
+	/ncolorimage{
+	 begin
+			pop pop
+			gsave
+			spot2/name get null ne spot2 spotChannel and{
+				true setoverprint
+			}if
+			getChannelData 
+			renderChannelData
+			grestore
+	 end
+	}def
+	/getRampColorSpace{
+		
+		/_renderCMYK _rampSD begin renderCMYK end pt
+		
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C0 [currentcolor] pt
+			/_C0_Space currentcolorspace pt
+		}{
+			/_C0 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C0_Space /DeviceGray pt
+		}ifelse
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		
+		_renderCMYK{
+			/_C1 [currentcolor] pt
+			/_C1_Space currentcolorspace pt
+		}{
+			/_C1 [
+				_nCustomColorSD begin
+					0
+					spot1 begin 
+						name null ne
+						tintValue null ne and
+						spot1 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					spot2 begin 
+						name null ne
+						tintValue null ne and
+						spot2 spotChannel and{
+							pop tintValue
+						}if
+				 end
+					1 exch sub
+			 end
+			] pt
+			/_C1_Space /DeviceGray pt
+		}ifelse
+		
+		/_rampColorSpace _C0_Space pt
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginResource: procset AGM_Gradient 1.0 0
+%%Title: (AGM Gradient Procset)
+%%Version: 1.0 0
+%%CreationDate: (4/26/96) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /AGM_Gradient 20 dict dup begin put
+/AGM_Gradient_private 201 dict def
+/initialize
+{
+	AGM_Gradient begin
+	AGM_Gradient_private begin
+	initializeVars
+	
+	/bd systemdict/mark get def
+	/ed
+		_level2PS 
+		{
+			(>>)
+		}{
+			(counttomark 2 idiv dup dict begin {def} repeat pop currentdict end)
+		} ifelse
+	cvx def
+	
+	_level2PS{
+		initializeLev2
+	}{
+		initializeLev1
+	}ifelse
+	
+	queryDevice
+	
+	initializeRectFill
+	initializeShading
+	initializeOps
+	_producingSeps{
+		AGM_Gradient_Sep/initialize get exec
+	}{
+		initializeComposite
+	}ifelse
+	_illustrator{
+		/f{}def
+		/F{}def
+		/s{}def
+		/S{}def
+		/b{}def
+		/B{}def
+	}if
+	/image where{
+		/image get /_image xd
+	}if
+	/colorimage where{
+		/colorimage get /_colorimage xd
+	}if
+	AGM_Gradient_private
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+	AGM_Gradient
+	{
+		dup xcheck 1 index type /arraytype eq and
+		{
+			bind
+		}if
+		pop pop
+	}forall
+ end
+	
+	currentdict readonly pop
+ end
+}def
+/initializeAI
+{
+	pop pop 
+	AGM_Gradient/AGM_Gradient_private get /_illustrator true put
+	AGM_Gradient/initialize get exec
+		AGM_Gradient begin
+}def
+/unload{
+	systemdict/languagelevel known{
+		systemdict/languagelevel get 2 ge{
+			userdict/AGM_Gradient_Sep 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+			userdict/AGM_Gradient 2 copy known{
+				undef
+			}{
+				pop pop
+			}ifelse
+		}if
+	}if
+}def
+/terminate{
+	currentdict AGM_Gradient eq{
+	 end
+	}if
+}def
+ 
+AGM_Gradient_private begin
+/initializeVars{
+	/_d255 256 array def
+	0 1 255{
+		_d255 exch dup 255 div put
+	}bind for
+	/_d255- 256 array def
+	0 1 255{
+		_d255- exch 1 _d255 2 index get sub put
+	}bind for
+	/_sSave nd
+	/_dUserSpace matrix defaultmatrix def
+	/_bUMatrix matrix def
+	/_imageMatrix matrix def
+	/_saveMatrix matrix def
+	/_xm matrix def
+	/_ccAry1 5 array def
+	/_bbox 4 array pt
+	/_level2PS 
+		systemdict/languagelevel known dup{
+			pop systemdict/languagelevel get 2 ge
+		}if
+	def
+	/_level3PS
+		_level2PS systemdict/shfill known and
+	def
+	currentdict /_illustrator known not{
+		/_illustrator false def
+	}if
+	
+}def
+/initializeOps
+{
+	AGM_Gradient begin
+	currentdict/Bc known not{
+		/Bc{
+		
+			_renderFlag 2 eq _enabledSmoothShade or{
+				6 npop
+			}{
+				pushBSpace
+				_rampIndex 0 eq{
+					pop pop
+					setCStop
+				}if
+				linealFill
+				popBSpace
+			}ifelse
+		
+		}def
+	}if
+	
+	currentdict/Bg known not{
+		/Bg{
+			10 npop
+			/_gradName xp
+			/_renderFlag xp
+			/_enabledSmoothShade false pt
+		
+			_renderFlag 2 ne{
+		
+				_illustrator{
+					_of setoverprint
+				}if
+		
+				/_enabledSmoothShade 
+					_level3PS{
+						_usingSmoothShade
+						_producingSeps not
+						currentoverprint not or and
+						_noImage not and
+					}{
+						false
+					}ifelse
+				pt
+				
+				_illustrator _eo and _renderFlag 3 eq or{
+					eoclip
+				}{
+					clip
+				}ifelse
+		
+				_gradNames _gradName 2 copy known{
+					get
+					mark exch aload pop
+					/_gradType xp
+					1 sub dup /_rampIndex xp
+					/_maxRampIndex xp
+					mark exch aload pop
+					0 0
+				}if
+				pop pop
+				getRampData
+			}{
+				mark mark
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bm known not{
+		/Bm{
+			_renderFlag 2 ne{
+				_gradType 0 eq{
+					linealRamp
+				}{
+					radialGrad
+				}ifelse
+			}{
+				6 npop
+			}ifelse
+		}def
+	}if
+	
+	currentdict/Bh known not{
+		/Bh{
+			2 npop
+			/_yHi xp
+			/_xHi xp
+			/_radHilite _xHi 0 ne _yHi 0 ne or pt
+		}def
+	}if
+	
+	currentdict/Bn known not{
+		/Bn{
+			AGM_Gradient_private begin
+				dict /_gradNames xp
+		 end
+		}def
+	}if
+	
+	currentdict/Bd known not{
+		/Bd{
+			AGM_Gradient begin
+			AGM_Gradient_private begin
+				/_nColorsBd xp
+				/_gradType xp
+				/_gradName xp
+		}def
+	}if
+	
+	currentdict/BD known not{
+		/BD{
+				currentdict/_gradNames known not{
+					/_gradNames 20 dict def
+				}if
+				] _nColorsBd _gradType
+				]  _gradName exch /_gradNames xput
+		 end
+		 end
+		}def
+	}if
+	
+	currentdict/Bb known not{
+		/Bb{
+		
+			AGM_Gradient/AGM_Gradient_private get /_illustrator get not{
+				AGM_Gradient begin
+			}if
+			AGM_Gradient_private begin
+			_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get begin
+			}if
+			mySave
+		}def
+	}if
+	
+	currentdict/BB known not{
+		/BB{
+		
+			/_tmp xp
+			cleartomark cleartomark
+		
+			_tmp dup
+			_renderFlag
+		
+			myRestore
+		
+			_producingSeps{
+			 end
+			}if
+		
+			_illustrator dup
+		 end
+			not {
+			 end
+			}if
+		
+			{
+				2 ne exch 0 gt and{
+					2 eq{
+						s
+					}{
+						S
+					}ifelse
+				}{
+					pop newpath
+				}ifelse
+			}{
+				pop newpath
+			}ifelse
+		
+		
+		}def
+	}if
+	
+	currentdict/Xm known not{
+		/Xm{
+			_xm astore pop
+		}def
+	}if
+	
+ end
+}def
+/queryDevice{
+	/_inDistiller
+		systemdict /currentdistillerparams known
+	def
+	/_inRipSep
+		_level2PS{
+			currentpagedevice/Separations 2 copy known{
+				get
+			}{
+				pop pop false
+			}ifelse
+		}{
+			false
+		}ifelse
+		_inDistiller or
+	def
+	/_noImage /lv1Fix where{
+		pop lv1Fix
+	}{
+		false
+	}ifelse
+	def
+	/_useShells where{
+		/_useShells get /_usingShells xp
+	}{
+		/_usingShells false def
+	}ifelse
+	
+	/_useSmoothShade where{
+		pop
+	}{
+		/_useSmoothShade false def 
+	}ifelse
+	/_forceToCMYK where{
+		pop
+	}{
+		/_forceToCMYK false def 
+	}ifelse
+	/_cyanPlate 1 0 0 0 testCMYKColorThrough def
+	/_magentaPlate 0 1 0 0 testCMYKColorThrough def
+	/_yellowPlate 0 0 1 0 testCMYKColorThrough def
+	/_blackPlate 0 0 0 1 testCMYKColorThrough def
+	/_compositeJob
+		_cyanPlate _magentaPlate and _yellowPlate and _blackPlate and
+	def
+	/_isCMYKSep
+		_cyanPlate _magentaPlate or _yellowPlate or _blackPlate or
+	def
+	/_compositeSpotDevice where{
+		pop
+	}{
+		/_compositeSpotDevice _compositeJob not _inRipSep or{
+			1
+		}{
+			0
+		}ifelse
+		def
+	}ifelse
+	/_producingSeps _compositeSpotDevice 0 ne def
+	/_deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
+	/_dpiThreshold where{
+		pop
+	}{
+		/_dpiThreshold 600 def
+	}ifelse
+	/_screenFreqThreshold where{
+		pop
+	}{
+		/_screenFreqThreshold 150 def
+	}ifelse
+	/_contoneDevice where{
+		pop
+	}{
+		/_contoneDevice false def
+	}ifelse
+	/_subSampleOK 
+		_deviceDPI _dpiThreshold le 
+		currentScreenFreq _screenFreqThreshold le and 
+		_contoneDevice not and 
+	def
+}def
+/initializeRectFill{
+	/rectfill where dup{
+		exch pop not _producingSeps or
+	}{
+		not
+	}ifelse
+	{
+		/rectfill{
+			gsave
+			newpath
+			4 2 roll moveto
+			1 index 0 rlineto
+			0 1 index rlineto
+			1 index neg 0 rlineto
+			pop pop
+			closepath
+			fill
+			grestore
+		}def
+	}if
+}def
+/initializeLev1{
+	/currentScreenFreq{
+		currentscreen pop pop
+	}def
+	/_byte 1 string def
+	/colorimage where{
+		pop
+	}{
+		/colorimage{
+			pop pop
+			/_blackTmp xp
+			/_yellowTmp xp
+			/_magentaTmp xp
+			/_cyanTmp xp
+			/_cnt 0 pt
+			[
+			_byte dup 0
+			_cyanTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .3 /mul cvx
+			_magentaTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .59 /mul cvx
+			_yellowTmp
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx .11 /mul cvx
+			_blackTmp 
+				/_cnt cvx /get cvx _d255 /exch cvx /get cvx
+			/add cvx /add cvx /add cvx 1 /exch cvx /sub cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/dup cvx 1 /gt cvx{
+				pop 1
+			}/if cvx
+			255 /mul cvx /cvi cvx
+			256 /mod cvx
+			/dup cvx 0 /lt cvx{
+				pop 0
+			}/if cvx
+			/put cvx
+			/_cnt dup cvx 1 /add cvx /pt cvx
+			] cvx
+			bind
+			/_image load 5 execImage
+		}def
+	}ifelse
+}def
+/initializeLev2{
+	/level2ScreenFreq{
+	 begin
+		60
+		HalftoneType 1 eq{
+			pop Frequency
+		}if
+		HalftoneType 2 eq{
+			pop GrayFrequency
+		}if
+		HalftoneType 5 eq{
+			pop Default level2ScreenFreq
+		}if
+		 end
+	}def
+	/currentScreenFreq{
+		currenthalftone level2ScreenFreq
+	}def
+}def
+/initializeShading{
+	_useSmoothShade _level3PS and{
+		/_usingSmoothShade true pt
+		initializeLev3_Ops
+	}{
+		/_usingSmoothShade false pt
+	}ifelse
+}def
+/initializeLev3_Ops
+{
+	/initShFill{
+		/_index _gradType 0 eq {0}{_maxRampIndex 1 sub} ifelse pt
+		/_rampFuncsArray _maxRampIndex array pt
+		/_boundsArray _maxRampIndex 1 sub array pt
+		/_encodeArray _maxRampIndex 2 mul array pt
+		/_beginCoord _rampPoint pt
+		/_colorSpace null pt
+		/_firstFill _rampIndex _maxRampIndex eq pt
+		/_lastFill false pt
+	}def
+	/linealShFill{
+		popBSpace
+		_xm aload pop pushBSpace
+		
+		/_size _index 1 add pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray 0 _size getinterval pt
+			/_boundsArray _boundsArray 0 _size 1 sub getinterval pt
+			/_encodeArray _encodeArray 0 _size 2 mul getinterval pt
+		}if
+		
+		bd
+			/ShadingType 2
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_firstFill _lastFill]
+			/Domain [0 1] 
+			/Coords [_beginCoord 0 _endCoord 0]
+		ed
+		shfill
+	}def
+	
+	/radialShFill{
+		/_size _maxRampIndex _index sub pt
+		_size _maxRampIndex lt {
+			/_rampFuncsArray _rampFuncsArray _index _size getinterval pt
+			/_boundsArray _boundsArray _index _size 1 sub getinterval pt
+			/_encodeArray _encodeArray _index 2 mul _size 2 mul getinterval pt
+		}if
+		
+		/_rampLen _beginCoord _endCoord sub pt
+		bd
+			/ShadingType 3
+			/ColorSpace _colorSpace
+			_rgbInCMYK{
+				/Function [
+					_cData sampFunc
+					_mData sampFunc
+					_yData sampFunc
+					_kData sampFunc
+				]
+			}{
+				/Function 
+					bd
+						/FunctionType 3
+						/Domain [0 1]
+						/Functions _rampFuncsArray
+						/Bounds _boundsArray
+						/Encode _encodeArray
+					ed
+			}ifelse
+			/Extend [_lastFill _firstFill]
+			/Domain [0 1] 
+			/Coords [_xHi _rampLen mul _yHi _rampLen mul _endCoord 0 0 _beginCoord] 
+		ed
+		shfill
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+	}def
+	
+	%
+	/sampFunc{
+		/_tmp exch pt
+		bd
+			_tmp length 1 eq {
+				_tmp 0 get
+				/_tmp 2 string pt
+				dup _tmp 0 3 -1 roll put
+				_tmp 1 3 -1 roll put
+			}if
+			/FunctionType 0
+			/Order 1
+			/Size [_tmp length]
+			/Domain [0 1]
+			/BitsPerSample 8
+			/DataSource _tmp
+			/Range [0 1]
+		ed
+	}def
+	
+	/fillRamp{
+	
+	
+		/_invert _midPoint 0.5 lt pt
+		_rampIndex _maxRampIndex eq {
+			initShFill
+		}if
+		
+		getRampColorSpace
+		
+		_colorSpace null eq{
+			/_colorSpace _rampColorSpace pt
+		}{
+			_colorSpace _rampColorSpace ne _rgbInCMYK or{
+				/_index _index 1 
+				_gradType 0 eq{
+					sub pt
+					linealShFill
+				}{
+					add pt
+					radialShFill
+				}ifelse
+				initShFill
+				/_colorSpace _rampColorSpace pt
+			} if
+		}ifelse
+		/_endCoord _endPoint pt	
+		/_rgbInCMYK false pt
+		_producingSeps _forceToCMYK or _rgbRamp and {
+			_spotColor{
+				_renderCMYK
+			}{
+				_isCMYKSep
+			}ifelse
+		}{
+			false
+		}ifelse
+		{
+			_compositeJob{
+				/_rgbInCMYK true pt
+				_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+				dup length string copy /_kData exch pt
+				dup length string copy /_yData exch pt
+				dup length string copy /_mData exch pt
+				dup length string copy /_cData exch pt
+			}{
+				_rampFuncsArray _index
+					_cyanPlate{_cyanData}if
+						_magentaPlate{_magentaData}if
+						_yellowPlate{_yellowData}if
+						_blackPlate{_blackData}if
+					_nSamples expandOne
+					sampFunc
+					dup begin /Decode [1 0] def end
+				put
+				/_invert false pt
+			}ifelse
+		}{
+			_rampFuncsArray _index
+				bd
+					/FunctionType 2
+					/Domain [0 1]
+					/N 0.5 log _invert{1 _midPoint sub}{_midPoint}ifelse log div
+					_gradType 0 eq{
+						_invert{/C1}{/C0}ifelse _C0
+						_invert{/C0}{/C1}ifelse _C1
+					}{
+						_invert{/C0}{/C1}ifelse _C1
+						_invert{/C1}{/C0}ifelse _C0
+					}ifelse
+				ed
+			put
+		}ifelse
+		
+		_rampIndex 1 ne{
+			_boundsArray _index _gradType 1 eq{1 sub}if _endCoord put
+		} if
+		
+		0 1 _invert {exch}if
+		_encodeArray _index 2 mul 1 add 3 -1 roll put
+		_encodeArray _index 2 mul 3 -1 roll put
+		_rampIndex 1 eq {
+			/_lastFill true pt
+			_gradType 0 eq{
+				linealShFill
+			}{
+				radialShFill
+			}ifelse
+		}if
+		/_index _index 1 
+		_gradType 0 eq{
+			add pt
+		}{
+			sub pt
+		}ifelse
+	}def
+}def
+/initializeComposite{
+	/bwImage{
+		pop /_image load 5 execImage 
+	}def
+	/rampImage{
+		_enabledSmoothShade{
+			fillRamp
+		}{
+			_color{
+				_nSamples setImageParms
+	
+				
+				_rgbRamp _forceToCMYK not and{
+					_redData _greenData _blueData _nSamples 3 expandColor
+					true 3 null ncolorimage
+				}{
+					_cyanData _magentaData _yellowData _blackData _nSamples 4 expandColor
+					true 4 null ncolorimage
+				}ifelse
+			}{
+				_nSamples setImageParms _blackData null bwImage
+			}ifelse
+		}ifelse
+	}def
+	/setCStop{
+		/_colorStyle exch pt
+		_colorStyle 0 eq{
+			1 exch sub
+			0 0 0
+			4 -1 roll
+		}if
+		
+		_colorStyle 2 eq{
+			_forceToCMYK{
+				3 npop setcmykcolor
+			}{
+				setrgbcolor 4 npop
+			}ifelse
+		}if
+		
+		_colorStyle 3 eq{
+			1 exch sub /_tmp xp
+			pop
+			4{
+				_tmp mul 4 1 roll
+			}repeat
+		}if
+		
+		_colorStyle 4 eq{
+			_forceToCMYK{
+				6 npop setcmykcolor
+			}{
+				3 -1 roll pop pop
+				1 exch sub /_tmp xp
+				3{
+					1 exch sub _tmp mul 1 exch sub 3 1 roll
+				}repeat
+				setrgbcolor 
+				4 npop
+			}ifelse
+		}if
+		_colorStyle 2 ne _colorStyle 4 ne and{
+			null nsetcustomcolor
+		}if
+	}def
+	/nsetcustomcolor
+	{
+		pop setcmykcolor
+	}def
+	/nsetcustomcolorend
+	{
+	}def
+	/ncolorimage{
+		pop 
+		/_colorimage load 10 execImage
+	}def
+	_noImage not _level2PS not and{
+		/linealFill{
+			8 setImageParms
+			_color{
+				currentcmykcolor
+				4{
+					makeByte8 4 1 roll
+				}repeat
+				true 4 null ncolorimage
+			}{
+				currentgray makeByte8 null bwImage
+			}ifelse
+		}def
+	}if
+	/getRampColorSpace{
+		_nSamples 1 gt{ 
+			/_ndx 0 pt
+			[blendColor] cvx exec
+		}if
+		/_C0 [currentcolor] pt
+		/_C0_Space currentcolorspace pt
+		
+		_nSamples 1 gt{ 
+			/_ndx _nSamples 1 sub pt
+			[blendColor] cvx exec
+		}if
+		/_C1 [currentcolor] pt
+		/_C1_Space currentcolorspace pt
+		
+		/_rampColorSpace _C0_Space pt
+		
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}def
+}def
+/npop{
+	{pop}repeat
+}def
+/xd{
+	exch def
+}def
+/nd{
+	null def
+}def
+/pt{
+	AGM_Gradient_private 3 1 roll put
+}def
+/xp{
+	exch pt
+}def
+/xput{
+	dup load dup length exch maxlength eq{
+		dup dup load dup
+		length 2 mul dict copy def
+	}if
+	load begin
+		def
+  end
+}def
+/mySave{
+	save /_sSave xp
+}def
+/myRestore{
+	_sSave type /savetype eq{
+		_sSave restore
+	}if
+}def
+/gMark{
+	counttomark 2 add -1 roll
+}def
+/execImage{
+	/_tmp xp
+	{
+		exec
+	}stopped{
+		$error /errorname get /undefinedresult ne{
+			stop
+		}{
+			_tmp npop
+		}ifelse
+	}if
+}def
+/pushBSpace{
+	newpath gsave
+	_bUMatrix astore concat 
+}def
+/popBSpace{
+	grestore
+}def
+/makeByte8{
+	/_tmp 0 pt
+	255 mul cvi
+	8 string 8{
+		dup _tmp 3 index put 
+		/_tmp _tmp 1 add pt
+	}repeat
+	exch pop
+}def
+/setImageParms{
+	1 8 2 index 0 0 1 0 0 _imageMatrix astore
+}def
+/linealFill{
+	0 0 1 1 rectfill
+}def
+/testCMYKColorThrough{
+	gsave
+	setcmykcolor currentcmykcolor
+	grestore
+	add add add 0 ne
+}def
+/expandOne	{
+	/_tmp xp
+	dup type /stringtype ne{
+		_tmp string
+		exch
+		dup 0 ne{
+			255 mul cvi
+			0 1 _tmp 1 sub{
+				3 copy
+				exch put pop
+			}for
+		}if
+		pop
+	}if
+}def
+/expandColor{
+	/_channels xp
+	/_len xp
+	_channels{
+		_len expandOne _channels 1 roll
+	}repeat
+}def
+/blendColor{
+	
+	_color{
+		_rgbRamp _producingSeps not and _forceToCMYK not and{
+			_redData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_greenData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blueData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			/setrgbcolor cvx
+		}{
+			_cyanData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_magentaData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_yellowData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+			_blackData dup type /stringtype eq{
+				/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+			}if
+	
+			_spotColor{
+				_rampSD begin
+					/_rampSD cvx /begin cvx
+	
+					spot1 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot1 cvx /tintValue 3 -1 /roll cvx /put cvx
+	
+					spot2 begin
+						tintImage dup type /stringtype eq{
+							/_ndx cvx /get cvx _d255- /exch cvx /get cvx
+						}{
+							dup null ne{
+								name type /nametype ne{
+									1 exch sub
+								}if
+							}if
+						}ifelse
+				 end
+					/spot2 cvx /tintValue 3 -1 /roll cvx /put cvx
+					/end cvx
+			 end
+				/_rampSD cvx
+				/nsetcustomcolor cvx
+			}{
+				/setcmykcolor cvx
+			}ifelse
+		}ifelse
+	}{
+		_blackData dup type /stringtype eq{
+			/_ndx cvx /get cvx _d255 /exch cvx /get cvx
+		}if
+		
+		_enabledSmoothShade{
+			1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx /setcmykcolor cvx
+		}{
+			 /setgray cvx
+		}ifelse
+	}ifelse
+}def
+/useRectImage{
+	_subSampleOK _enabledSmoothShade not and{
+		{
+			mark
+			0 1 dtransform atan cvi 90 mod 0 eq
+			1 0 dtransform atan cvi 90 mod 0 eq
+		} stopped
+		{
+			cleartomark
+			false
+		}
+		{
+			and exch pop
+		} ifelse
+	}{
+		false
+	}ifelse
+}def
+/linealImage{
+	_noImage{
+		rectImage
+	}{
+		_producingSeps{
+				AGM_Gradient_Sep/AGM_Gradient_Sep_private get
+				/rampImage get exec
+		}{
+			useRectImage{
+				rectImage
+			}{
+				rampImage
+			}ifelse
+		}ifelse
+	}ifelse
+}def
+/linealRamp{
+	pushBSpace
+	_ramp{
+		linealImage
+	}{
+		linealFill
+	}ifelse
+	popBSpace
+	/_rampIndex _rampIndex 1 sub pt
+	_rampIndex 0 gt{
+		getRampData
+	}if
+}def
+/radialGrad{
+	/_usingShells currentoverprint _producingSeps and _usingShells or pt
+	/_firstShell true pt
+	_enabledSmoothShade not{
+		currentoverprint _producingSeps and{
+			
+			newpath
+			clippath pathbbox 
+			1 add 4 1 roll
+			1 add 4 1 roll
+			1 sub 4 1 roll
+			1 sub 4 1 roll
+			_bbox astore pop
+			
+			newpath
+			_bbox 0 get _bbox 1 get moveto
+			_bbox 2 get _bbox 1 get lineto
+			_bbox 2 get _bbox 3 get lineto
+			_bbox 0 get _bbox 3 get lineto
+			closepath
+			6 copy
+			gsave _bUMatrix astore concat
+			1 0 moveto 0 0 1 0 360 arc closepath
+			eoclip fill
+			popBSpace
+		}{
+			fill
+		}ifelse
+	}if
+	pushBSpace
+	
+	_radHilite{
+		_xHi _yHi _bUMatrix idtransform /_yHi xp /_xHi xp
+		_rampPoint 1 lt{
+			1 _rampPoint sub dup _xHi mul exch _yHi mul translate
+		}if
+	}if
+	_rampIndex{
+		radialRamp
+		/_rampIndex _rampIndex 1 sub pt
+		_rampIndex 0 gt{
+			getRampData
+		}if
+	}repeat
+	
+	popBSpace
+	
+}def
+/getNSamples{
+	0 exch
+	{
+		dup type /stringtype eq{
+			length exch pop exit
+		}if
+		pop
+	}forall
+	dup 0 eq{
+		pop 1
+	}if
+}def
+/getRampData{
+	/_rampType gMark pt
+	/_color _rampType 0 gt pt
+	/_ccRGB _rampType 5 eq _rampType 6 eq or pt
+	/_rgbRamp _rampType 4 eq _ccRGB or pt
+	/_ccProcess _rampType 2 eq _rampType 3 eq or pt
+	_producingSeps{
+		_rampSD initSpotDict
+		/_spotColor _ccProcess _ccRGB or pt
+	}{
+		/_spotColor false pt
+	}ifelse
+	/_ramp true pt
+	100 div /_rampPoint xp
+	100 div /_midPoint xp
+	
+	dup /_colorStyle xp
+	_colorStyle 0 eq{ 
+		2
+	}{
+		_colorStyle 1 eq{ 
+			5
+		}{
+			_colorStyle 2 eq{
+				8
+			}{
+				_colorStyle 3 eq{
+					_producingSeps{
+						_rampSD /spot1 get begin
+							/name 3 index def
+							/spot_K 4 index def
+							/spot_Y 5 index def
+							/spot_M 6 index def
+							/spot_C 7 index def
+					 end
+					}if
+					7
+				}{
+					_producingSeps{
+						_rampSD/spot1 get begin
+							/name 4 index def
+							/spot_K 8 index def
+							/spot_Y 9 index def
+							/spot_M 10 index def
+							/spot_C 11 index def
+					 end
+					}if
+					11
+				} ifelse
+			}ifelse
+		}ifelse
+	}ifelse
+	/_tmp xp
+	_tmp index 100 div /_endPoint xp
+	
+	_gradType 1 eq{
+		_tmp 1 add index 100 div /_midPoint xp
+	}if
+	
+	_producingSeps{
+		_tmp 2 add index /_nextColorStyle xp
+		_nextColorStyle 3 eq{
+			/_tmp _tmp 4 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 2 add index def
+					/spot_Y _tmp 3 add index def
+					/spot_M _tmp 4 add index def
+					/spot_C _tmp 5 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+		_nextColorStyle 4 eq{
+			/_tmp _tmp 5 add pt
+			_tmp index dup
+			_rampSD/spot1 get /name get ne{
+				_rampSD /spot2 get begin
+					/name xd
+					/spot_K _tmp 5 add index def
+					/spot_Y _tmp 6 add index def
+					/spot_M _tmp 7 add index def
+					/spot_C _tmp 8 add index def
+			 end
+			}{
+				pop
+			}ifelse
+		}if
+	}if
+	_rampType 3 eq _rampType 6 eq or{
+		/_tint2Data gMark pt
+	}if
+	_ccProcess _ccRGB or{
+		/_tint1Data gMark pt
+	}if
+	_rgbRamp{
+		/_blueData gMark pt
+		/_greenData gMark pt
+		/_redData gMark pt
+	}if
+	
+	_producingSeps{
+		_ccProcess _ccRGB or{
+			_rampType 3 eq _rampType 6 eq or{
+				_rampSD /spot2 get begin
+					/tintImage _gradType 0 eq{
+						_tint2Data
+					}{
+						_tint1Data
+					}ifelse
+					def
+					name null eq{
+						/name /Black def
+					}if
+			 end
+			}if
+			_rampSD /spot1 get begin
+				/tintImage _gradType 0 eq _rampType 2 eq or _rampType 5 eq or{
+					_tint1Data
+				}{
+					_tint2Data
+				}ifelse
+				def
+				_rampType 2 eq _rampType 5 eq or{
+					name null eq{
+						/name _rampSD/spot2 get /name get def
+						/spot_C _rampSD/spot2 get /spot_C get def
+						/spot_M _rampSD/spot2 get /spot_M get def
+						/spot_Y _rampSD/spot2 get /spot_Y get def
+						/spot_K _rampSD/spot2 get /spot_K get def
+						_rampSD/spot2 get /name null put
+					}if
+				}{
+					name null eq{
+						/name /Black def
+					}if
+				}ifelse
+		 end
+		}if
+	}if
+	/_blackData gMark pt
+	_rampType 0 gt{
+		counttomark 4 add -3 roll
+		/_yellowData xp
+		/_magentaData xp
+		/_cyanData xp
+	}if
+	_ramp{
+		/_nSamples
+			[
+			_rampType 0 eq {_blackData}if
+			_rampType 1 eq {_cyanData _magentaData _yellowData _blackData}if
+			_rampType 2 eq {_cyanData _magentaData _yellowData _blackData _tint1Data}if
+			_rampType 3 eq {_cyanData _magentaData _yellowData _blackData _tint1Data _tint2Data}if
+			_rampType 4 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData}if
+			_rampType 5 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data}if
+			_rampType 6 eq {_cyanData _magentaData _yellowData _blackData _redData _greenData _blueData _tint1Data _tint2Data}if
+			] getNSamples pt
+		_enabledSmoothShade not {/_ramp _nSamples 1 gt pt} if
+	} if
+	
+	setCStop
+}def
+/rectImage{
+	gsave
+	/_sInc 1 pt
+	/_bInc 1 _nSamples div pt
+	/_nSubSamples _nSamples pt
+	/_optimize false pt
+		
+	_subSampleOK{
+		/_uRampLen 1 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt pt
+		/_pChange _uRampLen 0 eq{0}{_nSamples _uRampLen div}ifelse pt
+		
+		_pChange .5 gt dup /_optimize xp{
+			/_nSubSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc 1 _nSubSamples div pt
+			/_sInc _nSamples 1 sub _nSubSamples 1 sub div pt
+		}if
+	}if
+	0
+	_nSubSamples
+	[
+	/dup cvx
+	_optimize {
+		/round cvx /cvi cvx
+	} if
+	/_ndx /exch cvx /pt cvx
+	blendColor
+	0 0 _bInc 1 /rectfill cvx
+	_bInc 0 /translate cvx
+	_sInc /add cvx
+	] cvx
+	bind
+	repeat
+	pop
+	_spotColor{
+		nsetcustomcolorend
+	}if
+	grestore
+}def
+/radialInit{
+	/_nRadSamples _nSamples dup 0 eq{pop 1}if pt
+	/_sInc -1 pt
+	/_rampLen _rampPoint _endPoint sub pt
+	/_bInc _rampLen _nSamples div neg pt
+	/_optimize false pt
+	_subSampleOK{
+		/_uRampLen
+			_rampLen 0 dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			0 _rampLen dtransform _dUserSpace idtransform dup mul exch dup mul add sqrt
+			2 copy lt{
+				exch
+			}if pop
+		pt
+		/_pChange 
+			_uRampLen 0 eq{
+				0
+			}{
+				_nSamples _uRampLen div
+			}ifelse
+		pt
+		_pChange .5 gt dup /_optimize xp{
+			/_nRadSamples _uRampLen 2 div round cvi dup 1 le{pop 2}if pt
+			/_bInc _rampLen _nRadSamples div neg pt
+			/_sInc _nSamples 1 sub _nRadSamples 1 sub div neg pt
+		}if
+	}if
+	_radHilite{
+		/_xBCInc _xHi _rampLen mul _nRadSamples div pt
+		/_yBCInc _yHi _rampLen mul _nRadSamples div pt
+	}if
+}def
+/radialRamp{
+	_enabledSmoothShade{
+		fillRamp
+	}{
+		/_saveMatrix _saveMatrix currentmatrix def
+		
+		radialInit
+	
+		%
+		%
+		true
+		_producingSeps _rgbRamp not and{
+			_nSamples 1 gt{ 
+				pop
+				/_ndx 0 pt
+				[blendColor] cvx exec
+				currentInkN
+				/_ndx _nSamples 1 sub pt
+				[blendColor] cvx exec
+				currentInkN
+				or
+			}if
+		}if
+		{
+			_rampPoint
+		
+			_nSamples 1 sub
+		
+			_nRadSamples 
+			[
+				/dup cvx
+		
+				_optimize{
+					/round cvx /cvi cvx
+				}if
+		
+				/_ndx /exch cvx /pt cvx
+				
+				_usingShells{
+					/_firstShell cvx{
+						/_firstShell false pt
+					}{
+						0 0 3 index 360 0 arcn fill
+					}/ifelse cvx
+				}if
+		
+				blendColor
+		
+				_usingShells{
+					0 0 3 /index cvx 0 360 /arc cvx 
+				}{
+					0 0 3 /index cvx 0 360 /arc cvx /fill cvx
+				}ifelse
+		
+				/exch cvx _bInc /add cvx /exch cvx
+		
+				_sInc /add cvx
+		
+				_radHilite{
+					_xBCInc _yBCInc /translate cvx
+				}if
+			] cvx bind
+			repeat
+		
+			pop pop
+		}{
+			_usingShells{
+				0 0 _rampPoint 360 0 arcn fill
+			}if
+		}ifelse
+	
+		_saveMatrix setmatrix
+		
+		_radHilite{
+			_xHi _rampLen mul _yHi _rampLen mul translate
+		}if
+		
+		_usingShells _rampIndex 1 eq and{
+			fill
+		}if
+	
+		_spotColor{
+			nsetcustomcolorend
+		}if
+	}ifelse
+}def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.2 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+	userdict /Adobe_ColorImage_AI6 50 dict put 
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize { 
+	Adobe_ColorImage_AI6 begin
+	Adobe_ColorImage_AI6 {
+		dup type /arraytype eq {
+			dup xcheck {
+				bind
+			} if
+		} if
+		pop pop
+	} forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+	/Adobe_ColorImage_AI6_Vars 40 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+	/plateindex -1 def
+	/_newproc null def
+	/_proc1 null def
+	/_proc2 null def
+	/channelcount 0 def
+	/sourcecount 0 def
+	/sourcearray 4 array def
+	/_ptispace null def
+	/_ptiname null def
+	/_pti0 0 def
+	/_pti1 0 def
+	/_ptiproc null def
+	/_ptiscale 0 def
+	/_pticomps 0 def
+	/_ptibuf 0 string def
+	/_gtigray 0 def
+	/_cticmyk null def
+	/_rtirgb null def
+	/XIEnable true def
+	/XIType 0 def
+	/XIEncoding 0 def
+	/XICompression 0 def
+	/XIChannelCount 0 def
+	/XIBitsPerPixel 0 def
+	/XIImageHeight 0 def
+	/XIImageWidth 0 def
+	/XIImageMatrix null def
+	/XIRowBytes 0 def
+	/XIFile null def
+	/XIBuffer1 null def
+	/XIBuffer2 null def
+	/XIDataProc null def
+	/XIVersion 6 def
+	/XIColorSpace /DeviceGray def
+	/XIColorValues 0 def
+end
+currentdict /_colorimage known not {
+	/colorimage where {
+		/colorimage get /_colorimage exch def
+	}{
+		/_colorimage null def
+	} ifelse
+} if
+/_image systemdict /image get def
+/_currenttransfer systemdict /currenttransfer get def
+/FourEqual {
+	4 index ne {
+		pop pop pop false
+	}{
+		4 index ne {
+			pop pop false
+		}{
+			4 index ne {
+				pop false
+			}{
+				4 index eq
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/TestPlateIndex {
+	Adobe_ColorImage_AI6_Vars begin
+		/plateindex -1 def
+		/setcmykcolor where {
+			pop
+			gsave
+			1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+			grestore
+			1 0 0 0 FourEqual { 
+				/plateindex 0 def
+			}{
+				0 1 0 0 FourEqual { 
+					/plateindex 1 def
+				}{
+					0 0 1 0 FourEqual {
+						/plateindex 2 def
+					}{
+						0 0 0 1 FourEqual { 
+							/plateindex 3 def
+						}{
+							0 0 0 0 FourEqual {
+								/plateindex 5 def
+							} if
+						} ifelse
+					} ifelse
+				} ifelse
+			} ifelse
+			pop pop pop pop
+		} if
+		plateindex
+ end
+} def
+/concatprocs {
+	/packedarray where {
+		pop dup type /packedarraytype eq 2 index type
+		/packedarraytype eq or
+	}{
+		false
+	} ifelse
+	{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		_proc1 aload pop
+		_proc2 aload pop
+		_proc1 length
+		_proc2 length add
+		packedarray cvx
+	}{
+		/_proc2 exch cvlit def
+		/_proc1 exch cvlit def
+		/_newproc _proc1 length _proc2 length add array def
+		_newproc 0 _proc1 putinterval
+		_newproc _proc1 length _proc2 putinterval
+		_newproc cvx
+	} ifelse
+} def
+/clrspaceissepn {
+	type /arraytype eq 
+} def
+/clrspacegetname {
+	dup clrspaceissepn {dup length 2 sub get}{pop ()} ifelse
+} def
+/clrspacegetalt {
+	aload pop pop pop colormake
+} def
+/clrspacegetcomps {
+	dup /DeviceGray eq {
+		pop 1
+	}{
+		dup /DeviceRGB eq {
+			pop 3
+		}{
+			/DeviceCMYK eq {
+				4
+			}{
+				1
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/clrspacemarksplate {
+	dup /DeviceGray eq {
+		pop plateindex 3 eq
+	}{
+		dup /DeviceRGB eq {
+			pop plateindex 5 ne
+		}{
+			dup /DeviceCMYK eq {
+				pop plateindex 5 ne
+			}{
+				/findcmykcustomcolor where {
+					pop
+					dup length 2 sub get
+					0.1 0.1 0.1 0.1 5 -1 roll
+					findcmykcustomcolor 1 setcustomcolor
+					systemdict /currentgray get exec
+					1 ne
+				}{
+					pop plateindex 5 ne
+				} ifelse
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colormake {
+	dup clrspacegetcomps
+	exch 1 index 2 add 1 roll
+	dup 1 eq {pop}{array astore} ifelse
+	exch
+} def
+/colorexpand {
+	dup clrspacegetname exch
+	dup clrspaceissepn {
+		clrspacegetalt
+		exch 4 1 roll
+	}{
+		1 3 1 roll
+	} ifelse
+} def
+/colortint {
+	dup /DeviceGray eq {
+		3 1 roll 1 exch sub mul 1 exch sub exch
+	}{
+		dup /DeviceRGB eq {
+			3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+		}{
+			dup /DeviceCMYK eq {
+				3 1 roll {1 index mul exch} forall pop 4 array astore exch
+			}{
+				3 1 roll mul exch
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/colortocmyk {
+	dup /DeviceGray eq {
+		pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+	}{
+		dup /DeviceRGB eq {
+			pop aload pop _rgbtocmyk 4 array astore
+		}{
+			dup /DeviceCMYK eq {
+				pop
+			}{
+				clrspacegetalt colortint colortocmyk
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/makeimagedict {
+	7 dict begin
+		/ImageType 1 def
+		/Decode exch def
+		/DataSource exch def
+		/ImageMatrix exch def
+		/BitsPerComponent exch def
+		/Height exch def
+		/Width exch def
+	currentdict end
+} def
+/stringinvert {
+	0 1 2 index length 1 sub {
+		dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+	} for
+} def
+/stringknockout {
+	0 1 2 index length 1 sub {
+		255 2 index 3 1 roll put
+	} for
+} def
+/stringapply {
+	0 1 4 index length 1 sub {
+		dup
+		4 index exch get
+		3 index 3 1 roll
+		3 index exec
+	} for
+	pop exch pop
+} def
+/WalkRGBString {
+	0 3 index
+	dup length 1 sub 0 3 3 -1 roll {
+		3 getinterval {} forall
+		5 index exec
+		3 index
+	} for
+	
+	 5 {pop} repeat
+} def
+/WalkCMYKString
+{
+	0 3 index
+	dup length 1 sub 0 4 3 -1 roll {
+		4 getinterval {} forall
+		
+		6 index exec
+		
+		3 index
+		
+	} for
+	
+	5 { pop } repeat
+	
+} def
+/StuffRGBIntoGrayString
+{
+	.11 mul exch
+	
+	.59 mul add exch
+	
+	.3 mul add
+	
+	cvi 3 copy put
+	
+	pop 1 add
+} def
+/StuffCMYKIntoGrayString
+{
+	exch .11 mul add
+	
+	exch .59 mul add
+	
+	exch .3 mul add
+	
+	dup 255 gt { pop 255 } if
+	
+	255 exch sub cvi 3 copy put
+	
+	pop 1 add
+} def
+/RGBToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin 
+		sourcearray 0 get exec
+		dup length 3 idiv string
+		dup 3 1 roll 
+		
+		/StuffRGBIntoGrayString load exch
+		WalkRGBString
+ end
+} def
+/CMYKToGrayImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcearray 0 get exec
+		dup length 4 idiv string
+		dup 3 1 roll 
+		
+		/StuffCMYKIntoGrayString load exch
+		WalkCMYKString
+ end
+} def
+/SeparateCMYKImageProc {	
+	Adobe_ColorImage_AI6_Vars begin
+		sourcecount 0 ne {
+			sourcearray plateindex get exec
+		}{			
+			sourcearray 0 get exec
+			
+			dup length 4 idiv string
+			
+			0 2 index
+			
+			plateindex 4 2 index length 1 sub {
+				get 255 exch sub
+				
+				3 copy put pop 1 add
+				
+				2 index
+			} for
+			pop pop exch pop
+		} ifelse
+ end
+} def
+	
+/ColorImageCompositeEmulator {
+	pop true eq {
+		Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat
+	}{
+		Adobe_ColorImage_AI6_Vars /channelcount get 1 ne {
+			Adobe_ColorImage_AI6_Vars begin
+				sourcearray 0 3 -1 roll put
+			
+				channelcount 3 eq {/RGBToGrayImageProc}{/CMYKToGrayImageProc} ifelse
+				load
+		 end
+		} if
+		image
+	} ifelse
+} def
+/colorimage {
+	Adobe_ColorImage_AI6_Vars begin
+		/channelcount 1 index def
+		/sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def
+		4 sourcecount add index
+ end
+	
+	dup 8 eq exch 1 eq or not {
+		/_colorimage load null ne {
+			_colorimage
+		}{
+			Adobe_ColorImage_AI6_Vars /sourcecount get
+			7 add { pop } repeat
+		} ifelse
+	}{
+		dup 3 eq TestPlateIndex dup -1 eq exch 5 eq or or {
+			/_colorimage load null eq {
+				ColorImageCompositeEmulator
+			}{
+				dup 1 eq {
+					pop pop image
+				}{
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						gsave
+						
+						0 _currenttransfer exec
+						1 _currenttransfer exec
+						eq
+						{ 0 _currenttransfer exec 0.5 lt }
+						{ 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse
+						
+						{ { pop 0 } } { { pop 1 } } ifelse
+						systemdict /settransfer get exec
+					} if
+					
+					_colorimage
+					
+					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq {
+						grestore
+					} if
+				} ifelse
+			} ifelse
+		}{
+			dup 1 eq {
+				pop pop
+				image
+			}{
+				pop pop
+				Adobe_ColorImage_AI6_Vars begin
+					sourcecount -1 0 {			
+						exch sourcearray 3 1 roll put
+					} for
+					/SeparateCMYKImageProc load
+			 end
+				systemdict /image get exec
+			} ifelse
+		} ifelse
+	} ifelse
+} def
+/proctintimage {
+	/_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+	/_pticomps _ptispace clrspacegetcomps store
+	/_ptiscale _pti1 _pti0 sub store
+	level2? {
+		_ptiname length 0 gt version cvr 2012 ge and {
+			[/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+			[_pti0 _pti1] makeimagedict _image
+		}{
+			[/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+			[0 255] makeimagedict _image
+		} ifelse
+	}{
+		_pticomps 1 eq {
+			{
+				dup
+				{
+					255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+				} stringapply
+			} concatprocs _image
+		}{
+			{
+				dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+				_ptibuf {
+					exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+					_pticomps 2 add -2 roll
+					_pticomps 1 sub -1 0 {
+						1 index add 2 index exch
+						5 -1 roll
+						255 mul cvi put
+					} for
+					pop pop
+				} stringapply
+			} concatprocs false _pticomps
+			/_colorimage load null eq {7 {pop} repeat}{_colorimage} ifelse
+		} ifelse
+	} ifelse
+} def
+/graytintimage {
+	/_gtigray 5 -1 roll store
+	{1 _gtigray sub mul 1 exch sub} 4 1 roll
+	/DeviceGray proctintimage
+} def
+/cmyktintimage {
+	/_cticmyk 5 -1 roll store
+	{_cticmyk {1 index mul exch} forall pop} 4 1 roll
+	/DeviceCMYK proctintimage
+} def
+/rgbtintimage {
+	/_rtirgb 5 -1 roll store
+	{_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+	/DeviceRGB proctintimage
+} def
+/tintimage {
+	TestPlateIndex -1 eq {
+		colorexpand
+		3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+		dup /DeviceGray eq {
+			pop graytintimage
+		}{
+			dup /DeviceRGB eq {
+				pop rgbtintimage
+			}{
+				pop cmyktintimage
+			} ifelse
+		} ifelse
+	}{
+		dup clrspacemarksplate {
+			plateindex 5 lt {
+				colortocmyk plateindex get 1 exch sub
+				exch {1 0}{0 1} ifelse () graytintimage
+			}{
+				pop exch {0}{0 exch} ifelse 0 3 1 roll () graytintimage
+			} ifelse
+		}{
+			pop pop pop
+			{pop 1} 0 1 () /DeviceGray proctintimage
+		} ifelse
+	} ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+	XIImageWidth XIImageHeight false
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	imagemask
+} def
+/XIImageTint {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIType 3 eq XIColorValues XIColorSpace tintimage
+} def
+/XIImage {
+	0 setgray
+	XIImageWidth XIImageHeight XIBitsPerPixel
+	[XIImageWidth 0 0 XIImageHeight neg 0 0]
+	/XIDataProc load
+	XIChannelCount 1 eq {image}{false XIChannelCount colorimage} ifelse
+} def
+/XG {
+	pop pop
+} def
+/XF {
+	13 {pop} repeat
+} def
+/Xh {
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		/XIImageMatrix exch def
+		0 0 moveto
+		XIImageMatrix concat
+		XIImageWidth XIImageHeight scale
+		
+		XIType 1 eq {
+			/_lp /null ddef
+			_fc
+			/_lp /imagemask ddef
+		}
+		if
+		/XIVersion 7 def
+ end
+} def
+/XH {
+	Adobe_ColorImage_AI6_Vars begin
+		/XIVersion 6 def
+		grestore
+ end
+} def
+/XIEnable {
+	Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+	Adobe_ColorImage_AI6_Vars begin
+		colormake
+		/XIColorSpace exch def
+		/XIColorValues exch def
+ end
+} def
+/XI
+{
+	Adobe_ColorImage_AI6_Vars begin
+		gsave
+		/XIType exch def
+		cvi dup
+		256 idiv /XICompression exch store
+		256 mod /XIEncoding exch store
+		pop pop
+		/XIChannelCount exch def
+		/XIBitsPerPixel exch def
+		/XIImageHeight exch def
+		/XIImageWidth exch def
+		pop pop pop pop
+		/XIImageMatrix exch def
+		XIBitsPerPixel 1 eq {
+			XIImageWidth 8 div ceiling cvi
+		}{
+			XIImageWidth XIChannelCount mul
+		} ifelse
+		/XIRowBytes exch def
+		XIEncoding 0 ne XIVersion 6 le and {
+			currentfile 128 string readline pop pop
+		} if
+		XICompression 0 eq {
+			/XIBuffer1 XIRowBytes string def
+			XIEncoding 0 eq {
+				{currentfile XIBuffer1 readhexstring pop}
+			}{
+				{currentfile XIBuffer1 readstring pop}
+			} ifelse
+		}{
+			/XIBuffer1 256 string def
+			/XIBuffer2 XIRowBytes string def
+			{currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+			/ASCIIHexDecode filter /DCTDecode filter
+			/XIFile exch def
+			{XIFile XIBuffer2 readstring pop}
+		} ifelse
+		/XIDataProc exch def
+		
+		XIVersion 6 le {
+			0 0 moveto
+			XIImageMatrix concat
+			XIImageWidth XIImageHeight scale
+			XIType 1 eq {
+				/_lp /null ddef
+				_fc
+				/_lp /imagemask ddef
+			} if
+		} if
+		XIEnable {
+			XIType 1 eq {
+				XIImageMask
+			}{
+				XIType 2 eq XIType 3 eq or {
+					XIImageTint
+				}{
+					XIImage
+				} ifelse
+			} ifelse
+		}{
+			XINullImage
+		} ifelse
+		grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 7.0 Full Prolog)
+%%Version: 1.2 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 107 dict dup begin
+put
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+	Adobe_Illustrator_AI5 dup begin
+	Adobe_Illustrator_AI5_vars begin
+	discardDict
+	{
+		bind pop pop
+	} forall
+	dup /nc get begin
+	{
+		dup xcheck 1 index type /operatortype ne and
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+	Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+	dup load dup length exch maxlength eq
+	{
+		dup dup load dup
+		length 2 mul dict copy def
+	} if
+	load begin
+	def
+ end
+} def
+/npop
+{
+	{
+		pop
+	} repeat
+} def
+/hswj
+{
+	dup stringwidth 3 2 roll
+	{
+		_hvwb eq { exch _hvcx add exch _hvcy add } if
+		exch _hvax add exch _hvay add
+	} cforall
+} def
+/vswj
+{
+	0 0 3 -1 roll
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			dup cstring stringwidth 5 2 roll
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			4 -1 roll sub exch
+			3 -1 roll sub exch
+		}
+		{
+			_hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			exch _hvay sub exch _hvax sub
+			_fontHeight sub
+		} ifelse
+	} cforall
+} def
+/swj
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+	0 0 0 6 3 roll swj
+} def
+/vjss
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index setmatrix stroke
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			gsave
+			2 index false charpath
+			6 index setmatrix stroke
+			grestore
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjss
+{
+	4 1 roll
+	{
+		dup cstring
+		gsave
+		false charpath currentpoint
+		5 index setmatrix stroke
+		grestore
+		moveto
+		_sp eq
+		{
+			5 index 5 index rmoveto
+		} if
+		2 copy rmoveto
+	} cforall
+	6 npop
+} def
+/jss
+{
+	_lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+	0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+	4 1 roll
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			false charpath
+            currentpoint
+			_fontRotateAdjust sub
+			moveto
+			_sp eq
+			{
+				5 index 5 index rmoveto
+			} if
+			2 copy rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			5 index sub
+			3 index _sp eq
+			{
+				9 index sub
+			} if
+	
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+	
+			2 index false charpath
+	
+			moveto pop pop
+		} ifelse
+	} cforall
+	6 npop
+} def
+/hjsp
+{
+    4 1 roll
+    {
+        dup cstring
+        false charpath
+        _sp eq
+        {
+            5 index 5 index rmoveto
+        } if
+        2 copy rmoveto
+    } cforall
+    6 npop
+} def
+/jsp
+{
+	matrix currentmatrix
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+    matrix currentmatrix
+    0 0 0 7 3 roll
+    _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+	transform
+	0.25 sub round 0.25 add exch
+	0.25 sub round 0.25 add exch
+	itransform
+} def
+/setstrokeadjust where
+{
+	pop true setstrokeadjust
+	/c
+	{
+		curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		moveto
+	} def
+}
+{
+	/c
+	{
+		pl curveto
+	} def
+	/C
+	/c load def
+	/v
+	{
+		currentpoint 6 2 roll pl curveto
+	} def
+	/V
+	/v load def
+	/y
+	{
+		pl 2 copy curveto
+	} def
+	/Y
+	/y load def
+	/l
+	{
+		pl lineto
+	} def
+	/L
+	/l load def
+	/m
+	{
+		pl moveto
+	} def
+} ifelse
+/d
+{
+	setdash
+} def
+/cf
+{
+} def
+/i
+{
+	dup 0 eq
+	{
+		pop cf
+	} if
+	setflat
+} def
+/j
+{
+	setlinejoin
+} def
+/J
+{
+	setlinecap
+} def
+/M
+{
+	setmiterlimit
+} def
+/w
+{
+	setlinewidth
+} def
+/XR
+{
+	0 ne
+	/_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+	closepath
+} def
+/N
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			_eo {eoclip} {clip} ifelse /_doClip 0 ddef
+		} if
+		newpath
+	}
+	{
+		/CRender
+		{
+			N
+		} ddef
+	} ifelse
+} def
+/n
+{
+	N
+} def
+/F
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+			/_doClip 0 ddef
+		}
+		{
+			_pf
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			F
+		} ddef
+	} ifelse
+} def
+/f
+{
+	closepath
+	F
+} def
+/S
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		{
+			gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			_ps
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			S
+		} ddef
+	} ifelse
+} def
+/s
+{
+	closepath
+	S
+} def
+/B
+{
+	_pola 0 eq
+	{
+		_doClip 1 eq
+		gsave F grestore
+		{
+			gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+			/_doClip 0 ddef
+		}
+		{
+			S
+		} ifelse
+	}
+	{
+		/CRender
+		{
+			B
+		} ddef
+	} ifelse
+} def
+/b
+{
+	closepath
+	B
+} def
+/W
+{
+	/_doClip 1 ddef
+} def
+/*
+{
+	count 0 ne
+	{
+		dup type /stringtype eq
+		{
+			pop
+		} if
+	} if
+	newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+	_pola 0 eq
+	{
+		gsave
+	} if
+} def
+/Q
+{
+	_pola 0 eq
+	{
+		grestore
+	} if
+} def
+/*u
+{
+	_pola 1 add /_pola exch ddef
+} def
+/*U
+{
+	_pola 1 sub /_pola exch ddef
+	_pola 0 eq
+	{
+		CRender
+	} if
+} def
+/D
+{
+	pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+	/_i save ddef
+	clipForward?
+	{
+		nulldevice
+	} if
+	6 1 roll 4 npop
+	concat pop
+	userdict begin
+	/showpage
+	{
+	} def
+	0 setgray
+	0 setlinecap
+	1 setlinewidth
+	0 setlinejoin
+	10 setmiterlimit
+	[] 0 setdash
+	/setstrokeadjust where {pop false setstrokeadjust} if
+	newpath
+	0 setgray
+	false setoverprint
+} def
+/~
+{
+ end
+	_i restore
+} def
+/O
+{
+	0 ne
+	/_of exch ddef
+	/_lp /none ddef
+} def
+/R
+{
+	0 ne
+	/_os exch ddef
+	/_lp /none ddef
+} def
+/g
+{
+	/_gf exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_gf setgray
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/G
+{
+	/_gs exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_gs setgray
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/k
+{
+	_cf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_cf aload pop setcmykcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/K
+{
+	_cs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_cs aload pop setcmykcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/Xa
+{
+	_rgbf astore pop
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_rgbf aload pop setrgbcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XA
+{
+	_rgbs astore pop
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_rgbs aload pop setrgbcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/_rgbtocmyk
+{
+3
+	{
+	1 exch sub 3 1 roll
+	} repeat
+3 copy 1 4 1 roll
+3
+	{
+	3 index 2 copy gt
+		{
+		exch
+		} if
+	pop 4 1 roll
+	} repeat
+pop pop pop
+4 1 roll
+3
+	{
+	3 index sub
+	3 1 roll
+	} repeat
+4 -1 roll
+} def
+/Xx
+{
+	exch
+	/_gf exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/XX
+{
+	exch
+	/_gs exch ddef
+	0 eq
+	{
+		findcmykcustomcolor
+	}
+	{
+		/findrgbcustomcolor where not {
+			4 1 roll _rgbtocmyk
+			5 -1 roll
+			findcmykcustomcolor
+		}
+		{
+			pop
+			findrgbcustomcolor
+		} ifelse
+	} ifelse
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/x
+{
+	/_gf exch ddef
+	findcmykcustomcolor
+	/_if exch ddef
+	/_fc
+	{
+		_lp /fill ne
+		{
+			_of setoverprint
+			_if _gf 1 exch sub setcustomcolor
+			/_lp /fill ddef
+		} if
+	} ddef
+	/_pf
+	{
+		_fc
+		_eo {eofill} {fill} ifelse
+	} ddef
+	/_psf
+	{
+		_fc
+		hvashow
+	} ddef
+	/_pjsf
+	{
+		_fc
+		hvawidthshow
+	} ddef
+	/_lp /none ddef
+} def
+/X
+{
+	/_gs exch ddef
+	findcmykcustomcolor
+	/_is exch ddef
+	/_sc
+	{
+		_lp /stroke ne
+		{
+			_os setoverprint
+			_is _gs 1 exch sub setcustomcolor
+			/_lp /stroke ddef
+		} if
+	} ddef
+	/_ps
+	{
+		_sc
+		stroke
+	} ddef
+	/_pss
+	{
+		_sc
+		ss
+	} ddef
+	/_pjss
+	{
+		_sc
+		jss
+	} ddef
+	/_lp /none ddef
+} def
+/A
+{
+	pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+	pop pop
+} def
+/discard
+{
+	save /discardSave exch store
+	discardDict begin
+	/endString exch store
+	gt38?
+	{
+		2 add
+	} if
+	load
+	stopped
+	pop
+ end
+	discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+	/endStringLength endString length store
+	/newBuff buffer 0 endStringLength getinterval store
+	/newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+	/newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+	newBuff 0 newBuffButFirst putinterval
+	newBuffLast 0
+	currentfile read not
+	{
+	stop
+	} if
+	put
+} def
+0
+{
+	pre38Initialize
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff endString eq
+			{
+				cleartomark stop
+			} if
+			shiftBuffer
+		} loop
+	}
+	{
+	stop
+	} ifelse
+} def
+1
+{
+	pre38Initialize
+	/beginString exch store
+	mark
+	currentfile newBuff readstring exch pop
+	{
+		{
+			newBuff beginString eq
+			{
+				/layerCount dup load 1 add store
+			}
+			{
+				newBuff endString eq
+				{
+					/layerCount dup load 1 sub store
+					layerCount 0 eq
+					{
+						cleartomark stop
+					} if
+				} if
+			} ifelse
+			shiftBuffer
+		} loop
+	} if
+} def
+2
+{
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		endString eq
+		{
+			cleartomark stop
+		} if
+	} loop
+} def
+3
+{
+	/beginString exch store
+	/layerCnt 1 store
+	mark
+	{
+		currentfile buffer readline not
+		{
+		stop
+		} if
+		dup beginString eq
+		{
+			pop /layerCnt dup load 1 add store
+		}
+		{
+			endString eq
+			{
+				layerCnt 1 eq
+				{
+					cleartomark stop
+				}
+				{
+					/layerCnt dup load 1 sub store
+				} ifelse
+			} if
+		} ifelse
+	} loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+	/n /N /s /S /f /F /b /B
+}
+{
+	{
+		_doClip 1 eq
+		{
+			/_doClip 0 ddef _eo {eoclip} {clip} ifelse
+		} if
+		newpath
+	} def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+	4 npop
+	6 1 roll
+	pop
+	4 1 roll
+	pop pop pop
+	0 eq
+	{
+		0 eq
+		{
+			(%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+		}
+		{
+			
+			/clipForward? true def
+			
+			/Tx /pop load def
+			/Tj /pop load def
+			
+			currentdict end clipRenderOff begin begin
+		} ifelse
+	}
+	{
+		0 eq
+		{
+			save /discardSave exch store
+		} if
+	} ifelse
+} bind def
+/LB
+{
+	discardSave dup null ne
+	{
+		restore
+	}
+	{
+		pop
+		clipForward?
+		{
+			currentdict
+		 end
+		 end
+		 begin
+					
+			/clipForward? false ddef
+		} if
+	} ifelse
+} bind def
+/Pb
+{
+	pop pop
+	0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+	0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+	72 exch div
+	0 dtransform dup mul exch dup mul add sqrt
+	dup 1 lt
+	{
+		pop 1
+	} if
+	setflat
+} def
+/Mb
+{
+	q
+} def
+/Md
+{
+} def
+/MB
+{
+	Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+	pop
+} bind def
+/setcmykcolor
+{
+	4 npop
+} bind def
+/setrgbcolor
+{
+	3 npop
+} bind def
+/setcustomcolor
+{
+	2 npop
+} bind def
+currentdict readonly pop
+end
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_pattern_AI5 1.1 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Pattern Operators)
+%%Version: 1.1 0
+%%CreationDate: (03/26/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5 known not {
+	userdict /Adobe_Illustrator_AI5 95 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/@
+{
+} def
+/&
+{
+} def
+/dp
+{
+	dup null eq
+	{
+		pop
+		_dp 0 ne
+		{
+			0 1 _dp 1 sub _dl mod
+			{
+				_da exch get 3 get
+			} for
+			_dp 1 sub _dl mod 1 add packedarray
+			_da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll
+			definepattern pop
+		} if
+	}
+	{
+		_dp 0 ne _dp _dl mod 0 eq and
+		{
+			null dp
+		} if
+		7 packedarray _da exch _dp _dl mod exch put
+		_dp _dl mod _da 0 get 4 get 2 packedarray
+		/_dp _dp 1 add def
+	} ifelse
+} def
+/E
+{
+	_ed begin
+	dup 0 get type /arraytype ne
+	{
+		0
+		{
+			dup 1 add index type /arraytype eq
+			{
+				1 add
+			}
+			{
+				exit
+			} ifelse
+		} loop
+		array astore
+	} if
+	/_dd exch def
+	/_ury exch def
+	/_urx exch def
+	/_lly exch def
+	/_llx exch def
+	/_n exch def
+	/_y 0 def
+	/_dl 4 def
+	/_dp 0 def
+	/_da _dl array def
+	0 1 _dd length 1 sub
+	{
+		/_d exch _dd exch get def
+		0 2 _d length 2 sub
+		{
+			/_x exch def
+			/_c false def
+			/_r _d _x 1 add get cvlit def
+			_r _ ne
+			{
+				_urx _llx sub _ury _lly sub
+				[
+				1 0 0 1 0 0
+				]
+				[
+				/save cvx
+				_llx neg _lly neg /translate cvx
+				_c
+				{
+					nc /begin cvx
+				} if
+				_r dup type /stringtype eq
+				{
+					cvx
+				}
+				{
+					{
+						exec
+					} /forall cvx
+				} ifelse
+				_c
+				{
+					/end cvx
+				} if
+				/restore cvx
+				] cvx
+				/_fn 12 _n length add string def
+				_y _fn cvs pop
+				/_y _y 1 add def
+				_fn 12 _n putinterval
+				_fn _c false dp
+				_d exch _x 1 add exch put
+			} if
+		} for
+	} for
+	null dp
+	_n _dd /_pd
+ end
+	xput
+} def
+/fc
+{
+	_fm dup concatmatrix pop
+} def
+/p
+{
+	/_fm exch ddef
+	9 -2 roll _pm translate fc
+	7 -2 roll _pm scale fc
+	5 -1 roll _pm rotate fc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate fc
+		1 -1 _pm scale fc
+		neg _pm rotate fc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate fc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore fc
+	neg _pm rotate fc
+	_pd exch get /_fdd exch ddef
+	/_pf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					patternfill
+				}
+				{
+					pop
+					fill
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_psf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					9 copy 6 npop patternashow
+				}
+				{
+					pop
+					6 copy 3 npop hvashow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		sw rmoveto
+	} ddef
+	/_pjsf
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _fdd length 1 sub
+		{
+			/_fd exch _fdd exch get ddef
+			_fd
+			0 2 _fd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _fc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _fm
+					12 copy 6 npop patternawidthshow
+				}
+				{
+					pop 9 copy 3 npop hvawidthshow
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+/sc
+{
+	_sm dup concatmatrix pop
+} def
+/P
+{
+	/_sm exch ddef
+	9 -2 roll _pm translate sc
+	7 -2 roll _pm scale sc
+	5 -1 roll _pm rotate sc
+	4 -2 roll exch 0 ne
+	{
+		dup _pm rotate sc
+		1 -1 _pm scale sc
+		neg _pm rotate sc
+	}
+	{
+		pop
+	} ifelse
+	dup _pm rotate sc
+	exch dup sin exch cos div 1 0 0 1 0 6 2 roll
+	_pm astore sc
+	neg _pm rotate sc
+	_pd exch get /_sdd exch ddef
+	/_ps
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					patternstroke
+				}
+				{
+					pop stroke
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		newpath
+	} ddef
+	/_pss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					10 copy 6 npop patternashowstroke
+				}
+				{
+					pop 7 copy 3 npop ss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop sw rmoveto
+	} ddef
+	/_pjss
+	{
+		save
+		/_doClip 0 ddef
+		0 1 _sdd length 1 sub
+		{
+			/_sd exch _sdd exch get ddef
+			_sd
+			0 2 _sd length 2 sub
+			{
+				gsave
+				2 copy get dup _ ne
+				{
+					cvx exec _sc
+				}
+				{
+					pop
+				} ifelse
+				2 copy 1 add get dup _ ne
+				{
+					aload pop findfont _sm
+					13 copy 6 npop patternawidthshowstroke
+				}
+				{
+					pop 10 copy 3 npop jss
+				} ifelse
+				grestore
+				pop
+			} for
+			pop
+		} for
+		restore
+		pop swj rmoveto
+	} ddef
+	/_lp /none ddef
+} def
+end
+userdict /Adobe_pattern_AI5 18 dict dup begin
+put
+/initialize
+{
+	/definepattern where
+	{
+		pop
+		pop pop
+	}
+	{
+	 begin
+	 begin
+		Adobe_pattern_AI5 begin
+		Adobe_pattern_AI5
+		{
+			dup xcheck
+			{
+				bind
+			} if
+			pop pop
+		} forall
+		mark
+		cachestatus 7 1 roll pop pop pop pop exch pop exch
+		{
+			{
+				10000 add
+				dup 2 index gt
+				{
+					exit
+				} if
+				dup setcachelimit
+			} loop
+		} stopped
+		cleartomark
+	 end 	
+		
+	 end
+	 end
+		
+		Adobe_pattern_AI5 begin
+	} ifelse
+} def
+/terminate
+{
+	currentdict Adobe_pattern_AI5 eq
+	{
+	 end
+	} if
+} def
+errordict
+/nocurrentpoint
+{
+	pop
+	stop
+} put
+errordict
+/invalidaccess
+{
+	pop
+	stop
+} put
+/patternencoding
+256 array def
+0 1 255
+{
+	patternencoding exch ( ) 2 copy exch 0 exch put cvn put
+} for
+/definepattern
+{
+	17 dict begin
+	/uniform exch def
+	/cache exch def
+	/key exch def
+	/procarray exch def
+	/mtx exch matrix invertmatrix def
+	/height exch def
+	/width exch def
+	/ctm matrix currentmatrix def
+	/ptm matrix def
+	/str 32 string def
+	/slice 9 dict def
+	slice /s 1 put
+	slice /q 256 procarray length div sqrt floor cvi put
+	slice /b 0 put
+	/FontBBox
+	[
+	0 0 0 0
+	] def
+	/FontMatrix mtx matrix copy def
+	/Encoding patternencoding def
+	/FontType 3 def
+	/BuildChar
+	{
+		exch
+	 begin
+		/setstrokeadjust where {pop true setstrokeadjust} if
+		slice begin
+		dup q dup mul mod s idiv /i exch def
+		dup q dup mul mod s mod /j exch def
+		q dup mul idiv procarray exch get
+		/xl j width s div mul def
+		/xg j 1 add width s div mul def
+		/yl i height s div mul def
+		/yg i 1 add height s div mul def
+		uniform
+		{
+			1 1
+		}
+		{
+			width 0 dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+			0 height dtransform
+			dup mul exch dup mul add sqrt dup 1 add exch div
+		} ifelse
+		width 0 cache
+		{
+			xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul
+			setcachedevice
+		}
+		{
+			setcharwidth
+		} ifelse
+		gsave
+		scale
+		newpath
+		xl yl moveto
+		xg yl lineto
+		xg yg lineto
+		xl yg lineto
+		closepath
+		clip
+		newpath
+	 end
+	 end
+		exec
+		grestore
+	} def
+	key currentdict definefont
+ end
+} def
+/patterncachesize
+{
+	gsave
+	newpath
+	0 0 moveto
+	width 0 lineto
+	width height lineto
+	0 height lineto
+	closepath
+	patternmatrix setmatrix
+	pathbbox
+	exch ceiling 4 -1 roll floor sub 3 1 roll
+	ceiling exch floor sub
+	mul 1 add
+	grestore
+} def
+/patterncachelimit
+{
+	cachestatus 7 1 roll 6 npop 8 mul
+} def
+/patternpath
+{
+	exch dup begin
+	setfont
+	ctm setmatrix
+	concat
+	slice exch /b exch slice /q get dup mul mul put
+	FontMatrix concat
+	uniform
+	{
+		width 0 dtransform round width div exch round width div exch
+		0 height dtransform round height div exch height div exch
+		0 0 transform round exch round exch
+		ptm astore setmatrix
+	}
+	{
+		ptm currentmatrix pop
+	} ifelse
+	{
+		currentpoint
+	} stopped not
+	{
+		2 npop
+		pathbbox
+		true
+		4 index 3 index eq
+		4 index 3 index eq
+		and
+		{
+			pop false
+			{
+				{
+					2 npop
+				}
+				{
+					3 npop true
+				}
+				{
+					7 npop true
+				}
+				{
+					pop true
+				} pathforall
+			} stopped
+			{
+				5 npop true
+			} if
+		} if
+		{
+			height div ceiling height mul 4 1 roll
+			width div ceiling width mul 4 1 roll
+			height div floor height mul 4 1 roll
+			width div floor width mul 4 1 roll
+			2 index sub height div ceiling cvi exch
+			3 index sub width div ceiling cvi exch
+			4 2 roll moveto
+			FontMatrix mtx invertmatrix
+			dup dup 4 get exch 5 get rmoveto
+			ptm ptm concatmatrix pop
+			slice /s
+			patterncachesize patterncachelimit div ceiling sqrt ceiling cvi
+			dup slice /q get gt
+			{
+				pop slice /q get
+			} if
+			put
+			0 1 slice /s get dup mul 1 sub
+			{
+				slice /b get add
+				gsave
+				0 1 str length 1 sub
+				{
+					str exch 2 index put
+				} for
+				pop
+				dup
+				{
+					gsave
+					ptm setmatrix
+					1 index str length idiv
+					{
+						str show
+					} repeat
+					1 index str length mod str exch 0 exch getinterval show
+					grestore
+					0 height rmoveto
+				} repeat
+				grestore
+			} for
+			2 npop
+		}
+		{
+			4 npop
+		} ifelse
+	} if
+ end
+} def
+/patternclip
+{
+	_eo {eoclip} {clip} ifelse
+} def
+/patternstrokepath
+{
+	strokepath
+} def
+/patternmatrix
+matrix def
+/patternfill
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternclip
+	Adobe_pattern_AI5 /patternpath get exec
+	grestore
+	newpath
+} def
+/patternstroke
+{
+	dup type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get
+	} if
+	gsave
+	patternstrokepath
+	true
+	{
+		{
+			{
+				newpath
+				moveto
+			}
+			{
+				lineto
+			}
+			{
+				curveto
+			}
+			{
+				closepath
+				3 copy
+				Adobe_pattern_AI5 /patternfill get exec
+			} pathforall
+			3 npop
+		} stopped
+		{
+			5 npop
+			patternclip
+			Adobe_pattern_AI5 /patternfill get exec
+		} if
+	}
+	{
+		patternclip
+		Adobe_pattern_AI5 /patternfill get exec
+	} ifelse
+	grestore
+	newpath
+} def
+/vpatternawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			5 index 5 index 5 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternfill get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	3 npop
+} def
+/hpatternawidthshow
+{
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		9 index 9 index 9 index
+		Adobe_pattern_AI5 /patternfill get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	8 npop
+} def
+/patternashow
+{
+0 0 0 6 3 roll
+patternawidthshow
+} def
+/patternawidthshow
+{
+	6 index type /dicttype eq
+	{
+		Adobe_pattern_AI5 /patternmatrix get 7 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshow } { vpatternawidthshow } ifelse
+} def
+/vpatternawidthshowstroke
+{
+	7 1 roll
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	{
+		dup cstring
+		dup length 1 eq
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			currentpoint
+			_fontRotateAdjust add
+			moveto
+			gsave
+			false charpath currentpoint
+			3 index setmatrix
+			6 index 6 index 6 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			_fontRotateAdjust sub
+			moveto
+			_hvwb eq { _hvcx _hvcy rmoveto } if
+			_hvax _hvay rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			_hvax sub
+			3 index _hvwb eq { _hvcx sub } if
+			currentpoint
+			exch 4 index stringwidth pop 2 div sub
+			exch _fontAscent sub
+			moveto
+			gsave
+			2 index false charpath
+			4 index setmatrix
+			7 index 7 index 7 index Adobe_pattern_AI5 /patternstroke get exec
+			grestore
+			newpath moveto pop pop
+		} ifelse
+	} cforall
+	4 npop
+} def
+/hpatternawidthshowstroke
+{
+	7 1 roll
+	{
+		dup cstring exch
+		gsave
+		3 index eq { 5 index 5 index rmoveto } if
+		false charpath currentpoint
+		7 index setmatrix
+		10 index 10 index 10 index
+		Adobe_pattern_AI5 /patternstroke get exec
+		grestore
+		newpath moveto
+		2 copy rmoveto
+	} cforall
+	9 npop
+} def
+/patternashowstroke
+{
+	0 0 0 7 3 roll
+	patternawidthshowstroke
+} def
+/patternawidthshowstroke
+{
+	7 index type /dicttype eq
+	{
+		patternmatrix /patternmatrix get 8 1 roll
+	} if
+	_lineorientation 0 eq { hpatternawidthshowstroke } { vpatternawidthshowstroke } ifelse
+} def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+	Adobe_cshow begin
+	Adobe_cshow
+	{
+		dup xcheck
+		{
+			bind
+		} if
+		pop pop
+	} forall
+ end
+	Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+	{
+ end
+	} if
+} def
+/cforall
+{
+	/_lobyte 0 ddef
+	/_hibyte 0 ddef
+	/_cproc exch ddef
+	/_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+	{
+		/_lobyte exch ddef
+		_hibyte 0 eq
+		_cscript 1 eq
+		_lobyte 129 ge _lobyte 159 le and
+		_lobyte 224 ge _lobyte 252 le and or and
+		_cscript 2 eq
+		_lobyte 161 ge _lobyte 254 le and and
+		_cscript 3 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript 25 eq
+		_lobyte 161 ge _lobyte 254 le and and
+    	_cscript -1 eq
+		or or or or and
+		{
+			/_hibyte _lobyte ddef
+		}
+		{
+			_hibyte 256 mul _lobyte add
+			_cproc
+			/_hibyte 0 ddef
+		} ifelse
+	} forall
+} def
+/cstring
+{
+	dup 256 lt
+	{
+		(s) dup 0 4 3 roll put
+	}
+	{
+		dup 256 idiv exch 256 mod
+		(hl) dup dup 0 6 5 roll put 1 4 3 roll put
+	} ifelse
+} def
+/clength
+{
+	0 exch
+	{ 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+	{
+		dup cstring
+		show
+		_hvax _hvay rmoveto
+		_hvwb eq { _hvcx _hvcy rmoveto } if
+	} cforall
+} def
+/vawidthshow
+{
+	{
+		dup 255 le
+		_charorientation 1 eq
+		and
+		{
+			-90 rotate
+			0 _fontRotateAdjust rmoveto
+			cstring
+			_hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+			0 _fontRotateAdjust neg rmoveto
+			90 rotate
+		}
+		{
+			currentpoint
+			_fontHeight sub
+			exch _hvay sub exch _hvax sub
+			2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+			3 2 roll
+			cstring
+			dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+			show
+			moveto
+		} ifelse
+	} cforall
+} def
+/hvawidthshow
+{
+	6 1 roll
+	/_hvay exch ddef
+	/_hvax exch ddef
+	/_hvwb exch ddef
+	/_hvcy exch ddef
+	/_hvcx exch ddef
+	_lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+	0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+	0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+	0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade true put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_typography_AI5 /initialize get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 AGM_Gradient /initializeAI get exec
+Adobe_Illustrator_AI5_vars Adobe_Illustrator_AI5 Adobe_pattern_AI5 /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider
+currentpacking true setpacking
+%%BeginFont: Myriad-Roman
+%!PS-AdobeFont-1.0: Myriad-Roman 001.000
%%CreationDate: Mon Jul 25 16:15:04 1994
%%VMusage: 28005 34897
%% Myriad is a trademark of Adobe Systems Incorporated may be registered in 
%% certain jurisdictions.
11 dict begin
/FontInfo 10 dict dup begin
/version (001.000) readonly def
/Notice (Copyright (c) 1992, 1994 Adobe Systems Incorporated.  All Rights Reserved.Myriad is a trademark of Adobe Systems Incorporated may be registered in certain jurisdictions.) readonly def
/FullName (Myriad Roman) readonly def
/FamilyName (Myriad) readonly def
/Weight (Regular) readonly def
/isFixedPitch false def
/ItalicAngle 0 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Myriad-Roman def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/UniqueID 41987 def
/FontBBox{-46 -250 1126 831}readonly def
currentdict end
currentfile eexec
fcecc98c2aefb25089edad915372f7632807d0d80113c0fbda4614dda7560bffacbeaa4f371815c991f0682cbc45f51895a8e6fc33b63b87db33f2f141b34c80b26ba7d9f30c5d0811a31c14ca6d1250d33478395ee2096ad1b742ed78b95145f606e652e4d2bd83f4cf7d67cdca3268c1d165c3cf471a6094892362712d5e
+19b5084335eaca009edef0af8bc976eadf7c336b76887cf63653a555e0538ab47d8bf6a8c45725720630bc185740fdab20647654dd2e6d2db3254e482024a1dd45e865357b140bacb98f0a8066087af1076333e21e51e77d70bad81d05e6b7e6f4d3a88423efbdf6eb3b9d4ca66e9ad97e0bde315f13542863a4a6b71a9c35
+60eaea09bb5a75ea3eaf84bfd6a5549a045e20540ac787976353c114cca7c97ce57501589cc846a1320ba2c618644bd7ead0f736873e8d07e7f550df45b51deefee29c13aa19896638a8f580a26665a8d50511d6a0a1d8822fe99e3d82a19244ed668b2d510ea6ef05c17002e01d0a4c4154288c2156ae5fba08cfb2394c78
+221f1b67ca0c6dd8bc930eb9cd6d5b77619e5cfb0e19da187d81124f0793bc0eac6aff145fd8deb6b9100aad8798983107b205f36eb8f7c6b46c6149ccda404549845c5177d0b318b4e621f7c02260faf5e4af8463b776c5b12e6fb1d6735ef91f91d9132268c0c67f18915d0807f99694d4ae8c6d9d495b000604d311a9b9
+6d2520458341a4efa4fa686e80300f18d6681a99a5c3eaeb4767306554865d708a58419b05c24200c59454847988d50b7abbe83a2756cc5781be5b71c28318750549b21f7ce539909e8425c5c38a4a24cad2cb70396b88777346c838c7c8ae27833df843db788ca8a3f0594707a2e54f427a416d3e07d838039d5edc835b68
+ea0aac86f3bd470b37f7ba7c53045a8460d1e7a3175fc90d877ed022ba3f45622569455e31a3d1dc8261541bcd25c8b52845ce4a9dc2e3eedadbcbca781989cf5c51284a4e74b7c0d163c25a608196e89ca4e3444395562311d405ab1707e3dbcba475c61e3774137432519b9e0384112c5da682e59ed4c7e1db1ee381d8fe
+a4ced481f9823b96b719e51b5f059d26949588d5d33c4149ac36cfcac4ca83210c06b15377d9911bca684f27ab16f18ba374261a00514f0ff70163c0d5c41093cc02725b828f004cd04c5297bfc77d3185475d17569f430472d6d67aed94ebcf0b9808ed4489c233e69eb9139561dd741605b62511aaa09a44fc841851ccd7
+80f15c71bdea5386f1bdcc7e30fc4b07b461f21bab5fc313d3424519359f17a4f5f44332ebc0bc269892cb1d91a414817b152a77192c21a0501b586a667f3a5352940ca13f840f5377f30c60b6740ff7fa07964332c76def2b8925245fab5de0ae53a0226fab8218c703a4bbc6733de7a68114d6048f85e7ba1aa4f3b044fa
+052182ccc1b98e9a33ee688bcc29d195ee42d78d814b058abcf57d8970241d14c21f66107ae839a4b3a8ba06f6300d6b1199f3c255140776c5e1b9db2cfe374926e90bfa7ed45dc371ea7a3a9715347b17c9cf2ce89fbd64f7a932146cf5f766a702936791071ce8d01c7c36f77c1796da835f45b43ffef471feac9f548c39
+ee0d15805da6381d46062e084c3aca65b9abd3aa4636bdee45cb6ae316302385bfe24279f27d9017d98233d0839a17c34c40a140b9ebb38bece8bb0ea78b602573d457bcba967cba9191fc3e689c2204f798b8ce4785d908a20a8b7af26a59da060b181c1375745de477c32b46e059157e1bff21058709f5ed1e8a561505f0
+ed7fbe0212099e9dbe1c02412f63eb6274f62db5075d74c2aad39a2305a52c4267fefc948faeb4afa2de78ec35e2cb02f212e5f772ccb07ca14636535ca1330c44afb15689daca6808c32592bab5c1427f87572983d82ca79707177e7d2799df80faeb622efdd1afcfdf20dc7a6c18d0f3ac98e9cabe609d0ddd71ff2cf57d
+438e3caf3933449994fa51703c49ccbe30982ad2ac4e09f1e10dc393eca013bab3de6205e7c78ebbdc19f8d30d6087acc505ef874f28f299993aa81f21bdc769e0d238dfc42057eb50fdf73b9a637425fbb2e79876941d51720e5cd95e42ee0d8d0c3c2460272508530ecdb2a086f11fa43560f6dbe830f455b26684f6927c
+b653a092af8c202f39c31cccd2f0ac5de6d5b03b66e97872e4eae9451a3162514a6a7b4e6f55d1742b3fd1cbcf8b0f75ec005244759bd68e7781459a2519d59b16f9c88d4cd4fb37d6ba5fa740ddfb7dbccf5a6a95f7c4c7d1e62ca9ab6cc08dfd08ca2f1aa9dd44012de2be0b26c222d43eeb3f987a396e498f028ddc3528
+dd3d956a9e14e6776c4ca5ae0dbad3227b1dc293df5a68679fcf7463b0f5107469f31f688e241e4058437bcaa3debe0a522a797088521405d8e5ca15c23d77701e441d10b92c5a6e0f731d6073e328f89051625b4f788222062ffcccb5ad208805c17b28e97167510b891b65b6f3583fd60945081fbfe0e78f317947230517
+545be57c398e2a60f51c622473fcb3fdd659a5cf4c6d8f2337bc3cd617d3aa6d080d4247a7d78c7b1963ad2ac7e0924e29f5184dd1082e58b0e8218c7b390d07412a2cc18239a8ed7414f9372375ad6d546aa06c9735867665cea3619b0912399adb32995b6dff08ce7ccff0320ed318a5a609259895d00948876707bc9631
+c4c5fe755c4c884b09f3f7e6694ad188dd3a7d61d1ebe85c61eb3067c7a12ac3719b1f1f9d099fdb0a6b118fdddb67ed0107415894e427c5f5895f5258dbbb6395504d93f9012d76ecd59ba1f134430c92e944cdac08f57a19341161acd1d7ded4b4aae204bdb10f9fc3684a47a4958f815bb544e6abf7f9bd2afe96e2dd7e
+eef096bb1654faa5c80fc2c66d09968a1238b9671bc6d96fcdd6aa2a402d0fa9db18650556a2ae8c44550a03d98cfc02730d8cf948f1a84e3a0edf4c209cdadef9d780e408d8d161965249e48856cf33de593276b50e82abe13b81ee3d67bef7eea9562563238d539b3a256dfaa10c4867bb48c67795a15160d54973d84a49
+19fb5855b5f11e5e51a64ee190a25b3beb482c07e61b8663c3d79f4b3a2f5b8c749d3603e6eadab1e89fb73c426f12cc026791ac66fd1dd83ad47eaa9a9aa23f304ea10e6862f4fb0d41d676f7a42f5512f3b8098c8b6fe7c50dd0af3222c8b4b00aa57199354998ab52ac54d30d17b24e22306b74744c42b434eaebddbf8d
+1d3d3f1504d6caab0446b8ffa56ccecc8ec9976d19d0d9b6a6e0ea7e44c6fdb29f0b50ae017aa453deb992db2ae3087b78beaf7211b00200c65089f5ed726d4251dd284d22fa28e28fbe0f1b064723d3196af84cb1644e39f61fbfbdde02cbf70465789380e1912b7d3cc8118428ed9af4f633790b4d219f09c13c3e8f3f73
+9def2f967c7bfeecd25daf9b5a747eb281d2535b31c7dc99e34ee537a478ecc8174c6a3a1ed0c2c74b871493599be9a2ecccee1136fc7eaaa6f30758b607700faa7d19b586fa6aa4dc5a813ac33fc3e28d226b6665dac7de35a014f89a31195a416833e9a13123be1ae1518effefc0523499f54377362bbcf9d91650d6d283
+e1bc19a5f2e53e5e1973c406bc3b4878d4a4b8278b878d9bce540ca936d369af2d1c31850d5abd466083845e1479b51d368df23c5243c131db75853e962c66db13f8ffc95affaf6336abce1cd0a699e733aa64b29ebe04915471de4d165e4d85573ec24ff0e09bd7ea8cba8169299eeabfdbdff58bb12460e20b9145b67872
+484d911af649e1d39fb9a44aeba926f3a83dd87202020f674613001107a5d1f184b9ed1c1f8eb24a32f41defee4874b4ecf3d9897c00c2a859ba745e11304823f59c0aea5bfa21081b2eafad4c4c94ef891ce7c97f388ff1753e1d53d485e9d5b18e333f9436572eced77d9197c3deee53a26dea76f0a738aa979f4f2a358b
+725eb5b2321e717ff9bec75804606fd0489a36852ff5474df878831431a0257d2b6909e5b954afc9a49dab3aca5b02e02e3565e762d240542917fc4cc781bceab43f7c53950ad992e596582bf87ee042f4bc7f9e91ea20ba6561019e184a34c8a5e17d7912edc431fcea320c7066afc23bdb5f64c3606b11b1fe9e810a9c82
+2e60bb187be38c7b87b35539048b8a507233a86f6b8b363656eaca0f8de48f3cdfba3616a743c579a7ef6b922d2d282b1c77cbda888177ba7037513b64d21a8a6a09ffc1e3d46769ae279e68799e520a412ff61d952aa3b552159e3814c8f185731c7269bb375c1a1e266dd2f73c7708635c2ed5a52d362c124a76c92410dd
+3f00f21fe81977c80051eb8bf67997efcafb1593ca9307301c2ecf27c08b568e404d1d1414dc2220d73c6a352a2624c916ada967c3d189a1b893d41139c948b04d6f808452fcfde55603527e598a6590ed920be0d75cfe65e105bfee9cddaa6fc9934c42f611ae55681be92fc300e7249af0d7f863e2b69ce5bd4ea2ceab04
+8dbf1548639ced835beca4cb4da0fd79e7936a451691f23c1859231f2bd61d239a352d33e063142ef8844b777e28eef2f286bdf4ea7326ea3ac9719a4cdb181640727493a2b94b7a9df5cf6844064558c63f27a72892b19812828d32c8c76a52636f16fce7c04a3a38c78abe0179e533746e1e1c8ac3e3bbe106ba78b05e6a
+27f6fa044cf6281acfc616fbd096d15b607b86a61644947c5caf286f43223ecd23873e67c555f614759a4ae0bc8b78c136a1b050e79c682e1545e2d3c018b7321e63ab4f61f7173fc172d563a90b072b2fab9bf4d184650c1b6fbb6b14cc43c354fb4dd10fe294f9e7e2d1ad12e49f517775962e6edb08dc6fd08e554d014f
+57bd2707948f910e79946e5992a7152893e562c4adef8b17f8e9c642e0cba85fd3998de2336908f3bc7d6f1c7af67020d5398b4356837e256fab4d507221db4772022b13022e02f3c72f91fe55758a990143fb641fc74b8968bd9c66c9829a7ec6898d0216d33aec6ce97e6d408712b81130fced7a2f83078a2a25fb6ccf74
+ee3a76ef72a4eb35cda2e35aef2d203fc37d2d5497725c5491fc2029f90f19973512c8ca94e560780075b41f8cd42aa5a2b43261a0008201f4fdbf34b768f0e033692725bd196ab644a5c4680102d5b665b7061097844c1a663bbf1be878a2991c98fecc4b67508d7fe91b50c0aa373b02a19040bf72e6dd84a54dd0385f35
+4af7b9288f434a80e79982107b31272e902cdd8d5306da0d306bb9ed2986d3498373442927a5c774769daf503c30616f24001cb17caf8d14d426c9d768b2ced9286ff6b0d1a932056e25aed939e893f4d9dbbbcb5f9817c6d0b0c469f1a9f6e2af3c5046808dc130e18673ae7bb5ee973229bbcd78a193e0360c9d4729bc92
+933a65866eaa926fd9d7031ff212f3c770dff6740640dadc6238d1fa2b44e979edf743f2ce2227491776ea376dd1f833d7d4099cc8914e92decda2cb2bc9c82987ddad25097e7db47c4c4237f879085866856c68079bb837c87af84429bee7052a7e4e1a609a235501ea40c921bd5ce7050bbfa2c8cabd184c109d14d9e359
+5603efbbd39715fa6959290eddd302be9417190a47c8d1e6d7b05bbe50bdaab53d8164413d28c2f2b684640f5cc8768e564023892b9f573b37ed8b4a49a82de14b097ee47c0edd61a0694820cee6afb2b9b836a06a420833976dbc30f081cb44876ce406261794ba472afa4e42a57784052f19cf1e9d46605044235ee32394
+9e6d09c83b087fcd55dcd7245b717f09b5b584fe9fcc06ea9f785b790f5efefc8fe8bdf26e1ace1c05033c4dae7d271738159ed7d8da8145da39d7a73c7b54424c52424a60746a738fd4ff0c4af80ee7976790c7d4af15d1bd9dff8b21e21ea965feeca5c241be2b5b8ef1715596e3a5492ee5f67fba7f2532513ec40dd18b
+03656b3f75c5d8515c1d14d385043418ea8d34b54e19e68264ff8c3d3c94bb9e41a47e2689ff90ab1c8eebc4ef16753017766cfaa4b583e48f8f6649eeb4aaaf7ccf549f2bccd421c7ec43d0a3e58f5fcf41da55255c38dcafbab0550fd7bcc7988a49d4efa19e96f83460cf1078dce4574b6feace55e587282addad042a77
+7ad11b356ffd95af1cdd79982839a3d9835c78cadde2b7911fa4b9d3d8fef1736cc4e946942f887b023118f9d510c391b54d26728d7a2ecc75fdbc3183671c97d0139691723f07096829c8d3b74e0ca32b5b1ba45d2d429f2b3c1f7408bbadf1109e6aad96a464dc16bdfeefa0b15286ade98d69ba0f664f19c2abf7b5947c
+9db71aebb11ffa9d0471db01dfa4849a90ddcb5cdc833984c119a66b5cf4b43b193a4d061a9f8b95cda62837c2c6b54f8de5bdaf9e20bb2c31cae1e23ec3fab581ffcd25915fd2a54b61f5d316a3443a2d417f65f4b9baea2309f1b7d610c5c412048be7e47ef4e48dd21b3b1627e06d530b07f5bb21723b26f51d1a2646c8
+834a6f5ec1e736dead4ad042a09bb6c117fad1a3605e77ce6204aab04610a3af8efcf6f015bc26a6a937b0bf790e751a5829112b26122059ccd4972fd902f44b7efd3abf42a8b837aa1c36b6e38ce39bac31d6e187b24809f2f65aea0f98f8bbe1c28d2e27852d80a307c3878a481f0a3c1850d92d7f68fdfaaf22f87b79c8
+73cf9b85ff3de77c2d479d996533689c53374262a28a5e2b27d375490ca2ceaa6e5f6c1ad2a4b044591c243dadf5a7f04788cb4138f263710cb535d5d1d3bdcc58a2cc2b978000aabb4d82de04523952b02232b5686034641dab18ef3c9fb8fb72e32361d62679fc0b79b638df933f2683650c9129f349952ffa0339f30bb0
+efb733ec3c0592417801dee756fcf0e0cafcbaf192a31ae4bd2c5a450d578364446aaeb6e6dc70d633b4aa814ca0dd22b134eaac110f8e97830c71a7668a6af257b1920e45b49e407e0e4edc260d5efd2e5af984a24a292474ddb97859dd52f0777df04a38fa8162484a0bb509326a2c69557053f667a718e74f6961923b77
+d0bf2e78f70c0c054080dc950a656d7f66a191f36b9fdc39d1ca58bbb7775eb6a74dc7cc5aeecad4d5be08ced461a2df18c79e93a79eaa9a30e75c5430c4dcbd3c0df71184dffdc78aa6163611ec6415c3e75919bf9f61d1a48b1c8c1d694236703e7f512cd94b48f05b231de1b00077a2c764b2ded73c07c12c5f4f1e5cca
+80cd905364cede8535d12b83677f886644aee1e500deb52302d9eab6b8da7040b0e38cc8691a201b970bef3a61affc8016e345c9295f60cf8496d39021e1c8998b83cc0d5ba59ce7d0d39537dd4aca4d8709f2687ec57e82f8cfbc8ed01efa020d27dc30da72995a7f1ef26aeb85dd1cbe5565d38d407bee29356516615c12
+d451f2792018fb7fd733841c6844ac937f0100235c70b4e0cad08b1e0eb2559972df3a06d387cb172876c7c886af2fe8997ec131ec9d5f0054d10a6da33de7cefc93d28625fd0b31c0c51d87a07e3ff150cbed0aa53658e3d5ca68a9dbad920f3fbeb7a669fa44287d41f43e70239748e7b86cd7f56d8747c942e91f031216
+9f13b0d6a0b48e156772b09198024c4899334e9bac261eb9d2a12baf043beb9146c0f317684ed59f5102e168c8ebc1457a426f761bbd0ae6732de783d77b1ede35edac6c9c806cdaec4d2d1f2b0e0989c92c63de9406ed690199a3a6c92eaf35328ece2afe2259e98da23976049eeeb8904715e0c30ddc9f83cf9e9330d57c
+375a91df767405b685faffd062575fa32d28b488bb21a9e9dd64146c5302385c01b3b32fc557d731a7365d556c229e02dbeee87f16190ee17b1d6610e49ba9ce2da2790646a0f4135fb1c7d4050a58668704ce08a45454f6272d38412e43fbd141a5a2fae3d78267bbef02b79ff6052307c55c0c08e0dfb447be19944306be
+f250e552d87bdf34b06d7b9f5e15633b1a7c9a1c4ad5ae03d603f596a0f84a65c09c6bffa6284b6eac429799ac6e834ff8b2c749e04049b8c28c81966af8d9f8dc3b872a86754ee4fc2a6dc78b3d7ec8eedf585d54bbf8548314e65465ea1fe463f4788a7d26701b77c35e4f4ecbc8dfd5645313cba4ae9fd8708776104aa9
+53c5ced171062cd919bf5430506de264b09359bb0d32c59484f369e05e402c86f9872c35a43aacfdede6619e16c206fc306e65b89f96ce9c591c64936d58ff343922e0650acbe34dce279d3f31dea0e7b467fef530816ca58264eaa8bf46576dc6a4c466d7603d033ff17b8a634ace8d0c12d742d1bceb2423b4802a5d9146
+10e5f54c5bf9330950b24668f0727faab92b8da23923caba71b9d519c1df5867ec5696796d5c800cbd7dca45a3ee712087f07cb8320474783a2e8a89ce3bc5dc0fe83ec18c1d75695a0d13688ee8f59c7a6855ba80f4c8faf1051fa9511cdfd5bac786bd7226eef6c10aac0982fdd596934c2acceb044927b1f8b47eb0a730
+eaba241abaddaecc1f565084df13ba16f70435a947b40cba85c8ff103d65829575a95b844709ea6c7cefa992e9984179ae4aee2b20ac658e4c45ac5c0d4109c7087545bb7ebd0856ba283e122286dea2f7e7a6de5e1974ca5c3ab3f3b36a3f1065f9fc6dd3c80c419762bcbfde2f2368b6714dc2d972ce96cd0001b5069df7
+612f079f06115d0513916db8e31005001f81e7e45c8f9cf7376fb1073280aac3a28374f346c30d069e5e3227169b77be94de1fae88bd533a12fdd8b723ea665ed68eca303f8f7e67c704a4e754d569381322d18b2736999231b5a9146dd6777fa62fb92a61ddbfb8b5fac877de4d7b7a32f65cfee163e31790354ed262e66d
+f841b21f5af794026d03973d586cc48ec892fda6ed2195ad5994e179d72b63b3615e1c8b37c5b4a35d5b9114848fa9b256e1aee627d3d2555f6f1155fa56d641701e83e9d0a0dea236ebb1cd06ba5df6b3d180e75f3a5d5bab694b50565f8d94096f007cb435e5012d11d50ff06b11e4627c2a68942b8e22afcf1fda80213a
+49609d7f37135d7be8dd9c07a5fe279d02d2a4942ec98ba46a6161f9adc3403b77a2dafe021ba37e0a0ad63dcb1aa6ab490b5d7a716c1ec09de7a9d4d06eaad43b64cfb40c8e834a2467d0ec68d441ee0a9a67d0c4ce2f6e1b973a3b8d35e9c9f21a4885fc671cb022360d426146426ce1b48f7013d98a4c4ba74cbc07468b
+de59944b07a91b3632b275e02b02b83f3d14678960165159c46a9a1919304814c608b4ddd708168181a5c4d6152eadf5fe8aa5a0ba3a4510dee18ebff1c1e2e222082b38378f7242f1a6635cc2e8dc10b6e8266df9da6d2b001990ad0559dc329f0623bc40925e4c075873ffecda33956174b95e5946dfb89d9c13c9791580
+8517aba5b443d75a673d23e23aabe3ce8680a444047f106951bfd2a9c609bc4cade57d8d74872f89b31b98d54e2d382f16a56d8fed0583070443f386d564388495d48def25dcde0139cd2103b993ed7f2f0a42ebeef52e4e536fe0e77d4c7d2dd24979b3bc0dfb0c4fd798dbae91cd584f794eacae55b1693f98c24e807f32
+82a17271c022e29e45c07f4a9343c6725466269c0b84c8fb7257630404df5fb9462ac1ca783b3c236d2b71aeea329950a0d596bf473d86eda8250258cff33b85a2d5fd39bb9576350f6da89756b9ad50f14a9209de8a4d5ddb1541c6d892a3c71d4769fb8668779a140fb2f7f3b9118304c403a3670c45bca56946ad2314d0
+2345f6e8f6441f3d4fa11dcbdeb0cfde771d98b4a3c229c598c3930dce9bdac57de5c92d51e3dbc43ade500a4a4bc7ae95a377ae8789828660d5ce612b0a3fbd04cb47c8256d8c45cd883898719e04ddf66345d752a0d5807c08b69fe5aec2d62a1b03780c55b2d264f84205261e4042530a9d1cd83648b2f0fc092a1f3dd5
+16d6d5ef68bf5959b1808646af474ac98eb91f1aa2a27c29b26cbf398b0543d161d6335ead1357f379e9be619f524416069f4fceb98bc9ae2b90b58bc2ae1cb4d783b961e15ae4914db5bce4b3661fb755d29d8be343c716213f9f08dfc1efe3cb5f8b6ead9f54512c9248798af5e963b56cf72fe0dd4cbd1f2875c2709c3b
+5fdcb3a32f653a372373113ed1ad4e63e99dc9650a230b76caa23db7681bc2b8968bb436d734f7c52f7dbb5c407d6c78de709d020a7db6f5d87061e463c61dc847519241d3d83064ad3f4e276f6cd3786a66529acad1869f895ae59cd940b46a533fb77bf2fe875e86cf33dc6d153c486d9c3322b7b4e7534071ad001bcaac
+d3ecdda204ad751101606c2f8a87e0d78439d82e8ced891ff633f7d47fe7c1d36ea903f635c68d3a43a6ec347a5c3a53217ff9854755efb34b9c2c86b8578a4b433a2e44e326f21d697adc5c78fae3ff19b0974c5a18da8f12dab89d9d496c867036b7184c6ff88779eef5a7f6138cc73ff6c17c243c96883233a17a31dca2
+e6dbbd5cfae9ebf98c80f81ca4e4ef04e37fadffab35506d9e406f24ac7904e9f8704ec591c5c117b5a2444952301202c43a62d4782672bab9114b3f340503e3b5211fb545ff86dcde7f2b58acfbb9866a40ae1bd6a6b0254c5830c70762da6ab4eb2bb2ccb1ca03392c6d0cd411f2b8827f7e06b9bf43ea2db210f7fe3c37
+02e902a1c8b0cdd52e9d170df67a90b642af92c779570a61d203d40dd619095807cac1786696b28c7ab139150c7abac724fcdb6ce755d5e85a6b55798d41b8ae80d073bc484c694e7b6dba32453d515d5807606d460303b065bf316c06ba6ce5d8fc13ad261028620ae820001c9f5288a3d9669dd2b630d789083eefbbccca
+d7034813255e0658200d73f2e773934e66c52f2dcb56e4a8051bf67e5018fe7743087410c5bc3a55e8af500f10de3c88a43a18f5f7247652df8b028e4f2cd63ca29e638c11cbe5d479d3a907b17d1b88f5b8e89f1471421b74e3740e76a374d5f5a9fd81078d4d8aa385f5c6069bf62feb6e077c039076baae312feeb68b0f
+e5929ab8547f064a2de9fd89c82be2ca99d83e8f7e344d9fb3b74111ec9c2ca79ef5430dcf3d07fd591f59a84c679b0b0c0f4245770bfc1b94c985d26a208f1f7386868c1d244f6399a859583db75106dce52efb8b0c4d1e6824cf11b13f6b82cce7256d444801484365b00c3076e1f7d0b913616c5db904f66ecfebac4211
+dfe3111e1d1826e3f2fa44e3607b839c14ed218810587b6dd483fdbb3395452eb6243acc612b2bf43289ce69e86c650cd5e5a0f96a265c2617b2d2d6ec2759dc4ae6e32c94978932671c1e0d72aaeae835c447912f66a39925da78528b43d567f9ba003bd952e2de86df8660274919c4c1f2ea9c2967d30d8326a838df881d
+35adbe41ac3b1680c0fde52c3f1c1e2d6d568f7822baeeb16e1f2b959dc637e0194e7dfb1cacf3018b39d0d2c5e954a58cfd002cdbf390d1bf281df3eaba5fd82b542d6faaf3664a89523a5d0e95d7fdf91a1999822094b0666a6e91be0eb2236a85e6ec4dc8cb561984eeb99e52ad0dafcad0acfccbfd62af62150c749438
+8a77e8ef10a09c5c88c511e5e3d25d0f54e53f100c87810f3a9d50bc6a04368e024c896e2ab00ef625c5754801705b9c8abd0e1d2dbe0d5de2e9c3c2281781ce2f2c917f424ed45168e81e639491e952cd670226059fa5e248f9ba9d8d683d9cb975fc09d8a50c89aa00ea7755eac81a11320cf74eae634cf3866dd1b3673c
+9a58c91e9e8b94581f7628d2ae0f97485b590b5f3ebd7c268044ba7f8f9b07fe50989081f1ac50e6ba5d02577601bfea699ac59432de6e125001de032169ddbb10854b0f90f55d3b3a85e461c7944c5ffa1a3250f71f3c535cc142cd16c4fc8c9c1de0761f87cb840136719e63b342011d02486b75bf81997f9e7849bebfa8
+71370b7414491cc16f38d5d4eaedc34047d3ee80256aea589585f063d056eb62a6849eb56b488d0d646dc22bed4d316bafb5428d5049bf5400a7a1b69c463a80ee16906eff9beabc7bae61a7edcffdaf1a57fe269155f7a7113bdb3cf70a5c8c8509d8bd1e3c5126ed4e1a4853a25939b01a03673a4275571e6db4dfff36ca
+6ea232bff15e576bf012b5a946a81e48bbff414a94db7968a1f0d4bf163873c842cfaaf83554775fbd7428d8286d97fc546e899c88a16bbcd93bcb5b78939539b0cafc14b68344e42c70c182804bc63fb0eb6ef54bb5f316d45155e20beaa7fd4684ce238004cdb5d23adc7c2e618667e88fee3c5d7a1fa67deb9fd654ef75
+479056d32a7bddefc6332b1d430b862cbb02757ab5d9eb079e053d509eff800232c195e8e3518cf9e2dd4102f59fa55b2686b0d7d39adf9ac37f55bf9882184293c3a216730d26426986ce6633ec5fa6820fb8243dc46fae0deda0580864045aebc5b25a3747c43bb9d8f7374e4ff01593985121efcdc51dad1fad55f8a750
+93859cc5b08f83dfd3bb4990011db4712420c2d941dee159227656e5e54ef1d33320554ab70ec8b70f73ff31f84f50ae38fcfbf4a7957290d21d5232a3e230ca7453125cf6f799ab62312a12ed8444e837a854374b33d43904f5cb9f4163d716fcd8fc025200d4388fcc4075b166273ece9bd55699bfbf1dfb9afb47a17797
+75e6ed5648874afac0f5199bb65472bbc0492863a4d2df2b9d7b0c91ad8509382f6eb68b236b8127acf3c37b3b3e2119bfb5766591e152d794b3ebd3f295989836ee729141047139efbc409fc46aaecf32bda5692dd28664b0636f89be326b72b1a79dcec126fafea7150b99df8d57006cc11d29982fb55dd7ce5972da22f8
+baff4c43f94f0e4616a2929e3849c8425ae6dc950a626d6137da8985f4692f61b5c37a0640b09e841db4f86ac7fd66d5af3a95259125bae1999d9fa5fb21eeac7926a7f6fc9940b19b0f81c8a94e26e8677decc980c4b7f28016a31153b745eec51a8661266d37a09f9c64255649e64090856cdac677a66647a9ebf427dd1d
+222c8150a86b8f7d12ec27b5a119ba6ffc942b0f34623875d640e79535ba6fdc5f9e936549e949ab53323ea863afdff2911a91d1bde89ee15da1a752738a7744e9aba6ecf3ac402fecb52e2851eb82bacbb125c2dfa5f2797ed1b15aa6f5bcbc2686c7c7ee3376b9d7645399cd2fa28a4c7b6d68c043b8241e55a75bd99a23
+2109044ebe7796199b97309d62c6b677d78d98e982adde52016d1dd3f232d57f0cf66325dbf2f338a27530d01ddb87865a792c827d7ea48b07f7d35a00a236c87f97ec486f7c1b518969d7498009f8a6ac1dcf052c167697aecbc1e35758694df075f85e5d07a08c2a0c3b0785dd39b31faf36b7902eb150d1b4c0f13af878
+605995bddc766dbb1776381eebec65924a450b3965110753df533d38a414c1af4e58825cd6bdb803c4dcb49617811fd9274d0ca8b3a10efc1635fa81b8d4ce892f321d7e5eacf5f26e7c07fe8ff9daf3cc7c33e1df1c3f795bd427a977f5bbe6ae6e001852922ff4a30098c38aa7b9b9b0fc5862dbfeae46295a8da3eebd0f
+0c372039bdec907bf3407146b485469fa08fc11c2619360cad71d6dede0f8b49fc7bf3fc6a158252a228ce6930cdfc0fc07d18dc4cdc4cfdc7854bac54e0c2949fe16f2736e9005538bdaad95ff396d3969b6d5a2ad0c99ee9a4a6eb5f548e659a766f69b6395852719629cc135a01c30f55002efcff8091a2477f752c3365
+771790d5b7ef5a9bdb5c88096f497563166a3969190db41181098e8dde06b54cbc40842aa08a6947071a49c3d02f4655d49b4fb3a3f164858c15cf813f800c0def66135e1d15edd4314f75949db00b28bcb41428a3e1a58e8edefee9d21774c336323bea90826e7bf07fc0478e5f4a6500660b95379474543ff2d482a68276
+f38710ee5407ccc3aaa27d21c28ed3f60879e14723060ac34e91568de52d8f34baf046f2bea349471fd3eaa6cd12e377e37bb7fc103058169df4f595f3ca6b15e343f59437770ccc36ec393debf2defb3ac1846eeb9532e862e0acd98b36605bc535b88a5e5e3b6b6e86f95b8ba093c68bab5fe5588f1c3edfc51e55b512e4
+a3f1a61b4cb72ae51494802cabbcdc1fcbee06ee21b64c35045d9fed344fa9facc0a539b5148d7dd255771c76f4892f1a398811404730e7dea2717760943c78ab7975a422507b7e2bcbf2de6bd7756d098942a1e4bf2185f74af7febf2e29062f05deb585f0ef1d57bd10a5eef0e56ff2804ede0576269ce93ad23d2c501e0
+4e5644847a026dce845c5f38ec0c155b67bb0df4e672706d08b35c8578485809c06526464e1d7575394386c2b77583fd56851ddf67e0ffafba970256907d069bc545863e2e847e9a52ba27fa0c60838b92b11883363d8aa8bdd4be8edef5f1c074d4a6fb068101805b4318a586a9409664a48a49639d1bb19083e77931ff92
+bd724a761b5300ba8332b8412248296f3b89045603988c1162fc0d917f614c6ef84112554f8bae7ae6dc9dc73193c0dfe72d77040c1e632686eb8d87071f3bdb3d2c72c97ef1e8874e657bc36f9ac3551ea37a56827bdc66809d5fcee7cf651e4e65ec1889723f803adb69930eb509d788003c63fb158c764db263778f7152
+3ce577e8ae531258b5a33886624205fed4f56e3ef9d3c994298edcd2d59a3633aa63f831e99ee4e20dc4735eb17aeae03e31cf9b35ccb512035bbde359a1d123752fad616a095e2fb1a246755c699e073fd33a77d1e391a765639eacb04a27ec5e70523a296c6f9127aab3b380aaee76af3c9c8ca147a00b860fd235839ebf
+cb9105dacd64668f62247562457053617ec79486ed91fad906f38147f988b84caedeb9c6acbd6575ce2971053b79bec5c7ddc1c0a05e1e42e6ec0e4dbd180cc00e6b6aa8c458a2fb0787542c674580cf4a70b88f30af08005eb3d4ebebefc88e4af65b3cd9fbf680d770b79e150eebd0a41941e3f01535dee3e8244e4a50a0
+0b993973be46564bb69f73c229b60e72aa023826515083bb65a70dfbc8f246320c97a9bcf123765499d116ef7281eeacdd55ff71f0831be417925d9656b545d8e56de71b656342f1b3100e9099dfb4394ee7235e9246e81ed09558555ffae7f7a2cc47ecf963e9ad959d2e2c95bcb4c5bebcf3018d505f697cec50acd2cf6c
+b43e7b60314d35a2c14b025d66b8a68b1de9ec53f72a00ac8e7010dce365eb9bf8705c92f4f8fddf91d56c4bffbf8f342679bc3059df5df6e919e3443f3597f60189c1f9b1a47cf4266b48f6d8b0cbccf9347682ef3d85651b235b2cbff0db7153bfbc2cf59094c5e682a83cac5d58cab9e2f4e9d30c5bd8c92d5f874131b5
+1d273a3b6f57c210291bf0294f0f2016b80871381ae47ec95d63bdb757b28a14e3cc9431747879791ab83e7ee5ecd0d226f7b5f42079633b42f31d007ea2fe4728f353530434eae7f5f03f1ea03ff081768a4dfe815783d44a9662322f0fbf2e21b6ab07c6af457848d49e37783bcf4d4ee852d603eb60cf8b520f5f32deaf
+8934badd620d40fc52fe047275fc4468571c084f5910e1f5f88b1e1d50d03f7b13b2579a046c0b0d6f03544a81ef4559e15c740854e95fbc1bcf1e6d2696f12f6b7146c82f77e9ae591c9b9252cefa2d6d534cae5e16621698f441e0463e70705b982fffb7fc23d39469a3b213c3479f5f9263f68c36af3c58fba33bb1c0d9
+d2c59e3037c787dc2210548ee9749a42af9d34b470f53eca9f4d614b87df34d5bf4cd5e88c19815d7049c12b2c8a1ac3d6d82503218aa54b71550602ddc6aac54c7558c79650d2a15cad3ebc6a2f9d6288f8b63bb3ae1c83c9f24f8a50b15181ea9fd71fd34bb21c11e668c0ac538bf610156268a779f1a750c6d962788900
+504d6a88f8d1457c3d23dff4b7c7dc4ffd29b1ad888377539f41bba722fb39427e94a1a53c1c50d63bde4740097cc6f835226dbb52af3f82bc614d2ab4febbf8b138609e8bb957446d75d5cc9132fbcb193172bf20fdf15bd0276dfb957dcdcd495a9ea845122ad8416372632ea58ee4c98c61ee314873a9cbf6a90a6d9fd3
+f0b3d951e7818ca95888142b926b49fe6fe30cd86c176155ef7e078259a8b765b9cb9858ba7af634cd66e5a7194468ef8b9bd22de3e83855760fa9d73d29bfae16352cbe2bf4546d0aa5a303d9b621a637d380b556f7d8b671675626f35a4d814ddc8d636cd80ec82d0587b70923b9cd0be206d6498de7ede78a407f66379f
+c5a1a21ffcc003671d2966f6d88329e2641be547e9f86d36eae5da176532792f2e78733262956950b59025d82550b217e68a7ca0904708495e1f1a8500b85afb12fdb3441e282ff674b11f10b9d95937f6a5216af24c21bb9e3ead9d36910092c9db7c11be221331da36c6435406e6f579945a5a11ae59c67460b17d197e49
+c70ac5f20eb8225e50de3b9327c04c94c4a1b0bca1913429df6740d7193a24232289a807d815f1530442f7cf7975c848354128b85ee05b4cdb538268649adb30af9105e58e98bddd4047a3e39032ee1749828ff1811691ae5e83aaa0ee912927dbfcd857366ce53647e67ccd7e6db5a8f02664be0500a8d04072f8e125c615
+81dfa16c04fd17bfe43a40042d8fa7d63da86c60302c17a51c7d4585f3f54abe6aee02bf03f8d1b9edc1a3e07f4d1101d6464dbc099b09837e6eefd90a52e36678dfce40f58feabbbd9e5e71747abd6bd9dff1de4a31e1ca6d3768285db207a0e61c635f5bc404ebb89d19c01afa54bee15049035b40d2aabfd9c6e942cd06
+559507ecbf5bbfff1a9ab8171f0991f434fc4dcd20b6ca6ebf1cfa6fce43ad5f51b30aa67b88986f3090c636fda5c7555a25f4f30a18c7d310dba00a34fa6dee95e17b97687dce089f929df1e7ed3581c38ad304df967148291783f91904085b4707d56f761a6518c5c7312e55aa34b874e792d8950ac99c760aa08d601724
+b1522fe0c72980b05986affd302f757b37e0a176c05b356e8ce0881584595a5710146bf39a92d43ee8f1774e795cadb6823a70e090609f40a6afd3b3c41699b36f0717154b6d90878547ecf0223a17e250fb729d43cd48f0d57b05f6206e618357589c26259e6da00804d9e1d931010bb59b7ecf9337592b79d9a41b21fb85
+92659d537e1a38f9b0716b8a53d9a7b7c8591db7e2bc85b47a3fb704d27fe6f369c34c363737332f48d0b3442bbb27dd083799b791145dbdf33490ffd9251ecaa1239ce5376e7d7faf69cc6091685fb4576649cf27743e25e451df78b850e6066d727b015ef813a685e49b0749dea9e07c506ef37a6139500550cd52967d0c
+179dc78da3c5e06bc884d93e21d3c7da599f78b779a9ed1a87673216ee02165aa4a0cd8ff637d229a96177affc8b39b73bdd04f953fe354bf97da3edcf922ae8c99fff0b535e79722ed84e1970834834d0f81952fdc90f308402e514e25b67a5bd7d8f89e41a1d2b5e6d50517f98bd2b6051609d21fedced4667a11b331264
+8f2d369939775a283118249f3ac136114642b0a3003738570d9e6d820e84b32f41aa07bb689e3a2e9b8b71f5f16e7ff5bfe5d7cef61af8d4e1f66ac8fd4ebb15b81667a6777fd2c65911970f47547eca714e07379c0eebc77f902cf1d7a8fb26d918281f9ffda2e9f3fcf13c4692b856b653fb96d8db4cb0520ab224f650f6
+b54df1bf2361a7008d2f9b398426458fc7d554b21cc49a21b679b6814784698bb5c9002a093910389839620bc24c57dccdd8e5673d05c5a9cd91c15690b8b6d0a4ad689ebb091bf16a19a1198a710843b85548e601315ff75737a353dcd3578ea91a9165d9310175a769ea6bf1188f044586a4751340aeb95774eddbfb9271
+5cd1e13ac0c25ba33e81834d25b4eba8766364ca2c02d757e2eb93830c57f24fd15aeac44d5e4e01e99ca27eef2883a952f5c52bed754012b3ec587d4db775e6444370ca98376418827a19aae7d113cab6689da95a0e4447bb3496510cec640083bc7884c08750bdadd254e6910ec02fdb3ddf07f0fc8e61e227030c9dd6be
+c917684bd7f20cf8dcf79ee2c84c4d3affd15559e9e7adc2f3363fdc9840d01ea65dc2c7a1a677a21f723df4d2b63dd8cb1badf58f63c1dd590fab21a0107babe7c06270e247353615b4fb8cbae6f6f4d68d29b8e8ea5eaf6cd0283563bc5da66df1cce125a62f02848cf6fe379f33d11250b30f4ae202abba92519b91b223
+851bb68fa5363aa745f76ec3bae67661d21c604014f10db45049781c2f1fcaa906910b973c938c2c799876613444a0264a5f3309288a47b1f2df72e90f519860d78b1c7a021b63936ccb9723ae4172c10264861c2e3e842663fe623457143375cbfd670739f2f01f4e9332e139a78e65036e414e9a0856027b14fa015c3029
+14cd58d042240dfc711759fffc0f7e0af71294012247a3f827e494a4ade47cf78de8561158a3318ae38753cd6ecf82777ed916949684f63d0c7d56fb3d5fa891cae1cc2417fbe734954b52d7b1baa1510c943997ca78c8e5bba26a5e6c2ecd5e204647377991f2bad8234cf28f71c30e8b0cb51354b4461a99737cf4122988
+25ff9706b1865a997456e22cdc981136d641207d56b7ab203f15a2b48fc6ad499ce3529ff67319b64fc87d5e1ed9ea7f359d0446fb34da085b3fce1749c56498ac103019cf7e06ce15aaf9e9833047a8d06a0b9792a821ea0e6bf23f4cd71072795d9fa50bd3a343f1a01fcf313741ff1ce9e485561a124b60979207d83abc
+64e33258b8a4499d1fb2e9fe64cc9d451ea5c9883dbb90d62e1d37c5cdd3fb5c7f3769a3beaa44e81540b4223835ec1513e40f6bca362d8e370766c2c09b3f65bc908b2242a83b532a42d5e2be1b88b1bdf2f2ebba0c6c00b041ece7c628b424b4129e3c7ecf1686fe7df96e8069eba24806d225b487057ca45c51ed184542
+157e396ee15896d3218715bff7a7d3c6b7225281fe0731799f85930c52eca4ff4d52033398143df84ac8dbdda872379074d34bdd818043485c97005ef1291e36d6cc0a0247e03e7ea59397ede235f9e5a667661ce2f89391a68937d18dd1248b81c45e4427433d1cef0500636b83c8a82becb3d62a9d750742a91817039387
+3cb3a317188a7d875a0ac68b1e3dceedf2c24f34a73b4f8ec0a593414e740aa05f92260fe3936eb0bcf95d2c20b8d186f2740d8d80084b43130483cdfd5e1fd72fff02ade4021e7044fc567ac7484ae84be004137ad4370f68b7015a115c4c74638b147384115429045904b90dce5e0e1126eead8a7e3aa07e88686fa61ff3
+46303a9cf00cc7ed566cd9eb55587bca1363faa6d936aec23fb900df32b485943775df0d3dacd78abce4336b85a6a6d3c34a2dfe82c98eebd8cfa48683417b87d87fc6cb7490da544c002eb61d5f8c9394f64a39c33b6fc32c5c68d533569654c3aa7750b76e42dbb58e9315577c1af2eb97b04a060b953f4274d59e2269ff
+fa486d3fe9fe292e767f2c32c35b69d62e6905ba4511cc4997865d372006d2f47b13e1d00ae9e21881c5c35ac7744ff4b6155f44f683e15ce7e94aa45ed01c0d93fef9b413a3686ba410dd1997a13a8b6acb56f98501be1250743e102936cd53f0b0ca4aac60c8e45b396377cc1ae9d429787a2bb4e58946cd27c44676f7be
+c6712ca15771851a335bd1907454f1aa48fcb9e144dc108d25a2a0a29da3b6889dc243e58cf4f0effea3bfd9390e9ef435ca0bde273117c7067a4e3139e0bb8a7a42398383e82a9158668d8ae9b0f853d403388533688ede1d4e39323095b62193fee792fba05595f89d5e885fa854421430486d068efd99a3019f903b631f
+ac37f5939b9cc09e9fb55e8770248a8e171a4927c55c0550c954bf29fdcfe104a4d8c5f4b8cee2c181208492b54a7b8e9d9c1851077ce831a3809c34db39ffaa95e7f268a7d1d8b00a3655a9d8bd0795b6efbd2673e5ffab8bd809cff4ab0cea8a46bd6d378a4d678ad8195dff91bff775dcec4907e115381056342ba78e1f
+5ba0b768349e2af84b9df227085f0b0976dedb08cf3fd45c54af2b7fee33eb56e4170c7485ffe29b05b08ff1f5a502c86fe044e05ab61522ecccadbdda74d2e9577b9384f41c933756e6789305929756e8523c13ffdfcc6553718357506f1cb5e0bfa99b95e4afdf622ba483391d96e9ff449b297613b5be941b6e2e10bc00
+7ce716000a5f0b848fc8d0da6b3c3943eb1577aed337d6c1bc090ea7af28b703123b338db4ae1bc9ca0c49029bee08ce3f2ab94e225fba22ce399bc15e8951e3c889ac4a77486466fa1e109035e5eb9c0b478d705011653cd7619bb47cd2319ee29a82a4e624d1f95e09c134d78e1d9a2a267653f2aace82066f27172d26bd
+9247e2fdb867488d4bdd55bc354ca0ac96e1639b5de0626620aea95739fca1e6739e4c60f8db618b01235562f79aa3b11875d5e6a7edebeca38051670607f11e49fb82a7568bbb280618740dedd55a79fee1036482b326934c0a5e16a1ab4701926467b81485caf16f0a8cb9c6678ed81e8638cbfa410aefbedcd3d18c3d4d
+c07eb131e6f35cfc86f9d0157a677d0c2d7e3b4abe3a59e07893817b939c734963c3e6abc86003b6383c6c5ac4f2462f87fb69bddac42c0e1f0845d24b1b909fbe03a93a4ea55c923acd4238a6aa20a384d300eb44a4e33c5867c3f82855b2621108419dcfc5845730d99c031e29d2ec3999f24564c9f7fdb687ee7f7469d2
+7e8c06d3f5b99f3fba2b431e1b016f7c0777b1d7cb209374e54a1e9ebadb0fe0405335bdf6f0ab285d1b3d6bf53a9fcd2e6748e5f76ca45a49c2ab5dd68edc59cd42f38f28427b01a3a2a3df74a442be1bcf7bcba6af7b539b1d148e6c75b5c35c4d7483c1209a753c510709be09dcddfd3dedc18cb976fa5389cc960211f8
+7e2dd57e86fd0158b2a0822d81f32ab0e6be3aba720ad374bfa454577b44cc8c9d96b2d5dfc95fbfb528d7e76a60486d33ff9afa2f16f7b4c09c69377adfb9863b6cb5f75f00fea2648de40dbd89e46a59d50a522e8cf5eaedb1946d4344b00430603ac426817e2b376acd0974b3c37f65230b8b5d9eb500ff8e52610b7c2f
+b3097e380fe2752ec948b46b323fa0ab178f34bcdb6c471c8cefb5635564d5d7a8d9b869a56ee5e7f97d2e240d94b689204cd44ab2aa067a7a4b09e71bc475d3edce56f03356937ec1ffaa4eda180da13396859c5c85a0f71313ed8d4858ca9394d4df8d2d9b95fb2be76b8a3d08d662aaad760f2730efc2f6782a6234bec7
+900b93ef744f05dc53021c01b456ab653cccd32528a76a974a24d93a67de276b0c7a6eadb306a420fb5c14db4a19671b6256e2f1239457c5b9808fcff5ac7ff494f457ee0a04788256a4f079affd0bd880ffcfc98fa12197c9fa128500ad5a416d7888297d5348cad355511b44f9a4ba1f2fda06b8f0e5e53715ca8230f740
+b12c9c4ce34deea8dd6e10093dba924d182e27d87e24e85f2da026d332651afda0afc7ef42cfeafa0aac976fa04ea29eeaf4243cde03edfc0bbfb10259ca2005d1ffe7af6b4b9b9f271c805bedb30c9016e8129a013b662240de6a9b3c64305cd8fc2dfa746c5a6a836714f04ad67287b30a21d53d484d44d263ff9d697ede
+9d0250ced442ae69c1af297cac6c5a67c24f5659e4ebb64af3297e481ce55a19016d510aa5bdf6fd8f27fb8002683d3d2e0c73a4caa3b9a71c35a1798034126c1760ef65c20ff02b5f971d4c843c327424fc9ed7e714439c17f339a1b7486330b3446f4ddb020714129780f88d0365509c481ca8474fe8552630ef36146556
+e1f3ca751363169d50190b0db124e2230b46e42475bddd584435f0fca6aa65533841253a9ee250c378ac22f56e1eedbeaf6788f82ce806bfa2c3208da57be3eec807ffb8e86a1cdd83f95b8812c07ebb36f2fcf3641d9c3f3ad1d7c604ba85891fbd97063dcc52164488e9aaae40821bbddcb6512980d01be2a8197a67e264
+dbfc76642eb69909da9c0d32a2a08de62a5fe165be73d5811d0f0172e1c3d95cd1bcf7f006b03bdb011d59f115a1b03e9e510a2be83e0c303e78085c6399f73000340810da2eed9b889c5e7f44fd479cd7a5cba4f1d1a8df20fc31d73d13f88ca5ced625e0b76d70461e39786ac20680790ea9e836c6082eff9b15b6540878
+f7ba0dd194cc93818013214156ac9278fba4d25c276d413834e2c077c5ffd45f0367e6099fb76618c276daa565ff8b47d70725dd1d612733b23a244f315a96548281df0df7c1a6141713107fd777f3150d4012eec5f8dd4442f95c6788c3fcad4b1d75c6a46eab03c412d5194b4e90f9a6607a04577824f5495d359761878a
+b1b0da9fb29884579f2cb4708ea65ca4601c7d8063975caa43e18f9c28f9daf31f92e2536fde729b4a620a786339f9cab5117d38e7d08d035c01a8a652880b776d64e61bc1abeffe61992da6593016aa7e8d9c42c7f126e574048a653d12a9300b0864ad905eb22a86bc81235836882b113b75d44a95b1f6ee0084172ad703
+6b7c2b1a5b8d79d1854519692a15705979f3492e2ba0638f6056b134386af0443610871f3bdae7fd150d394c4315e8bbe54578e91172352541fc1bb6b7219d19cc4c17d611c9c7ac1f6f5bc7022debde0f953a235f4d3901a9d800a00cee7d2879d7b8517c0d8e77f5e03918afb64895e67ee07aa92ffb4d0fa06ef55ab615
+681ae8983607c1c26aa24e2d32f9cc3cbef9a442010962f13447b5f451ccf6517bda24a53ae49e391df43eb21a55a21736074518cc79b9e67cc0f955274eeb5043beec6eb65bab1a452b28cd0eadc43b5d8f019acf3e458303dd62f4f78f3eaea23012866ca9da905a6441a09a7ccc86707fbdcaa77dee19d0d5db9643dead
+e7e829e24d1095e07848b4316309a1e0e7e1004135cc5119b19fe6a739407fd6782c36b2b082f150c617dcc453ebfee07e1dfb8dc1105237405f89b41a81f461cf03dfb5d9d13db21757878642c4373b946f052f7c094ada92115c9fcc25a374f42bb1fe7830f1909b78d9abb2461f84280f2ccc6dac98a0c64862b6353e7c
+e2354ef01fe572059d6ae25af308e20cd36508345411e41aace28e4fa8e02edea172dc99c7a200048a7de4dddef619fd90f4dbf7255b7fe188794e42d7cdb8eea28c0d886a1435ece7e4681adbc8aafd7c4250865c5550c06fbe2db519fa9ae8d4f455df4660c9506e60c6baebdc61bcff8e249a26c495420901e548b7d2fb
+f978741c3fdb26636120b8bc93677814e55a871a428d81fc6ac23ee71edb85739a92c20a86c84d6fbfeabd86462fb3b249440ea7c0517e230d567eaea7fc73ae495843221ebf44d2ee5ace164c8d09749227d1e09669e4addb6750479ca45dab1fafaa0e961f11a0eae6fdfb8edead318a477c3b480d6e642ca3c3e2927253
+6b304d374f66cfb416ff4baf24217d011a5e57638103db4a466baa95ff8aad9650931fd179c3f9c80a1b57b6a080ae49b110a5c1b4733381615a85efb8dac06b2f770572c3d1826ee972f43387694d3ab4ac73231d97ffe98f01bf83ff20aa623ce57ff5a8aa1b4203d6992761bcd10322f9bd8ed075c94ecffe6d10bb1934
+05fb314a363280de060657b19a72b9e1869b97b999ceb2dee4aac63485fe96b5b550db2e98c0a1d0511e741a12becfe5d59e968f7833c1eba2ab4f0111d19025ec745dfde1d18803de29f4ca4810b0c68de3d57f174ef5b9f648b507e0e0e1fbe4121f0b7ca4116f037bad6091f9a91cc64c8ee02caad6e4634488e4288c83
+f34dc8ddb91a2a1f01a49f4e48de607f8375ec953d5ee22e28c9f3aa8e4f6074254c770bcc2f6739c24d30455bc9dce6f87084af762acfc547b5e56d88f0b97a22c777baaebb6a9eb1c3d42420da473f8dc0ece39b20484125b0d62a27982f9616aa74dfb89ad704689e901d5c84f07c8951b2c4b869dba939e99cec5cdf45
+3a97246c6255a8f349f07a669c66c0013b105a0f58ab84e5e014712c7d91425d61a3c15ab358686ffbff9797e020fd43fc6141298910010cae25e8fdd0d574a55f699ec3a4015d9baaeb12df1fbbab16361eb92479dd3dc22810827151eec3174c22a94c8841b94446b74c22fd1932535c7c7e1107d6e1a1bba0ea8155dc41
+f6e2c725f98669de5569f33514b6528a61a534d22d7ceb6babb2f824771862299cf6369c2847f88aee2a76417bf51d81ca6a390663501b9215b4861a644efad6e15e3ce4dea623e8bd06c220f372cc7d836beb72bbda20288afce2ed884e9178fd9995e528a38c0293690054f0047c629b5dfe85baf65be877a1ef133e7bd1
+1204ac206c8dbccb7d3e55113b24872f9034257cfa15fcc7ece44b821b8c74288c147c37bdf27a595e65f2037416bf9a78a245c93c4c7c8aa9444c20ef3021ad783fe5835889c5fe99c3e1856e58902655571432d49f43bccb0440498d8eb41fc07b9fcdfa44a2fcf5d3327109287f816285140c471308cc4499adc95977a8
+71f8fbe0d43e3c1bd9ffea8d68695c1cb83673c7d4710829394d0e0fecd1016f1145ed219f60411cc2bdd628f72f60aaaec58187032dbb6543b3a138d45c5cdc955abb05c1fecfeed4011168a0c93fdb2d454c66a25a81fab137e70ec07787dcc132144c53a15cf0909bf10134ba9205a65545b441f1280239409d3bc95f1b
+0251d408e32b36a1d5f146928dce90c91f815d3ff79bf3a6e53726122e8c2b2d30e7092fb07e1a736b51cf13fde2a940154fc9e67568c7dda81c1d49072b4987af38584dee02328ad9476876ac02a1637dbf13fa61596588f25f20c08dc982ce453cf27b40bce8ecbb9a064da740f5c75497ac7e915d0d90904fc4dd614af5
+5e66151efeb466b98423ff03fe3a8472c9a6a09965a81c831ca8ed875489a729c2d54b0d496d83cd009f9cc027eb116a865020e2159909a3210c0c6f5c04a5418e53f49ad35fa915e3bf11361e1808b22ab4ad96cb70771e9894f2b2853be3af22df08168e67fddd7abddce1ee95cb7e9e2bd075ecafcc4acb6ca79aacb2de
+df98ce002babddb84b832197f0e4592c0c24bc97477416885713d49c5e54bd834db02d4977d8287f1e268d765e61c41b64f8f32bd9b961c72963a226d0bcd1f412f35b140bc547de69d7cb48019b9d939d9bee291693a4b1d787b12b4d8607ecb54c1109ba0d3b2579d5a4eb71c43859e996e87f8f62f03a4fdca481e1597d
+18d91245aa1102629c3a87268f2c526c5281f8d8a5f1fb4896a55232319791654bea0c5dadfa2cf56b1a9cd344d3225759f778e86c03a19fa1bb9272d99d7e4ce5254d321379f6febb97619eda6493e50a932db686e48a2c08415f1039baa1c62a46b960c078e7ee5e1a928578e491d622abd370d75aeb126e60667b8c2a4e
+8f6f079742d805aaac642341612d5a4da0056770b0d241f85bcbe26946363b1d0654fae73e66dd77d19e4c616b3a5b2fff244e6de6ec051bea09444c83b691e3933bf18e606193b242e5f26a53fde3621e5ff648ed9b2e133315fa72bfe9a2145de0911d277ce0ba118f32af9b3e3981da06d88ebfd936d675d35c47f09d69
+1f68bdc2b864f41cf16680a60613839d9110fa6d3cad642242577c17f64ec3ccde2f532fe397e6299d0ffc4e4c82c82ed6ac813fc8afdec88302a0fa6c6b9dbd0a5bb5fc129686e8c9d60d3c8c024bfa8a82d0b70f2cb541cf08f3205d991129f26354596f09d84b81af4d11a4311fca55782cc7ab91c43570a9f93f910878
+9ed61a3ad1916d48c84241c8b939fa5749f57c13f67e46c2b1f6990deb284f22988ed3ff87f3a4893319b8a1e124b704171602db712c6531b3c7d6e573a9d8825fc78a42acfd014f87302515bcc12b98fea057c668620e4089b85c9efda576f029cce97ba5709191e2a4850235ca0a7f76e6565c375740771bc3556cf654c7
+2681550517c0daaa38193efd335baadb8d74945507b1c205af82e3828c0e49636abaddf24554634b268717a20b4a0ee9153fd69243e470cb86f82e327a6b4c10576fba94a720650bec7491e6d8ab927d78eb9724c3bb0e57c2f7635064cefd39be742f14572d15eb3c071db19b21c395666303e86b74f2ba59d314e4b1a78a
+f52250ae13fd9947c38322ef9eb2545a518bdd6246f3923a03133fadcb08bd3ab2f54f8f65cee6bb23b072f8637e63d075d55fd70c2013bc6c7baae4da712e71fa07ea68b32b58e832e9bc8e3f8cc1d562552fb916f35e8a47d0d8f33acfd33a93e0949a4d8087413f837a672c84b9daa42154fbad948b310559bac30aa416
+348091e77490c006ffd37deab8144f53738d4005b73b532a0f9f181b6cbf8844b01f0c86bd2f4281187bb4186c2a4425d9255aaccc99cb9586a9564e11b4be5cdfe521e581b23c02319ea62ff36da19bc72ef3245fb76da03b3f570d8b86187659c05658077b53a7aa4c4b36cbe4ceccb7a45c031e8104cb489b4e2f8e434e
+e0a7e5088a33b9b95c58fc59e94ffabdf1428db844cfadc0de0c70f87df940694053347db6f55e330a28dbe62ad81c4f134b0be88454ef7fde8b83a50fe0697a6ae22a2008d13126cfb25bcd52bf0f4d66ce2090fcb74227d7747a798b52aabcc30672436430cd296a861db99271792d196740bf3f40ffa32095a68f20d3e2
+d6ae11e58d4492914212b71a9fd24a2c43aeaecb2e38811029681691b7d30555d7c2acef4889768d0ae02d2c640567553ad3c8370dc471091278cdb8f4fdf83441a69c885ae7c2df863a23a3c8a8ab3f324a3f6b0413790114ee923ac731335c71075bbec27c9cecb5ed78d50e4445ca13aa222fa5f3f57b1f37ea9558a93b
+03c6b217bfc62c6cf642f3473352377865cd47fe599f79062bdbc5a1ce07081b0742ff5a918a3b976e303ea68e60098aba208b6932a7415d833316b42fc552643262e8dacda5cb399796ac53d321b7c1ff5b7d536025924d7912b776e33de08f747ff7d938aad9f7b9c8e222f2dfc36a9935fd9776503d3255704be2f87681
+5a1800afb6e0e088a881fdcb8fa06519b31f1882c75bc12edfe8ee10a682ccccabf1b7590f64b8b2364fa2f770ef0a9a3cb22202989bc412c0f0b16ee45b059ce22568d04d191c658aa94417db08e26016ded5da8b13886981ebd6d97b8dd73b878447d1993dae50ab57eec31f5a4aa0ef531a86493372eb77951c9825409f
+b74ca8b2d93f37549cec4fef92df3f6094b3480ffb4b576c8b0155530645212e265465916017323259d276a4b81ba014439bc3bbc55a2498cfdf411594503bec04237d96333ad872c29dadbc62202c17f6346af9556733a64564deaf61b24d84e657b138c37c3604c5c1da709053f7a75bddac0bc3229a00040e6d1f9ee207
+465717e9f33a1b11c095efd75486665ca6e7e1e6b82c06a26586a38ad0bbd4e0f8eea6128281b39665d47325f10d28820fcc900650ee330616538cee7454f1c807574cc9cf6a55ddfc428f9e7c107af7f44f02ed3be9a1047584c927e4a9970c55094afa481b82c8c40e91fe96791699f9128e0ef9da59b1d7dd3c20cc2803
+5d5571e3e5dbc0ed14e00f31dcc0d6abc1b19c48926b82a7d61cdc95d29fbbd9b81dce9c518954d1a2c6c518452b6de06e9c65ce5c90baf0493f31022493cd05041e05a7a0f8eb0bafdcb41169cbfa504255cdf2bd13cb167482fed8750189169b951e54a18ef428e9ccdfe2ed0dc7a39dc85e480a9c7f47c3de2744c2a9c0
+3dc40a63c62a8aac041036e295cdb1dbdd70a47cf0ce18257a258aba254fe866590bc7ef46f7154df46a8e4117068656e7126d7053506daa3dcd7b66e53bfa99cdfb82fbe5ca1e5ec177fdaf04f25ae27142e2b040afa421474c181c7943643b0976e3805af1a3f47600a2d8912f1ff654c41f826522c07d0e35099b283a65
+9fe3241cad8cdcaf551a1f31fd7eb2abb2eaa65f2a15aed783718f86f56966b0b2d21ceb722b8ac38957f38932acf9a19e4ee9a609259eb0f6b9de75c1b29d87790563e79f425091966b936a4428df2aa1c281ecb8401e3f8f3c67f6dc631634832ef74a8c94ad979439b30bc8ec1c99b1e54c99f26d09974b5d92e96be88e
+ad84918267a050f2c6ff91508f6e045fc9bf267f6464c901c6b2ee48fbe4f7696d26da1fceac4a2e9d6cbb9d7ed7660b4011beb631b80f6b97297a20ee5e52719a3db2732129fd8eacec5b84d94363f4de595556494b89d26e70bc33f5da1031505674602aa5391a649c4220e1b14f2d8312e445a15276a52f1d7f45cdbcb3
+c95786779a266651cfba24926fcb2b44b5116273e67aa1c6ed0b4ce53a946e74d4c291ebf7e9d1c1ab84b09126b081978c2b0fb3feda78703cdca556f178febdf0153c6615cabf44ec1400ff8c02370c9ed1086e7b4cebafc2acce977568b8e3ab6c334e55b850e5e35262e9ac4eb201bcc21bafa2e342ae824b79c9728527
+315e32a7ebf413af7aaf2d87c73d97f100b06a940a98816ec4c26fd451673caf4abd2dbace36898a853ba4c3acfcc14042676e65d69979aa1543d0965578c64ecfd194ce21fc8314fef29e35d5597a539d4bd67b077e880ebc4d41b072b8462dc63584bb256094eb353e355b346d6313fb265b8f713015642d61c843b1358b
+fcfebe5a86307bae9b574c71371509fd56ace646d61e0a328a707e3cee1c3e3e9c40c42ac453ef5b692a1c2f24626d0cf130c3a819c54d798dc577ff7956bf27f2b6110af08f0301f44008739ecad974aaa7d68e6883dc7ca3ca0b95ba226d819904cbf79b11ff35831c7258bc605c97582aeccbd2a5e64d6ede5f4d5445d6
+e83641b35ddc7cc6778e3ac7eef59b688a3d247306caec81765246ed6106b3ca3feb27e066de66b65e792548a57d9aa20e60f6a6f0de006845f8d75252ed9122728971f33120b49265cbdd1d8b0f42f3e673d99915684038c49e5ce0eda876c2f8f1ded27b035263256f986ad7aa8020f24e25731884e026c4e4c93b385a4f
+ec7fb1fde9e7dcc5ad30bd18c739bf39f72ec5b2c36a98575bec2105560c733d7e074e0289cfe0b374bd89bc94e3110ec7fa6d117c012319870bbb612ec2c75a838a07a7cf229140d5ad195aec2cd0c980955953bb8009348a5b4c700b123b00156f57257c1d06a7d5d175167aef7095e63dd7da9dfa591dca1c59db066ad3
+dd36d2e1162acef1c20cea01052c010e89276c8ddfac9ad719214eb3aea6089edd5b66193a5efbb6eb71ab1d2ff19f1931bcf5f2aa54b7f40da7114b49fff966de7f5b972aa76d02e31aa6d6b36b61157d0150e89d4d4c116ba19bf10bb33e2ef1fbd14009cae33d03248507083dccdf90d4e3dafba0b5b480f74b8fe3a71e
+4020707a940b3053bdc7a8db04706dd04029f9180564a829480dfb462619f48bf91b55567896a8dce27e4d324c8e2b4e669cf659c16c0f6b82dc72823d0a4b7e992a8f80ad0386473fc407dfda4e7f18d614369631e8d241aaa48dca013c4368ae87faa94a6fbc4a7e425a53bda770bbce6b524c07a517e9367f611857f6d2
+5dc35589ae182d098797f9312ea7874f03c5d19746425aebb87d803182d98a8b43528131aa077596d4e37e091567165cec8192466d21d21c97dca1daa89285afa44fbfec5c8c369e3f6eb4e7538a831964e68e7dd069d4816337a07a5983c954e48a09e8638b060040614e1b9d7f745c74a1b50973e831916789c540af9fc2
+55cf152aa8ab85ce2d47502abdc31f3d2efe0ef16a7593a8bf5facaf83cc8dd8f7bb53e73a869e114a352393d3ff15846f1203442ddb1189903b3a0d772de82728cb3dd36cb06a5a7feec342105c3fcae9acb6c39ad706772835370df24e865e52f504701ef0a739952d2704e3e1f3c7e74091c3b3fd4a7330ea94744d4f1e
+1aecdf1e733ec1e4efa24ee73121f6b4ee0df14ac0f859e56fca07db9b41e79e9d144c7df44970f0137795e8d5c80fa2e3978bdbdaafe4b4c71973d6e20a60e8211529bb5b96286d8065b65d4ca9124fad2a4b935863b3f886edbd9bf7a57cebd03a3358cd90cf5cb91babfd8757565e9680cb800869674e4c356ce76fa50c
+aaa6e0dd75a61aed50acc2373609972d065263dfc6b9326c41b967b61e78b8d3442e8d30c50155aa7ca9cd1cb9247f306206ca691b0d5b1b8fdae901fd66a04eb6ceea6b8495f5061e0efbc0017e95623e196b88ebb9b74cb283f006cdd5f6e7687c6cacf1223f09658b2a1b0e1430beee0cd6936a93dc037dbbefdfb2cc1a
+2c84036ef6b567d8926e6b524586143a6689266ac7c00cc11830a8d1a2bc3ca74356863bdb535398037b77b82472cdc5e0c4bc80bcedee7fe043aaf1e5ea75615c46dd2a5ca22d3e032f7c0b33523a2d5613f3eba692d641b0a0a33b5cab39cf4ccd8fe72bb4ab6ca71cabb4e13625231f81857ce493fabadb25280f209f75
+f1adb15ce277f7cf3e0ccb79293c3871cf1fb2b516a2f87a84bf8aecdf84cae2582076a2af591c19cd604bb2b56e65371bd062db57035de806bc6e864e27d7a27c72e175b9122cc656e8b71bacc85d8e20bba92322a50063ef7f91fb05597a8221ed0d542e42d58d6f8e50de5377ff027da0127bc9661a2ae255fe1a844063
+29d44a50c68a0903f4669c4324af974a97de6b60365f992de322fb446da39ea54e3e33660d0ce7f0b31504109f954f11eeb823bb4eb4d893b8c1190a1c9fb9dd71c3f0302dfe9ba1305e52f67afa320459ed0b6f870d7585d53790261dc14e26c26791bd9c99740158cc333c36f4230d12737e8c8a688ef66a51f80962dc0b
+5492e2443ac24ba132954aacaedeebd9cc62bff8f8e5e08c14187629f13b6a94568e5d4f2b55463c70f863b407cebafae6ac9566ec05d48ffaddb7a567d5a2816634d1c5f79280de20d78387e23db4303144454e3a437015747b048a170c497e8433dc28361e610e5a2b503cb51f5dbc63a292f16fc267fdedd7925c58d314
+dd6705cfa8f1612defe39682c12d47ef0c3d9b5ec686ffa4fbd04742974cb6a9483b5e03cad1f0d140aad97d74e456c75e6642151d167c1a822dcfe56c247e0af1af264aecbc735e218f42d9f817cc1a5394bea937965f7afb1313ad55e1f317c53b535882120a2230d00dade248ae0f7981031bea25dbb72dbe2e8547ee40
+02a0c251387c68ecc120adad0f0748e19edc9dbf3a4566ae5e2f38c74f6b731a4a97600534c29aa689e4551421aa5ca24d32abdf485a12df2701fbd1745230271757cea59b63de1ab59113bb574ad553d98955e41c6df5c7e91636eace1e5a0603e10253fcdaaf8ccb8a2e28eeb2ca9c7231f5d1e420110bbb7ac464e131c1
+78312efe0a67b81bd80c4d428286eb9a149cd7b9909ff160b057d9ea89528a00206f5228a3dd8581ace94ca99fedbd7b21154e0e7509dcc0e107c0fe2f45b0fefd1ddf56ae11d7f17713c989095a5c046745f4d801f19fe0e248635f8c57b5028096e7f12f5b2f28c38f8d8403828b7cfc9c9da1c8ddc94b99688a050afd26
+58870b4fa3dd87eb75fc0f38cb2fc2b949042f1008d1cd2887d9977663064865c6df078abcf76b0faa79aa3657acc916cee0668ba5888f6d497c318a1aa53849eeb939c3696e1b18224b789dbd87495f007bc11b86db8e9bdc4249e1f7c9c40a0de26a580d28aedbda4313fa07b53cdae3d5abe5e580c79c1ed42736dfb824
+660a10eb0e9412339624b21bba4ef66196dfcd89bd539fc6e9a660a05b3c73a315fc48f8d68d7de440d8c7a1c8bccc4e09657445b3f5dc43b52763b21354fef400f9bbc0d1bba85802e4ed2baa3d11aead44ddc825c755ac4ccb6a1f1a6f65365f609f5cb3fe0ab0ec9b0428f8aeafed197d05874a80b87e3b0afcdd7bba62
+2c4c416c110f8627ea81643efe6181686ae0b70f80cdc5a1cdad97ece8f77b87d52ad6cbee78642fa2c9a6504f2a17cd6861b050a90fde964831d4c43af525bb043d7e78af1deb2fdd442c43cebe9e91c04420b2029dc4541662999e750574d4fd387c88306fb654def8a3eb995729d20e1b730e61f697d5ffa998714251c8
+18f5c0aebc7c45475163a859d9541c2282d9ffa97a310cae7fe9b35e635a8a7df366040b480fd578e21f7b2b5d1088b8487c34c028ef3baaba0cdd7c1e7e694b17c5f25b29a2de9d8f29220c9ac477fe369838b3537bb49b1fe9ad1549580bf7799bfb709eada7c3c8614207c28c9c654420c1b16d7f0bd461f61ccfd93402
+4c3033fbb6b3dc15f9956f6bac3ab1dc43c7785d42a084d3ea583258ef531202056ee73cc09f137994322bb00085e97fc204224c96b0f5843a171326901e49a94a4e46d00364f177adcc2ea9e5b4760b6ceaa0849a7cb2c232b91f4ef3898ae87a796f62f1a96e31188d12ba2c21089e227594fa35b40bcbb1570321e1657d
+a8abef8e1ac37cbacf67d719f1605af599dbf37b7d083f45a80063fb9f8ba01ce9a63ef25413ba5fb0454131b586aae594edbefef70242552762989968614b1b50cf8339166dc97ca1fd7e4382c53fab164c0e469ec39704d6dc6f49d18463e944438eda86183311e340062ef76bbc0fde1905f5fc0968e17292ff4d1efcad
+1f1d12d5986ed3812214ca855370c635c39edbc0761aeab87f4651a8a28b0965fd5da6d2d45a2e5a517377cc80d81527912f9f4c163d05c1239a3d4389a78b6047f34e2011fa62d61433bc3c5c6b7dc5aaa5c7b3156d396975b372f51ce56ad05a3c55f24a22712eb86aeaf45c1bb268398b3e790869da81cb0017909eb08b
+7274550445adb6439ce0898acf8928e681ac0f7a7f94a52ced2ab6f43d526f399a5b3b911d7cd38a66b65bdebaaa16d82de09a532665d8d17b1a1a33c33017e68b4f0dc14d5b7740e634e62212205071ded125590c91a34e81843970b0c444e9adb434e09a20d005b6605087d2a87277dc0e94d319f088748f51525141a681
+b129e5aaef51c21af8dbc19cdd19aced661ed7a6c7b9821d9eb4742036d2e69223bde8bf108a1aaebf3eb87d689effeb55dfc86c1bd3a68cf998aaabfc85b54cf4cb78cb673f9bef76034ce010a2b4e845b056ed1aa51354e65ea1321f60ba829b4e9426c2101bf0015f3b85b31d0255d4d6fc2d054b6b4e6bbebb89a25bc9
+c510318116ea5e1b8710b42761a18d283eb1a5ab154b034ff30d2b829f552653fa000aead47603a4740e90a54b13734e94dbb6a030823d29c1e68a75c3f361cf9efab4691d65cb4ca6382826e1db005ea774c3ac9b85256d626a7bd1fe8612726b07dc7ceab780192aff9a436d7324952dfc994bd670b2f271d142fc84c8d6
+52efa5353518a52817c019ac2cbd31111bb7e560dfea2e81a2e55cc1110278204761073fb0a40bfc89ec3cd9d34b5d59affbc6930b09b8226ffce9a8a93fe28c5ce2bc536953a91b2bf6195460c8677f2bf314a16a7b4311f969ad289ed2c65177193db462719db6680e1cc03c2c3154e60dbdf7db0e270b0154bcace82bbb
+2616f8a418d898da0ae875514b7c4327c66c0b6826515f29b972eb52e220429d27e16b9b5ceabe45aff2ef9f645f196886cb989687e951f608e738f1ea6cf2a79e507be7f080485c3668af2c8c3cb8a9d4e0ca896c5ae8a19702d64c71bc4c89a414576b07ae2e38d6a655de7d336b2b1927a156e0850e6594bde58480a07c
+0f3c026467cf9b96b873c8bb203002e2b69ba3445fd368780c425360ba831766a37ea41c03f69454823b46e55170aa82c194be95cd4f6f32fd93f3701c5cd730038e8ea9b6a1e563bccb223e9d86751123671c0b92f7fac56d296bf09f5eeef39c32dedd67034fb718034ad4ee1252a80529e5e119b48d5a1dca82e04fa906
+d3fe0eec976ba1ecec8992d0c2f9594d790da7b52d71687c3a15c4a325594207bf603e2dc80cf93f71958724ccbc53b3b514b1108d6fe912ad5531dd8a294ba705b1ad011d35cd6a0e80b7d8b345e0795498295b18a622708751e8f961104e7871c5e78f0011d936e6e86dcb8ba738be88c899b81df3feca87c2bec0282e26
+242f22fc596b83be010e8799eab36e37674a2d25f507c734801be5fd0166c3605206e5038b95ec649de2cd85e970935cf3822fae2b92de3d88343c9a03e0a775f2760a422e468b7b6e0714a2eea42a675d18eaf42fedd9544742a9f8cc4a9eaf3d77629ef815904799cc0917badc507cb247b808e543524d903c2437050f2f
+8d5dae66f994a88e334398d5fd17dd9f9c50f6002b0e52ad911532b9022fb3a83de7359b9b57457fbe91471e2e31685e7bd8ab907cbf527200efd0d55b7745b9feabadbbd037c8e05f5d38196d3abfce6dc605c9f8e9543c9b364af5f0bb4146cfa84af9ea4906515a37d9aecff4305d7fa0d4c82440a01a5eb66abe43cbbd
+6ea131c43a16cd0433c39abacee00a58638872d90a349dadc0debc1f64ce060f05956b989b084ea5c42fc7933ccfdce2d538c45df01ddc4d025f450994168f7b00bbcf5fbaa45c396c84e67db0463c0422d830ccddd69fac0434eb4f6f6db9a4fcbe063ca705f3d2ac8b38ab65fb32789313db034852f172f9ee3bbfe0a4ec
+ff0275b06bf586fea2fc5bbcea05f0777aa8306e5cb7eaf97547430a79c8a74185abc137c7e30cec2f61ffca8c38bd34a20dee0388ef6dfd2d68612c37fe50a3fadbfd1efb17b04ecd5173b37a85ccd63e6e6bc83acdde36b27e8827a54badf3822d9eed4afa49839ee1a49828f9e7d945b4545a85178febab85903940fc65
+8bf53669e12735d351a2858c5be4270ef9cfb187161278216e2eb359a0f01ce0326b6152c56f44600e3152c07f00ce0b766ca8192c6e2cef6a9bfba1a6b042de3ee0f793da682d07628baf6f60961336bb4f09e7ae7fb5a37064bfa5e2d9390f78d7976575b82e27510219a0f3a7e0ef06536255b9e9a545f8c6ba2f746426
+d6f7f0d43b84abb4a0ecf66edbdef6724bb060bcbcc13124a1dd801768fcacdd51f7d13ac3cf5ebc3965127f4772ae3c296fc955da79143d65290d99d2b8204d5227ade3cde4a2e523c88b93eb089707226777565c7bf63b5cfe1fa261ba54d692f3a9bb4a10e08e6335bc73fe3a4abef58baba568da69911064bc5790251a
+618638c4906151100d57e5dd8f05c804c29370822a95903e6feca634e70be1adbc0e0f4bb5cb68b995c0c17433bd9d039b89e202f278a829143fb7fccdb7e9ef900aaf2daec6b25e9edcb1ffefd889ebf80fc69a5e817b45bdc4f5afed089ad32256c50b0de86b1797ebc6108cf3fce226c7866e92dda1b8a1a9b225988f5c
+e866118085ea4356c3a77fb3e3a9a847039aec345344af70b8fca478a3b79fe3c1ed74210789937232ebceb92e5ae683d7713dd39252ac439b969a2509fa6dd60c57c863bf06488b290a23121fd0900e6821f33bc4c41f23323c711ccce1edfa5116f569dc5fec01cd92c04818ce8a17b912bc4f62d9f72f4c0567c965d7d1
+266706031d6d8b3f4b65a8ed125994275219223d5e2289c5dad045df1d912bdf7bcbd2666148f981273eed4fc85d190afec3843451d12900feeed5f42d357cbddc01579eac9fdf9adb6e212547733d3a22d2f65be27038c2c3fb5b2f51a3ea26751d0e12f64b4e6d6a8551d23080a8ff23d23e5cb0857e653a859246812efa
+4dbf873f78813f4b5ebec1529768371f919c5b67c6458092590ec328be8bccdc238f103c7e166daa869758b517d9cd869820e0633beba0386b2e33965335740787530458a698a1664bedca0b586afb5482b2f580e7adfd584314144e3adc41b2b08bdff70789c06a87fd49ab7dfd4949c088464f296a8f1f69d60abf17850b
+5a254dff8d52c9c4b8860b651e92a5973113f56f1c030ebd02417dc181029099007fba17e649ebcd1e1d044bdfcc279430f56e80eb54f921aea09dc18689beb9f34bf4005490373b98ed62ed66f887ea252160a6b15f91a0652288f55b704203d285ae011c79270bd5d21114334fb466ef469fde9df95a3e11914c69ba2abe
+a27c2c5e43baae066c5b329dcd72cab79a214af8fdef80a2201082df01a595b21807a6a3342e8ae626c0e4598fec95553be69f8882d7378b3280665efee8e5ef126cccc2eacdb561fc84c491c227bdd2323198f73c8de2ca9068b0f8e4245da4645abb5d3fc748f70542314f06fe52befe20239e5e0eeabdeaeb0fd4299886
+1463aab51c77bc0fd59900fac5ce1773e0b71ffd32410a02063a152104b211530e3692a794f794073e75d7b05dc2f78c0ad588aa76064d888b500e950d2f4553f9bf23b0c22ac95771c291140fbb45541f381999a18b0dbc0656f58493098c61007db73a88a35dced73ddc40b636becd3259ee495e8e90f76a40023e5d8c48
+dc98a2ae34edfac225855620c93365bb8b10eb2f7943f1016e3099e6ea05474750ef6e6e32b2d49fb82662238f0a33a1f9260215fee59f8a7762f8b395d601e66c0627b4dde3c681e7e1323e1fc72f2a26a068f6a00c07a9862bcb41deb978c09ca94f01ab0449a159620c7987bf9501023955b27089b7f95af916c319ed37
+819f4796e917101031aae8a271189cec405c5ec0195da3b965047a69f1d2df83cacd4f320a94b5abd2bb6f2c06f7292b0c43421567587f793e043fdc07231e2ed763642791842a73730e76da849297ac6f5c60ce4be1a4d64a42282cf1e049c80df994d78d488e03ba101e8520715e68a5159cf00427a7ec0d46971d881f68
+256e2e9a4addf369a03252b0fdda0c05650279f72349ebbecc1431697f87df7d87d3726a4916609fb3674cfbf8bc59e2af9d855bd5f8d991e53bcbcde373df266e5998fff0064f4abacd91894f0b76e337e416ee7632e88aa7adcc56430a022f85bbd2e802339441aeadd92efd87f160a8f98368fe8b5061f5a4aaaefdfdb3
+31bfd109a6d9641be4ed21eaa90561f84f9114d8187af6e0d231254fd4184efcbe11ac4ac0c4f2ef4ebee729356f6819cf9180fe32a4827c201970fa382c93363e11594980747e1323589e0f9fce87048c1c1b659c277f001bcc05525680c6778ebdc2b88658ac7f14a1866b8be9dcb50f2f6c3360b62fb95a1417db555e07
+89bb6b213291e6fc13dbc15e1421e8225799cd65afbffb899e8819fba810b6129fcb43b3552cf6f42c1a836a3397d6fbca416896e97ccf3e00f8932b8a19e3245d9f8a19dff4dcd8fe9f8e068a87cae658b7cf4c613ad3e73d818ec217f3e604f0d5499e0eee62153829a6d22ef926606e87dc1a5f8c5449e3f7991bdf6b9c
+a20fcde4ba519679575586ed701e777b3948b640b0c18aa62c326f0c73517dfc91ba5cc0dc1aa51256d2c9d330e822090b94012a13360ca15567ec72634f29477bf0d9f71162c9a9b138d62e17118eb12c5f7ff3ef464e6dcb0f9709dd6ef1fce7cebe59d7eeb9ecaba1dc08613a6206cb151513b55912d02dbbaeb3310bc8
+ff725234dbe12ecbfe5e7680d6fbc60864ee0c07f89224326afe09b33ae142b7072715a120ddf29fdecddaa02d9616bc7962d6a0740ce050076b3461be5f12cb4a9fd2aa18a5ac8b67e9d6d13ff94ce18fce66225621c8f867bb66c741958b9e5b4c1cf7d1efbbd585284ea6e175d50c4e4cda2efe8f88aa6f004daa8e976f
+37f1320c55a8679964077e3e800af1ed4333c6cb5b30301cb2812f228b1d196d3d87cf8035bdcf34d0a53ee1d3af0376143a02a762718fc97a777d6bada4877bfc0561d31af67e29ee7b81c15d676925fdca3f2d0c625b07bd4085dbde0b30610b05227d097364fdb30443cc1bc0227a76233871db622155052c294307a792
+0fbec7a44784cb5dc6a4ab34a252fa948cb3e242d4bba9a821d0a04a9ef8ef1f5a40a1c623a26db245d9a4506a092b1261e647f553305e24db2358847f752e439ed4c15411c44620e78d01051db8c8d5408ebc2204f75e69ebb5d02ed0e82b0de812b31b882dad2506b6fed15be0c3f97e3b791f4e21eb9f21f873eb8045bc
+e7352ec5207bc1bddf135d3f1de8d2fe86746566dbf2478faec9c41ab6d47da56798af8a67a213b9495cbbf3d0e309ec288c65ed73c16e6e8506e8067dd991bd4364a0eccaa1612f172a8d361408b8fe9313e2a4271e8f2ac9e9fccf76b71a8f445a3c362995c1b74b62abaa9408c4e7a1985754eed14d1948e7faf378fd05
+750d6a616701de0b8bc6606398dd43e174ef7733723aee91bb18f4cda2e8eaecb92f5dfc4b51eab336fe9fc88609a7db57fe87ad076386a7c9e7ec95264192f004d3968779df827d365898a4090fa77584de6b0bb385397b2f3d0aadcb1b055ababba9c57b44f46d1bee53fe9b4aa7942b736a10f0cd996050f721a2c31190
+9fc6e5714dbc0ef077ab022c586574087bf9e04ec2de91717e9fec8156ea0cf5a0d42c135d4f3765766018166110e0b977637644b7b5b3ead9e4daac9075d89e5e04d6b7412f287c4f232d50666973f4800dec6c0a3e7929ada06c760a0c032ba7e12016011074220c0b5a8521712e105ab165dfa64e20508aad153a5f3e66
+748c2f592bd0ac23405952a6bb5f324d5d3508ee50168d3e42fd5bf68ab658818b94283e16eb124cd29f6a69a6a5f9058b93285a858d54a9e2937ceacc276a1f95ad867d159037f86acff2fb4179f2079a1d53f99cc875379478bb5fba5892eb50d5c516288f8c49735897331235eec56b25211b32b03a58ae893081ac8742
+9f0139b15a23793b4d764e985f38d4f9a381e15c845742b1557e5e671697125ebc6ba21f7a141950c1ea22091a3bf12f2142c2375c57768136903a4152eb856c2aee37a20c3c51c4ba923ef61ad50f9a1352d14141faf2e2ce08e472801d0fe34576228bbf84f65bede6b126ee490f30c4641db47fb652fb05c16b8738c1eb
+62ebdd7c9a31f7e92a568ab77cd097ac8dc57e97aa6327cfcc0c6792cbc6ada1087f2f0e561de05c9703048ea484338144401aff886af73af6f7133f203cee5c1fa43ea9cd751e5427784ccfa901329ff8e451f0b22669235f9b9ea9fd13ad0b1c57b554068dedda8745b6cc1bafdcdb2deea3827fbe52aa8a360e7859c5e1
+899f8439431fe772ba668b3a3b1a99b57310bf0870f86d3b5d8d617ccd085fdfbb530a88d65a978e96f1b54137d4bbfbea1173253dd1d5fffa52b7fbce0882f521f17f4d4a9693c6f033588bb619a3dadfe922b97fe2047e9931447d372bd1bc802b53bdd2ab1b155da7ce01d01a47b490432cefbbe67ffed4078470c7e4dd
+7ac8e76d57c5470f010c137f816da5425174cde833909dff07facb63580a034ace2d7ffc08d32c0ded750206dd0444f1f1e769474de065112b4877bfd30867ad9f3fb0d1f3e9cf2fcb25ce6990215d241e0b6d8e64a71f0b5178234afcb03373e09e7e35e71bdaf68551b2e3f900598b57ab6c61b0b1bffd256510864cb71a
+4d7a2b742a78d380759bf7069b5f1ff4e34bff04b7ed7c0e023e4776d27c8d7fda75c358261031c68924835b83438e43dc7f5d357b4a719e7ee153438313c45a900e608a37d123de26b4bdaac57dc756d2de11281e723e09607255b080765755811e2040c158f7c664585666f2c87866e56ef03d74aaa183398329d3937162
+651686f32cb9047a47edf42d294693ee311872c8ae8722c597673a52d3652ddab08ddf261f0c61b02e7542230a50e589518584173116ee4a3c76bc1a40df112d4eb97caaf7a650221127101328e4155780ee76be090a9fdfdaf29c0cd9ec37555f8cb4ffc61852249ba7ea3b4d251c61c7e8eae9f98866b669516c81d83a7a
+391f9d8f34535db519e6e6a61ff5470203e604bd0a8e0c5778ba95875929f4f49b8d2ec26e0c8d030ec93b77e8a25b832f3373ce61a4b43491ee40edf057d4596efb3ad61cc29c1b6980b0e5039146d61934ca28b4dc8313f03dce37736b556c7107a55bd9729695e56939880ddf5004d93cbcdc9f68c95de59e38795adb2a
+502fe8247259f82334ca32a2fb3dde620e303c3ead6650478dbb7f4afaab4805db2154600ec0b02fe926c9f42007ac24ced38df61f3889ae41825fb89c30e0eb5ef8b2dda787e6c75991013c5cdbcc10355e8bffeb473116c623ccdf2346afa7c739d0ad42f69ca0b7e68319c130ed981fd6c370e0d6369e6ee97e32752b86
+10ae94de09bd96502c4e34e86610ccab2dc2cb527799df784d5643a6ff1aa4d3d9cd0b7798964fa330bbc3351243be6a3b1519211004acbb08f4b41ea396e485ac1de0613ab29174b61ae361c517bed30bd293e42d36853803e3c16766197024bf16d0d8dbd260ee5ba76cbae75890b66d5bb7ff72d1630f059f863c4a0f0c
+207683e7eda064e6c8596759595735025ad9b3af08180bb722fa713e428fba0f98d82499cc7c747183f6ae4fb6bcf978bb7574c4a569618571e50dce8ffb78d4603295fbabbcbd02237ef2a213492a6b41ed0a7f9aad38f3825926688f7fe4426c590f5479bd22a451c342a564ab02ef8169f967d1ca87a238ddd6cfd5696c
+8f97ae4870ca2d814005fa376e1376bdca52b732391c5b71f51ede618ad9370fdb2a89d95276df695b6db060f2d683aa9b80a40770a1c76cbff7bfc7628c155e0fec88ab4c5ce051c8681190c8e60970230a52c428b1b1043ea5df17d5c10b25a5c6ddd941a023b00a9f61e89a4760cfcb0851eeea9c393d8b7dddfb9efb64
+f1118b3fb9d45b610b5ec92449c72a451540f25b407d5162d85bb57dd1864d69bf7dda142767d6397437e950ed071793b63fa5ec834ab66ea827f2801fb7f33a2445587fb17a431b9a89a512db355e4b2f0290f8528112fe52e3f30e8748c2f2125aa2e4d8781f74d173066e1cceb94931d004e11c916f5d60800000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+%%BeginFont: Times-Italic
+%!PS-AdobeFont-1.0: Times-Italic 002.000
%%CreationDate: Thu May  1 14:20:19 1997
%%VMusage: 37530 44422
%% The digitally encoded machine readable software for producing the 
%% Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990, 1993, 
%% 1997 Adobe Systems. All Rights Reserved. This software is the property of 
%% Adobe Systems Incorporated and its licensors, and may not be reproduced, 
%% used,  displayed, modified, disclosed or transferred without the express  
%% written approval of Adobe.  The digitally encoded machine readable 
%% outline data for producing the Typefaces licensed to you is copyrighted (c) 
%% 1981, 1997 Linotype-Hell AG and/or its subsidiaries. All Rights Reserved. 
%% This data is the property of Linotype-Hell AG and/or its subsidiaries and 
%% may not be reproduced, used, displayed, modified, disclosed or  transferred 
%% without the express written approval of Linotype-Hell AG  and/or its 
%% subsidiaries. 
%% Times is a trademark of Linotype-Hell AG and/or its subsidiaries.
11 dict begin
/FontInfo 10 dict dup begin
/version (002.000) readonly def
/Notice (Copyright (c) 1985, 1987, 1989, 1990, 1993, 1997 Adobe Systems Incorporated.  All Rights Reserved.Times is a trademark of Linotype-Hell AG and/or its subsidiaries.) readonly def
/Copyright ( The digitally encoded machine readable software for producing the
 Typefaces licensed to you is copyrighted (c) 1985, 1987, 1989, 1990,
 1993, 1997 Adobe Systems.
 All Rights Reserved. This software is the property of Adobe Systems
 Incorporated and its licensors, and may not be reproduced, used, 
 displayed, modified, disclosed or transferred without the express 
 written approval of Adobe.
 
 The digitally encoded machine readable outline data for producing
 the Typefaces licensed to you is copyrighted (c) 1981, 1997 Linotype-Hell
 AG and/or its subsidiaries. All Rights Reserved.
 This data is the property of Linotype-Hell AG and/or its subsidiaries
 and may not be reproduced, used, displayed, modified, disclosed or 
 transferred without the express written approval of Linotype-Hell AG 
 and/or its subsidiaries. ) readonly def
/FullName (Times Italic) readonly def
/FamilyName (Times) readonly def
/Weight (Medium) readonly def
/isFixedPitch false def
/ItalicAngle -15.5 def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /Times-Italic def
/Encoding StandardEncoding def
/PaintType 0 def
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0]  def
/UniqueID 43148 def
/FontBBox{-169 -217 1010 883}readonly def
currentdict end
currentfile eexec
a6b9a629f232c2f7dbf1d3c363ba134897c3ce34dbaa9ec37bab446de4e350515336169bc75297ff1289d5c1290fc38fc78e4318cfd0b8d7f9a7e9f1a776f374e31179ac39a918ba448c0b8b82dd50958f71df52ad394cc70c6a3ee01b0b67a58dd0baa8d0564a0761b74d0c66fb54f4ae2f555a7b619dc94a9ce75c17000e
+7d25b43cdad97e1023f0477fd1579f82401e30776bb03081a76d3061379c3afa6c985b9660da504ed8ac4f31ed315db59b3e606dfe9680a793e3612db011e1684d793fd5eebebf167e83b4fa5371a015d677e9a50e8d5d2f227635b21af5310214ae40efaa3134d407587ad5a6634e5f19c1805984142c9bd01bc20f6c29a7
+353976a5fd5754898c355df32a493b4f6a3398f9ae8182831f3b18146d370f82fda2dbc50b81f477cb91bf61fd13b4cd1267da3bced4cc13b7d3b3e3add1fee10364829c131e7d24b830ec2f0fc89e5eb3802a37e5817e95d4a7138ca230cbb0cf63ae16476be2a3d40e2b0f567c5fb4922cc7a0877a54439c9ad463880ac5
+cc4a388675ee7fc141e0da37ae821ea708aa55f21f836bfd50bacb95368040d6779e41515ab67adb002a88e2ab77cf9ccf1f56a03df21a13a1ce6d0356dad38fd6c4303463b753cedf6d2e9de189e698afe9b8edced2ac1bad1f2161320e4549f6feeef8f856637a10db086da5dc851b107dccf2a6f7825e4f0f921e3b46a1
+fef31bc4957c26bc03d01188bb5e0b81ad7b972d1ef27c75544e80eb39a11e41d5e40360e42c564b15dcc7475eb4f945936315d9929c2503ab233189d6cc6519eada430f07edc00ab554dec9afac3d903fd46a3b13836bde0df7bb1f6fdb793dcff76c93a846787623071182324017d7758cd809cd4fc454e9cb77cc595380
+1c0bcb170f7fa45300c3ca8aa1582e4fc5b9ef347de4576ff19cb1b66657f2ae18086f088145ff5a5ebb7ddcc1b8c0dca636396389f743ea78a45b6086b8a876d16efbf75cd68b93c6e521743050442ea6328f92e2ebc1b41b0395cc2c4c331194cb847556dad8d9b01001201f5b8203011d049eec892ab294ac1add721de7
+f9e5636e40002f56d467ad03e1781d26b5e32b6cb7b57e3a6e9f1e90c8c5bd05e992d7530cde08fc88159a3c423ceee28342d3de57c6ffbab99bea7338b9e4e62da6804b56f52785e152a9fe0bd8ff687702b02e6e31ea190137bd6a3e3cf3953271fe257822d94cd2ce847f2273d5c02ddc41bd53badc09f830dbb0735529
+e4901dd854d2709ce3a3d4a303ce353ee479bfedaf0dede1218ea6ccb76bba914bfde56bced74642e36d2c0afa614945dbaf16cb022cb9ed09cb1d5fab258da255bd287bb71ee34427e4e5d04fde93e9e41621cd2a060fa8daf7c205e25ef6e763b3239068055a40be53b11a70755276e4171a7fa5c6940892d9d68cc537f7
+7e1b69b90ecd4faaf4bb610e93fbcd13ccab963e41e688524de70c2800f0f558f9d6973812e50702829d88cff7733b15445a218a8089878dd4983d5052d66c935e42d5532de8c160b043607dd2d90508d06f9ccb48a42b5543b62e1243ee3a8d4366b28feb00b2c73e29a912fca0d1e7f614679459508679091d7ceae748dc
+30284cc307608f276c3c4abb6f15bd9e213e4794b973a5d73a1c3e4afdc754b6616f852d75b8191bb16daf65d29e71c8d1a4272fcf1193effc1e348dbcbe50075398c472f3efcc04295f97098b7a81b157e8bc7f4ecb0b208f4f0c823fe8a38c7a56394ed09dad376f41202e7d7c987d9bdb9870de195110b77f95a9714e79
+2bc98f10e2561848cdf73b26f661bf320c773e46aa9ad2c8e359e3420edbbecc9ad03ffe262a1222965e2fa5a875ba9a5dedf753d937d3ad22fb96306ac8809aca037e24cc8986f75d93912ce89fbd64f7a93709a39c2c4bd94b65663902100a315fec69ddaddc995014ef4cd5635fa1a026cd283391c768e5dc9a972846ae
+a9991562d0f5a7e9e4ae933cfcf8d50819396e21ea48faf7aad10fd43125dc38a4ecdf24fe77a8a3132c245e7fb3d96d090eab0f4f8a44f2716ff7c53b38a308ceaa5f34af0200eaf231c72439dcf3854f48164f31e145c4fd75fe1a7505c50c4fe6229625bcb3cb6f212e00dad478ca08c3ab38ff8c1299f15b12af7d82aa
+72458cd2af5dc0c8d7471f15ccbaf96da0cc39c0b51c6be5a2ccd61da6549d32519c5e4213f2bb8c638a92fbb0736cfa263a932caf4636c62e4b461ba8eb77683cbc2fd387c62cd250e70887417144ae922d8ad5035185c3a6b25cbe0369e60a795d7824db7cb4e572558a17cb11357b6c91d95c727c7d1d91db9f56450208
+cab09fd17d34a9111612675d202e136095605b66095104619bc023b5538245f2c637f78ddb1198aaae07180ef9a524c60272499de2e3448657dd5b17db055e4f39da32e800ae3543a93e2cad811274767a240279b566c16b0c212ea6126c2587c900cbf17e8709d868e25a81025f00b52f6b5dcef38356d9c6c171a168595e
+935812a0efb5e9f6a457e7ce7e7206c4f1125d280bfef3c5fa2e46f7b2d23744d52ed92162db40b78bf85b3751ecfb97b0356aba62c6010805f2607054e0cc028b2852e920a0207d16d93f833f072778eec2e4553bb7f6e393cbea406a490f8b53a4625c9cfc27b9fd937b6633e352885043e4f830dfd721fef3c5e151d2dd
+8d87ccf94732da41c7e59c9c594684c6d24b44600d653b1915dcac06e1faedcfae380ea98d9f0a5b231b69233a4e4ee4e208f288a43e687dcd4f4d9284a4d79148000277ec92912daf0b6f5fa16b324a9cfb5bb659a00a0d09ebd60e71d294d8f9a6f044ccc491a3fdf98c9af8dc0c94b8db830427ddabc7ec2c2a483a2fb2
+78bb5ff7b27fdc9280e401923f7d2a6f48c441aee30bd31f0db6fb93e49ff4ea14e49f75ec083e42fea24496dd28c9fafe111c836e2f62193e7a29766fb0c0d5f5212bf5ba597849d734064f44db9e8265271b4392b07375e0b8cccc255e05eb61e89c313517724b33b1b79ce5333b9f21bb9c372e01976b9911470aaf59c6
+667eb5ae7fd3780f834108155d21e78ab31c2e883d0c1fb98a62abf0c144c7a0ab62ad28b99b763436c8e5d278bd02f153177da3040e909e25b0166f5c9d6a73c1d8ac9f2599c9c376a744b1fcfa5d32de5ecf30a3c90163b9d50d989a9e38d19bc86c7488aa236d42fa19595faa3e1870413c694fa750f8cfead8fd5de6aa
+458c3dad1ee47c3a2bb4deaf35424d8e06d9452cdb73c82d72299d49b30b385a07200f2203ce45bfa033f84ea6e7e6e714a00a1dca211e9f09f6f365763ec4b3921924a784aed68f035042fa27dcf6344542e7323268fb6b678c3d2eff80d466c9c675ae7e95cf3d49736eeee951bc7dde934d051fb6e1cb6f5769e5f9969a
+64d59d633fcb9412993af9efc89f7e13c6e2f35be57009772904595b6531e0abfd6e7c7e90390c732f7168c8afe794f6dafccccc7de0273bae11d781a05ef8fac2f904f1a717e2cb2b6acae96b8af623f99084067cec1cad6e06dea70c000fc01d39ba0d98d8d57ee7bb1c189d865b75b467c512526a6dde0e0b3f472a3697
+60c80b1eb32c3a8525a728a447bc811df4a3627e9f4d0d44545e961abc809543133e547129a63fce00b18f0d1ee2899514f9e421d1aeb33843ee084c8561f69d00a02e04b0ef833dc280ba7b1def444b4dd589d00970cf561f411e29409901e5125042df042cc7dd92d21dd718cb10253c910b6e2dab43ffcd899ee81144da
+b0f52a321c12319b8245b01c700203284d68cb91de62be389af59def29d24c563bc305df8dae50f75120c5385aeba8def10bcacc94f1660e4d3916729b353c7eef302a4cc13816aa0bd26e6b38bafb9c39bc0c9811e6a7a8c5fc1582cc96a850e111c791a3afab2eefc1b613603fcff9dca956f1d0fca02247db36646e8f60
+b6668b39793f56621d2738933d7299364ad42dd988f488b61e070282f8b05c99f232a2d8850a6af37599ea382ae5c04df20cab9c758aca2bdb1a81ee3dfe9a0ce92924a74c4daa6c8f44a03c2f5ba4652d7abc83fe0bfe4c5815e0fff7b9d09ed1b683205e359d8f367013f487dd30ef1861e48f48fbcc9d9fd642e16f41ff
+2fd663fab21d5e44574966722891cb85e9b0d0a357a43fdb5c0e2146ecfde2f773ad5f9dc08bfb98f7761f88641bcd7330e99c605fcf8bfd556536067d543b1ded66a920221c9ebf86fade0e9530d3d2d66c366c167320a8f4e8b290253444b6644367e2ea4d4c50198240e7b2ee1f0ea504f1cf42f71606c6553aad6e4bc2
+cb628b04b42402ddba8ba5e8e7f6b3a15e695e9a281e5f0322356e1dc1b253fab021add52eb6c43bb8263708060ba90a953b8659bdf1290d306242ab30a29b58d7c43d4b579534973dff998629c3c7be7f18689752fa1cde08289190c49d355b82da736714ba072082f3a7ebd9524ac4d4e37fbcd7073a0e974f63dc7a31f6
+5bdddbdadf51c58a8c03f7e5fa2c397ba8e919d49f72acaa04d5fe473534345bd101459b94976a477a0867510eb71395736fd82dbd2e16e51ae49fc9119cb9218b43b9f7cb382d2ab92157add6a86bb9946706637e2574de75d5a9f53dc0cf92a67d9f0262b48913d940b5b7dad66def3dc136c7ef88570b70ca3d41d0301c
+736b54199a351e8137b7d59c6d695ff86ca2369d0702a3b131cd5ef63684d1c689f182f0b2e8e79d32c6e6f8a81fd42819658dd85e560289498c3ed5d4b3d9224f0adf9558660d23cf1c39beb5f63aca618f7f9cd1f50904dabaa31d6d9cc30b7c258675cb4e70427663484d025456f1c74fbd3fd7e35ccb03beac3ac4bfb4
+92ea69f77dcb116d13d49ed5cfd3e2fb855cabd23ce9c8239c077a5991296b24d553946bf6dfdd121bac62380e3f55efb9c43216877cf541bcb364c27f792e68b3bbe7ecd6f25f527ceac773703db71a113de1af13c1240e07251a9019c9aa9ebfde2bfc8b28fda478931d825c8319036355d70fa87adedf363905f6f3a68d
+91b4ced1bf9e09825205a533af4199d0ad5da448228d170cdd1f6df35f41bc588efc24857cb6da20cb02284dfcf103887ab4cb66311a4f0db54129524a65b7f930ddb4cd33ba87844851918dda631123354b462f6a62f413d16be8c789e570d918daa2b4a6d996c6e882c2e4f4641be64cd2631dd5b709a21cd1f849c52a63
+e6b5fd6f620e0da1790f7ccf56394ecfcc83a1e0241ca66bb367a1a7036b2dc6ff7083b48560e6d630dedb07f3ca0327d12c01313b7271f7b619c0d671e6b481a8d662574455d44f3e3ee5ad16278e1bbd6821fee496df23a84d996fdcaef6126d47e4e00757cebf21a5523ea7b9b825192f3bd76627723e2aa55079ba3fc0
+77932e6e8aee9eeab93add4bfdc262a5d9fd962c5119487e3978b09e032fe96c0e6d614d145502bf9fd5a0529ec4677f9745a93a475eb42a39c9c7c8e2721df1596c684dd6757747644f0df95351d7fb7a99bae4909645c6da5bc8266d212e1be1d619289b228121b922e1069a188be77ec82b6903f41fedb80b856bddc8d3
+447e644151c356813479baffb68d204894de0cf118df39e943cedf8751e998c677ac19048ac5806d5bbdbf5ef1e095d43077df16f990800ac65be3b07c96f17fde9db5c83ba93622909fb3e03251e9aed3b59a6f1a07da7fb37838764288c4b20be767d2dcceaef40bd77b545473f85b60274bb4a25f563e0b747b8f7b478e
+a802910276c78f7e2020a0a607f4711871d83495b19b45b369d514770d3cc01628ffe7f43e35b0b6b4a8e7bfe53a386556ba3c2499c82e7d266619a9a100d132230dd655bd2eb379e8aab4520f54eca98fd74875027ca90ba451103e26f218a84af8b7f14fd3f58ce7ed5b5eb5cafccb804236bded0d3c77691288de8f2335
+ef156364c68c23b90689b518fb7bb9da5dfbee18eeef341dabd74c4040094307f31d2162b48eb7adeebea15ef2f48641efc3df83de80203b5717d99e1679bdcec2bdb4fd0efca25dfe81aadde108e6bf6b8e42d887fd6ec38a9cb92c962360b0906681c01703568f575b1b45cd9ff31670a8e1b61928ef6140f41bce10e832
+1f7c217c4122064e0e6b4d64a39fd8bc37f600e7253d7e3479b0d4123af07ed7373bebe19f12a8688058462b87fbc3d8c611d892f911164b53b481acf4af562a11e5a12f414f82489fd138391b8d63b887595e3d8b5758a5f889a5f63aa96c74018ddd25bb6d01f9204e5f97473564f2d8b3ab51f2fd36368d84ef4c04d378
+501cdc68b00721f5664aa1d441fe750e175f872727b7996cfd9b804fa1443ee8f07978b074a28cb39effe38ce53c5ac26ef8202918191ecf1668486a268f45c3d19c5d194efb695aecae578c5bd5318b8791873d92ba5a04e4b5cfb7dc7a7488e0275dd2cbf07cf3c5bc658a8056611bf30d2dc0100066e149089163228c2e
+c1083e331de3de4eef963bde5e8c6f6fb7506e63566fee34a550835da6b72c194bb3943c7ac3d8d83cb228ef8209770e01a35ededba62de9a66c31bec893ff8bc1eeed2eb62322075e87071d27e364f998698b03cf6f673aca20f660147bce5c0f7ca29414c556a93cf4120c8b1396ba0a0f333c178485877e5f4442c9a840
+0ed8b6c023724908c4122bd51b506a3b542b0e4158bca16d4ab4944dcacb286cc1c4f048288dedee76dfb6cfd83c3ec0029333f29af1f153c0e692b62adeb3f4f8017c50b87ebccb8732b2e67b589156611076a3c322fb4bd509977ba5a1c724e6b0f03e44a19733cfaf9d6f382c011ffeb6ac14c1324ce16fdd7e2db73f20
+474217f8cd6cacb36ffb66baedc093daa664c63cde2346f20b13f39ee53d6c1c07d45ef66ae29af2e45f8e27b497c37d75d03ad6df381879c48397b366c705803e0cadeaaad4bdfa280e92b7635dc1159d7b9715f96ae389637510800d4c8a2199ec1c81c774214b6b3b0cf3056a8587de0fc180ecb020c6c96d366f026f66
+4f2cad516facdae32ca43f4609f4789238e34facbecbafc9e6183f82eb2fa5e5b3fc75b51ee2d90efb3d72f6ad6ce79cbdf48c10177638754dab403a13df5e22169db8e19652f5bf7b8b5bdf43d5422d093221fd2b6e2d181b4b33127e9ada085afee0f3c18a63855b307666c0d18a7e64c21dc1c83a5f0e3b2edd2479bdb8
+1ab77d726cceccdf7f926bcafce2a8eb8f5ca9b32f370a192a0e043a981437da8adb9cf94b72da24e1630ec6fe8d04a6ec839c504183661736330084cc7b2188a293f2536234d2f10615185218349115d7ca81d2377c0eee17115ba31abb597d1eaeaa55b7f3b4bee147621df098dfd06b20670e1c8d15a064a1af8aa4ac70
+2cd6eb52fdc8addf9633f1204ef11a813957e9469cffeb621ac33b42149cca7713c5657bd1147fa1fe7a7ca0013aecf241b019bb3bb5ef44ad898346a0dafe9bbdb5dcb526b40482aa88cc2b6065d7d8ed2a752f63f827398598e67b2a31c24be0186eb4ee8ab5e2051a5712d12a384aa4d27e4c26be290d116a71bc8e5922
+27a0c411075fe94c4dc225404f3bc2911a0255fc2daa79ee596cdd48f0f0c340e712d7c25854fe0e87edfa6a4c603f3f77935f24edf4d28f537e4ed87cb1099d8c0937a9ef551134ec7edf3fba6d9e75a52fe2e1ced82957ce44699387dbc2d8bf8ffe9f6af6dd6458669c2b94e9066e8aeb02df9b69742bb8a572f9fbdbe2
+78aa1a70605e35ea269ad8115bd56d063ad44926dbf6d776bcf6e11025bd638846861de1c15442f4eda2e7250cad26be98d8677daf1100f50eb9890ee4270d89585b1d76d8c526815bd2bb96c6757f1c16d789f1ca2b67cbb8838897ef038d4cf8d09352243df52f9cc8cbe35a16bafa6a67696b92298a3999d91c8efa3f47
+3a4d0d7c87517ec694bdc9d239f09183d34f1a0e65dc89b142e4c62e6fb78cc2745ac3c8b660c4377562bcfc606b422e8c1b792f42d18299a2c98e8744f400140123d249ea7ae1f575bfedd05b7f50aea36a628ffcb7cda2e20a770c676b224deca5ca8983605cbd00971dd79fa5ff635ef3c33cdc3329b511d2292675b924
+0a6e17f35c4be46ed74333e111704d2c44480b005ce620e83fec4b1fe6d637d9a6e2323e377d167e19edcb65f8d40c7435c3ed4960624b2cabe1649db2f6f544926f30ecf95fd8168f28d98d6e8930a8484ad1b392019c86daa74f0db4e8e993ab36ad69b03575faf26fc66533aa39183eb324ba30174574351bde5deda9c4
+8137965ec9f3f14c54326bfe6467f6c282b6ed5cbc056788d696a3d8e8dcbfd8a0ed9793e18ac5e791641887027007a5a0c73392c9dd1157f88a307c0798d6d4b7346864e6af64429f66992100729c3f2154365acc90eb70a48980610f14d8d536b048f6718bc6c5b704b270a3dd6b0cc290f40e3137cb8bda7a927286c03d
+12dc4088b5e36a74a349ec673994ea142aa06770d991acef5efea1338c22daed229aa2fe4f56e786932cea4c39503db16e32dd716c1a27cb0d78be21cf58efecb60099a5edaf3b0609efb52849b3c021ff564fc8e7cba25dd24995e9c164121be15bc4122216f17292e641c8c65551a44d4cee4803ced8605a36205d223e9c
+748585e7e0db3c2227a513689d21d3a2861cdbfee4cfb36bf74f31a6bded1f0cf28dfa996f821103a889883389d02cb1112f643e2248db05aaeab02f5b5353b0fd66b65742c2c6cc7a7848171511b86b3f0c71e4a882c055a09077830f9f099b38d156a7afe5eeef4aea65f75ba912618a31bcbe1cc838072c8d0bdb954b5e
+b845c9aac14a1fc4c6e91bf3298ecc4d66709d91eacd2cda6a11b984887d2bd3c377fa55126dc4955e31e0d894c2668bb22430fa4efa8a0317e182084706fcc7382a9202d4d24905025e8600bef91e71cebf96d0756cfcb80189719f12dda753d648f3e880899ad5bdba7cc775433b40a02b381a0aed6788940c2e931f07e7
+1c9a519abba74f600620bb189019ffb25f5ca920f832e1f7493976b10510ab64a8b8e65214879e9f1081c87de0784e40da248699a43bbc32c5e037705608d0af9ffdbb33c73cde820743bae3ba2dfdad6b61d3bb88e0cc72c3fb52ba8c4f0de7d1f2fd32c072bfb217f02188745ca88093b5ace2f81b8e012a50dd3c399107
+28d8092fccb81ac1f78f01facd379dddb6327342a3b0ef8889686e02df57875a68deb17bcd08bdbcbcfe5f55999aa2fcae12bb2dedab0675304e8cc2d1d601d775905759c0c5cf9bdd6fd8559daf3a98b62341a0897c4d695e7743ae01a5a00dd1ed7c7df30788f4ca24a0f82aac4b24143909b4ad3bb84a6e8e81032cf3e0
+a750dfebb3440e2e65290ad429aae20b38f6f80e5dc479c09b8dd6da5e0b3f525a18f6dd3f90c0394e6b635cb63d98ff480ab56a34ff7a20740c3640d8e07a9c3bc1839fd7a7da78ef5743a7238461042bcc6b1bd395715862bd35cb8c2361235bb4a80a25d5bad2a356d8ad61a7807738d360d07d8a7de628e932fb78f63e
+12270b26fba34879a2cecf6b61cb4f3d460a8cd37d9b695dae2d7888052238e2694422a446c533252a416bcce1e3ba8b94568aa7f11f34c2470b9811a0f02c9ea344e4df9b19dffb3e2dbd51411f6386454d40fd1174067c7b33e7ce75acbcc06cad15184cf623f224848575ffb52746dff0f6bce94ed8aaa162eb8020572c
+b0f955556ff87b56a37c3ab237e52a4936440b588359337c48c92348cf3afa958c0e007f6bfbfcf7bbdb7354a405e5df07a600bbc391074f0e01ecae7dfc4114b05ed33f048d4bb50358395043976f8f8d5526ab7cc7a503d9dfbc4c0a1b352c6ee6a29c30b39e7d5a530643d59a68ad7aae841f95a1a779a9b3e3d9b57b5e
+8e826a17be18ee4c4f5bfefa32611ce07e9393b0b1373af60cd30e569e496d07fd86aa790fc94e17a67f9c97e667be5253adc946cc6a2bcd662c7aff5e77432c37e4b4dccb0ac499804758babbdaf34c42570b74d42953224b1036d056118301448046053c847df44cbb17b5abb4c4e94b5a824a320693a37f47b6127b1738
+268903e4721b0cfd1d64e90bd77b5f93e8d13cea8f30a9bc3ae9e58468aca69bdb7d1f18e21359762549db5c89046a7d55ac9bf3f90ba1dff2eb9b5931de99ef05d38f3a520fe0d0c800997cca41ad00d3caddbbf6e6240ae3a3f18b5cbd3ff75853d6d15ab56ff23094edc855b8a6e39b1f91ce9d5db388638596c9e4a9b6
+8f056731eee5f74b7603038d6e1278abfe08011cdf54fce87119f087537f6e79313d5539a18e4b8e015f36e00d98d135ee1ff992d00d67a81bfd7e3350aec3e8c533f8f6ff10e0bc9eb542a1fa7f8109e7a51c78570a06026754fdc0f8adc65288965d876d929af1a2a1aca0475a655bcb950589759b98209de4bd952f4a31
+2a14d5d7ab9a221744ef2102af933b7c40bac7a173ffb23d87385cb223fd39455d6d3b6840bae8b208b1e2a27877199ea5f4db699c50017cda00305c04d87a730c2701da915f1a2804c8e0191f8ed22f8d627bc8bbcdd48b7f26f83bc9564d81d046ecfee8a725e3cbd99d37783b91fd2e68b4ecb27f84e42062eec67d217d
+c09e50dccefa314db45b3d4d23a18943b085fe9ba70ad17970e0b5d8c326337646b05f9125d7ed3fba3478e43113e1f753e9eae84a927e084de8bcf3a56d06fbc210a0779c33a50ca8f86497fadd17213aacaf785be6c0b7f1254847e44e87921525fa83044824abcafa99839629cf7a5ed7e4c126b01d93529b32b7bd151f
+fd9aae121f349b81c79f4ff6c382ada0131b1066bf92a02791b39dfb9e3e91822a761e778cc46de07e170f95d6191f3282fee93e57e5f78708e45632a7e162d442f42aeb9f177b6e5d13f4534004a915c10f7921a6db090f6a7525e4d5ea4ce717b88aeb96cd304576d24a193b419792eab95d0e7df08890768787599ff814
+17f4066a791db68005c7965759f2ad91fde7385c1811435a23375a61acfb430705b8bcffa56744397e0673ad1f1898faecbbc95cb2f7cf2d8e64a0442276e0737e3af8d448f2a53ed0299c1a45279883bf1ec9fede95de82cd3376554d8464b3f0aae61b6f38e040fcfba03fb3e43fe7b11d2b35bf3f3ca22efd1d29dd9b6a
+f3d41c5ea2929e502d18347028eea275244b6b1cffa4c17b17d6695e350e81826780a8dfba0201cbe1cf3c1c43dc6387646f6ba421934633fd3955c63cf0c8b7115a5a66e5a03e9c5a5793e033399b70edc30afcf839b2ec263483d3f3d8764f3b2b55179c7dad9339d360e948c68ae2947493f4b0a4e61f04e09fb81b0e77
+da90531386bfc57a0507a285f67a23bff25a79725137ab0d3dba371f4cf2448ae1fcb236b23f71564e53342f8688d7f40f3986c2779539456bc23e44395003b8097547e3505abaad403dfb147680609ce540e52929c83ba833c99623de2e0b1aab95e930f4a61cb069d75ccab1ca5a3fa737f89a0b31193b84821a693166b0
+f97300e0f5079650dc8f907d799c102b69e716050ab526c0dfc7eecb75e4f866caa3c2232abcfe363ae6b5c2bc92e5ed714508656372e422bac1e1b341e89ba11ad3dcba27fd080aded42be6e8c6a870365d44eac6fe43c103eb63b58cab88d474f4c42e46edbbedf6d4f764cfc865e80cae7360b31e3b75a4f0f369a8e3ca
+d3a5bfcc93cad8f1916bdf3f259c4a5892b65a83704f8dd6ffcf2e57cbe4cc7f8e95420f07fe24d2a9c46c5a77032ed2fde68dcd66bdbe667dd187a94cabff1f9f10416cd2affb898de59ad102eb2c973de95bab961c2570e5d836d48a2b341de3ddc7d0b0b71d3570b6d81b8bedb8b3d0739449d7c52cfc41cc8cb7fb93a0
+1af28525b0a53320e220317b90e499c00cba76b56c61076120c37d6934e7a356b1ebae6810541dc2c630a542193632b6afd64af76ad61650b2bc150c812b153e075422b20b5e3964a71b12be2072728c607505429d5e715893d07e6b9a35771cfbd538f5d44017f4520add4af9f7fd8c17ae5c26270bac6693d81ce2a831cb
+380e2f1a0ebf1fea8a58b15399984009138c48bf12cee4c9af3bc911a829303f538a0f52850b2bfbaaf9d72558215b49ac3c1de809ccc50ec3720c90a0c4a0286f118d1f1220b58d791a5582e4b187b0988052b367a4fcb1ba8da53fe734699f908c34323dc6cbcfdb8fc93b6d1a11257fcf87ddd65d3f01c63078ad69dbc7
+2490eceef26b2b4a36571e70ab8068a9224dba2bfe3902aff31d7164e9af4cbb7ca830d35e151f6cf72a2e5f144d38bbc8b8377f390e730212143a452adaf9682410c1e9416e6d7d24c048ef65e580491591924807ba88a85ac6064c5ade510ffdbe719ddd38b256ca77a5d892913a16da4a1481f4a4e9d0d61c03e32ff5f3
+db0dc8d50ad7ebfb09845d4c6ecd7a677b760d1e499df8b35e6bde600928d0555d56db1a00aa761a7e09ad5809244a52e70fcc1221b057742ea227598a2b320419fee1f8f0ead01061e2e805dd0700c5ffeafd678a8651771910dd7cf8a9a814589ef600815f178ad546017fde5e333d64fa7b3a79e231306d55df09a01c21
+fcf83de1b06982bca10da8881bb31378f77054e843f6a6faf686a5dc9084920206002f211a69c1d136e81ad1e4a3348aae77cc3fb23230cd44f8ac0c34b1e861486f0dc8906a153efd9f774acc9533fdaefc238df9bf56c98626ebb8351d75b4e76d510035a60df8b9dcd5f9566991dcc897b0dd3b98541cc19f581ec026de
+5bd7b316981eb4fa5c6e0e8555568c768448fef2f66ba7281d8ea05d632ac772c8a42123315a7bd43af7052a534eebd8507801a32386e6aa4cb32f2cccd88f70564d77edd99221251284e6521b1af01dfd8abee459f994fb653e051a5cd35b62bb4c2ca86f9e2bc51444ea8513a5dfaab452f39a41a1fbd4b596174d6920c8
+d78f5eee345216a4888260840594a822de5b59f8d61485d359417c5369d5a49fd977b759d431fbc95992607c9fedfed9408603a0a52aaa54bba54f3a5d98996837dd4a01931235dee4b84d92d27154a125a3f529151213af89da7feb9e4f1293774740d74f803541aeff8333dd58613362c57094fe45f727a4cd2943edce7a
+697c6b1c89c78f739242d118394f20707cf861bca046a8f86b1b6d00980b90e0d3a9e04319a2f1c34069e2c7efd65000fbd250ec0b25514864c91a7a4b8eb983dc0c246f68c306abe147008877221a877ea7f0e9234329e89b85465b25547461aeca513f35b54d64ccd040fbd316f01db500e3cf7d8ce9f77a490edc67af23
+ba88ece1f02e1601cc73d895c11c68e709f276f88660178b7b0b9be402e8ed4401056d0b4b59c5e53a91ccbb53246888b39efc1b2bd4c9b5963979a62b5e34fefb06f11b8bea7f6dd41bd22d40c2e7b176f0c11044ad39b5aa0d6f103102ab7dd4a49b269b93e15333419135dab9ff044650bc214afeb95f897bbc81ca1c07
+a2967e6607678affe433aaca13b8a3a3293c8285b7890aadcc8504d88ad1b1d507a416bf68357880ccc2b3b2bfe6aba7c0eede89ffbd383b6b3ef1869f4b80825d21e2bb3ed6e586379d9ba26ef5f61dc226377e72b068416ae28ce608fbe7da8ebf491ec59422699c1877cefbe113856d9291f3ee19fba2ad42d16954d4fb
+b581f15dd6476f03e92663c41e57538e8e002a2a3e6693aa9a05c49d57765baf324d4569eb7bb664ec0dcd6e8cb109f5e21dbb168aef008eb338d6785e2dea86ea733c485f2cc8e86efbd8173efe88de6b0574a7c7f51fca091258185a0691840e47ea94401e41bd95e41c04bf1188c30548455b53f900fc769f87a5510520
+61db98e5d149df129a25573aa8206a483ac63c8e4c8a5e51e59a43474f9adc05bc1e1bdd796dfdc68f340580e87da8e45ada31ae51c67dcfd8e886844b2b25c3f138963121554efa1ad1db48cd8deae6617678f827cb3559a4c5ec736b0055abcea816521a12998da7b66b5c8dd2504cb17df50270a2d989d7b0a81e580cee
+8c39c6d5fe296a2b8cd298ec84ec4c9c17c39a3852d55c125a4d8770a3e0ea4668d97578b94f099ee92544ea2138308c388d94938329c7747f40a49b1880e6edcacfcbdf6d27c06741f0f204150058e224360c664fd49392669a5e6adf6714043ac941598ce467feab295ab712a6ec17a5c7100cdb2641fed1eab4784dbcd6
+6b383ecdbbe955788731a27dd7da80fd8ce314cf6bdf10ba612ced20e89787ab9c4262ac3e7860d63a2c4d0257c6d51189f6c6851847d0602226fe91d7fadcdf66efe32e8fb9f8e907e7ecaaca3c14b5af665f57fcdc2414e978dd83625098c42e53103c720c96f2eb2233a1ab567563d090fa95b170cfc10804fc21ff068c
+2d806c25d142f5422b15f55885761dfb48203117169ae6fabc96ed8284ffe6dd1d0b9fce0363fd03a43004ecf25f7998095ffcbcdb1e83ebbeb305c103d6a4ab57d02c0f9a0ed125d87fbabf6f78880ab96c4dda1779fa45172a9c4528b035435a18684a6bf8fe68738d6650f7cd40233dee61191d97f0f93e0b239cb775f2
+7c0256e0eb280728ba50baaf7c50c240f1962172834bfab118c2ae6dfadf3518805dc0f291b299358f3c6bbd771ba74eb228de51237640c0ab5fc066ac74245031256c820816e91af3d618db058b030c4aa6b421b33a4c40a13b0506c67c280bf725373ba45b5ccd76bd0a2b25ab4f05bae6d2052a93d9997f399b5555f87c
+73b615d27626c19e2751fa3dc83d297525cb7ab920031cd62f9f046987618de990620485490275957a834315ca92b68c06f6b3e18b84b9766154a2f52f9ff6be208809bbe27b9ef95468cd1ec05763685d4c57c6422c11c1bfe232eeb39f74c320bd282148c34006fecbd68a794f67112ad8eba168edf50e5cc7b5d1bd77c2
+773201595b996d77f4e5894402934bd2eb54ff7cb55dc242cb9cead58c0165af15a37c8cd9d3371c9bdfb1dc4411f94905ede644239afdf18b31e45a62bc8aaf47c01f33b90a2b0ee9253a99b9d9648d5ea5f95d79f7e5d7d6eca513082a5caad32896c76795efb5b23152b80cf798d7b2efb75ae8f42867137d2837e5a6c4
+d890d4c8a5c1e3e185085ab487212186acd09ecf3d88748223bd158e21e5ff572093cf5435a776caf7501d36f36c95a434bda55bc253b9ecb870dcd891e8fd42adf8c5e17103a040f401708041b07891d90b279f4302df9c9d4bca1b60726737ae5b85bc4a0171548c7dff1669fa4c86d9b96239829ea2e0363b4a02f34df1
+c5fc7724273abe2bd0bfc9ca1333002ea38f173d2f82eb3125d441a5b1a10bb97acd1018672e85e96e406a9192c68570635a1e4941d3e167b4fd9ec0423f951e6471c27fc4b2d8df8a1f6dfcd7e75093ea4f121e36a885a3763f4b80af1160012635fa58e59a00b3975941c3dde1b34d524ce5e68ad11b58b46a6f9f1ff219
+3303849968fb27677f0332c06c4f5a13522cfa6c99808381cd36caf4da498152eef447ca03d0b02fd071fb0138b950b5ad8c87cbc5ea961f48a9a45f0e55c1159adeda0e788018d7b14ae8c457574f60e61f9b5c20a455951c4ad5aee44b66f384937c9b4001cbf9a9ef60d0d0c43e0f9f0686bb8f951e336745bb03148722
+c81593b9859d92d9e34f77bc952e6e4aa2d688687cda330096f7cbe56d64bcb694c25e7f3c7d646710634e68c533e572c9ce3c0991c2969f60c8c3d6d1d1049ac62a60093216a18b108277516b208e79413a74dfaf5dd0ce70fd61650c8bef74d4029234c7c652f9c0c5cebd3edda8a0a9aba4f521803de9c0a632ca1902b7
+54e61f19acc6c216cc82a2e12225341dc83ab069f4bf1729dc6df64afdbb2d4f60b2f0a52b03ce289201aca4e1fc60a021b54756b10def2e443e34fd4a269c886687dac6be9fc0d0960d1fbffe1de76735493c89b2f29cf335a71f00119286fd50798f00a39d28e56b89217659d63e92b0548251b5971afffdf087fb5bf370
+58d263e6462e488392b08bcb5613c007bbede052b5d39f93fe3263088088578743b905306a49e28df7231f24079d91fef8b0c090bb4efef2f05bd5bcadef3af64db04faf7588cfbbfa4fc5909ef5b4c5de609a0a84c703aa121fbefc33f44375a2ee0534f1c75ff76dab5c95bffc853f0ee109b4d6b3b11c72fa1977e1e165
+0b12ecac216a1a61614c2136728b4ed70fa6627ef98e766f23fe00320ee8035bfe0e09594f2c4c816e986ef705bad8d0b578a230f1e33c5e20514038f1ccee985babb1f677ea603467cbe7fd47386fe1677e9ebd3a9f00a683b123a056b21715ebbb938429cad7bb02c8a3ddf91b679ef5135f702a296eeaf210c765e73e70
+e9766c37d1e5387cfc8450b4eb86b546f97ffba4dd7638030f71f4bf01f279cfe56e514a8806ca9077655dc7d7d55062b2bf3e3519bd10998d62839b37458ee67fbc105022a26a0098c7eb70e5961d305e9786bb328437b9ba26ef1154302e52661651549c3dd56627354c1d5e7fed1f4f3810b61b620f2e8b21a4794b833a
+d3c282e0a206b48250a051636be8626dd033606e1fcbae179a8d9f5ba5444c59f5153855873c4933b03466d36ff8b273d5d5902633c6357c045405d6f9c2849513ee118cb292a8af7567b4bf956ce44054e62f75295ef83f46bd3a1c88552cdadb720ef6b51474a501202bed66749e1f0db82e5610df391bd28758ca9911d2
+e20ddf4bd1c293a75860e50c596ed05696856bcbc8c198d5af463ea96607aeea101209729030631a441d6a340c7221a80d7c0e2982db4a16f68440375c3b89738ef5b0e7e687a0d3e059fff24a61d7204f71dae933b39292b021f91f77bceab6638e34292d53d7e1418f7043d5db65c0142e7ed8891c13c10c40adac81baf0
+af4378a54e55d17c5305a9c7d7dc5bda8c28a9009815620f9bd6a633111a092c88581a27fa340c41990c4dadf312bb8a9e0c5c0c9df100ae709749a24b0f454d336452693c7bcebc04f5430c1abed166db771f767e63b96a2ebe6f23a0b62482835dd69709df3308f5038670175c83352e32812b068efe017c7395fdb2dc3f
+c8841c4d72f861023d7d497491cae9f6f102c9ccc360b1cfacb86768eff68e4692793c7035d3d0a8283e5b68f46240bae308c049e3b1b029d08ed3022054ff8eac199eedb532191466feee01f9794dc82ae2acabf654c1cd5294ea65835b0e6e411ff027288619774c4d1f9ce3fe473ccd0c90f2b95394d95ca4ec035bc640
+a824fc4fbb5abfaf60bb5f00b791c83807e99f681d69978024de8a06f70a2b4e5a14eea4bf8435caa32808a4a532d409ced0983a214bec5ec2a1b49ec5c41de690aa579655b65706687b35a07b900ce8cd623f42ebefa5cad3902745ed58bd6b8a3a71257368bb271530a5f2c4f5a0b8da21a4979881eae1349c8601e381ec
+47b317a439af49b518244030f37a54a7fa56c62c1b0d9c8de4c39f9cc647c051ce648313d31f15e9fe4241fcc7d8dc20a36012c37a84f46623077b9d30c3c656f2eca1c8b7a477ff2e40470209a3c071de7b9e84821730d9f9cee3ce08738dffad0e3f3f3a46eb3977e9b2d336695dcf04ef5114a880777cf0c3130b847f9d
+1aa9f608a676020455968657e766928a105828524290f34fe2208c31cd6e4caa0e3c075036cc57681b4c5b8625f26591b32d322983963c099375fe4b6f3081443830fd270487f4978fdbd9917313949115db90a7c535b39d925afc2ef0786c75ec148f283bd707667bffc2c5696e7d798c0f1e12574888d17c68defc6c160b
+882e1951de1078adc7e15ca59f616fc1f4fab9032760ed90cd84c7bb931494d07e5593978ee2e0eb59b50ec0b04fe694e896a57bf2abd14069b0f7f5d32c3711a3e23af66e3d02531a0b8b24efb310ec815d47c2a0ec269c4dda06a3b3bc0225a242708a7e7e8c4cd18bd046e1c5bea25255953d021bc02e1aa330a6239855
+f8bfbab1ee78abe350e3294a075f1b24990b9056632ff2c7694646ce2fc425528f1743baf3f85d8cd0283dfd33bb2ec2ffa0cee4f7d549ce3d7bcd582b28e5c71288563323dd1aa834aaa617e5413fabe3997e294c6dae0e4a5f9f3b0637442dfa1b907d6b0fbd0a950a342495f378253624cc024b2fc96c8527575cbb06aa
+64726133522021c1426c11bff8084020d0c533a939c97532d9d3a913fa9055bc554bf084a4fb708614771dec91cf724b8cd1e1208d1af6dfaf0ec7b061d0e1abc09de920462603834015f38c858f97d420edd88cb71677fd6a403c036b56bad3a8b5ad10e9144cb7ac11a50607d75e211376b04486a6ea3db25a3a032e8911
+c287f91d14596b73d43aeed0e5849be2e281154e5ec7c8794d587b0f7b994da8df33f2afdf9b3e581f44b8e4051e5bf5af7881c8b124110bead6fc8b28256b9775b8e35174f2247de594ae4015dc35480d2419ea4fd43302a4305f1f351af63712c577421ff4aaf4b91ee104d03efadafb70c1bd73fbd31a8eb5e2edc0ea33
+f0bc3c54ad8d6e335a0e7ba311d0e2c72707d73d04549f5ea29b6b26058f5ae1585ab04a87a01b6ecc9036520ac6d1a85cca1168458d0838cc6c485bcf6bc3f7f631879291d3f692a5dc46112fefad575ac80c1848e98aea842b97d893914a731d19ad4e9e0c871c852ffb061b5890ab40431bbc29c814dca5dbde2e572fb3
+d20862c6127effae496341cc18571a9315e7b205d172943c2f3e7221c768d9c34ce12c431f8957adf28a62c2b051effddccd029ed82ce9c241aeb23638622c0e5529649015eba08410f42d8f2a77c3d3ee91714b5d9ddf0d9d6e26bb5873e91b42fa0888a2c446c0bd15a80585290a8b1843081b9995f2342ff5e620f6d509
+9232f08b75f2349b42a50699379975bdb6166eeafea964b4a023a45761b02ebd3f696ac75eede1d0781bc26ee888649249aa6bd47e38ee52ff8b568ee8291e60dc73ca009dd280bbf4c3068dafd2a5aa84e0f7dc2f882b5a8927f6c3d25778b83fcbda79ddc8facf28b5b5131e7e0a7251e1f1a792167430a99e1d731691cb
+31dfea8d3f4b7e72920fc239f97e12b40bfad7a1f25b405e1873339518ffbf587b7489bc54c01ca52b031d8b7f9c0dc9cdc8152c3216bf7c518e0454fb676723509636e1c2332866d87347330513f7d25384b0d1e0749e663d4d32f435fa10d838d26979baca31ec4199c5ca3a43e343ef00d20afbe66e8ca7f0cefb58ab19
+42d37053a64df2ca946a0a5dc79bb3c762c9c7ba744c7665b5a4bd877d7256cc7507ed492b8dc2bad29446c3a4261eafaa4dea8b03d1cbbdd556c3515907c90f18cad511a6a01d280b8171aaf8f21ffaa6b60954cc0439ced08f3e22f7575edc8ffd9957010c0953e2b0056289d41af031281d84c3693e3eca86e3086aff45
+27a8f6d8639b62974fbd6a8c79edba5cde8e3a6bffa1aa41577c6d9da3c7e6a7d0067e307d859a5a658a7bdff9bc0c4a42490f1d43f87a0b91e690626bab5aef94e49577762b2b315520534dd4ac942f6f484507488381c7c8209b817e594f9080e37527579e6357dfd0bc16d4c7b2f688d4115c2c084ef305d8f5f42f4a72
+c28489ef50069564f9f25968631e9dc643a786febaf83bbfa2a0cc997d4801468ed3e677699c93b637d31498283d7c79fbdc85490aff5c8e955ed8dbe53abfcec51f059c9b99d59c7d7c2dd22d88a00e6e5b59990ec3ef1ba0e0f8e6a454c2f272dd79f123c0808339c2f9597dffdd18cc118eb43f38965836a161d9e59c34
+f2a11ae2321500b121e0a945e02079a2957b02d9d75f8debddc47dc8d7ad29de804e370969529276ba3a8d034e306e3b9a8969ba8a68801a913aebf55528a5170087a657517216ea9d6f6b968d9b55e6eeab9f201e2f0713d3c85de08b96c3de50faca2a44b24f642e1ccdf1cf6fef79d28afdd4831c4246bbb731fbbf90b1
+481f074be75110850f19732972f60b6d5f6ab51c62ab9f74e030683dead495c8528189ecfcf38c0681132847f464837c4043ca44013465b46c21e0e7b6a6f70fca09b6cf44b6fe87eacf92d60bc1b92d54322b5909f661a9465dabe508694e25a74c464691a58ec118b65ed8cf2110f5ec017a29469e2184fa280da19e2d86
+04d4535fa385b40151ff1a38d8ac977c761d34bbc89c613e5de31376976fb964ec7df6cd8fb18e2c53b05e5cfc74083d0c4bf3c2715f371a8fcc65ff7ba4daf9bf648ee5df3329bd91637c4174d25033681ccbd9c4882e5c49075c5ad6c72089e75e5e3a6221356003802829e21b04ca060c04812a177ad0e5ec0fbc07452b
+837dc5b791d905b00ad96e7c7b48bd03ee91983aa59ce3433a912a0b8735bbaf50f7960f54f54802a345350a0df6717dafb3f8cb60e183208088b334c083958c05c907f29a6109796d1855fb0ac4f16a42eacd23ad06e26f1f19d4fff21f29809a8cfcf6b10b23c314992aa41b396debeee22350293c3661f2d5eabaebe5ae
+cc0d3feb50e34d6a981c7773504d189869a68a87b71945c49dd483633abf5d96a5bbccb91505ddc815f72651037d66e538bba025067980736a12b3a4d59de18b88ffa0a5e0381f0d987f001089be7d738003b66fe8532b2cd4139f0471ca2282ff41c8972dfeb0eabccb92d957075acc6724dce6f2ac6ea076ef12390d5f3e
+cbb910a9a7f7ba00590e68bad46f2b2420cbfe0c0a3db3bc668ec79e54fcd950465457f9f4ecd771eca2296507e309c4ef19558ca7782f12f1c991bb8a9b15f981ee2188cee49c34a68e505c7c1a0202d2b5c3733f0e45f2765eaa8bfe9f953bf2a20ba8b2ec4d9227e13d248c81c8cf1399da3a62f95cbf8bea36ccf55a3e
+cecc0c52170f0ae102cd20a35e38e22084267b96de41e51031b88a8c40f029b77221dd09909cccc1266ee5b2f05306ec1a0b71434a133c3d40de6ab73e6fbbc1e505f094a937c23eef51384d94f29ccc14e1f12637e40d5a2fdf12f201d9e55b2e3ae28cbf193cd0dd15cf6475d56c59c8d23e149df5dbd432467db24ba02e
+ad3e829a70f499bbf31277765150157f069239889bb8983b45d2306abf6f5fdf45335e363165100585be45a7789aead01aba3c35628f72a91b346554ffe3072f05fea72d43ad253cc4448ba7ec02d4da3661afd54bd49e5b8c2172af61c10e08fd2064a45e3f43e8a31d4b6473b725819e9dcb49dbf229e6b1f6117c82c2f5
+6c8988796ea7a8f0454956386577a63832489fc1372c9ae848770211b4e0a6f90d80bbcfbfc0fe8c5e82c415e07c32a08de452c392e12c768dbb4cd3ed3aa4bf8000a248a366d5e067fbcb38a7331e027f6cc37b781ac6914d636d5b7d2451630b0fe5a3c6fac0fbf15f7dbb2f77a7eac6d04a19769c7b8276282f7c931826
+a17be59bfaaf5dac88279a04f3e104754359b8edd3efeeaae9dc088512c5e6957f063f6acb85d55430f0e869e68cc809b8ffa6b19930afae2410fe3dd02af8a914d9463dff9ba07425e79c695160e4c365641d97da5ec0519c7c9fcb02a3a4a60336a65dd0a3604fee687be4199a9844aeab72cd6e492b1cf30c0ce813d753
+10332c52b6ce10424468ddd06572c82c6424ee65daa62ec2d49758a83e01fe4307a7e84f8b3db123f44569af4f1d6df7b82323a56e568f96e144be65f5974f77dbc5dccf1468b2542908a6d964fe2285e3198b0b6e7aa8fbd7fd1adb3f7e7b9f5ddb69c2cd8a487579162f546f4ac7e9d531edea94cef13b801bd17cf20596
+0ff1b3d905efded894d03b18b1e799edecde3aac30681e4c9146eb5d59cd72de470e2d0b7b0af2c2ac0c446d6bf541ce1cb63d2961db8582a931ef4c06d4cd7076391d18827a504ad28bc1fe3f0e4457b0dee2021d3696f1b71e62ea8ecc4f4b4ab04cc6a6c7073ac0d7ba5ce482480343bf3ff6ae63b4123124bf504851a8
+58aa67f098388ca962040d0f4d896ff0ebc22a44966fa10e7ed55e9cca83cbc31f9d64f122bac80f52ac93a16a60adf3a9118553a962950fe294bd69093cc28c485cad9513a52a275cddbacafbfbe38cf1d0366e3ad523de33bd22fe47ffd0bd0348fc10e6e9a6d1d51d02761e76c29a97099af558d7dbd919d91cbcf393c9
+e4b258201cb08e3bbf8fe891823cb81cb999af7f99dd0ad704aa55920c90af094ab40f8d36b5d3e3e84c7a3ed074d7b32ca8abaf8d8d7c66ba3470fd434eeb0910a9ae55e8302ed7c944be3ad43fcb7e8b0939bc7a278af34f5640860eedb6a7a8714909caae98f627c11685d4a60cf56e304cd15ee1290e258ff5934e4bd6
+5aebde771cabd4d268877c3a39a79373c982a944ff1db9515df434269ae69711a94ee61bbc6f9a8dfeaec2c6859c4be67fba85683216ab4a53aa62d8b638001b041b07b786faa84a223ea6bdd3a3d7cd578729bf41647eff45e40c332e49bb9fcbf1abbbf87a7faab6ea942e2e9bf904c5969c7075d4e5124e0b1e5155f783
+8f754b580a05657392db64f65c63d743fa39b3a046b5175eecb6e90c5e111664b195f31eac75dda9034f40380a4ead2a7c711101606cc88148b1d9ce8953c3c440ad2d1f63b41f13c0173660e9573b597f809c19915c2575e3708438fb68abe46d5ecddbbd2e87dde05f2f7afce39298effd658c6e70609979471dbdaa41eb
+c44a836a75c2b7e71db3114f7c6c1c8ca6bf0d333e3487b3d8c9838ffcebeeef7aae32e41b12f9a3e410d469a7862e52a2c796078d0845d90881cf062190b3bdeca3c36c7c02f02d3e7b33bf30143c2d7bc0355be7e848b84fb44db79aafc1e17026f620e1a05fca7bbdc1c516371a29a1ff152b1e0e382f837f4a4e2215ee
+b992a4c59976aa01468166f8a31040d450f1685b72f9c406cb82cc87feeaca48453a118e20963cc4410f8eda396a323a20399cb34d2601285240de61eccf04129596a829b236f72515e515a0e9d05a8e09b44efd6798b0441024a31ee582f1818ba408476db61a35ebcad5841d92a37821a883cb9edf1b7f3875f44f06d9e6
+e25048933af89684b9c7ce577e4a80ecc617dc713550f8acfedd0530ee95abae6658a29365a3506a092bf587501c519fa2e5416fb161c7d4f9e06c5fde5ab5e90460f7addffcf49541002a8a3c7b75e44b6a9d2da9d574f9441604cd3e5d4c8f93b44c167203997d992d7e7f8bdce60e28381f68f43e72be4986fe9acc6130
+a67f04d188611b5ba328e85c96b8695ec664ec45d12a8ea8b349b1cab4284eadb2adfb42dead4d233ec3af7e29501c77c814cc97d1085ea6f4c388405873fae70b9bb20455577555c0eeb329c9791a6fcd349e7ef96aeb0e813cbd945dda5547f684d95e4be523a10bbb7f294d4bf3c4087e7f671b62f89b1b931796531f9e
+bd02423277cf47a1c5dcb65999f5bfda115e04a091a0041432a7aa245858344bd73a01b81529e6d981a5da1e895c7accd96abb6c0a11a0326a0e19b6afc5d1e5c56351ea83a47cbe42e8a580006e1049e388a2c04e1afdf964d36ed0790707d0df13ebcf8cb4a7137f6a5b42570aba0b1015233a6d79ff1bb18266682d9edb
+fd1c5f0978cb1117ab8e01dfc61175dcc7f572e1577a6e0bb2915943a530890978cda080960027fe0ef6b329e5ab32876eca5f71f912d3a7bc8ebe17b47bccd2df44cfba736831c3015c799d3df76a79a499a929fd28b5750d60c38771607a6e5fd0077a9107289c50eb698679e68e3decffd25d76914e578710f80827423f
+76b63d933a50194eccc3c6654822963f8d4afdb824ad6e171a0bd45188d901d09e6c45e6b7a4bedd478b6eb7be7bbd8752a46d29c6802ceece9d08a0393159a7784bf047b2002cf30319be0ee1bfac9cd6897c8f5068bab7d0ac618011e948916a63ca47b21b85e2d8da8c075c01be4543ec35385fc0b9686d4d8b6efd08cb
+8b5f5258dff550f97a021ac7216b8449d340db55522eef35abb75dcc489514327a182a1e987a5caea48390ec816a4775906cc3d93a4a762792282b44445d8337e8866a72d749ff2848675be49cfad0d080f55c89355a821a9b68cbbe05c39e871648e8f6d2700308857347d0e0e897a92770295df6e0cb7d0695b356517c99
+604597dc6d6309c0d8140fed555de57d1fdd7587c638577ab1ffe187efc32fb3875c001e76ebe96abbff89a8848efd004f489f3515de319c41f209fcb3f17ea0d5ed7582f9c4b9ad1f72e3ebbd5ca2346d213e014c54d03f7b1355be529789ca897822e8259ca101c52f7a0a8063649df85389a88fa74b2c06819a6a2e051a
+9f5bad5dddf654cff0db8fae46a34674213fc29a0fe8b684892f4560928ea6e61c1877cb1e74ad3bffffc6e9386e0e1255a83a4382bb418528ee9a27d76233e9a131c40619ea480074b260e4d49c7720b5870639c93a94af73516cd61a66d9907de8232348d8d6afb7f965ee2810d755de854c85cbbface3c03d8c706c7f93
+237ef29eff8a168eafb91afe474b54218c72289d9053b3d0a76ae8183c7e7882aeb0ea6f86728e7f15811a92b883923f3cc032f942ca392413275c8a38d2051a6f273cf6833098efbe6ba2cdfaa759c909ca62c57bf44d226b7c4d17e0ffcae7c2be3e65bbd54069b19319f86e9bfdbddfbad2eb023a281171588c5174dd42
+cf3e621fafb81f355f296389c9de19ecce620d6a0d1dfc8a3d5342dfd01faf90a098cdeb687cc8abbbb37af0e3f24de7eb9b53714cc02f685ce3fab001714de1edc3fd7c185b0df0b8d41356f751116965d9df979d094d214595c8ff53b472a8b023b67c3a1151c3d52f6b7b2990cb04c85fdcf9407ac7434de4ac2b00731d
+8b3c97ce81bfa2cb5de6ff983162face7fbbb4ae5afe0e8ac460de97c9bf1ee4e1eac2bf93d8c3bda89b806a7f8008709730ee4a895b12abdb76d76e8f2caca3cdbaa6b4ea9e73641eb9377c8500ce185b885b76c2aaad1205067b59998bc7cca8c6f6b67488b85e7a881cac110f0de4e4ecefc8ea8bd619e76a57ba862a41
+a942cfaf5934e41dcbe37a2524c533d83117533640c73fb941045c3f50c45353a10fce75fb1d0bb800d3f6dcbece51d5e40c7fe5076c4fb38722c947d054d84929c5f2c9aae8b34557b6538c71629bdb1b9c9535399b0ee4dd4db52e7945ce74b3370f5556e82bf673b3d5f64f263cb986925747948eaa0ba1dfdcbde06290
+572444aa5226923053c6dc2208eb440c9cead338cf5513a08945689c302978fcf4fc6ccf15736001ce168755184c4d673d4a3b547e3a740ff958e3b8301cbdbbf7049751954fde9448451ca1e1462d3cf1b3f7340f4422c2405657c1e4fd7c7636d4b893eea7119c046c1baf3d1c3b445039e83afa25b34f88fd5d58b2c223
+b89e02a713270c4166e9defd15394f605d4eee3cd3e682c24cbfa557f4e43e2cd5414a17e8913ae97b4178744e316f1d589546e49b280c34b5e55122b4cf984a11baa7a20ea7a97c8cae3bbe26f1e1ec1b9cf98ea602ee2658084a1abd67729c6d7cd427fe18b1c58e69eb6599ad5baaf2e60d4f5981f6fc5030e57d13ac26
+44544a923ba836d44551fe962fe30baf7208e9275f3c5f6291764adecc1d03b891c9640213b9738c89627baad05559eace7da50b1ddc4cc0c5d67f2b7fa2476161b3bc494a4012dd7d24320ecb4694b40877362a5dcdf49244a0351a5316b2404ea7a0b01bdeef039335023362d5badef4df9de48926732999d47d9cf0529f
+7f9b99a7c221182fcbbcf005aa6327003df684765252ca52a8cee4063fc08b1802fcfbc78ba7d5f113d31950258822c9ace597172a5127e9cac20bb130c89e391fc1d9c1c0f4fa3e282a28b3d2730ff031ecfa503f9a4dd66e6463a091aa48027a07385f1e4ecb2d0c80fdd0cda458080379c6ec8684b864d55c0afa7373f1
+41490a1a658a09df81e34b1e3bd3d752772d170807a0c000be413a8259cf20584e994a016f15b3041671ef27267643bae59c34a71778e8aa9a60f1bfd86eec0e8546d92fe715cb01fd22182f476d2e93f099c7482a6319a8f2353acb138717191da0b0a7ef8114bfb266cdf5689691f4d7f93e4f1e9335393ad1ae8eb9da09
+730e9d12a5fcdac260f6945f47785cc367d81560c5fdcfd1cc41dcdd84480a62cb9a4f6f445540689f972bb06c4069e325d715ee2ce3fbf374802f1496ea120a3468dad441bfe17e247629f9ceab782c8ed9c9a58a5f19cbf36f86e4fe4d287c61aec9c4f6116fd5a6d7b2b099faa9126f6f2ebac45394fb232055088f5b4f
+3bc970f70be7a5a7a10a484b4ed217cdebc6cae1b94015bdfc19dc7814d30b3f5075899f93632e5640a59650e354b4ad63ebb0c9a23c118eaad1bb9464829eb1b1d4c411f8daa7b50d88d03cef5ad14082e2d3b0a466a25e6f42ecb99af98da44cee5727ee8b1ac81f793450784a3ee72321cbc212e30ce4533065acb49ae2
+cb251b2de6a0ed30f0265f7551fabdc927fe5615cd5499a0cd6f0b8fd251bd807906de4174619b2315df3c51161e7d3a5a9018f87b5d65293753055f65e52c65e99b01b89b04ad613469d1a531fa02078106b4062f8d91ce21d63dfd002c8c4413b0c20540def307e5c3496c1fd890b50d10e8ccb5c0ce7f3c96aead7e3823
+6b2950a5b7a7759dcbae61cb141c975524a524019f48b318de9ef53c318c6c4e27881ee7716e20775928c1566e1b56ffafe19385ae98735aad93ee9a4321909ae4956981579cf13d717b21e04fc6a981e30d7a45f18cedf227df86aef69a3a7ad492b05938c9c60b9ef419569e899da62d9035106ea0fea09317830da5af3d
+cd2a5e797f4ee92e1d6805a42f7890c995fc2bf9b9de33fa08d38d42bc4ec60192c05cb7ee251be2e06ca3db9ef9530f002a6b265fc743cef548eef8059d6e41261e5842133ddc039ef59629a55cb974b9cff274ec1a55704bcdbaa99aace05cfc58567607f5ba9255184079ac409763a9deff5913040ab4103ba1b4251400
+6d41cbbf01b78f9d724893c7e98307a41847cb9d3cadc8d111e9c7fd57975863ab3622d525ca297408e38bc48cf951c80aa9d63f9e06b4fa4fc58cff857d7e5f4e9e628e30b25f3baed6f7fdfd0b983c6c7623699934a7804ee716254020afe93d48dec5a227b2e794041ac21f503d4d1a8581e8322918748bc728db1e97fd
+5e457667b7a380391bd3dd0b718fc8eb5d883e7f3836017fe74a493a0d3bbbbd6fda8e9657f77796c61f61d9b856f0ef2ce89bfdc61919d69d37f4461e05d85ffe670e8791855e1771afb49a880135c7216fd8aef5a561f0b98942b59f4dc42cd7f650effae8afb30a17ade96d282221faf67dac59ff8b402b990cd71e57f3
+637b6299b0f0a99946a5e4b36e062dc6e0f306a24d81af801814e68e4812871af085b12363b4e844eb3654a0ad32b107cf99f92d8f8de656c60adae684e53dcf7fef52b532f4167a990d2a3364a95e7f7d0e38100d06e02392ff8d9f180673a8be2d0b6cfd9bc1c47524579d63f6f06fa01b68648f98e0a9a200c51aeaa60c
+a496a1c3137ac9a44090434c690e7a973ad8de9d439ce7e00699eff7730206c5556bbb30cd2087bf423a37f9ffddb53f81592d8cdedef06390a55255e12f8194e2afa6f51ab2bc595799cacce3149d5b8608f01cedec0b0cd6c74e703397507496ed4cdeecc76d0bc74b698d1be363f6d9e199ccd8fe9cf5bb68e648d40419
+9620aa88bbe3b6667f5fa45e11c2f5ce2bf9b86b57c7f246acc4d78c52f2b4496c5fdadb0e4b73f2f4e9141aa416e3f7cdcfa17cd809c0935a6eb5379641978855efa1ac452a45ee7b9cd27992c66bffb970d33ea2a4e65a81daff6cdaa0237b334326144171bde6c8e12f348dc1f59fb30bb82d081bbd2d36efb44000f909
+e67cd2d1ce2bf499da6b8391914d88179d3cb08f44ce3215441c50feeb26b1533931b1c86000db4d34bfeeaaec6e7c36e24fbc61c789e1b07210967951cc51de4005cbaf2b30135a5316be4f1af952018765c1b015038e94825478abe64e479b55e13f40b507069cda9d06eb04cbdac1dd27707adf8310d395b0549ad4eb42
+a29855a4ffb796b64a940db6ce4b8f4d560e00d5ef43bd6d4a43414ad30a68252347d6c445faaae70c60e225ad937e401c181500b14f4a641929f2930b3cb13c8c755f64e4aa9e937c7c547302d857ea5f1e3749220c6da931598dc8971e392b0a7406b5d174b1ac4cb74bbd1e2415eb1cc72b6adee85e970b17c3f3c707fb
+428445f5e6f7b09dbe3e40bb47e3d9c5f5a2de646b7d01d73e0bcf490ce0f59f5222209453472e7d1ba46302be823e217910d46d8bbd87e4f566fea0f2fe733908301e014a54d1ca7b59261cb23b29a3580f3a3b3c2cca988a75b2cedb1a884f770b7808aaab610b6dbd1c0193c16df20d041befea2ab4d7b3011fa82edc6a
+d4ac63ada457d40de197de5459fb4099748e9ab3a35c8f81a5aaa749be783c1812a317f64c565ca0186f759b234f7f3cf0aa2eaa480aeadea979a0a0adb3eac0f084b27bf65255e7e839b7e6b57bec728c9d21abc144feb2e3e4bd6dd116629d07fc18d57609582bf7834e3d700625ff808a63a99cd52884f434ae138b81ca
+638517c43134c4fcd6b990f00de1feb4ad24827b27abbc6616564eb5b7b1e695592e67ffe53adee116e4b6598331491d57e985e843b3b6b113570b6bfec6af7dd0a958318ad72dc63a0d9d6ea1e6702264d8273f4d3a1071c43fc58b5905ff4db1a2023fad6f4a222db6f10910863af109b707022f96e1b78449a2f46cb26e
+423a54cb805686eaa483cc48e1227d9ccdaea355df599b4372956b82a67cf0b9576a0adaf921db52ae57276fec54f9fd2edb25528f4472bf6c700e4038729f80ff7630c7650a898f6b7a448e7ef38c644f942104ff9e13040de3ad6216311eaaabb5ed84f42b8d4dc3fae8a470a1b2656239d510fcff96edd202e4498d94de
+10b5d7f5fc8eefbede2e736dcba84ab291005506c706e39d0b75d66651fc2451041ea3c64c4e94039f6a1683ee0d67341c327a1ff88c31340200e3e03010889438ed31cbbc69509570e55c72b84ad41cc49160ac523e821a5d3045598fcf2e3fcea7d0898c27f5f358973b1cdd53ee77f00efeb7b84ef312df3c140dd804e4
+645a4ef2ddea29d13e49fcf0ee7a9617f71b034a809475d3d0792af97ef99e58cefad2a5655b9a3ba60c7d7d80508885e80f5f7121ca82f6d7f2f0d98ff1726b3ed671a98762d630f621ca48de7ec601512285cc61cf0b5d1ac1b642d749cbac7d1aaf2928f4fa57c2d095e3b1fb1e4d01866e5f1329116d1bdb3977ae4693
+5980b5817afd76531112442d3828469081f38e23bb96be6b173a2a41b445257b1683fd56ac4591822a11c4ba1fffd2d99916801d93958310ef0de2544995b10da3ab82ee2754646ab23c4d230e8ee875d1680556b91fbb4b100bf6d05e06836ca84a7982d4a962dad722fb6ef05019d1f1e5fbb197964338522967669784aa
+118164e04cb7e823ec08843be040f007655eabf6510e3c75089bf4bcfb1dfe5a2fad3ef14f435a10df3fe3b697663f7ff2fc6110ef20f6f06889665eb67c376fb29d5b0a9b24ca9fbb9257a03b959b1e7032abd562bb5dad79564531cfe562028b179aa95a815dc15a8497a0ee80ef7808d11597e2599e88fb870ebce549d0
+9add22921b8c0990c4c04f72311bf51ceba61c0674d71ccfcd8b782f92eb61ec0af3a82be103bab31acb8393248be431e93daca6ca6c8f5abd3181e7f22ad7bb603fe521d6a1cdf5f847326e50c3c3d40b0c96dd15005b4078ba5d984ce500b3d731581be895e047c379b8f4ea10f7eb61c46c385ea0ddc851f2a912b72b19
+d318b76dcec04893709febca6f4a0e709f591052955fbdd02c49e00ed2a01b96c978227f5dd07cf09438ea40f9716e5200e3f1acf64403b16293c4c23ad8bf498071e3fa6d31f04a04381040f69850d660a751ecef31f20cae79616f4674004f33f9386a6d0841bbee8a0af8b8ab376af6ab2ee705a5973b8e7ada5d47bb6a
+3cf6b1104e82c60849863e2e847e2e56adc4bf1c872707332cd9d2d562c97bb792752f53461edcc6a4fadb464b06659305d9ff0620888d60609b74c43dde4d21dd19686a6b3cc92b85a063ce6140ceeb9ddfbf1ed5b88b1dc7e08420a98782e444ac7bc85a08fbc8ecc96d5192b6d14dcd0962ca88fb6e7c1d400a1284370b
+f9082b666de1349ccf1745e4ea793d6bbc39503ee1680b9775c51fe83afcae3c3a4cb7f862b29a4d8cb0b2ffeb6f0c672237eb6eab31e1394d5d8b191bd62217cc2b761e6f6100e5745542e9b2e0796a971541433418f39394390c644d9169c508c454b681eceb68040504920948614fafde8485980b4aad9b37dd84140418
+1d1c2a8fb611e611148d18aded8bf62dbea02212cca62961ca2f71d6118129fa7ea6ffc0882aa0dd10273e2e6985e5096f8219e8c204ff1c6b440dd9b64eeffe6982a640454beda3e6087c249308744651aa65dfd07b24f412277fdbc8db267ccbb238fae0290c313d958ea98be1c2c23b226445ac6bbbc31c581d882119ec
+5591852239fe03769ca1bc989c421a116f154b6c2cbb8a8baea95a30de70fa1a17e2c1a18221e9860417b9302f17fbd945e4370b125fc9f02af79573e5aff62a564a7ec733e44f6def5fe13e2533c1c8d0e9f12097b0421d3ffae7159950453089259ead88c50f8ff7602521de5a1a38186779bf127ccf7bc7c5a684489ad1
+5830cd14914d03fa99e3ecd4cc6bf7e608de4fd35d2e50d2ef40d9d1404d78524bc2a62ba35c746e13a50afef0e52f7828431d56d6dc125bd87d1ba3a4503381236ed360a9f862a5fef5480c85506db099073e1e2bc7ad9695638051efe8e5c78a93348fa4b8e8f5220fb5c636161a8383f51b70745caf1d6c965095eb7b13
+c7699d4082089e4b44ef9dc3a22c191f802553c35dae51c4c63032ae0230850fe5fd33ad68e56197001bcf39d4f235ee27db989bdfdf6536b590f9b11395a8524c11b2b4c7660bea430fd5ae566cbbcf0a3314286aefcbb54b835488e488512c2343aaae26e160cd84b4748810727ffa3d7cab9e1c7415b69d2968870b7ac1
+19e2983db24b20284af50b5484ae7e6dba2f1a30705b5d629c2e3bb532f8b93fc764a3e84d54bfd4f8aa1ee1882fc655643ff7aa73f347ca9377a0a6f6d88b3a5e9c86bcffe108342dceb6ace0c76297fbf7cd474ffe31c5166829301d65b4761180c8af07db8bc83fa8db6e3ed3149361c218ccbc38fd8422f37733e8bf62
+09c783d62c8c2b6a5435f1138fdca30df04eb7d72e9626e431a89c88094cd093c75b6abe18d4e71c5e718464ac49eb92db3d8d3de3d496cb854438138bd96f26a16ae05e7b6e54398f62dbab283e981872f4edd8ba33ceb60d9e57865c1ec8b593d6b5336b97992227314241e7fcdd81e34fc2b433509d1b18e81a71abcaf8
+0bc5e4b017265cd82c3acbca4340460160e66f8a1c319347440a6a060697fbad16486d07620f5e009e92c1172c6314dcbc17454b05b32ab392c324b99a946b6f542824fed49d95ddd62772454b881ed3de66d8db723e55099f2ae32bd22756d06b3c6c9d3e2736259e187ba56a884f2084e1c3cf1212450eabb935799d3fcc
+5e7ce4f84b880c76a8c401963b80d66bd0e436c0c3f5a36fbefdfe50bc200534f9abb7c29adec48ee54ff1d9ed7bfa0cfc40d5be3ad70741380ed4d77c4d3beee40c27d0912cb91d0b4f4b46ced92c5e53a4e2cedb48ed7f9940084388efd357e7700499c811d4b99a384229d524bda0db5f31a2da390b16175ec3c7239835
+b319c51f81dc4308eb022b99513d18a1d66bf0de810dbd8c31e9886f1999db821558198a477ed4f76c980d0d95cbc96b0629a3ed38b9583593d06b08a1e7fcefcd79379bef54bde4e9e8df6adfa2bfa1d5ed54e7543cd5e58ad0540359bd67ff21a517cecd8655177ff0ea09c4cbbb5ed408b382feee6187f3c33fa06d994f
+1595c627d8347b0004ae028c7cc9e127cb122e83cb3ca6ae22288c7256a8e77a72ced6b03c4ffb8f292d5925f405f64ede2472dd96142e208eb1f773c05d2d254bb3681321d9962493a1fdda6536e402c6295b274c05af99ab0ba663d0360f96280ea6ef0fba83e8f69d253e8391c0d34163d278bd41627f1c847b24794239
+bd4a9223aceaa12b0f3fb46049df74bce9d540342242e98bfd4565a39207b1374f1a277e6b824f1b307c6635618d623bef5dd091d1460c97eb8e4664850268583c235acffff28a3b779bbe36e07725ab551bba51e32b7a2758385c36fc86b6c4a147858f5cd69d364ee8f4cb158bb6dae04c59948c2c37bf5b6cffb842fa65
+0f3b9d28b77953c91bb29297e44f7fcb71febe4e0fe7f7df23cb92ab9bf861a6b04423a018d38c2da603ebc27a378fc6c8d6184acd6ee7bd0ba1a1f7a8c889cd3f0892349ec04827b43971cb4232cd64d23fd2c0e53a0c1e74f441e587912f7a65cf3ddfffe7ce7853674f00ca3bae2431d77515ea657af3ff600e8f7fa845
+ff3eed6c0bff25384c4385689c662e70b65693f0959a837a5c80866f5ff7adbff14dcee31b9475c16938700138552030cd0b02ba33fc850ae3d7e49c3f16c2d8b11e1ab9387fe8c52e636e69bc861c17b252e3399e40e3f0c5ab055fd3556ff066868f372d2c31532b599604358a22a35a870fbb6501a6e7c359d0181419c5
+6123c60686f1b78164a54b8c680265f5b7bcff2282d2e4b7d54fa9c6bef82fba60e88e28e09ea231873d20375411b866f39017584c3d3ec84c9413da030b7a66367a71b8ea1d79de5d091ab9db127c8b5929d021683ab4d95a05ac88f8b0a508379d70dad6beaed8ad016d6956dff90a1413e4bcd42a55d76658d6a3336827
+e04157405a25d247cab32e19ae93e54483043392615f6a0cf0d8054c2bf8049d6559e04b324a926751951542722a68ee11de942ea17e1549946b0d0d13697083595f6499a295ca76b8fd3c26873ba1082be163a21d754e0de5825caa71246bf3fcf7b0f056bf33a73964c794c3c3f0178fe18536cc51ff0aa7d6bafac4ed6c
+8e520d4f7ed96d558008f82f88e972b1f7d374fc9db6d41d5b4c7927e639e30811c979d68527294f858808e9c7b520ccefe03a29a147155450828a39aa512755fd59cf62f312ddab44e91f210905d41714b5b36a98a23f73e6d0ec32e1ebd358bda6f46efeb53f3fef7fd096284c5fbd1315915b0395cc1d28bf69cc8df7a2
+079393cf1761d9b85b0ed46efd63ea7da7b5cb8afee9180682f3f5740e117dfedd94c61d99c40314eb3f3efcbc9eef584c46b2d66a340c4045c42de0885637114c7a28d17d00a4b15cd47a9636a4fd777fd0cd3203d3dcdcb3ac6d5ca56edd39049672d0591390c2470e28d9b8a946ebadd65f47f9b077e99c8816c9f20976
+abe19e50889400f0c0e4d089e8b05c97596ec4747a6c302d12f30c7d047277abc4f5b4e9efcc44c7d17ba83e1c4f92aea889494adc0272681e1a3ddec8634a51a09f0ed7349d1ec1c10dc4c7600d3263fe1205c8724b9bfaed0fff85e6f4beed3e93f860b70a13094c8acf49dad5bbb86a433fda139f4e20b1d72f922c5e29
+de19f13b5180a0b7edd6775baef8e1510cdfca5f3cacd31dfbf50e9e41abd9c90cf60571eda75350afeabe51a72cacde8b77723c5f6bb88f6a0d94d319f03c625263c94ab494e373d9ac1afb667b545eb03f9dc1b868d5f55cfc559ae7c31e2f10800506d0b664b28a624b126b9773a9b8d629330ed3a046ca94ec1b889ed3
+d26cd6dfbfbd94ccd2a91a1f37efb61f5f06ddbc1c021c87297f391a2d8720e08a104b16d398c91f4ee2083a08a378b9c5d0bf1f447fa7d5c36aae44439f91fbb3414b06d22e6cf1c96fbecb5fd3efd23efb4bc8e356103123ca144986e4ca0f59a99e2c477075440ae0de9eea5f836fba6831117bd787341b86fa991185c9
+a47281a277c8b04df60439897f67b7f42ab08aa7e8ee931e52dc165fb9b20c1de9fbff7100e30ebe292750a3a84681bab07f03fb5ac13afc1659f15e488c796c715d85aa36a5bacf473a9c02957091c3b01cf45ad5af307a551ae5d34caf531af09a7959f42e8151fd791d93d229243f735b47ae6a0d2bd3a32e979e0d77e6
+953967318216bfa573bf0290e65835028967a394e271063d84a389b56ad68a638649d2e6399e5f7a8a0afd3b4502ab36fbf3dfa5ec5e12bcb35d193cdab02c3a5be1333adb3f68737822670ba7d3e99188723111660303038c1defbec34c35ba5dc2d39f637b40a823f19acb1f4cd3531ef90898fa6b7c95148437c97fb3fc
+1014edec32ae56f264bdb4a47385756a794d017f5f6a9721f91c7f07bc307b09ae3b7599f443eb82135428485a126ce82d8e814c148cfdc6175e19c92f18864857525b5c392b1f5135ed33d6c0bc3d3a08f466a3f3372a99699804d0a9f9f2cee6287c0257229a2a47339a0be3826cc7a9719762a12669c535b98ab76da8d8
+4ffc909c0def3be50d70de61af275f11f53a34e8e68d2eda360e395171225aa26f59d22273be17ec5304a48e3786800c21e4fb8c7dd7ad6338442e146241dfab2da393e78ff830c85732906b9a43df31839e3112f3d07f41c6587f07ae11928f0e10a8b8423a71549a09bf31e65867ade7274b92d7df34c0eeba9dce565d28
+f2ece0d58ccd777b45133f16b24f17334117d2d76f1e29a4c28c10423d940c01bd6afb4beb37d66311b785808cefb236bddeb7ac290a23fe13a12430e27bde2895963763bc689b1e7f66441f20b64f23a30d288e35f73bf515a99c1bf2cfc402c4249c468a337db21a39ffd13f94ca3b8a77feec434d23cce5d7287e8dc9b6
+5eda1fdd705bc12e21efe88a93af0b8429a8bc20dc4afba8bf21ff75e9e6150cc0964a38bf07918fd13781256875d37e7b62a946ba1c83610319edc2725589ff986de5bb6044b325f43311af056e19cb6e42c3d353f401252cb4c6e8947d1b06921bb744b34079dc15fb4795d3706008629f752a0995f2a51957455351a3f3
+d658c6c28cc09cff2b10ba498eef1ab18fcaa42b33dbcc3219acadf0f77e7a60dcef1b81103664079b74eb268772b65f5fb06a51ff7821445afe99a713776c698a9e41126b43e3e09edcc3946d4370acea0685605e01153cccb97060a84dcb4654810bfab85a1a58e3e172d6c5db42fa47502cdda77aea0098fb3894c7b4be
+4c6fc4edda4d3b48c53f106616a9f966e5d9d5fdd4d3207aa982be50cb55dd2a3cfa94db55a95fa3ce853f4c03a60b4a6ed849b9e99d02dc9bee016ace463bc48f647aa43d17eaf37eab30776c9be089db0f48e6f67bdd86e787d7004c1c1a55b943bbedd841f34701d977d7229cafd3fcb2dbd874d275de66f74dce69a188
+0d438436836ff12e3e6f3fa374ccd9193cf87b1ebd36c7bd9e5a2a7a0407f2a66bce1fd3f88bcc7eaf43bf74e832aaf03d2317b256a8c55a913286ca17147ca17ff54b547d36f8f782981db4a37cf7e837489709aa4894549664cec9455e0c80a47959c611256619dc12eb3afa6697accc30a6a9cea866db86e04fb0f4cfd3
+1998990d66348736b780bff28825b2c4791d432feff4a424e231fa2d7803460ae16827fab8c0655b0fabb3e6af5534d617cb7c3aa831b5ca42f3d8a116c1546cfbe5a432f09340865a2ebe7e7395136689cca98264a8e7b52f43c9c75410758d3ab9d596f1d82ab9d41d2e98d1dd97b85263474314740ff8273e5e0f662a02
+b275ed1a74c160b2dcf5664f892cfbaea308f50be93e46be711644fd5d7efaadd8206ca3a4d19bf1fed84309662f88bf310bb34c9bda5dabca7d0495aad060093f08ffa810db94836a21e6255dbbbc39671abd878fb5add80c1202ec95c1e4f1ac91ec0f03e1e90168d2715af3f992b8afa9c66ab9cd5f9127fc50c815cf79
+4761414e6f8f319ecf9615bd108f8842e9676f8ec4b4e5e55922fe632049f32cccc422a3b76d85dfb2704a8e3a9e8e6cfcd237d2e0e5d37d7faee1ca94421a935896385ab24a479132a41a49e5ec1c2b21dd0b810f070d98da3b6195ce98fdd06828a63df15e981dd9347e7baba830ebb415dace42c1c5f9b8adf060585c71
+50e83c5d83f03669a5e1186bb8c39aa1982e456279a70fd44f93558ca7c26c64dfe0678765ada8db36bbee77c1574b387f671c3ae9f644a41c3cfd840dc5860b9859a6fe00da5e9d268407d6b91b2c214c325fe025d6c17bba68989720eb6bb48de0416365e3be5bf15dcd452c175809a30f92f49e2eca95086a76a141c411
+aaf2e88d0ab209aecae24d3d018df75ae87cd1334df46ed0c2293b1884348e6134e0fe0613331d9c84498736813888b1c4a1fdc02ff0d0c10e9dd5d119a04a9a993ec845772cb5ab449aab262efcb6ce37700db9136233466e5ad9a5e8742918f7fa2202c9066cd5c52817f63e2c133bf0723616b63713f2d2ddbcdc2334c6
+1b17376073c36e75b69553b05d6f7a1ac73193c536160ca665d690411ba1236edee6342b8e6799b957f8b958e4a7e5d2d03c64842d6e594de767dd7d4a22585cde954ccadd79e829a8521bb41710b6ceb5065edb0adfc099863236a2e34700c4eac0c2620c1db815c814ce20ca6ab422f5c1e959cde1fdbc4e0a943d52c9d1
+e3e6df53b24a5352b4b5da61553ed0e486f98e4641f9314e368a0fc33b2c6791fb1b17da7c47aaeeeb6e6ae41c304eca860a1434b22a90a6e4240db67bb69181f6549fa53a6b01201edda18c3b1a6024f705325fb9b4713b29ebbc712ba83e6837e719bff8ca649537ac8734d1348104660d8fbf5451f1e183e8105955f1a6
+f1da5c8a47c6104c245260d617ae578c646a323096d1ac8f45f2a5f0eb68687038ffb492bf46712297a6ea3c422f6054d4cd80356a5b130b9ea53f7dff3b1e86cb2af6e9b354ae744e28f6015c01a0ac7f65692079387af2aef55a364078dcc6aff821ccde68416d7712a639d43259fc6ad747dd3c212626fb89f9989bc795
+ae80571325375fff6cf916c69ba656c54b9d41cc5d9b1ee6f0b6dea2d8c00f9ecb75afcfd440833ccf4f9e35e9de774969af81a13264b413bc15148a4b955865c49771b9ebe6102816c136dfa91317e69b60e772b1adeebea15ef2f486163f1cc7b94827ed9930b2900d57564669e8e5191612dad2b4eae34b6c3afdb02b1b
+d609eb21e05e8379fa26dae4456148664844327c4d7efe99e4a9fe775c3455f2531c96e70150e2a5767b5dd01850d201c4262f5df212dfc10c3881f509b38533f9eca0f8002e5367adfc35538619760bbc557baf640455d4d6fcca4934d390a4fade569b09a39952326c8ef62d6333f66ca496966024ac805b52c66aecb09e
+db11240c3b9b1a91b0eb89e71b71375c69d4603a62ef79ecac75e60b16de26f66bbd6eed1ddaf766131f3238d83569dbde77d526be735a280a424157971a743a79198fb44436a1bc5975d136ac15ed2f60b3dea57b05791ae25e643cdecf2fc62af35974c573309949c5745195b7e2e67ba81aa2fbb46cc36b761cdbd766ef
+b8f6a6200e2d336cac52d2b30f96d09118a06b1119b4782be39bf95f1b8bce462b88ea2917be4c7372236874c5edf1c15b453715f066f0a5933dc74711a5ec406ba38f8c8cdd1cb60187f3e33e57d1661897c1e5890ad9b496051fdc0f3c64cf7108b44a43c7cb5bc6792c2889437d0f1d8b3a7955c5b6bf709a7fa0235669
+267c6ff05bb99bbca98029970ee69e99ef64cac31d66944ff22594cf4bdd778861e8afde3a757ab9f799f0f42e2ea55c74d92cd5507e4e5a49c624f5f0f6cdd79fda70af7e7c24f6f673e7df8b88702f5481f31267f6ccd54e2744d29a8920b59343355476867e3c57ae5c3a2a8e7558ee3be01e300363bf2d2fbb12d68d54
+73b2718c436d23a09f0420bd61d0a0ba5206ab91832a0c307a7eeaf1f13bb78bd6b15b62e6da1a93e160dd2252cdd70b6d7d42e8994625f7ada31918ebb7433e480f88320dab83876a64039209203d93320b03da8da5843888d86f7e4982cb73067a5f2ae2499d5ba278faeb28e2a60fdaee428bbbcbd0d2b3647a32a78967
+486e4ac39e4552c68ec5c8ddf78ff58a6b16f03c24bd6da4a155ec0f9568ac9b85fd0b14d63e2d1f141b299ee2d73dccdcfc8761821309a0ffbe49001a4dd09fe275b8bdd826266c0a2b3d9d687b4526b76c18961581bb89df3548f1cced34848c0b8e990ee7bac79cdde4e4dfc9621e46e70c112c4079043d290d9c08943d
+7a05d8378022dfac5856fa36593438e887f2777fa91c6096304d8cd6cc14d38300a2e7efe63e801b8240c60fb599a2f8ed36a090f5339965fd1f602314025398ea549acbfd2d0dc013027e00fd0f9257c96473cb36ed2cef5a4476803ae50875269edc245b8a7bb138707d068d4721278ac89a3e26b226f3db2b7e0d203058
+7cac5f7d460f63a71d586dab0f87e279251419f93f4ba97343ab3852054a8ebf3d92dbb0b0b051b5d758bf3c3e330663edaf390bfc0dc8be7d6b9f6cc2e9e25a5da38adbdca2a1780eecf48733d1e1fb49bfc746fe9ffbf1c2e69f4d7e26296f6bcc6c9db726ee29b0d24e3d5e01c9ceadbc370c8092588e525295a110cbc5
+b40111c8aee7efe855947f83c6ea3196ddcd2b99c9209e52f83786fdca847a5b5fab76a6c9746d04555d9435b28dbab1396fb06a3ca5de76067e0fabcb410e2e84db713d4259a21358bd5f8963ac0941fa5c1ae5f5ad090af3cf0f17e8e06b483fe3b63149519f59b2d50c9c305407e0b4e55fa4fadc967ee7eebd3c38d2a7
+cbc34c566eae21777e825afe698ef3085bcf69bc3db2c9680a65e343d04d891296e8e1d2afd44293199c55bc63655514af44fde2a3017f43ca6ff61331c1ca83d776fdd08a55d8d05741549cc87b7ff3e6b87c2ce19a8ee8abea1a67d98b04662b36c49b3d1e7c1c040117d087cdeee2c25f62d65ac8c57349f48fe7a08e21
+9f2c790aad9e4b767d6822fb50ac1ffae69a3844a77eda3eab87f8f81b3b21cb9d889703e142f390e041afaffa6d9ae97c59ea696fd2c9650f282fd5f0e6bf6435f076cf452aa67e5c2e3b0ac0cb4ae92c2a2bd44c86442646386139d16f0ca1205971c029371b5b3439824c356e863edddcf18b0b6c3fb2c1eafc1470d895
+06cfac69278d77cb0387d430f525a87bd698ea96b967b029e62065557ec3e0f76b3efb6319ecf33f4d6f967a09a0bdf2a11478539b3e450cb53d58899d76a8315bb19a53c69af37ea4212cd092c6eac21142e3574380df2c27f7601c94c6d32624d60995e5c8004d3d24da9a36750cd078379096bed0ec55d2d91c50390bc4
+f8ed990efe82ce026e5084760cb5396c4dde5d25b50187f2050c184a55ac010a75667bd361e3bc9453289b90d77f0fc48b328ade44af26a79aa5fd242cb2ccb095e2aa554028f60327047775d7f2de1e8eaf2b455f33dc8d66ab96697db6065dbc11fe24a0ff0ecd1d968dd3eb753c1068ba4f91747f4c53c66ebbf35a13e3
+139ce0f6eba5cf8bd16dd266ac976651f965de2708f82a17ebdf82658ac57e3cfa9b6ca04b06d7e5a3d3483d930c7c7172c8ae1458cd2c324bfbde742799e0457f3f10f005394baa97efe60c688fb6d8bd24fb462b29422f27eb815930598e3a1e491f8db67dc125f113df83d8cf07cc6cc5e30be937523d6f07d98f0b709d
+3ebe97ff8000eb7316725034caf648ba92e390a6b831bd59ae8e49726762801f3863a526f729d144fa99fb93211bc1930b8532867706c5ca0f9857a9052d0519870c956ee57bae5ef1891794c6643f05177c6ebb2cf2e8d0ba203144d6771e0d7fbf20911c04348b3a92fb2afe0756a4ed2569e1ccc147b0fffcbbc1922869
+25c7b71becf788086914edee5383e7baef74c5eaab1faaedf41b5d51f34b7ca9aed2435f0b007b6035e6b75eaa8d800047edcd08c00f2479e6cda0a8c484d68c18c0b98d0bea519848de347f6cfecc0893d1ba4cecbc271fae1dd91593108994a2ff6b2b97a4789a74178b668a6557e0fd68f3cfeaaf086a7243173a4b90b2
+27a8ded16db61013ab37b20f0fa00eda27f0fafe431aa01657103bdbff1847388a4da88e8326eaa79bbf447703d40f2ad30385f26c4c340d1f186032545db93ffc8a24d544cfbfd2dbb85e05ce1dfd99b78aaed9fcb7c762e7b2cd5c017ebad4fe0ff4393433bca499a932c467110bf3c393c06568c29f56ec634f702fd3a5
+a7e938f9605e9ebd9cfda6358b26127ba15ab501153193040093ff4f9c92e430b67c9ee442fe74cf2112929bed5a727d28e4d59f7b842694a5fe679d6caaee651986892242f5fdff3d58d59a8f9740bd6577e4c20d503d5e30b7f1beed6b89f3ea32053e25ec2816eb35af725204852cb1bb0d59edf7e0797246f1bc6c0ad6
+ebc71ce0e0d19a27fe16b0e16a75954949dd328204732eee295220c0e712e9f0454cd105f169b1e3b1bc10c1bece935dac0fcd98afb6a8d1c87c3a8464b29e7108b64f8059228f2f10dd206dc51d524a5fccf2356e5675347cd8c8cb2aa415becdbb5a22909d14c99f6e6489ecaf049c210abd60b83f1151332b418b57ed46
+a4a4cf822172dbff7df1eb097f0ad59efb9fb8480af397099efce740277d8198428be21fce503324d8b1a6ad3ef5043cf9ac34a00a40753453b03816869112fb4295cbfbc758a47666133fdcafdd96f3fb5c2daa31f4eba4215d317c2b375f924b7390bd68c156dbf54ce83493f50ee8aa277ba6ed02880d0ebbb07815b96e
+e8302e75226b93920e52ab6f242b72810b241c5048082cfce7844c5864649b05c6c2402122b199061dbee27e1dd36563e719d7d3897c8fb89ecbd0fe2ffe4e8d0a1bccc2171b7eb30b19921faf6bf873bf239c98cbe50273f71fcffd9ea3d38b1b960d072f0d8f005fd00accfb45a697bce1cd0d903ee16b5d90c9557e8019
+cc33a5478ea54f59869e42f5272932c15e91d38aad908d80b5f3aa1f6411c15c4928f32015eab85b9e0f453241f5e85ab468986d1d529f49f194a9ee3d595f27984cc7d7ec3c2c304581e90aed20f4f099fa972fef65f75dca92f90014045704f728ffab80943a5539a2a8dbbe41e8b129125eb81f0064fce1ebd0e37a33b6
+29b111974caf65d12c96b255b63af0767fe939d564ca5e09508903af675696c683f4414c49ea4634aae487937a8b77c0c3610cb810ccadeff9206a2e74ddfe4466c172787ad69bf4ea353147723ab9dfe2fe458e6081c5d442945357b3887a1d61da48ba1db009ca0f98c9b7043822322a482c5cbcd627b8fc36720796a1ca
+15395876f9009e2d43df877f9905c0efa126b4926e8d3bdcf0a34e930c1b4bb051da7797fd627b234043d64b3c5741e5a4a396a405f1f0db51c9719be746ed76f95dd921f4e166b5a6b7a98685535f4bab5365882cd54c2a7ed3d6e8f0d8328dde26e6cd6affe97eac17b3f6fdca245cce3dc2571a7f79eb889c339b8bc536
+c7d676abd92998d84f6524baca177ba6ee9768aeb5c29536f61281fde6d8c1f381cdb291cd950f13fc59b5a5ac5f21b93e6dcc70f6e42102e2d304aa0b3145dbdb3b061453c6a07ff1333a4b1c997a6f77699393c0784f6340e4b80d0185de76cf5c7fb5a57d9e3d412a0fcad6c7e172c0a88c3acf619478c46c7510b537d1
+114c71393ff4f3ac306cdd60a3c59985a658fd40eb12b409b3d9c02dfcc7fb4a820fe7129ad82fa8e9e3e3d2972bae9ca1ee7fa09f6cd4b5dc16d99a12f3e37dfc51338af1020e64720b8692c648ed66bd8c2c97a476b5ad74f6da942c95c662d5666361c1bcbb9952052970253a8ca6586856647c8779fb68be40aa54cce1
+1173e5e11b1cb2d788bba809b3fe3c9254717140af47f1c70d06f65a4e410836a85238f8f296aa5a22223151721e65ecbf1b3bbbde39c716bf80936ca80e0967e4ffc8cef3bd6bfc879537ed5fbbd23c37977693d8ff383f36ed5a7395c79bf831784d63f18f08aad9933c5da9f9b20367bce078b2f70ddc949fa90df4a702
+01cf4e540286131b53befec008f63442e9a36f18f9ee8fc936f47c1fc0af66dbe306c3c9294f18cfb1ac87489808c8917ccd322ce78862bcb1a9e9d53054740b3390de5448e07189f195989ace1d4439b978d831ac1bddca934cb6b39a2b7d501ea51b05a8bf01512669bc0b8f9f2cb0fbc71058894a1dd054fc2a40e60e2b
+7eb9e2ac6bd906b303694a58b9c7b85598ab41d3a2a3bdd92e5f1f006858f96226986afa48c75fce2e31049fdbf66fc94eca52e7f67153c8746318469b3b523d53404b48353458fadd743aa78752e149aca3bbc23e34aecb1061d3968d066896426d4ce3440de3b0dd8e2c07fe7bd07a50586f596a1fa5f7d7b796ec6b6ad9
+2321c18820763719d4fa56bbd35f5eaf31bdab3f18441984d4bdd039dbe59474167935435e50baeb2aaa44c168f0f3872d4bcc38afc99a87dd7f2dd58ff7be453b7dfa318983cb420bf235b590439b9f5f52c2c2c84e47b11a0431a014c2f159ed770e9772fc2a307feb95f4636ba0de66958ddcd2b134f540b8578e76d73f
+45b9f24b38113ecf15d9cbf0458c90c222609573d2a1a00c38eab5c62a595e0a05a4412c384e6390e926ee16aafa80ee80e03f293eeb6f18866482a2407c3c5ebf7fb7a992d76177efd297ff8bb89fff41bc1c9b064e030a45749b1811795877985162ce316b8a9b320a94d935af83b2dec1a52bd64239b2f9b7cfb8258083
+97c1945d3c95390bec313bbe406f6b46cf74a5a384baecfa2b12cec10ae4af8da26c77faf0d9e6ae4de442c4a3ed36751111fd9dca5f38b95c8cb942b7ab1cbdc68d03cd6727f8337b918b57633a8c3c9fdbb96dd6cb3aec86a4cb3e6ffdfab52b03ceaab6a366e486a85e2c96610a960885900989b0647d4f3aa944e8bd0d
+69d63daa8a409375d8f752d4094e7ee1d02c2b2422fa7d6911b0ab46b02618f8f8c21e0e6bf6a2d414f4a25d5e23e8aea77eafa69e246436f3c9aafc6b5b341f3f6af922e5deadf8a9f45a3dd6830bdb2eecc299c1ff58582d6fc1693a2517d0a0f204adf2c0dea6d1fab1453ab212971d6696f11261b70082c488b2dc7057
+e6f313581b5cad0bf0985d4256cd30a85d172f26c0b1287844f716bb601f18da7ec50dc4bea5d5b3724f634a087a58d656e2550fa0dc709713448233a787610c57d0e77c70ff6a517c669dd38df90d8d25d661ce53638fc227ddbfbb7bfe14090ccbe886ec20920bff3d59323c9b752802cc8e40e0b61047f6e8befaf682e4
+9340b007012b2785d456d621cd0947636efd22189b85c20340432d57e20730bba1ea9e24ffcbcf9d33b0cc8fb719cb0ffd2f6da8c8bf0d5b67f1e07c740dc375c0b11a706d453977757805af5b89c0735110628a8f69c7c12f22d499ff3dc7d333a8355f8db4a94e828452a1e4d145b5daa1b0c3e7de56221c7713848f8592
+8adec3a4b3b29d499463b669202adbbe73318f0dbe808e99355d2b6e71d43287b3d8c9838ffcebb923978f638255bbcd70d984b964463413144dc59d7a7fc7519260922744ccd93f8176c16c5972483184277d56c42827ebb55e1c198c5b66ddf90c50d8e9e5a30151cc1b5952f8156e4890f4153538817742f8400d7c5e94
+222685e440fa64c8be9bbfcf562b8bf3cd350fa2d00a1f996dd197cf2ada35597bf04c6200c085775ecd391ce34f68d39564a319ef8b02fb4f270b88856cf17997792af773ccbbe429bd472d203c3622c922d19a7f5cc3f02d826b472838c733d8db9f3cc4e3ea22ad36e35d7dbf00e9da71a133c0c60ebed4a99bf49af445
+25545fa676cf9415c49e3ad5870cc40f74a7e2bb44e0d1941ccbdd4c4b03ac3163383f624d9f4d3a4cecaad34852afc93a67fdeffe29ac348332f0268fc113f80391cff84e924508a660931df301dfa094dd872504d2aa5b7d98a6e84fd4420a65682a440453ebf878bed8d7bc1555fafac512a77f4791dc2bce8c0ccf06e2
+bbf93ff51c7946724b47e66768ab813cb5c4bf38ac126a5a39569374ab485e3c46f8e7c03eba4f1ff1203fe7995e8df4b482bde8e2df88adfea0944634121dcfc44ea247dcd53503cdb57b379129a30d57e499fde8a6315632cc917db23dfe741630db2b9e15a8eb1374be91f698ef7e126f8ffbbd8ca859acb172cd35f7f0
+2a08f39f5d39417f8bd8a62443465ef186b8545ec6838eccaa956ed276d62b3bb1ae8a44d5a57e429d1f28c2d100f73f17fb97ed0641a19fe5ad131c6f5f4f05e1a5b3a1eb60ba7fe7921cfda00b7eade836bef345fc1ad896ffbbf16da7c3259fd9161c18dcd5db6c38443b48b3dd71dbbf6265a2d112ddb90efa1b1f497c
+bd4d4b93aa6c9c6b5badc6340799eb1fcfd04b98e495a01e375ea2e842f47dedb5424aad1e188ba1cc50bca92b816b6f666d5bbcd5791b8544098d45c3d648f03a867f705bb50ace4646c058230234fab94585b101d203e88329e89df0217b1f997b1c5f74600dfa3ed7aaed9a087e35bbdc610760c22df91145deed5d9d6a
+8278741094b247998d53550dd1580f220a9d55bbb1311fb0d35f8cd98220865f05f4e514a6c3fa0cfcc17af53385840c8ea9ccc45eeeb0d2228068df772433557f9191115c42617b3d3bf47a99a5838e151cab0fedb3f47b27d65cc50c68b6a3ffacca5ccbe7484eac9f90ac1915a2a2d1fe98f234e5891ec4e7f6df4f97c4
+9198eb6765f896ed68a453989f29e7d2d771a46d44d4811c82de954218f6ff434e06a851a1b838a6c13de0c5fafa67483d36dacf752354eaa756c30acce76503607a6385465e2a8c1faadcee4959d3060f3fa5881a6c6d73d8f5742f7e637a0d25e334d4ec53315665430642d79a2f96071e62198351a6184734479e4e14d6
+6aa935bf6d27a6453c47f00a37fc83cadec53366d6a13efcbd29c25f85540227bbe2f397f0f0bda2dea965755e2bab0bc35a36ce56ec0d06927c5945c23a416b50491ab5661b3e3308692369d605b954ba056abc22c3008f346310a81511140f1d100ea17bebe853c2aad908d50320fde954595ef9d9893ed7e4fb163ca2e5
+d6846d026827b8a9bc37a3a1669d0cb9226e63fff2cae3ee0c571abeb147f4230edbbf41772d35cc0e46b80212f45a23db0c63c172bee06e3eea8603033b3949ade75891f44f5543fc646f7fe3b094063cdee7ff9decff8ca1f16adc818abdaff24a6eb0b8bf41d6b8a5848ecfc923d20610efb6f4c57e08f34fe540b4e642
+a852df8c9a863af17f68ed3e47b78a59a52d1e1e048cb82db85dff7e1d32685e9b0b4c5085b66df5016446585af3e7bc87f3131995832367c4403a04eaf2b72c26bd676ebfcb3ff78c67bbc562bf6fe5e71f4df7787a5e6c05777fdcf7125a1e848b338aacd97e388344e09a2b5eb1e99efca830f39bc6d453dc590a85e955
+eda1d70cf1294af3c4d948db5a4e3de8324888353d8f8e5fc193abcc3725f6e2206fb522cbbe3940b4ea6ce2a803603503d749b5b2d4dde112940af184b35142b5aee8691ca80eb9d375d6c4849218889ffa04b8fcf9d828c42f4fd4cc98cac27d04b9f5b340c47cd2896989d58ac59a2dfd5f1fe0dfe000cb52219d1da308
+109553300546d20c3364b17d5f124601e31d5269123af8a37c3be83ca76d110f6cfebd51f331352233241df94d46cbe6e884ad7724b5da987dc82f6f3366b6d2b51d13f98a0b025c2c28e8aae2acede6c78f379206df705d7ba811ae6b9fc93f8a2c7eae596b7e93db1ef774b8855d1e3b5b9abc8d74ad22e0d3b180158d8d
+3fd70e04a426c14b4a0c9c354f08f1a280b641cb16f59800948bd6e2ed89a8d1e0c55231b41729437c57589602e7fddc3ef962f7250357b8d8b1df59cd1639a75d14c51506657fc739502eee276c56b5c9012043d38ac17893de11a32fa2f44ae4404710d0006fa76675360f8ca99980bf88ca306664b79a4b2ec8df968fdd
+48c92548317571c2b214de9f18de2a1c87263a4a74d75c5bd3db8cf32c63c4031808d6fbf9739ba38e2ae55b9c01f29aff821208a3bb575d9db63188d7c3aef23aee75190d519cdfc53152e6633e27a2e453152c6bee8b1643c3de1ad820cc37fba98bf5e38ac8d9b6148f97b8be9abf9518adf5fb2075f0ff26e721660784
+5a524fedf00dc69e863655f025e9acf77783a80f39ad5f35d00ac0126714251640c3ac6eb3d83bdda164788526e17eb93469fbfa292947ab01ae659d3c6280359277e060b3ea52f14380e2c64ebe9cc2457a818e9e2a75f8d2dfc093aeedd4f371acab7729440100994b541287ce556fdfcba8a22a089529e92d84dccddbad
+7cedd550b244bf7a779288d3cc83c5eacf5b4febe68131a8285454bd302348dbc10c6d55e21c6345124bacbe10f2c3f5c87bf783ac97e14aec056f94ae22640b5272dbfc7e047e36f1f6f04e49628eb42250f4fbf59bd2b3e7e0487c947c8a2649cc7ab00742cfbb9311e62113a763e1f097c699171daef1ebf75e3ea01a3e
+5519ebf0001e21d1a46be196ccb8b94a8929f9aacec6edcfd179d97250fe4b551b778af01de5c28c23b18a45c6eaf32390533ac5eca73a85903a6dbf878e2399de6b1b9b5966bdc07b11752e37fa66df0b7575ec024e3dd6062e95409f73068c6e2444d5d115b54827104c9c6e00cdc02d8dc158bc10fdfbcf7ebb71d26ef1
+05a67ce876f328aeed0c55835ef52a0889ca194f9a811c0cf330bee371795e25d6e900a5d0aee0bd561b0bf7dd46a7a39ca3aa3652435ee937340fae76166b062182a4632c8c2f05107b16f4906de07c1b225f56886f5eae6eec85cfd455dfd5b923d84712faee2d7eb1a44a615559735422d03c95e8c1c4f271ec2f0ad748
+0c44ee1d644a4244cc67d91b1c1a2d4a2303cc7ae4d9dde96af3abc8eb690fe2d0115c78676766513e468d49b3217cb32a53b6bd3b4c8f44c174574a505f3fb67b744fb93a5463912ec5eba7e3c0c7940d0ec64ffd70ab5bc9b30fd938b4d54979244abfe918d5f78d61c4f4e98095c9087d39bc8534b627a158f0471a6858
+25177cc0188206a64376cf1103683fe1dcd1966055548e4396b097a6826554b46e49d3fdffdc43513c9d6717dcfb030643c27bc6aedbc6efeca6182e59c9f76ddf74c24512d15a199e8e7e471918899c8e2a89a4b3287c6699788da6f7029c820914e96e1caf8aad254ea3b76bfdd4a562c237e4f4345afb0134eaa8f512b4
+2cb7d6f1dd801be8e938703131bbbcb7c10ca12fb5d6efd1422bc13abe9070a491cd0b5b599aaba5eead5cba8a43b7680bb067297c1b44da35b9a68b1bc70c58a0e5756e214f87be1419b8aa820c75bb38c9828ddab14205c598b99c79ac5ddfa631d07353e0b6f21a9104e3d1e05154cb2ee65775f9abeb59e026d115150c
+b11c4469f6239283f7e4cbc06de8cc942b9ea041805c34d36086ee93018864abf68e6b69a66949526d75ab054fc19fcf7527841e12f7b62d92ae56818fc7e1a62837b33b9b350b8db2b599bcd41c3e513aa7751f9c4e4db9e215b50b831f84abb27e8c64112ee952ebaecaf450b29c41bc4e4e107869b66856d6c4ffc7624e
+744a34d47a3d13d339a671ddcbcb1742423a1cf2b2d66b0f2bd8c115b54573b9ef705d5d683ef8856b3af26ed035ca9e50e460c8cf4453ab558b5940c6fade3b3bc7eccf5c35057e6cce69e6fd52bcf7d6ee48501213f266a9da4297edf7fa971fd342b4ec0e15bdf25205b746a5f044482a5390ec635b14e8c63d36d64c96
+6f29401768f30853ebf878bed8d7bc2568714b7e489fe03429481644e0f94eef0a5372378a60f8c3bc6b684783df4fb0d97f510d1b43ef0f04d03e02e8b2c0413b00b827b319a0e3436a0a3fa061217625d0bbcaaa0f9cfb73395db8fe305b9b6bd1d342bc89841b84fc14e76d31f3bbfba6346be7533420f29a56ed41b2f2
+799149d756916fe2f575dabbda2a493ffc07996d9d8978aacf82df84e31ad1d6d5ec0aa2004aa7e5378b1402fea3666e5231517b4620324c25e008fa0c85531e21e4d275a4ebf1f2c589e869f3eb4196c25c47a4c6668c1d7ae5717f7389ab1f7bc4a6c6059058f7ff1f83668d61a48429d3bd77cbe284fd083eb8ff37ceee
+42795a08c7e4f959de9de18eef332655d405f8d9e4f41819e10c522283c95e1437b293d92ae6f9092e51982bfb5fb8f64d585a32fb7ae55e44e8facbb2d5fc59a0c35ca6b7c8aa086fd0cc2f307de69832997212f0b812c21b43f69557afdfceebb12727d33b818cba79430ea967e45b92d647b8cfcd369100963ff1d08857
+2983d8cb92a91d8ba5444dd746de45fc736d3c5f976a5265af3df003842b793371635ef55f498d97c3db8a1b681616f7df308d2a18e3452b7669b43ca02d08755813c2e94371e82c2a918be917bcaf3babf119429798510d902efd2ac64fb0316f4ec6ed5296d815b980b914b65d472141a60ddce3d80699ec8b8107a296e9
+a195be9ab35827f635115159373f916f5fa3fa0f62c4067b5c2389a51283bdc04a805660a857a450b8696885b152835c0ce585c26f96b905e33f623637824ca8dd01b0e8c3feaee10c7e6d46c2993d5a8ea4cfcf0cd97c3e500ae6b6997d33d8a0a96450493c8d2b49461192d472fc15b1ff2752629fd04cba6d23a27062bd
+7df42ba7f529957ff25665cbfb3335f61a00e60f8c261c819742396096f91b8ca6b50bd6489174a1551d7be277da24a982a85d2295b756aac2ba7876f183e3f00b4f53f8fd3f0117d44ca3a1a027f51cd44517899a2b4ae471bd09b03b82c9b9b64ef19e1d05887cd52121fbada29c24213336fbb54cc2ac1b624414eb540c
+e6102bd6dd82b52ce62ea547d62478b7865c2febc4f4783ba8d504705c5eccfe43fee04f49cc6602e3d71045326bdfa44ed2412b242e4115793934072ce6b36fbd12ef46e0ff96142eca6e57f707760059d5cc7b93a78d9b6ec2c91259995ca847c60e02a7698b4df8bb55d8529e1e345aaad22b23521d720cdbac6557b66c
+e0e3f9a139fc3237531eef771edc04dbd7779575efc7b6d5e569eb438aac79d3cac32a76073c843024988344ad7b9200c78e04a4e1817383cc0eb15eaae8b60992d62caecee9d51a04c90fb5c0e50ea09e836b3d6f92f5016492a8b14450d65e012d5e25701c3a204f72df59ff1b1919665cb744ff9cc14334579b5d2a2a4a
+d311c739dc0a3b9bbdb8e29e0ceeccfd63b156999734261131a18227aa4d9190f69e7e74cf9dae95596d691dcff8762e7817101eff0a03dfab9da89936d76335054b9b2e54e30730ac67f6b6c8dd47d2db1719e888f85a1979ccdaf5ebd9484b819bbc87dd983e8211813ec26e8f33bb846876b5a0fb09f6a0a96e893b9124
+085cde323272271840c235ff6e411027b7b73ec957428397d8e28ef39e740145ec57ffbc41f3f29c36d534ad02187963af2e69944be7f8ac09fcd848481c4e1208e5d50236e32de0c4f2b0e1b2255995e2d1d139c345b2cf99ea50a2498372788985b883ce35f61499b67dc68589b8dd05ce01cfe85fa1eed553028bf47e2f
+a36efc6da18dc2aff683da8fb46d4b41ddad477e446cb364a3aac376139814fb6beca17e9006ca7a0e639e314313e65eb48eda5a1fa0c1c2a3a9c951cc7429b9b7c0c84501f349db92ca1ecd3b8d8f784420ab18f5557747e428786ec8b26f5ea5d9f77357fbb7ad468a8f5d617807b616d1d3a5e56ed1dc7d75737e3198fd
+d0ff43f6f6deb433b824b31172fc1b19a04e9d7775d2fa27df5d0b153ab6f4b059563290edeaae5097a1b1a43f252493af8b468dca77789590b6c60e4afd4a21040faaab9c629b508a340d9c71095632d639d3bb7682c438c4ba07730868e3db29ad74cdeb15029a36c02f24ca41009c16e3e81533387afb3f509cea9da457
+a825171becd2526dde3e8875cc7e9b9a347f12654ee7923b2e858791928b69e700b48663f447ba8868b3232b2a9840078a43ddb6406e1f9d6754b8eadc5405462fdd487eaacbb16abbd959c66f83c93dbac0ab44ba08bfddb12bf01c7f992026b13f75bec85c720790aaf43b0623cfacb180af53ff447daf44168020c0ac67
+419e20a8b345e23c0ce39fdf4c3a37406b8b31df8b2027b78ec38dc4b622f1f54206e32a31db28a585585c23526cfe862f7a6931c66cf62cbafa61e27e21fb398f3fe6ab25fbeebaa49d78a2723eb07acd09c38d7b528a85e94829a92acea66caadee39ec6b038b4deed794cfc45ac644f28ce17877f840977fbea676af84a
+fafb81b533092bccb82a13885287f5ce670699081c3b4b87e3e353c1f6d32b00f4a5308cbda4a85664c1c8f2f6d354ec13db2e5d6b1d0a28885cf6c30795d1a126e090344147447fd2ab21abdcad7a6cdc4a1b97a5d90f5542a2bfda0db44edfd195c740678a70d510b456fce402876e3764a3abd52cc5752c05c7900479cd
+0967e5706162c5cab7cc32f13c3b555b67511d3624db4163588607955a85143fc64213da1b9b70919cc53ca737862cf80c87b94618e7bc1c96df314d43b796c66921865609be4a026177e545fdb5e3c1478e3d5306572d34e7a289bb1099ca1ded68661aa96a680d8677b62e32943d8bb7dec73aadd2fbcd822f923ede9043
+436414383251ebeab9b973c231050487fd9eb28eb535967f7d50edf1c0efc093c40ce0ece2c9cfd0b77651f22ecde3bda6e3a94d745798649c708dd50727f270e5b1365ec1ba1be3bc4a9080e37527579e6309887d6e6ed495443ea9a7d91dc590750ade3a135d36e28721035bd94dfc7c547b01c44d2bca220a4f50a63019
+9b7b6bc65748961f745d8d93d094d25798a2ed3fe0bf08def17274d8b08802c6d6422a31bb1b99f212d51db7a0d05ff6eadd7a3fa1bb59d3c5491f449cf271e697962427cc60d1fa55e79bb64abc88ad68d82fc14fce7133a15dea32b45c0fa96e61bcf3e394e140f116d705066bab05c70c2a98d6432d1250a1a649941d02
+92fa3c7ef8367bdac8d92bdc1ba8d91c95f4ea46461610770e56f3d7d3562fbccb35e21855142fd6f5da8e0918e412d53d51c7fabdcd21eae9749f0dba1cba266be0600ae99c593bece16d9a2bc024929dc84cd385676bb7e7b0f34a826e53caacca9091f5155e7460a3d4139cc155ed3c8c4856a41a198b17918a94099058
+588b02f4eddb515e50e86450bcddce9cec3109e22186e92c02dd15d7c1e41f3b3596ecf642163c71fe885446cd6525dc43569b0c218b4a1549e288a1ccb847f79ff6d4fdb8469d9ac6ebe1f6f8aa32b5a6ea9638c42bdf0e9ebddc8f29f96f1c5407a12304bff65d96241b9d384d8bfa5ff8df7d067bbf90d8083e3e13eb8c
+e3c19535c2a9a2e4415a27685372054bcb0f00528125ebf5cffdd1b316785815f7f678803ddee69f7c0119e6978927a98fde01fe6d6e5dd315f1816b312de0b96121ab6d43bacbb496b6df8d99923e1dba7d0718e60a1583264e90357ada3978e983906aa9e0dcc25fca1086d5106ded9201b9d3e19f00d5e6ed7743baf095
+12068c2a6b91ed91fd4fed83df00810aef1b4d7b8b80d4d328d0a7b7e8e55a51c009b8953c0658be094d66c98f9a7bb192b27c285c186bddf558a31d73c7f3f383631f10981b02f5c1c0433ae4a9b2864368cb6bebf1c12cb22219daa695f63999e81ba0a19be77ab5eb6ee94f41c38731ba8f3bbb35a2d2e7f299c6ff46d3
+43428d7b9a9da075f019de2b9d8e37d6f9b337fa2d9ba182d1cc53e832b8bc60ebfe3f2673701699b16c81a4c6ee9b5248437e441d79164e4c99d2453c004b91510a9020ec3f12eaed811fb67ae4c3ae4b9e29970851d91d73e884286622c591665225b83991f9e4b0bdd9d87332c1a2f48c749898556491dd4b3b11ab0b59
+8c56e3d586389d64daecd63675e77485e33e89f8cbaa856e3742383fd7a301f237c43f6af9f360938eb3f9376f5cb6e00502d6b9125ce9a21c6ed87640273e91bea63b522e23d3c6e557a69ef65ef0735eefb88d786b87164b303b71d34b9a78242de1605054c8aaa5295b450183f63d852f5192289dca6c55254b063ddadd
+4923c1cbb127df60f3029909230a77538919d858b24cd6be486a549e20e627a18d3b926004cd0162e683cbaaeb682ffaf45f60530fbfd1dc228ff8265eb46d728eef891a2dce2eb37e1724a9c41d0f5bf378ab40b7437def988c068f6155b1c98ad1d05f07f61ed94f1daadf2ddcbddde4d2579d9027776d828733dbdf6f52
+b52ad8d6ee508c2662113577d320781424c5483d9c8025bbec08752fd22b131da887f9d1e3566552e0ce4234f06982302ca02e425e6df8e44538a071c90a6f850284bf6ae6275f58dacbe5241f90e611f2a51571dec7225b3fb6616b78f84ed448b8dd309e85ee13aae8d7c64857aeaed97affe2e1da461077b1fcad237cc2
+0302ca6379ede96e9817a6116f6953f92ab4916fcbe33caeaa5ebd7a6bbc6761c1712679755647f0598daa1726b41cccba179ac2138e712cde448b5e67f0d2c72ffd2b6d631bee0396e6323627e66352290d8ff1e85f29a00f412a16d826a09be2ff8f7c06e4d7ba61ba51c67b0d03baa07529e7a2b991d1c24c31417a3266
+52f6508de6c17d3b45c55408bed0946e83632b95a42af2dd4c9d5b63e58154f5f7093fcff7b9f2a1bf0c300828b340f770e523bdc9db94aa7ce54521ec57832e0f199b27cea1716cec165ef2a639c2d0067daf7205204a35da5a4324d74efc53b5c0ee17ce50dc7ef4d3b50e4f4d309a369a6186aefcf3bfc8afba22f76f83
+b17bad6ee5ae81bbc246e147a65a14898485df43f48c83d439b34b2b23b6af7e5d28794f25cc8f9faf54d7d9ef395e465260f5cbdb2ad4c9f3186c605bbba5f0cfdf8b99138a6663293a358c39915512cda76ceb45880a9086d02bf3333889c38693e62aeba70a87836699448b6a55ae6d813736584039936b6103a5cd4392
+949ef8f4852d3b5baceb81fd7b598d96389208ed1630efd2e973cfde145fb08bc2d83cb7801f21cba988c5e564bb77ed0b7f2ce08f18e59edbd482b02e9a14a86c02ce1fc473ba28b6813be843e309307a3216a04b3d5d99ba0f7528f96b85159cf7c85f53dbfafe9fe9f5dd5029fac48f3687b7540ac30e101a313f0eaa09
+4b3163f7a612f229dd12d58a1d8ca3b281f8b1b806a3455979294df6801e1a941bb7c14f381902f39c88d2f93c17eb51cbea2d416e26e9af99b589552004c5267ded0c4dd64a8f827a011794ddfe58bebb0d37077eb333dd840f34afba2811ed5c828d64b7eef00064f0ee507092cf7809066338277a9fe3d38b61fbd9a6e0
+afd2fd692cee830f13cce21a41f1dec1c4cc904e14a8968221d463a2ba2aafa3a7a2a8be208d741002d8fc074022cc4237df4fa0cf0e4fec7e407e96dd1ebd2194a1db2857536000d6a2169ecc6300175919966f3f7194b926de9d67cb05b25c8f107c7e536f8c862a8530ac3d36101f957f394661c9b5a4b9d03803136134
+9bda9da163effc8f3dace76348961fdc32db2c858270982e1bf2d828d01306dbd35be662a58fd8e13db4d18d0641bb84c778f2f85e3c20cc35129b34fb0837ad0590c073a6f201ca67e7ced31630c1257b270f14b931459a5a57b000752384c94eda5e0565586b6d159e26e04727ba63f92de73d5e7baf6d9db367c5d41984
+7777167389c2f5b9597409a11581d5d728c6ac35d81be3a4c43697a06e59da2085f1d12ae2c3c5c5c41bf33373d94637978b639f4507de729cf9579afaa4fff01605d4adca0db3848ded041fa9bca0fe281126005c711c9ed6ff10328854ad65f60aee35aefd2503a457a1658d329ced870907c719252aed451347ecbca138
+c6f3309c63786c664096b089bc409d0ddde101a17e424a0dbe03fed41610d763e10389ef90eb4f63efe9fba574ef15608df56545b394539dd8f7b64a7e3d3947e46fe4fe822e3785b2d1c6f4219f8fd001cd24dc83da4dcbbe4f53103fa53f5064d98995b934c5f77dfee71f00d58e0fea3b0b24f5e92f099ff563a0b2c283
+2e3081ffca49bffe55021d85582420593dcb19b3bb410564a58b0a8e1a3d37f44aca0fe62534e44b4240e59c432c56daa3222763a63e5273040996f7c41146988713351c60c9da01b51cfd21a4967abd1b54c48aa22a02a931545d5bbe3465e6a9c673b10b6517a6e290a41b448137fea8edc0d880ea0badcd30a66339bba0
+dbdb2ed85ef6e4427ecec897c6a4fbcf15b4d830d07b102089e16875b7fc732b0e1be352f9612f2f6ebf85c022cd32656939812e75b6009834bd62d1645d86199965651fe06083bd482d075cb2660f82933fd0fff54dce09310db2af4efda90dbb23ef2bfefba6235339d6b275b7c59a44369c22e3d2531d36e13dccd25035
+610e58f770251a28eb69782f978231de41d039169e413158693778d412254f060d99356fa3293792e9f980ad8ec41f095367ae9859f49e45d7ac997c1f554e86f69f0f3b1de14681fe9a5738bee4379b782616f9613ace00cd40e5627de3c9c1edd88e037bb2f36bec76701f630deb8cf306b219de304524ee4df12772a4ae
+0450419513e76d03582fa48070da3aeff7f42bfbe07bf2dfc27aa41e1a65e5b3a78a9f2178d71914fb3330f3edddd3c23508d0f4dfa702520a31b355b10c6481c5d910a198006229ffac0f908638cec552c4812302082e110d3a2fdbae4bfb4e90215100bb3aee1a9b9f565855263ec4525bc1c85c6b9ea59884a7133ddf30
+17a0ce9899abdb97221c3e4c5cf4ad095a718c670622173d7c8f50ea6074249bda5e9e0a3352a5ea80f2305fac989c8c08642a998b0be5b303ae5945d8aeb9027f71d5109c20d4c9ff45da2c3f7b81ee5f7b957e7a6d46d91b5e7fde35a94cb3abb516ea3cca205389006506b1c2d35b8c85d0f037a53bf392f9eb75593e82
+3d87c03e04fec3c7f97ffb6c3d5f15426c7afa2de1f85cd5d27a59881a6fc2c0b7193824e830aa74f570d8cb1db8604fd4cf8bb01cda9a2c5b9602d1ee3b44b4863bf60905b327f7b448a739ead0c34f6d2f01be5361464c4e258e1cd4d86fb4646da04baa26f4c2fd0701986f6b26160fc83d255b852d7afa6f9409213a27
+1d5adb46efca6deb92140c4ff36765537d48d4270de75287fd8b4728b34269ba55d99582da3e9dcfabf13a2c3ab3ef472b221d462c7bce73afcd63dcc25bfbcf2f8ce7044cca0a0c780b0835d43c0d1d2636e3a1255415bfe25fd0189dc466d9bd0b70067b5fcfd2f8a100ded7fa3aea04a7e3472932144697b3251c819705
+2631180e2e1b4993a433ae2ef1780237ea6b931761abeac9d7534a047d9149f771484c59e94b8bb037ee8bc0de61f7334a874bbfa8c6e407e0dca7871c279ee7d2aba18cd31fa5f45e34be401a2b4df5ad1fbf280edd1c868f1c92ec7f3884aeec3dd5e2b8a6d1ec42f238f4798ecfcbd1af39b0d4a49516848449a7c764eb
+5f4405bb49f60d6ff76173e75c27fd84cebc63d2187f29d758718c8167b05cb11faff21d79db6aca0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
+%%EndFont
+setpacking
+%AI3_EndRider
+[
+39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis
+/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft
+/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark
+/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar
+168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring
+/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla
+/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave
+/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute
+/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde
+/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave
+/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute
+/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex
+/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute
+/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
+/udieresis/yacute/thorn/ydieresis
+TE
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Myriad-Roman Myriad-Roman
+[/_Myriad-Roman/Myriad-Roman 0 0 1 TZ
%AI3_EndEncoding AdobeType
+%AI55J_Tsume: None
+%AI3_BeginEncoding: _Times-Italic Times-Italic
+[/_Times-Italic/Times-Italic 0 0 1 TZ
%AI3_EndEncoding AdobeType
+7 Bn
+%AI5_BeginGradient: (Unnamed gradient)
+(Unnamed gradient) 1 2 Bd
+[
+0
+0
+0
+0
+1
+1
+1
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 0 1 1 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 3)
+(Unnamed gradient 3) 1 2 Bd
+[
+0
+0
+0
+0
+1
+1
+1
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 0 1 1 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 4)
+(Unnamed gradient 4) 1 2 Bd
+[
+0
+0
+0
+0
+1
+1
+1
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 0 1 1 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 5)
+(Unnamed gradient 5) 1 2 Bd
+[
+0
+0
+0
+0
+1
+1
+1
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 0 1 1 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 6)
+(Unnamed gradient 6) 1 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+1 0 50 0 %_Bs
+0 0 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 7)
+(Unnamed gradient 7) 1 2 Bd
+[
+0
+0
+0
+0
+1
+1
+1
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 0 1 1 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 8)
+(Unnamed gradient 8) 1 2 Bd
+[
+0
+0
+0
+0
+1
+1
+1
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 0 1 1 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_Begin_NonPrinting
+Np
+9 Bn
+%AI5_BeginGradient: (Black, White Radial)
+(Black, White Radial) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 50 0 %_Bs
+0 0 0 1 0 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Nova)
+(Nova) 1 3 Bd
+[
+<
+08070707060606050504030303030303030404050506060606070707070707070707070707070706
+06060505040403030202020202020304040405050606060606070707070707070707070707060606
+06050504040404040404040404050505050606060607070707070707070707070707070606060606
+05050505050505050505050505050505060606060606070707070707070707070707070706060606
+06060505050505050505050505050505050505050505060606060606060707070707070707070707
+07070706060606060606060505050505050404040404040404040404040404040404040505050505
+05050506060606060606060606060606060606060606060606060606060606060606060606060606
+06060606060606060606060606050505050505050505050505050505050505050504040404040404
+04040404040404040404040404040404040404040404040404040404040303030303030303030303
+0303030303030303
+>
+<
+0505060607070808090A0A0B0C0C0D0E0F0F10111212131415161718191A1A1B1C1D1E1F20212223
+24252728292A2B2D2E2F2F30313233343435363738393A3A3A3B3C3D3E3F40414243444545464849
+4A4B4C4D4E4F4F50515254555656565758595A5B5C5D5D5E5F6061626363646566676869696A6B6D
+6E6F707071727374757576777879797A7B7C7D7E7E7F8081828283848586868788898A8A8B8C8D8D
+8E8F909191929394949596979798999A9A9B9C9D9D9E9FA0A0A1A2A4A4A5A6A7A7A8A9A9AAABACAC
+ADAEAEAFB0B0B1B2B3B3B4B5B5B6B7B7B8B9B9BABBBBBCBDBDBEBFBFC0C1C1C2C3C3C4C5C5C6C6C8
+C9C9CACBCBCDCDCECFCFD0D0D1D2D2D4D4D5D6D6D7D7D8D9D9DADADBDBDDDDDEDFDFE0E0E1E1E2E2
+E3E3E4E4E4E5E5E6E6E7E7E8E8E9E9EAEAEAEAEBEBEBECECEDEDEDEDEEEEEFEFEFEFEFF0F0F0F0F0
+F1F1F1F1F1F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5
+F5F5F5F5F5F5F5F5
+>
+0.9137
+0
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E2E1E0DFDEDDDCDBDAD9
+D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C6C5C4C3C2C2C1C0BFBEBDBCBBBAB9B8B7B7B6B5B4
+B3B2B1B0AFAEAEADACABAAA9A8A7A7A6A5A4A3A2A1A0A09F9E9D9C9B9A9A99989796959494939291
+908F8E8E8D8C8B8A898988878685858483828180807F7E7D7C7C7B7A797878777675747473727171
+706F6E6D6D6C6B6A6A696867676665646463626161605F5E5E5D5C5B5B5A59585857565655545353
+525151504F4F4E4D4C4C4B4A4A4948484746464544444342424140403F3E3E3D3C3C3B3A3A393938
+373736353534343332323131302F2F2E2E2D2C2C2B2B2A2929282827272626252424232322222121
+20201F1E1E1D1D1C1C1B1B1A1A191918181717161616151514141313121211111110100F0F0E0E0E
+0D0D0C0C0C0B0B0A0A0A090909080808070707060606050505040404040303030302020202010101
+0101010000000000
+>
+0
+4 %_Br
+<
+030404050606070809090A0B0C0D0D0E0F10101112131314151616171819191A1B1C1C1D1E1E1F20
+20212223232425252627272829292A2B2B2C2D2D2E2F2F303131323333343535363637383839393A
+3A3B3B3C3C3D3E3E3F3F404041414242434344444545464647494A4C4E5051545658595B5E606163
+6668696B6D707173747677797A7C7D7F8182848587888A8C8D8F9092949597989A9B9C9E9FA0A2A3
+A4A5A7A8A9ABACADAEB0B1B2B3B5B6B7B9BABBBDBEBF
+>
+<
+F5F5F5F4F4F3F3F3F2F2F1F1F1F0F0F0EFEFEFEFEEEEEEEEEDEDEDEDEDEDECECECECECECECECECEC
+ECECECECEDEDEDEEEEEEEFEFF0F0F0F1F1F2F3F3F4F4F5F5F6F6F7F7F8F8F9F9FAFAFAFAFAF8F8F7
+F7F6F6F5F5F4F3F3F2F2F2F1F1F1F0F0EFEFEFEFEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC
+ECECEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7
+E7E7E7E7E7E7E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6
+>
+<
+E9E9E9E9EAEAEAEAEBEBECECECECECEBEAE9E9E7E6E4E4E2E1DFDFDDDBDBD9D7D4D4D2D0CDCDCBC8
+C6C6C4C2C0BFBDBBB9B9B7B4B4B2B0ADADABA8A6A5A3A09E9D9B98969593908E8D8B888686848281
+7F7D7B7B78757373706E6B6B68656362605D5A5A575452514F4D4D4C4B4949484645454443424241
+3F3E3E3D3C3B3B3A383737353434333130302F2E2C2D2B2A29292827262625242222211F1F1D1C1A
+1A18171515131210100F0D0C0B0A0807080707070707
+>
+<
+00000000010101010101010101020202020202020303030303030404040404040505050505050606
+060707070808080909090A0A0B0B0B0C0C0D0D0D0E0E0F0F10101111111212131314141516161718
+18191A1A1B1C1C1D1E1F202021222323242526262728292A2A292A282726262524232322201F1F1E
+1D1C1C1B191818171716161515151413121211100F0F0E0D0C0C0B0A090908080808070707070606
+06060505050404030403030202010101010101010101
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A
+>
+<
+00000000000101010101010101010202020202020202020303030303030303030404040404040404
+04050505050505050505060606060606060606070707070707070707080808080808080808090909
+0909090909090A0A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0D0D0D0D0D0D
+0D0D0D0E0E0E0E0E0E0E0E0E0F0F0F0F0F0F0F0F0F10101010101010101011111111111111111112
+12121212121212121313131313131313131414141414
+>
+<
+000101020304040506070708090A0A0B0C0D0D0E0F10101112131314151516171818191A1B1B1C1D
+1E1E1F20212122232424252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3A
+3B3C3D3D3E3F40404142434344454646474849494A4B4C4C4D4E4E4F505151525354545556575758
+595A5A5B5C5D5D5E5F60606162626364656566676868696A6B6B6C6D6E6E6F707171727373747576
+76777879797A7B7C7C7D7E7F7F808182828384858586
+>
+4 %_Br
+[
+0.0314 0.0196 0.9137 0 1 1 0 2 38.2022 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 75.2809 %_Bs
+0.749 0.902 0.0275 0.0039 0.2902 0.0784 0.5255 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (RGB Rainbow)
+(RGB Rainbow) 0 6 Bd
+[
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+[
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Steel Bar II)
+(Steel Bar II) 0 3 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+0
+0
+0
+<
+FFFDFBF9F7F6F4F2F0ECE8E4E0DBD6D0CAC7C5C2BFBCB9B7B4B1AFACAAA7A5A3A09E9C9A97959391
+8F8D8B89878583817F7D7C7A7876757371706E6C6B696866656362605F5D5C5B5958575654535250
+4F4E4D4C4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827
+272625242323222120201F1E1D1D1C1B1B1A1A191918171716161515141313121211111110100F0F
+0F0E0E0D0D0D0C0C0B0B0B0A0A0A0A09090909080808070707070606060605050505050504040404
+04040403030303030302020202020202020202020101010101010101010101010100000000000000
+00000000000000000000000000000000
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 40.45 %_Bs
+0 0 0 1 0 0 0 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Sunrise)
+(Sunrise) 0 6 Bd
+[
+<
+EEEDEDEDECECECECECECECECEDEDEDEDEEEEEEEFEFF0F0F1F1F2F2F2F3F3F4F4F4F5F5F5F6F6F6F7
+F7F7F7F7F5F4F2F1F0EFEDEDECEAEAE9E8E7E7E6E6E5E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4
+E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E5E5E4E4E4E4E4E4E3E3E3E2E1E1E0E0DFDEDEDDDC
+DCDBDADAD9D8D7D7D6D5D5D4D3D3D2D2D2D2D2D2D1D1D1D1D1D1D0D1D1D0D1D1D1D1
+>
+<
+35343332312F2E2C2B2928262422211F1D1B1917151311100F0E0D0C0B0A09080807060505040303
+02010100000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+1
+<
+131211100F0F0E0D0C0C0B0B0A090908070706050504040303030302020202020101010101010100
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000
+>
+<
+00000101010202020303030404040505050606060707070808080909090A0A0A0B0B0B0C0C0C0D0D
+0D0E0E0E0F0F0F1010101111111212121313131414141515151616161717171818181919191A1A1A
+1B1B1B1C1C1C1D1D1D1E1E1E1F1F1F20202021212122222223232324242425252526262627272728
+28282929292A2A2A2B2B2B2C2C2C2D2D2D2E2E2E2F2F2F3030303131313232323333
+>
+<
+666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D
+8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5
+B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDD
+DEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+080809090A0A0A0B0C0C0D0D0E0E0F10101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F4041424344454648484A4B4C4D4E4F
+505152535455565758595A5A5C5D5E5F5F616163636466666868696B6B6D6D6E6F70717273747576
+7778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E
+9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C5C5C7
+C8C9CACBCDCDCED0D0D2D3D3D5D5D7D7D8D9DADBDCDCDDDEDFE0E0E1E2E3E3E4E4E5E6E6E7E7E8E8
+E9E9EAEAEAEBEBEBECECECECEDEDEDEE
+>
+<
+05050506060606060706070707070708080808080808080808080908090809090909090909090909
+090909090909090909080909090909090A0A0A0A0A0A0A0A0A0A0B0A0B0A0B0B0B0B0B0B0C0B0C0B
+0C0C0C0C0C0D0D0D0D0D0E0E0E0E0E0F0F0F100F1010101110111211121112131213121313131313
+13141314131414141414141514141414151414141515151515161616161617171717171818181918
+191A191A191A1B1A1B1A1B1C1B1C1C1C1D1D1D1D1E1E1E1F1E1F201F201F20212021212122212221
+2222222221222322222222232222222223222222222322232223242425242627262727282A292A2A
+2B2D2C2E2D2F30303131323433353435
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEBEBEBECECEDEDEDEEEEEFEFF0F0F1F2F2F3F3F4F5F5F6F7
+F8F9F9FAFAFBFCFCFCFCFCFBFBFAFAF9F9F9F8F8F7F7F7F6F6F6F5F5F5F5F5F4F4F4F4F4F3F3F3F3
+F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F6F6F6F7F7F8F8F8F9F9F9FAFAFAFAFAFBFBFBFB
+FBFBFCFCFCFCFDFDFDFDFDFEFEFEFEFEFFFFFFFFFEFEFEFDFDFDFDFDFCFCFCFCFCFCFCFBFBFBFBFC
+FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000001010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010202020202020202020202020202
+02020202020203030303030303030303030303030303030303030303030304040404040404040404
+04040404040404040404040504050405050505050505050505050505050505060505050606060606
+06070607070707070707070808080808080808080808080909090A090A0A0A0B0B0B0B0B0C0C0C0C
+0D0D0D0E0E0E0F0F0F0F101111121213
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFEFDFDFCFBFBFAFAF9F8F8F7F7F6F5F5F4F4F3F2F2F1F1F0EFEFEEEEEDECECEBEBEAE9E9E8E8
+E7E6E6E5E5E4E3E3E2E2E1E0E0DFDFDEDDDDDCDCDBDADAD9D9D8D7D7D6D6D5D4D4D3D3D2D1D1D0D0
+CFCECECDCDCCCBCBCACAC9C8C8C7C7C6C5C5C4C4C3C2C2C1C1C0BFBFBEBEBDBCBCBBBBBAB9B9B8B8
+B7B6B6B5B5B4B3B3B2B2B1B0B0AFAFAEADADACACABAAAAA9A9A8A7A7A6A6A5A4A4A3A3A2A1A1A0A0
+9F9E9E9D9D9C9B9B9A9A999898979796959594949392929191908F8F8E8E8D8C8C8B8B8A89898888
+878686858584838382828180807F7F7E7D7D7C7C7B7A7A7979787777767675747473737271717070
+6F6E6E6D6D6C6B6B6A6A696868676766
+>
+0
+4 %_Br
+<
+07070707070707070606060605050504040404040404040405050606060607070707070707070707
+07060606060505040404030202020203030404050506060607070707070707070707070707060606
+06050504040303030303030304050506060607070708
+>
+<
+64636261605F5E5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C
+3B3A3A393837363534343331302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413
+121211100F0F0E0D0C0C0B0A0A090808070706060505
+>
+<
+F0F0F1F1F1F1F2F2F2F3F3F3F4F4F5F5F5F6F6F6F7F7F8F8F8F7F7F7F6F6F6F6F5F5F5F5F4F4F4F4
+F3F3F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDECECECECECEBEBEBEBEAEAEA
+E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9
+>
+<
+01010101010101010100000000000000000000000000000000010101010101010101010101010101
+01010101010000000000000000000000000000000000010101010101010101010101010100000000
+00000000000000000000000000000000000000000000
+>
+1
+<
+999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0
+C1C2C3C4C5C6C7C8C9CACBCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9
+EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+E4E5E5E6E7E7E8E9EAEAEBECEBEBEBEBEAEAEAE9E9E8E8E7E7E6E5E5E4E3E3E2E1E0DFDFDEDDDCDB
+DADAD8D7D6D5D4D3D2D1D0CFCFCECDCCCBCBCAC9C8C7C6C5C4C3C2C1C0BFBEBEBDBCBAB9B8B7B6B5
+B3B2B1AFAEADACABAAA9A9A7A6A5A4A3A2A19F9E9D9C9B9998979796949392908F8E8D8B8A898887
+878584838281807F7E7C7B7A7A79787675747371706F6F6D6C6B696867666563636261605F5D5C5B
+5B5A5957565554525151504F4D4C4B4949484746454443424241403F3E3D3D3C3B3A393838383736
+3635343434333232313130302F2E2E2E2D2C2C2C2B2A292929282727262625242423232221212120
+1F1E1E1E1D1C1B1B1B1A19191818181716151515141313121212111010100F0F0E0E0E0D0D0D0C0B
+0B0B0A0A0A0A0909090808080808080700
+>
+<
+2323222221212120201F1F1F1F1F1E1E1E1E1E1F1F1F1F1F1F1F1F1F1F2020202020212121212222
+22222323232424242525252525252626262626262626262627272727272728282828282829292929
+2A2A2A2A2B2B2B2B2C2C2C2C2C2C2D2D2D2D2E2E2E2E2F2F2F2F2F30303030313131313132323232
+32333333333434343535353535363636363737373738383838393939393A3A3A3A3A3B3B3B3B3C3C
+3C3C3D3D3D3D3E3E3E3E3F3F3F404040404041414242424343434344444545454546464747474849
+494A4A4A4B4B4C4D4D4D4E4E4F4F4F50505151515252535353535454555555565657575758585859
+595A5A5A5A5B5B5B5C5C5C5C5D5D5D5E5E5E5E5F5F60606060606061616161616162626262626262
+6263636363636363636464646464646400
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101010202020202030303030303030404040404040505
+05050505060606060607070707070808080809090909090A0A0A0A0B0B0B0B0C0C0C0C0D0D0D0D0D
+0D0E0E0E0E0E0E0F0F0F0F0F0F0F1010101010111111111111121212121213131313131313141414
+14141415151515151515161616161616161717171717171616161616161616161616161515151414
+131312121211111010100F0F0E0E0E0E0D0D0C0C0C0C0B0B0B0B0A0A090909090808080807070707
+06060606050505050404040404030303030303020202020202020101010101010101010101010101
+01010101010101010101010101010101FF
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+2828292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F40414243444545464748494A4B4C4D
+4E4F50515253545556575758595A5B5C5D5E5F60616263646566666768696A6B6C6D6E6F70717273
+737475767778797A7B7C7D7E7E7F80818283848586878788898A8B8C8D8E8F909091929394959697
+9798999A9B9C9D9E9F9FA0A1A2A3A4A5A5A6A7A8A9AAABACACADAEAFB0B1B1B2B3B4B5B6B7B7B8B9
+BABBBCBCBDBEBFC0C1C1C2C3C4C5C5C6C7C8C9C9CACBCCCDCDCECFD0D1D1D2D3D4D5D5D6D7D8D8D9
+DADBDCDCDDDEDFDFE0E1E2E2E3E4E4E5E6E7E7E8E9EAEAEBECECEDEEEEEFF0F0F1F2F2F3F4F4F5F6
+F6F7F8F8F9F9FAFBFBFCFCFDFDFEFEFFFF
+>
+0.6
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBABAB9B8B7B6B5B4B3B2
+B1B0AFAEADACABAAA9A8A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99999897969594939291908F8E8D8C
+8C8B8A89888786858483828181807F7E7D7C7B7A79787877767574737271706F6F6E6D6C6B6A6968
+686766656463626160605F5E5D5C5B5A5A59585756555453535251504F4E4E4D4C4B4A4948484746
+454443434241403F3E3E3D3C3B3A3A3938373636353433323231302F2E2E2D2C2B2A2A2928272726
+25242323222120201F1E1D1D1C1B1B1A19181817161515141313121111100F0F0E0D0D0C0B0B0A09
+0908070706060504040303020201010000
+>
+4 %_Br
+<
+EFEFEFEFEFEFEFEFEEEEEDEDECECEBEBEBEBECECEDEEEEF0F1F2F4F6F7F9FCFCFCFBF9F8F7F6F5F3
+F1EFEEEDECEBEBEAEAEAEAEAEAEAEAEBEBEBEAEAE9E9E8E8E7E7E7E7E8E8E8E8E8E9E9E9E9E9EAEA
+EAEAEBEBEBEBEBEAE8E7E5E4E3E3E2E2E2E2E2E2E3E4
+>
+<
+B9B7B5B4B2B0AFAEACABAAA8A7A6A4A3A2A09F9D9C9A9897959391908E8C8A89878685848381807F
+7E7D7B7A797776757372706D6C6A696766646362605F5E5C5B5958565553514F4E4C4A4947454442
+403F3D3C3A3837363534333231302E2D2B2A28272523
+>
+0
+0
+0
+<
+333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A
+5B5C5D5E5F6061626364656768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F80818283
+8485868788898A8B8C8D8E8F90919293949596979899
+>
+1
+4 %_Br
+[
+0.8196 0 1 0 0.2 1 0 2 50 100 %_Bs
+0.9333 0.2078 1 0.0745 0 0.4 0 2 50 57.3034 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 55.618 %_Bs
+0.0275 0.3922 0.9412 0.0039 1 0.6 0 2 50 46.6292 %_Bs
+0.8941 0.1373 0 0 0 0.6 1 2 45 28.0899 %_Bs
+0.9373 0.7255 0 0 0 0.2 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 13)
+(Unnamed gradient 13) 1 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000001010101
+01010101010101010101010101010101010000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000FF
+>
+1
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9
+D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6
+B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796
+9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A
+7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160
+5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A
+49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736
+3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626
+2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919
+19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F
+0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707
+07070706060606060606050505050505050504040404040404040403030303030303030303030202
+02020202020202020202010101010101010101010101010101010101010100000000000000000000
+000000000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9
+D9D8D7D6D5D4D3D2D1D0CFCFCECDCCCBCAC9C8C7C7C6C5C4C3C2C1C0C0BFBEBDBCBBBABAB9B8B7B6
+B5B5B4B3B2B1B0B0AFAEADACACABAAA9A8A7A7A6A5A4A3A3A2A1A0A09F9E9D9C9C9B9A9999989796
+9695949393929190908F8E8D8D8C8B8A8A89888887868585848383828180807F7E7E7D7C7C7B7A7A
+7978787776767574747372727170706F6E6E6D6C6C6B6A6A69696867676665656464636262616160
+5F5F5E5E5D5C5C5B5B5A5A59585857575656555454535352525151504F4F4E4E4D4D4C4C4B4B4A4A
+49494848474746454544444343424242414140403F3F3E3E3D3D3C3C3B3B3A3A3939393838373736
+3635353534343333323232313130302F2F2F2E2E2D2D2D2C2C2B2B2B2A2A29292928282827272626
+2625252524242423232222222121212020201F1F1F1E1E1E1D1D1D1C1C1C1C1B1B1B1A1A1A191919
+19181818171717171616161515151514141414131313131212121211111111101010100F0F0F0F0F
+0E0E0E0E0D0D0D0D0D0C0C0C0C0C0B0B0B0B0B0A0A0A0A0A0A090909090908080808080808070707
+07070706060606060606050505050505050504040404040404040403030303030303030303030202
+02020202020202020202010101010101010101010101010101010101010100000000000000000000
+000000000000000000000000000000000000
+>
+4 %_Br
+[
+0 0 0 0 1 1 1 2 28 0 %_Bs
+0.0118 0.9608 0.9137 0 1 0 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 2)
+(Unnamed gradient 2) 1 6 Bd
+[
+<
+03030303040404040404040404040404040505050505050505050606060606060606060606060606
+06060606060606060606060606060505050505040404040404040404040404050505050606060606
+06070707070707070707070606060606050505050505050505050505050505060606060607070707
+07070707070707060606060605050505050505050505050505060606060707070707070707070707
+07060606060505050404040404040404040505060606060707070707070707070707060606060505
+04040403020202020203030404050506060607070707070707070707070707060606060505040403
+03030303030304050506060607070708
+>
+<
+F5F5F4F4F4F4F4F3F3F3F2F2F1F1F0F0EFEFEEEDEDECEBEAEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDB
+DAD9D8D7D6D5D4D2D1D0CFCECDCBCAC9C8C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887
+868584838281807F7E7D7C7B7A797877767574737271706F6E6D6B6A696867666564636261605F5E
+5D5C5B5A595857565655545251504F4E4D4C4B4A4948464544434241403F3E3D3C3B3A3A39383736
+353434333231302F2E2D2B2A2928272524232221201F1E1D1C1B1A19181716151413121211100F0F
+0E0D0C0C0B0A0A090808070706060505
+>
+0.9137
+0
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+4 %_Br
+<
+0808090A0A0B0C0C0D0E0E0F101011121313141516171818191A1B1C1D1E1F1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F6061626364666768696A6B6C6D6E6F707172737474757677
+78797A7B7C7D7E7F8081838485868788898A8B8C8E8F909192939495969798999A9B9C9D9E9FA0A1
+A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BBBCBDBEC0C1C2C3C4C5C7C8C9CACBCC
+CDCECFD0D1D2D3D4D5D6D6D7D8D9DADBDBDCDDDEDEDFE0E0E1E2E2E3E3E4E4E5E6E6E6E7E7E8E8E9
+E9E9EAEAEAEAEBEBEBEBEBEBECECECEC
+>
+<
+05050505050505040404040404040404030303030303020202020202010101010000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEBEBEBEBEBEBECECECECECEDEDEDEDEEEEEEEEEFEF
+EFF0F0F0F1F1F1F2F2F2F3F3F3F3F4F4F4F5F5F5F5F6F6F6F7F7F7F7F8F8F8F8F9F9F9F9FAFAFAFA
+FBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC
+FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD
+FDFDFDFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+>
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+4 %_Br
+<
+ECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7
+E7E6E6E6E6E5E5E5E5E5E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2
+E2E2E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E4E4E4E5E5E6E6E7E7E8E8E9EAEAEBEBECEDEEEEEFF0F0
+F0F0F0F0F0F1F1F1F1F1F1F1F0EFEEEDEDECEBEAEAE9E8E7E7E6E6E5E4E4E3E3E2E1E1E0E0DFDFDF
+DEDEDDDDDDDCDCDCDBDBDBDBDBDBDBDBDBDCDCDCDDDDDDDEDEDFDFE0E0E1E1E2E3E3E4E5E6E6E7E8
+E9E9E9E9E9E9E9E9E9E9E9E9E8E7E6E6E5E4E3E2E2E1E0E0DFDEDEDDDDDCDCDBDBDADAD9D9D9D8D8
+D8D7D7D7D7D6D6D6D6D6D5D5D5D5D5D5
+>
+0
+<
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFDFDFDFDFCFCFCFBFBFBFAFAF9F9F9F8F8F7F7F6F6F5F5F4
+F4F3F3F2F1F1F0F0EFEEEDEDECEBEAE9E8E7E5E4E3E2E1E0DFDEDDDCDBDADAD9D8D7D6D5D4D3D2D1
+D0CFCDCCCBCAC8C7C6C4C3C1BFBDBBB9B7B4B2B0AEACAAA8A6A4A2A09E9C9A98969492908E8C8A89
+87858381807E7C7A7977757372706E6C6B6967666462615F5E5C5A595756545351504E4D4B4A4847
+46444341403E3D3B3A3837353432312F2E2C2B29282625242221201E1D1C1A191817151413121110
+0E0D0C0B0A0908070605040302010000
+>
+0
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101
+>
+1
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+4 %_Br
+<
+D5D5D6D7D8D9DADBDDDEDFDFDFDFDFDEDEDEDDDDDCDCDCDBDBDBDBDADADADADADBDBDBDCDCDDDEDE
+DFE0E1E2E3E4E6E8E9E9EAEBEAEAE9E8E8E7E7E6E6E5E5E4E4E3E2E1E0E0DFDFDFDFDFDFE0E0E1E2
+E3E5E7E8EBEDEFF1F2F4F5F4F3F1EFEDEBEAE8E7E6E5E4E3E2E2E2E2E2E2E2E3E4E5E7E8EAEBEBEB
+EBEBEAEAEAEAE9E9E9E9E9E8E8E8E8E8E7E7E7E7E8E8E9E9EAEAEBEBEBEAEAEAEAEAEAEAEAEAEBEB
+ECEDEEEFF1F3F5F6F7F8F9FBFCFCFCF9F7F6F4F2F1F0EEEEEDECECEBEBEBEBECECEDEDEEEEEFEFEF
+EFEFEFEFEFF0F0F0F1F1F2F3F3F4F5F6F7F8F9FBFCFDFDFEFFFFFFFFFFFDFCFBFBFAF9F8F8F7F7F6
+F6F6F5F5F5F5F4F4F4F4F4F4F4F4F4F4
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000101010101020202020303030404040405050505060606060707
+0707070707070708090A0B0C0E11131517191B1D1F21232527282A2B2D2E3031323334353637383A
+3C3D3F4042444547494A4C4E4F5153555658595B5C5E5F606263646667696A6C6D6F707273757677
+797A7B7D7E7F80818384858687898A8C8E9091939597989A9C9D9FA0A2A3A4A6A7A8AAABACAEAFB0
+B2B4B5B7B9BABCBDBFC1C2C4C5C7C8CACBCCCECFD1D2D3D5D6D7D8DADBDCDDDEDFE1E2E2E3E4E5E6
+E7E7E8E9E9EAEAEBEBEBECECECECECED
+>
+0
+0
+<
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+4 %_Br
+<
+F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F0F0F0F0EFEFEFEEEEEEEDEDEDEC
+ECECEBEBEAEAE9E9E8E8E7E7E6E6E5E4E3E3E2E1E0DFDEDDDBDAD9D8D6D5D4D3D1D0CFCECCCBCAC8
+C7C6C5C3C2C1BFBEBDBBBAB9B7B6B5B3B2B0AFAEACABAAA8A7A6A4A3A1A09E9D9B9A989695939290
+8F8D8C8A898786858382817F7E7D7B7A79787675747371706F6E6C6B6A686766646362615F5E5C5B
+5A585755545351504E4D4C4A494746454342413F3E3D3B3A393736353332312F2E2D2B2A29272625
+242321201F1E1E1D1C1B1A191817171615141413121111100F0F0E0D0D0C0B0B0A0A090908070706
+06060505040404030303030202020202
+>
+<
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED
+EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEF
+EFEFF0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4
+F4F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F8
+F8F8F7F7F6F6F6F5F5F5F5F4F4F4F3F3F3F3F2F2F2F2F1F1F1F1F0F0F0F0F0EFEFEFEFEFEEEEEEEE
+EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFF0F0F0
+F0F0F0F1F1F1F1F1F2F2F2F2F2F2F3F3
+>
+0
+0
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000001010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010101010101010101
+01010101010101010101010101010101010101010101010101010101010101010202020202020202
+02020202020202020202020202020202020202020202020202020202020202020202020202020202
+02020202020202020202020202020202
+>
+1
+4 %_Br
+[
+0.0118 0.9608 0.9137 0 1 0 0 2 50 0 %_Bs
+0.0314 0.0196 0.9137 0 1 1 0 2 50 20 %_Bs
+0.9255 0 1 0 0 1 0 2 50 40 %_Bs
+0.8353 0 0 0 0.0039 1 1 2 50 60 %_Bs
+0.9569 0.9294 0 0 0 0 1 2 50 80 %_Bs
+0.0078 0.9529 0 0 1 0.0078 1 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Unnamed gradient 37)
+(Unnamed gradient 37) 1 2 Bd
+[
+<
+C4C4C5C4C5C5C5C6C6C6C6C6C7C6C7C7C6C6C6C6C5C5C5C4C4C4C3C3C2C2C2C1C1C0C0BFBFBEBDBD
+BCBCBBBABAB9B9B8B7B7B5B5B4B2B2B1B1AFAFAEACACABABAAA9A8A7A7A6A6A4A3A3A2A2A1A0A09E
+9F9E9E9C9B9B9A9A9998989797959594939392929191908E8E8D8D8C8C8B89898888878785848483
+8281817F7E7E7D7C7B7B797977767674737272706E6E6D6C6A6A6968666564626260605E5D5C5A59
+575756565555545453525150504F4F4E4E4D4D4C4B4B4A4A49484847464645454444434343424242
+424141404040403F3F3F3F3E3E3E3D3D3D3D3C3C3B3B3B3B3A3A3A3A393938383838373736363636
+3535353534343333333332323232323131303130302F2F2F2F2E2E2E2D2D2D2D2C2C2C2B2B2A2A2A
+2A2A
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000101010101010101020303
+03040505060709090A0B0D0E0E101112121415161618191B1C1C1D1F20202123242426272828292B
+2C2C2D2F3030313233333536373738393A3A3B3D3E3E3F4041414243444546474848494A4B4B4C4D
+4E4E5051515254555658595B5A5C5D5E5F61626264666767696A6B6C6E6F7071737374767878797B
+7B7D7E7F80828383858686888A8A8B8D8D8E909192939595969798999B9B9C9D9E9FA0A0A2A3A4A5
+A6A6A8A9A9AAACACADADAFB0B0B1B2B2B4B5B5B6B6B8B9B9BABBBCBDBDBFBFC0C0C2C3C3C4C4C6C6
+C7C7
+>
+<
+0202020303030404050505060607070808090A0A0B0B0C0D0D0E0E0F101011121313141415161717
+18181A1A1B1C1C1E1E1F2021222324252526262728292A2B2C2D2E2F30313233343436373738393A
+3B3C3D3E3F40404242434243454546474849494A4B4C4D4D4E4F5050515253545454555556575858
+595A5B5B5C5D5E5F5F616160616263636465666666686869696B6A6B6B6C6D6D6E6F707071727372
+727475767778797A7C7D7E7D7F808183848586878988898B8C8D8F9091929494959798999A9C9D9F
+9FA0A2A3A5A6A8A9A9AAACAEAFB1B2B2B4B5B7B8BABBBBBDBEC0C1C3C4C4C6C7C9CACBCBCDCED0D1
+D3D3D4D5D7D8D8DADBDDDEDEDFE1E2E4E3E5E6E7E7E9EAEBEBECEDEEEEEEEFEFF0F0F0F1F1F2F2F2
+F2F3
+>
+<
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000101010101010102020202020303030304040404050505050606060607070708080909090A
+0A0A0B0B0C0C0D0D0E0E0F0F101011121213131415151617181819191A1B1B1C1D1E1E1F20212222
+23242424242424242424242424242424242424242424242423242323232323232322222121212120
+201F1F1F1F1E1E1D1D1D1D1C1B1B1B1B1A1A19191919181817171717161616161515151514141414
+13131313121212121111111110101010100F0F0F0F0E0E0E0E0D0D0D0D0D0D0D0C0C0C0C0C0B0B0B
+0B0B
+>
+<
+33343435353637373838393A3A3B3B3C3D3D3E3E3F40404141424343444445464647474848494A4A
+4B4B4C4D4D4E4E4F50505151525353545455555657575858595A5A5B5B5C5C5D5E5E5F5F60616162
+626363646565666667686869696A6A6B6C6C6D6D6E6E6F7070717172727374747575767677787879
+797A7A7B7C7C7D7D7E7E7F7F80818182828383848585868687878888898A8A8B8B8C8C8D8D8E8F8F
+909091919292939394959596969797989899999A9B9B9C9C9D9D9E9E9F9FA0A0A1A2A2A3A3A4A4A5
+A5A6A6A7A7A8A8A9A9AAAAABACACADADAEAEAFAFB0B0B1B1B2B2B3B3B4B4B5B5B6B6B7B7B8B8B9B9
+BABABBBBBCBCBDBDBEBEBFBFC0C0C0C1C1C2C2C3C3C4C4C5C5C6C6C6C7C7C8C8C9C9C9CACACBCBCB
+CCCC
+>
+<
+FFFEFDFDFCFBFAF9F9F8F7F6F5F5F4F3F2F1F1F0EFEEEDEDECEBEAE9E9E8E7E6E6E5E4E3E2E2E1E0
+DFDEDEDDDCDBDADAD9D8D7D7D6D5D4D3D3D2D1D0CFCFCECDCCCCCBCAC9C8C8C7C6C5C5C4C3C2C1C1
+C0BFBEBEBDBCBBBBBAB9B8B7B7B6B5B4B4B3B2B1B1B0AFAEADADACABAAAAA9A8A7A7A6A5A4A4A3A2
+A1A1A09F9E9E9D9C9B9B9A999898979695959493929291908F8F8E8D8C8C8B8A8989888786868584
+8383828181807F7E7E7D7C7B7B7A79797877767675747373727171706F6E6E6D6C6C6B6A69696867
+67666565646362626160605F5E5E5D5C5C5B5A5959585757565555545353525151504F4F4E4D4D4C
+4B4B4A494948474746464544444342424140403F3F3E3D3D3C3C3B3A3A3939383837363635353434
+3333
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1
+B0AFAEADACABAAA9A8A7A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796959493929191908F8E8D8C8B
+8A89888786858483828180807F7E7D7C7B7A79787776757473727271706F6E6D6C6B6A6968676666
+6564636261605F5E5D5C5B5B5A59585756555453525251504F4E4D4C4B4A49494847464544434241
+41403F3E3D3C3B3A3A39383736353434333231302F2E2E2D2C2B2A2928282726252423232221201F
+1E1E1D1C1B1A1A1918171616151413121211100F0F0E0D0C0C0B0A09090807060605040403020201
+0100
+>
+4 %_Br
+[
+0.7686 0 0.0078 0 0.2 1 1 2 46.6292 0.5618 %_Bs
+0.1647 0.7804 0.9529 0.0431 0.8 0.2 0 2 50 100 %_Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (White, Black)
+(White, Black) 0 2 Bd
+[
+0
+0
+0
+<
+00000000000000000000000000000000000000000000000101010101010101010101010102020202
+02020202020202030303030303040404040404040505050505050606060607070707080808090909
+090A0A0A0A0B0B0B0C0C0D0D0D0E0E0F0F0F101011111112121313141515161617171819191A1A1B
+1B1C1D1D1E1F202021222323242526272728292A2B2C2D2E2F303132333435363738393A3B3C3D3E
+3F404142434445464748494A4C4D4E4F50525354565758595B5C5D5F606263656668696B6C6E7071
+737576787A7C7D7F81838587898B8D8F919395979A9C9EA0A3A5A7AAACAFB1B4B7B9BCBFC2C5C7CA
+D0D6DBE0E4E8ECF0F2F4F6F7F9FBFDFF
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+4 %_Br
+[
+0 0 0 1 0 0 0 2 50 100 %_Bs
+0 0 0 0 1 1 1 2 50 0 %_Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Azure Rings)
+(Azure Rings) 22.5 22.5 58.5 58.5 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1.75 w 4 M []0 d
0 XR
+40.5 58.5 m
+40.5 48.5586 32.4409 40.5 22.5 40.5 c
+12.5591 40.5 4.5 48.5586 4.5 58.5 c
+4.5 68.4414 12.5591 76.5 22.5 76.5 c
+32.4409 76.5 40.5 68.4414 40.5 58.5 c
+s
40.5 22.5 m
+40.5 12.5586 32.4409 4.5 22.5 4.5 c
+12.5591 4.5 4.5 12.5586 4.5 22.5 c
+4.5 32.4414 12.5591 40.5 22.5 40.5 c
+32.4409 40.5 40.5 32.4414 40.5 22.5 c
+s
40.5 40.5 m
+40.5 30.5586 32.4409 22.5 22.5 22.5 c
+12.5591 22.5 4.5 30.5586 4.5 40.5 c
+4.5 50.4414 12.5591 58.5 22.5 58.5 c
+32.4409 58.5 40.5 50.4414 40.5 40.5 c
+s
58.5 58.5 m
+58.5 48.5586 50.4409 40.5 40.5 40.5 c
+30.5591 40.5 22.5 48.5586 22.5 58.5 c
+22.5 68.4414 30.5591 76.5 40.5 76.5 c
+50.4409 76.5 58.5 68.4414 58.5 58.5 c
+s
58.5 22.5 m
+58.5 12.5586 50.4409 4.5 40.5 4.5 c
+30.5591 4.5 22.5 12.5586 22.5 22.5 c
+22.5 32.4414 30.5591 40.5 40.5 40.5 c
+50.4409 40.5 58.5 32.4414 58.5 22.5 c
+s
58.5 40.5 m
+58.5 30.5586 50.4409 22.5 40.5 22.5 c
+30.5591 22.5 22.5 30.5586 22.5 40.5 c
+22.5 50.4414 30.5591 58.5 40.5 58.5 c
+50.4409 58.5 58.5 50.4414 58.5 40.5 c
+s
76.5 58.5 m
+76.5 48.5586 68.4409 40.5 58.5 40.5 c
+48.5591 40.5 40.5 48.5586 40.5 58.5 c
+40.5 68.4414 48.5591 76.5 58.5 76.5 c
+68.4409 76.5 76.5 68.4414 76.5 58.5 c
+s
76.5 22.5 m
+76.5 12.5586 68.4409 4.5 58.5 4.5 c
+48.5591 4.5 40.5 12.5586 40.5 22.5 c
+40.5 32.4414 48.5591 40.5 58.5 40.5 c
+68.4409 40.5 76.5 32.4414 76.5 22.5 c
+s
76.5 40.5 m
+76.5 30.5586 68.4409 22.5 58.5 22.5 c
+48.5591 22.5 40.5 30.5586 40.5 40.5 c
+40.5 50.4414 48.5591 58.5 58.5 58.5 c
+68.4409 58.5 76.5 50.4414 76.5 40.5 c
+s
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Blue Tablecloth)
+(Blue Tablecloth) 0 0 12 12 [
+%AI3_Tile
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 6 m
+0 6 L
+0 12 L
+6 12 L
+6 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 6 m
+6 6 L
+6 12 L
+12 12 L
+12 6 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 1 Xa
+ 1 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12 0 m
+6 0 L
+6 6 L
+12 6 L
+12 0 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 1 Xa
+ 0.6 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6 0 m
+0 0 L
+0 6 L
+6 6 L
+6 0 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Camouflage)
+(Camouflage) 1 1 73 73 [
+%AI3_Tile
+(0 O 0 R 0.3922 0.6039 0.1451 Xa
+ 0.3922 0.6039 0.1451 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 73 m
+1 1 L
+73 1 L
+73 73 L
+1 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4039 0.4 0.0745 Xa
+ 0.4039 0.4 0.0745 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+18.5449 73 m
+18.5449 1 L
+46.7832 1 L
+46.7832 73 L
+18.5449 73 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.8 0.1059 Xa
+ 0.8 0.8 0.1059 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+11.9512 1 m
+11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c
+9.2314 10.2334 4.25 10.2334 4.25 13.8735 c
+4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c
+10.0313 24.832 10.208 24.832 10.208 28.5654 c
+10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c
+5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c
+11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c
+7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c
+5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c
+4.6631 69.1636 11.9512 69.3184 11.9512 73 C
+27.9268 73 L
+27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c
+22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c
+28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c
+25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c
+28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c
+22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c
+26.3945 24.832 24.4248 24.832 24.4248 21.0991 c
+24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c
+20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c
+24.6055 2.8813 27.9268 4.7129 27.9268 1 C
+11.9512 1 L
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.0784 0.4157 0.1647 Xa
+ 0.0784 0.4157 0.1647 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+41.875 1 m
+41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c
+42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c
+40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c
+41.5742 24.832 43.6484 24.832 43.6484 28.5659 c
+43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c
+39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c
+39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c
+45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c
+40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c
+40.6289 69.1636 41.875 69.3184 41.875 73 C
+59.0752 73 L
+59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c
+53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c
+55.8945 55.502 61.0059 55.502 61.0059 51.7886 c
+61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c
+60.5635 40.897 59.9277 40.897 59.9277 37.2842 c
+59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c
+56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c
+61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c
+52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c
+55.7461 3.978 59.0752 4.6484 59.0752 1 C
+41.875 1 L
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Clown Attack)
+(Clown Attack) 5.25 11 41.25 47 [
+%AI3_Tile
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+17.5 18.25 m
+17.5 15.2119 15.0376 12.75 12 12.75 c
+8.9624 12.75 6.5 15.2119 6.5 18.25 c
+6.5 21.2881 8.9624 23.75 12 23.75 c
+15.0376 23.75 17.5 21.2881 17.5 18.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 1 Xa
+ 1 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+22.25 34.125 m
+22.25 31.2939 19.9556 29 17.125 29 c
+14.2944 29 12 31.2939 12 34.125 c
+12 36.9561 14.2944 39.25 17.125 39.25 c
+19.9556 39.25 22.25 36.9561 22.25 34.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+30 31.625 m
+30 29.4854 28.2646 27.75 26.125 27.75 c
+23.9849 27.75 22.25 29.4854 22.25 31.625 c
+22.25 33.7646 23.9849 35.5 26.125 35.5 c
+28.2646 35.5 30 33.7646 30 31.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+23.25 24.5 m
+23.25 22.4287 21.5713 20.75 19.5 20.75 c
+17.4287 20.75 15.75 22.4287 15.75 24.5 c
+15.75 26.5713 17.4287 28.25 19.5 28.25 c
+21.5713 28.25 23.25 26.5713 23.25 24.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 0 1 Xa
+ 0 0 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+36 22.25 m
+36 19.0742 33.4258 16.5 30.25 16.5 c
+27.0742 16.5 24.5 19.0742 24.5 22.25 c
+24.5 25.4258 27.0742 28 30.25 28 c
+33.4258 28 36 25.4258 36 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.8 0.7922 0.2078 Xa
+ 0.8 0.7922 0.2078 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+24.25 16.5 m
+24.25 14.8438 22.9067 13.5 21.25 13.5 c
+19.5933 13.5 18.25 14.8438 18.25 16.5 c
+18.25 18.1563 19.5933 19.5 21.25 19.5 c
+22.9067 19.5 24.25 18.1563 24.25 16.5 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 43.875 m
+37.25 39.5264 33.7236 36 29.375 36 c
+25.0264 36 21.5 39.5264 21.5 43.875 c
+21.5 48.2236 25.0264 51.75 29.375 51.75 c
+33.7236 51.75 37.25 48.2236 37.25 43.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.8 0 Xa
+ 1 0.8 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+38.75 26.625 m
+38.75 25.7275 38.0225 25 37.125 25 c
+36.2275 25 35.5 25.7275 35.5 26.625 c
+35.5 27.5225 36.2275 28.25 37.125 28.25 c
+38.0225 28.25 38.75 27.5225 38.75 26.625 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.4 0 Xa
+ 1 0.4 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.875 42 m
+19.875 41.1025 19.1475 40.375 18.25 40.375 c
+17.3525 40.375 16.625 41.1025 16.625 42 c
+16.625 42.8975 17.3525 43.625 18.25 43.625 c
+19.1475 43.625 19.875 42.8975 19.875 42 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+12.75 28.125 m
+12.75 26.8135 11.6865 25.75 10.375 25.75 c
+9.0635 25.75 8 26.8135 8 28.125 c
+8 29.4365 9.0635 30.5 10.375 30.5 c
+11.6865 30.5 12.75 29.4365 12.75 28.125 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+43.25 33 m
+43.25 30.998 41.627 29.375 39.625 29.375 c
+37.623 29.375 36 30.998 36 33 c
+36 35.002 37.623 36.625 39.625 36.625 c
+41.627 36.625 43.25 35.002 43.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 43.75 m
+13.25 40.9883 11.0117 38.75 8.25 38.75 c
+5.4883 38.75 3.25 40.9883 3.25 43.75 c
+3.25 46.5117 5.4883 48.75 8.25 48.75 c
+11.0117 48.75 13.25 46.5117 13.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+6.5 22.25 m
+6.5 20.7314 5.2686 19.5 3.75 19.5 c
+2.2314 19.5 1 20.7314 1 22.25 c
+1 23.7686 2.2314 25 3.75 25 c
+5.2686 25 6.5 23.7686 6.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0.4 Xa
+ 1 1 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+34.4883 32.75 m
+34.4883 31.9277 33.8223 31.2617 33 31.2617 c
+32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c
+31.5117 33.5723 32.1777 34.2383 33 34.2383 c
+33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 43.75 m
+49.25 40.9883 47.0117 38.75 44.25 38.75 c
+41.4883 38.75 39.25 40.9883 39.25 43.75 c
+39.25 46.5117 41.4883 48.75 44.25 48.75 c
+47.0117 48.75 49.25 46.5117 49.25 43.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0 0.8 Xa
+ 0.6 0 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+42.5 22.25 m
+42.5 20.7314 41.2686 19.5 39.75 19.5 c
+38.2314 19.5 37 20.7314 37 22.25 c
+37 23.7686 38.2314 25 39.75 25 c
+41.2686 25 42.5 23.7686 42.5 22.25 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+49.25 7.752 m
+49.25 4.9902 47.0117 2.752 44.25 2.752 c
+41.4883 2.752 39.25 4.9902 39.25 7.752 c
+39.25 10.5137 41.4883 12.752 44.25 12.752 c
+47.0117 12.752 49.25 10.5137 49.25 7.752 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 1 Xa
+ 0 1 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+37.25 7.875 m
+37.25 3.5264 33.7236 0 29.375 0 c
+25.0264 0 21.5 3.5264 21.5 7.875 c
+21.5 12.2236 25.0264 15.75 29.375 15.75 c
+33.7236 15.75 37.25 12.2236 37.25 7.875 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 1 0 Xa
+ 1 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+13.25 7.75 m
+13.25 4.9883 11.0117 2.75 8.25 2.75 c
+5.4883 2.75 3.25 4.9883 3.25 7.75 c
+3.25 10.5117 5.4883 12.75 8.25 12.75 c
+11.0117 12.75 13.25 10.5117 13.25 7.75 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0 1 0 Xa
+ 0 1 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+7.25 33 m
+7.25 30.998 5.627 29.375 3.625 29.375 c
+1.623 29.375 0 30.998 0 33 c
+0 35.002 1.623 36.625 3.625 36.625 c
+5.627 36.625 7.25 35.002 7.25 33 c
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 1 0.6 1 Xa
+ 1 0.6 1 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+39.6533 16.0381 m
+39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c
+37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c
+36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c
+38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Pyramids)
+(Pyramids) 1 1 19.5 19.5 [
+%AI3_Tile
+(0 O 0 R 0.8 0.8 0.8 Xa
+ 0.8 0.8 0.8 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 19.5 m
+10.25 10.25 l
+19.5 19.5 l
+1 19.5 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.2 0.2 0.2 Xa
+ 0.2 0.2 0.2 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 1 m
+10.25 10.25 l
+1 1 l
+19.5 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.6 0.6 0.6 Xa
+ 0.6 0.6 0.6 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+1 1 m
+10.25 10.25 l
+1 19.5 l
+1 1 l
+f
%AI6_EndPatternLayer
+) &
+(0 O 0 R 0.4 0.4 0.4 Xa
+ 0.4 0.4 0.4 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 1 w 4 M []0 d
0 XR
+19.5 19.5 m
+10.25 10.25 l
+19.5 1 l
+19.5 19.5 l
+f
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Red Stripe)
+(Red Stripe) 37 19 73 55 [
+%AI3_Tile
+(0 O 0 R 1 0 0 Xa
+ 1 0 0 XA
+) @
+(
+%AI6_BeginPatternLayer
+0 J 0 j 18 w 4 M []0 d
0 XR
+37 37 m
+73 37 l
+S
%AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+0 0 0 Xa
+([Registration]) Pc
+1 1 1 Xa
+(White) Pc
+0 0 0 Xa
+(Black) Pc
+0.6 0.6 0.6 Xa
+(Gray) Pc
+0.8 0.8 0.8 Xa
+(Light Gray) Pc
+0 1 1 Xa
+(Bright Blue) Pc
+0.6 1 1 Xa
+(Light Blue) Pc
+0.8 1 1 Xa
+(Pale Blue) Pc
+1 0 1 Xa
+(Violet) Pc
+1 0.4 1 Xa
+(Light Violet) Pc
+1 0.8 1 Xa
+(Pale Violet) Pc
+1 1 0 Xa
+(Yellow) Pc
+1 1 0.4 Xa
+(Light Yellow) Pc
+1 1 0.6 Xa
+(Pale Yellow) Pc
+0.6 0.2 0 Xa
+(Brown) Pc
+0.8 0.4 0.2078 Xa
+(Light Brown) Pc
+1 0.6 0.4 Xa
+(Pale Brown) Pc
+0 0 1 Xa
+(Blue) Pc
+0.4 0.4 1 Xa
+(Faded Blue) Pc
+0.8 0.8 1 Xa
+(Faded Pale Blue) Pc
+1 0 0 Xa
+(Red) Pc
+1 0.4 0.4 Xa
+(Light Red) Pc
+1 0.6 0.6 Xa
+(Mauve) Pc
+0 0.6 0 Xa
+(Forest Green) Pc
+0.2 0.8 0.2 Xa
+(Green) Pc
+0.6 1 0.4 Xa
+(Pale Green) Pc
+0 1 0 Xa
+(Bright Green) Pc
+0.4 1 0.4 Xa
+(Light Bright Green) Pc
+0.5922 1 0.6 Xa
+(Pale Light Green) Pc
+0.6 0 0.8 Xa
+(Purple) Pc
+0.6 0.4 0.8 Xa
+(Periwinkle) Pc
+0.8 0.6 0.8 Xa
+(Lavender) Pc
+1 0.6 0 Xa
+(Orange) Pc
+1 0.8 0.2 Xa
+(Light Orange) Pc
+1 0.8 0.6 Xa
+(Light Pale Orange) Pc
+Bb
+2 (White, Black) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(White, Black) Pc
+Bb
+0 0 0 0 Bh
+2 (Black, White Radial) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Black, White Radial) Pc
+Bb
+2 (Steel Bar II) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Steel Bar II) Pc
+Bb
+2 (RGB Rainbow) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(RGB Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Nova) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Nova) Pc
+Bb
+2 (Sunrise) 0 0 0 1 1 0 0 1 0 0 Bg
+0 BB
+(Sunrise) Pc
+(Blue Tablecloth) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Blue Tablecloth) Pc
+(Pyramids) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Pyramids) Pc
+(Azure Rings) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Azure Rings) Pc
+(Red Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Red Stripe) Pc
+(Clown Attack) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Clown Attack) Pc
+(Camouflage) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Camouflage) Pc
+PB
+%AI5_EndPalette
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 255 79 79 Lb
+(Layer 2) Ln
+0 A
+u
*u
+0 O
+1 1 1 Xa
+0 J 0 j 1 w 4 M []0 d
0 XR
+222.207 298.582 m
+223.8154 297.7295 225.3486 296.751 226.5029 295.7402 C
+224.7842 300.4922 L
+225.9473 303.7139 L
+371.5391 303.7139 L
+372.708 300.4922 L
+370.9805 295.7402 L
+372.0938 296.7119 373.5557 297.6523 375.0957 298.4814 C
+354.6035 280.7939 327.9082 270.0986 298.71 270.0986 C
+269.457 270.0986 242.7153 280.834 222.207 298.582 C
+F
181.7461 387.0625 m
+181.7461 420.3057 195.6172 450.3125 217.8853 471.6084 C
+217.9175 471.5342 217.9492 471.4595 217.9814 471.3838 C
+217.8989 471.3838 L
+217.8989 470.8892 L
+217.8989 304.209 L
+218.394 304.209 L
+217.8989 304.209 L
+217.8989 303.7139 L
+218.394 303.7139 L
+224.4375 303.7139 L
+222.8916 302.708 221.1001 301.791 219.4185 301.0742 C
+196.2549 322.4443 181.7461 353.0586 181.7461 387.0625 C
+F
373.0508 303.7139 m
+379.2236 303.7139 L
+379.2236 304.209 L
+379.7188 304.209 L
+379.7188 470.8892 L
+379.7188 471.3838 L
+379.2236 471.3838 L
+379.2236 470.8892 L
+379.2236 471.3838 L
+218.7583 471.3838 L
+218.501 471.4966 218.2495 471.6099 218.0059 471.7236 C
+238.9951 491.7402 267.4146 504.0269 298.71 504.0269 C
+363.3115 504.0269 415.6738 451.6558 415.6738 387.0625 C
+415.6738 353.0703 401.1738 322.4648 378.0244 301.0957 C
+376.3564 301.8086 374.585 302.7178 373.0508 303.7139 C
+F
1 D
+379.2236 303.7139 m
+379.7188 303.7139 L
+379.7188 304.209 L
+379.2236 304.209 L
+379.2236 303.7139 L
+F
*U
+1 Ap
+0 D
+0 R
+0 0 0 XA
+415.6777 387.0674 m
+415.6777 322.4678 363.3135 270.1035 298.7144 270.1035 C
+234.1162 270.1035 181.75 322.4678 181.75 387.0674 C
+181.75 451.6641 234.1162 504.0313 298.7144 504.0313 C
+363.3135 504.0313 415.6777 451.6641 415.6777 387.0674 C
+415.6777 387.0674 L
+s
*u
+0 Ap
+0 O
+0 g
+371.6377 304.7129 m
+371.4072 304.8916 371.1875 305.0723 370.9805 305.2529 C
+371.1758 304.7129 L
+226.3081 304.7129 L
+226.5029 305.2529 L
+226.2959 305.0723 226.0771 304.8916 225.8477 304.7129 C
+218.8979 304.7129 L
+218.8979 468.9692 L
+219.6465 466.7632 220.2271 464.3643 220.3379 462.3838 C
+222.3101 466.4492 L
+248.7925 439.1919 L
+240.2236 425.3545 235.1338 407.9204 235.1338 389.0156 C
+235.1338 344.2676 263.646 307.7549 299.2949 307.7012 C
+319.084 307.7305 336.6699 318.9941 348.4043 336.666 C
+374.458 309.8496 L
+370.332 307.9805 L
+372.8887 307.7725 376.1152 306.748 378.7197 305.6104 C
+378.7197 304.7129 L
+371.6377 304.7129 L
+F
377.1543 314.6133 m
+375.1738 310.5479 L
+348.9648 337.5244 L
+358.0322 351.5635 363.4521 369.5068 363.4561 389.0156 C
+363.4473 433.7549 334.9443 470.2681 299.2949 470.3311 C
+299.2949 469.3232 L
+299.2949 470.3311 L
+279.0293 470.2949 261.0684 458.4771 249.3428 440.0674 C
+223.0317 467.1494 L
+227.1602 469.0078 L
+225.3877 469.1572 223.2944 469.6924 221.3091 470.3848 C
+378.7197 470.3848 L
+378.7197 307.6543 L
+377.9111 309.958 377.2715 312.5166 377.1543 314.6133 C
+Bb
+0 0 0 0 Bh
+1 (Unnamed gradient) -0.0059 -0.0059 0 81.8879 1 0 0 1 298.8145 -387.5547 Bg
+81.8879 0 0 -81.8879 298.8086 387.5488 Bm
+F
0 BB
+*U
+*u
+0 0 0 Xa
+379.2236 303.7139 m
+379.2236 304.209 L
+379.7188 304.209 L
+379.7188 303.7139 L
+379.2236 303.7139 L
+F
373.0508 303.7139 m
+372.5508 304.0391 372.0752 304.373 371.6377 304.7129 C
+378.7197 304.7129 L
+378.7197 305.6104 L
+379.0586 305.4629 379.3867 305.3125 379.7012 305.1631 C
+379.3623 305.9297 379.0293 306.7734 378.7197 307.6543 C
+378.7197 470.3848 L
+221.3091 470.3848 L
+220.4248 470.6934 219.5615 471.0332 218.7583 471.3838 C
+379.2236 471.3838 L
+379.2236 470.8892 L
+379.2236 471.3838 L
+379.7188 471.3838 L
+379.7188 470.8892 L
+379.7188 304.209 L
+379.2236 304.209 L
+379.2236 303.7139 L
+373.0508 303.7139 L
+F
225.9473 303.7139 m
+226.3081 304.7129 L
+371.1758 304.7129 L
+371.5391 303.7139 L
+225.9473 303.7139 L
+F
218.394 303.7139 m
+217.8989 303.7139 L
+217.8989 304.209 L
+218.394 304.209 L
+217.8989 304.209 L
+217.8989 470.8892 L
+217.8989 471.3838 L
+217.9814 471.3838 L
+218.3003 470.6299 218.6113 469.814 218.8979 468.9692 C
+218.8979 304.7129 L
+225.8477 304.7129 L
+225.4116 304.373 224.937 304.0391 224.4375 303.7139 C
+218.394 303.7139 L
+F
*U
+*u
+0 g
+255.4199 332.8379 m
+244.1431 347.1748 237.1318 367.0469 237.1318 389.0156 C
+237.1318 407.3784 242.0342 424.2813 250.2334 437.709 C
+270.7905 416.5503 L
+271.3081 406.2046 274.5913 398.0967 279.4141 397.8628 C
+281.5166 397.9648 283.3257 399.5645 284.7397 402.1934 C
+346.9766 338.1348 L
+345.7705 336.2959 344.5 334.5283 343.1699 332.8379 C
+331.8838 318.4922 316.377 309.6992 299.2949 309.6992 C
+282.2041 309.6992 266.7061 318.4922 255.4199 332.8379 C
+F
1 D
+0 g
+269.082 354.5908 m
+270.6479 354.5908 272.0791 355.1309 273.123 356.0225 C
+274.1758 356.9131 274.8418 358.1729 274.8418 359.5771 C
+274.8418 360.9717 274.1758 362.2324 273.123 363.123 C
+272.0791 364.0137 270.6479 364.5537 269.082 364.5537 C
+269.082 364.0586 L
+269.082 364.5537 L
+267.5068 364.5537 266.085 364.0137 265.0322 363.123 C
+263.9878 362.2324 263.313 360.9717 263.313 359.5771 C
+263.313 358.1729 263.9878 356.9131 265.0322 356.0225 C
+266.085 355.1309 267.5161 354.5908 269.082 354.5908 C
+269.082 354.5908 L
+F
0 g
+301.0142 363.1143 m
+300.7168 362.9072 300.5278 362.7725 300.375 362.6006 C
+300.231 362.4482 300.1138 362.2139 300.4019 361.9443 C
+300.645 361.7188 301.437 361.6201 302.2109 361.8184 C
+302.1929 361.9707 L
+301.5542 361.9082 301.2568 361.8721 301.104 362.0156 C
+301.0322 362.0791 301.0229 362.1865 301.1221 362.2949 C
+301.2388 362.4121 305.0278 364.707 306.5313 365.6787 C
+306.522 365.751 L
+306.0718 366.0215 305.6582 366.3184 305.2529 366.624 C
+305.1357 366.5068 L
+305.5322 366.1201 305.541 366.0391 305.3882 365.8682 C
+305.2891 365.7686 305.0732 365.6338 304.8208 365.4814 C
+303.4258 364.6084 L
+303.3989 364.6084 L
+303.5161 364.7969 303.687 365.085 303.2822 365.4717 C
+302.4092 366.2822 299.916 366.1016 298.8901 364.9951 C
+298.5298 364.6172 298.2329 363.9873 298.8452 363.4287 C
+299.2139 363.0869 299.7358 362.8262 301.0142 363.1406 C
+301.0142 363.1143 L
+F
0 g
+289.1611 370.5566 m
+291.96 367.9473 L
+292.1582 368.1543 L
+291.7979 368.4775 291.2759 368.9639 291.6899 369.4053 C
+291.9419 369.6748 293.7329 370.8271 294.291 371.1777 C
+294.4531 370.7188 294.6602 370.3945 295.002 370.0801 C
+296.8921 368.3164 301.1938 368.541 303.1738 370.665 C
+304.0918 371.6553 304.4341 372.8428 303.2188 373.9766 C
+302.0938 375.0215 300.3838 374.751 299.6099 374.5801 C
+299.6099 374.6338 L
+301.167 375.5605 L
+301.356 375.6602 301.3291 375.7412 301.293 375.7773 C
+298.8901 377.4512 L
+298.71 377.208 L
+299.0342 376.9287 L
+299.3672 376.6504 299.4751 376.2451 299.2412 376.002 C
+298.9712 375.7139 292.833 371.9248 291.0332 370.7373 C
+290.5107 370.3945 290.0879 370.1074 289.3589 370.7822 C
+289.1611 370.5566 L
+F
0 D
+0 g
+331.3936 355.6104 m
+332.2236 355.2119 333.1777 354.9873 334.1875 354.9873 C
+335.7627 354.9873 337.1846 355.5273 338.2383 356.418 C
+339.2822 357.3086 339.957 358.5693 339.957 359.9639 C
+339.957 361.3682 339.2822 362.6279 338.2383 363.5186 C
+337.1846 364.4102 335.7627 364.9502 334.1875 364.9502 C
+334.1875 364.4551 L
+334.1875 364.9502 L
+332.6221 364.9502 331.1914 364.4102 330.1475 363.5186 C
+329.0938 362.6279 328.4277 361.3682 328.4277 359.9639 C
+328.4277 359.3955 328.5391 358.8486 328.7412 358.3408 C
+285.2139 403.1445 L
+287.0088 407.0303 288.0547 412.7153 288.0991 419.0308 C
+288.0181 430.5332 284.6162 439.9468 279.4141 440.1899 C
+279.4141 439.6948 L
+279.4141 440.1899 L
+274.2119 439.9468 270.8008 430.5332 270.7202 419.0308 C
+270.7222 418.7012 270.7275 418.374 270.7354 418.0474 C
+250.7788 438.5889 L
+252.2305 440.8975 253.7798 443.0996 255.4199 445.1851 C
+266.7061 459.5308 282.2041 468.3242 299.2949 468.3242 C
+299.2949 469.3232 L
+299.2949 468.3242 L
+316.377 468.3242 331.8838 459.5308 343.1699 445.1851 C
+354.4473 430.8481 361.458 410.9761 361.458 389.0156 C
+361.458 370.04 356.2266 352.6289 347.5342 338.9971 C
+331.3936 355.6104 L
+F
1 D
+0 g
+319.1758 397.8721 m
+324.3779 398.1152 327.7891 407.5381 327.8701 419.0308 C
+327.7891 430.5332 324.3779 439.9468 319.1758 440.1992 C
+319.1758 439.6948 L
+319.1758 440.1992 L
+313.9736 439.9468 310.5723 430.5332 310.4912 419.0308 C
+310.5723 407.5381 313.9736 398.1152 319.1758 397.8721 C
+319.1758 397.8721 L
+F
0 D
+0 g
+299.4932 363.4736 m
+299.043 363.8877 299.439 364.3105 299.5562 364.4365 C
+300.168 365.1025 302.3369 366.0303 303.1563 365.2646 C
+303.5068 364.9502 303.2012 364.626 303.0479 364.4551 C
+302.4287 363.7891 301.1816 363.2256 300.2861 363.2246 C
+299.959 363.2246 299.6787 363.3008 299.4932 363.4736 C
+F
295.1909 370.3857 m
+294.8491 370.71 294.6421 371.1777 294.9751 371.5293 C
+295.4702 372.0693 297.7559 373.4189 298.917 373.9766 C
+300.1411 374.5713 301.5181 374.4629 302.166 373.8604 C
+303.0571 373.0322 302.3281 372.2217 301.9858 371.8525 C
+300.9321 370.7246 298.876 369.708 297.1587 369.708 C
+296.397 369.708 295.7026 369.9072 295.1909 370.3857 C
+Bb
+0 0 0 0 Bh
+1 (Unnamed gradient 3) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg
+81.888 0 0 -81.888 298.8145 387.5547 Bm
+F
0 BB
+*U
+*u
+0 0 0 Xa
+235.1338 389.0156 m
+235.1338 407.9204 240.2236 425.3545 248.7925 439.1919 C
+250.2334 437.709 L
+242.0342 424.2813 237.1318 407.3784 237.1318 389.0156 C
+237.1318 367.0469 244.1431 347.1748 255.4199 332.8379 C
+266.7061 318.4922 282.2041 309.6992 299.2949 309.6992 C
+316.377 309.6992 331.8838 318.4922 343.1699 332.8379 C
+344.5 334.5283 345.7705 336.2959 346.9766 338.1348 C
+348.4043 336.666 L
+336.6699 318.9941 319.084 307.7305 299.2949 307.7012 C
+299.2949 308.7002 L
+299.2949 307.7012 L
+263.646 307.7549 235.1338 344.2676 235.1338 389.0156 C
+F
347.5342 338.9971 m
+356.2266 352.6289 361.458 370.04 361.458 389.0156 C
+361.458 410.9761 354.4473 430.8481 343.1699 445.1851 C
+331.8838 459.5308 316.377 468.3242 299.2949 468.3242 C
+299.2949 470.3311 L
+334.9443 470.2681 363.4473 433.7549 363.4561 389.0156 C
+363.4521 369.5068 358.0322 351.5635 348.9648 337.5244 C
+347.5342 338.9971 L
+F
299.2949 469.3232 m
+299.2949 470.3311 L
+299.2949 469.3232 L
+F
249.3428 440.0674 m
+261.0684 458.4771 279.0293 470.2949 299.2949 470.3311 C
+299.2949 468.3242 L
+282.2041 468.3242 266.7061 459.5308 255.4199 445.1851 C
+253.7798 443.0996 252.2305 440.8975 250.7788 438.5889 C
+249.3428 440.0674 L
+F
*U
+0.3137 0.3137 0.3137 Xa
+319.1758 398.8711 m
+317.3037 398.8262 315.2969 400.9229 313.8574 404.604 C
+312.3994 408.2671 311.4902 413.3789 311.4902 419.0308 C
+311.4902 424.6831 312.3994 429.8042 313.8574 433.458 C
+315.2969 437.1479 317.3037 439.2358 319.1758 439.2002 C
+319.1758 439.6948 L
+319.1758 439.2002 L
+321.0479 439.2358 323.0645 437.1479 324.5039 433.458 C
+325.9531 429.8042 326.8711 424.6831 326.8711 419.0308 C
+326.8711 413.3789 325.9531 408.2671 324.5039 404.604 C
+323.0791 400.9619 321.0898 398.8706 319.2354 398.8701 C
+319.2148 398.8701 319.1953 398.8706 319.1758 398.8711 C
+F
*u
+0 g
+310.4912 419.0308 m
+310.5723 430.5332 313.9736 439.9468 319.1758 440.1992 C
+319.1758 439.6948 L
+314.6582 439.6948 310.9951 430.4429 310.9951 419.0308 C
+310.9951 407.6191 314.6582 398.3672 319.1758 398.3672 C
+323.7031 398.3672 327.3662 407.6191 327.3662 419.0308 C
+327.3662 430.4429 323.7031 439.6948 319.1758 439.6948 C
+319.1758 440.1992 L
+319.1758 439.6948 L
+319.1758 440.1992 L
+324.3779 439.9468 327.7891 430.5332 327.8701 419.0308 C
+327.7891 407.5381 324.3779 398.1152 319.1758 397.8721 C
+319.1758 398.3672 L
+319.1758 397.8721 L
+313.9736 398.1152 310.5723 407.5381 310.4912 419.0308 C
+F
327.8701 419.0308 m
+327.8701 419.0308 L
+Bb
+0 0 0 0 Bh
+1 (Unnamed gradient 4) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg
+81.888 0 0 -81.888 298.8145 387.5547 Bm
+F
0 BB
+*U
+0.3137 0.3137 0.3137 Xa
+310.9951 419.0308 m
+310.9951 430.4429 314.6582 439.6948 319.1758 439.6948 C
+319.1758 439.2002 L
+317.3037 439.2358 315.2969 437.1479 313.8574 433.458 C
+312.3994 429.8042 311.4902 424.6831 311.4902 419.0308 C
+311.4902 413.3789 312.3994 408.2671 313.8574 404.604 C
+315.2969 400.9229 317.3037 398.8262 319.1758 398.8711 C
+321.0479 398.8262 323.0645 400.9229 324.5039 404.604 C
+325.9531 408.2671 326.8711 413.3789 326.8711 419.0308 C
+326.8711 424.6831 325.9531 429.8042 324.5039 433.458 C
+323.0645 437.1479 321.0479 439.2358 319.1758 439.2002 C
+319.1758 439.6948 L
+323.7031 439.6948 327.3662 430.4429 327.3662 419.0308 C
+327.3662 407.6191 323.7031 398.3672 319.1758 398.3672 C
+314.6582 398.3672 310.9951 407.6191 310.9951 419.0308 C
+F
*u
+279.4141 398.8711 m
+277.542 398.8262 275.5259 400.9141 274.0859 404.604 C
+272.9492 407.4707 272.1392 411.2412 271.8477 415.4624 C
+283.9995 402.9551 L
+282.6699 400.333 281.0278 398.8706 279.4731 398.8701 C
+279.4536 398.8701 279.4341 398.8706 279.4141 398.8711 C
+F
271.7656 416.9868 m
+271.7397 417.6592 271.7271 418.3408 271.728 419.0308 C
+271.7188 424.6831 272.6372 429.7949 274.0859 433.458 C
+275.5259 437.1479 277.542 439.2358 279.4141 439.1909 C
+279.4141 439.6948 L
+279.4141 439.1909 L
+281.2861 439.2358 283.293 437.1479 284.7329 433.458 C
+286.1909 429.7949 287.1001 424.6831 287.1001 419.0308 C
+287.1001 413.3789 286.1909 408.2578 284.7329 404.604 C
+284.6421 404.3716 284.5493 404.1455 284.4541 403.9263 C
+271.7656 416.9868 L
+F
*U
+*u
+0 g
+279.4141 397.8628 m
+279.4141 397.8628 L
+F
0 g
+270.7905 416.5503 m
+271.3105 416.0151 L
+271.8887 406.0327 275.2935 398.3672 279.4141 398.3672 C
+281.2744 398.3672 282.9902 399.9365 284.3647 402.5791 C
+284.7397 402.1934 L
+283.3257 399.5645 281.5166 397.9648 279.4141 397.8628 C
+279.4141 398.3672 L
+279.4141 397.8628 L
+274.5913 398.0967 271.3081 406.2046 270.7905 416.5503 C
+F
0 g
+284.8286 403.541 m
+286.5249 407.3271 287.5952 412.8638 287.5952 419.0308 C
+287.5952 430.4429 283.9321 439.6948 279.4141 439.6948 C
+279.4141 440.1899 L
+279.4141 439.6948 L
+279.4141 440.1899 L
+284.6162 439.9468 288.0181 430.5332 288.0991 419.0308 C
+288.0547 412.7153 287.0088 407.0303 285.2139 403.1445 C
+284.8286 403.541 L
+F
0 g
+270.7354 418.0474 m
+270.7275 418.374 270.7222 418.7012 270.7202 419.0308 C
+270.8008 430.5332 274.2119 439.9468 279.4141 440.1899 C
+279.4141 439.6948 L
+274.8872 439.6948 271.2241 430.4429 271.2241 419.0308 C
+271.2241 418.5234 271.2314 418.0205 271.2456 417.522 C
+270.7354 418.0474 L
+F
288.0991 419.0308 m
+288.0991 419.0308 L
+Bb
+0 0 0 0 Bh
+1 (Unnamed gradient 5) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg
+81.888 0 0 -81.888 298.8145 387.5547 Bm
+F
0 BB
+*U
+*u
+0.3137 0.3137 0.3137 Xa
+271.3105 416.0151 m
+271.8477 415.4624 L
+272.1392 411.2412 272.9492 407.4707 274.0859 404.604 C
+275.5259 400.9141 277.542 398.8262 279.4141 398.8711 C
+280.9858 398.833 282.6528 400.2993 283.9995 402.9551 C
+284.3647 402.5791 L
+282.9902 399.9365 281.2744 398.3672 279.4141 398.3672 C
+275.2935 398.3672 271.8887 406.0327 271.3105 416.0151 C
+F
284.4541 403.9263 m
+284.5493 404.1455 284.6421 404.3716 284.7329 404.604 C
+286.1909 408.2578 287.1001 413.3789 287.1001 419.0308 C
+287.1001 424.6831 286.1909 429.7949 284.7329 433.458 C
+283.293 437.1479 281.2861 439.2358 279.4141 439.1909 C
+279.4141 439.6948 L
+283.9321 439.6948 287.5952 430.4429 287.5952 419.0308 C
+287.5952 412.8638 286.5249 407.3271 284.8286 403.541 C
+284.4541 403.9263 L
+F
271.2456 417.522 m
+271.2314 418.0205 271.2241 418.5234 271.2241 419.0308 C
+271.2241 430.4429 274.8872 439.6948 279.4141 439.6948 C
+279.4141 439.1909 L
+277.542 439.2358 275.5259 437.1479 274.0859 433.458 C
+272.6372 429.7949 271.7188 424.6831 271.728 419.0308 C
+271.7271 418.3408 271.7397 417.6592 271.7656 416.9868 C
+271.2456 417.522 L
+F
*U
+0.251 0.251 0.251 Xa
+265.6802 356.7871 m
+264.8252 357.5156 264.3208 358.4971 264.3208 359.5771 C
+264.3208 360.6484 264.8252 361.6289 265.6802 362.3584 C
+266.5352 363.0957 267.7412 363.5547 269.082 363.5547 C
+269.082 364.0586 L
+269.082 363.5547 L
+270.4229 363.5547 271.6201 363.0957 272.4751 362.3584 C
+273.3389 361.6289 273.8428 360.6484 273.8428 359.5771 C
+273.8428 358.4971 273.3389 357.5156 272.4751 356.7871 C
+271.6201 356.0488 270.4229 355.5898 269.082 355.5898 C
+267.7412 355.5898 266.5352 356.0488 265.6802 356.7871 C
+F
265.0322 356.0225 m
+263.9878 356.9131 263.313 358.1729 263.313 359.5771 C
+263.313 360.9717 263.9878 362.2324 265.0322 363.123 C
+266.085 364.0137 267.5068 364.5537 269.082 364.5537 C
+269.082 364.0586 L
+266.1748 364.0586 263.8169 362.043 263.8169 359.5771 C
+263.8169 357.0928 266.1748 355.0859 269.082 355.0859 C
+271.9888 355.0859 274.3472 357.0928 274.3472 359.5771 C
+274.3472 362.043 271.9888 364.0586 269.082 364.0586 C
+269.082 364.5537 L
+269.082 364.0586 L
+269.082 364.5537 L
+270.6479 364.5537 272.0791 364.0137 273.123 363.123 C
+274.1758 362.2324 274.8418 360.9717 274.8418 359.5771 C
+274.8418 358.1729 274.1758 356.9131 273.123 356.0225 C
+272.0791 355.1309 270.6479 354.5908 269.082 354.5908 C
+269.082 355.0859 L
+269.082 354.5908 L
+267.5161 354.5908 266.085 355.1309 265.0322 356.0225 C
+Bb
+0 0 0 0 Bh
+1 (Unnamed gradient 7) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg
+81.888 0 0 -81.888 298.8145 387.5547 Bm
+F
0 BB
+0.251 0.251 0.251 Xa
+263.8169 359.5771 m
+263.8169 362.043 266.1748 364.0586 269.082 364.0586 C
+269.082 363.5547 L
+267.7412 363.5547 266.5352 363.0957 265.6802 362.3584 C
+264.8252 361.6289 264.3208 360.6484 264.3208 359.5771 C
+264.3208 358.4971 264.8252 357.5156 265.6802 356.7871 C
+266.5352 356.0488 267.7412 355.5898 269.082 355.5898 C
+270.4229 355.5898 271.6201 356.0488 272.4751 356.7871 C
+273.3389 357.5156 273.8428 358.4971 273.8428 359.5771 C
+273.8428 360.6484 273.3389 361.6289 272.4751 362.3584 C
+271.6201 363.0957 270.4229 363.5547 269.082 363.5547 C
+269.082 364.0586 L
+271.9888 364.0586 274.3472 362.043 274.3472 359.5771 C
+274.3472 357.0928 271.9888 355.0859 269.082 355.0859 C
+266.1748 355.0859 263.8169 357.0928 263.8169 359.5771 C
+F
*u
+1 Ap
+0 0 0 Xa
+300.5015 289.0889 m
+300.5015 286.8623 298.8169 283.3809 296.5342 283.3809 C
+296.0659 283.3809 295.5981 283.5869 295.5981 284.0732 C
+295.5981 284.8037 296.3467 287.3486 296.8145 288.5459 C
+297.3013 289.8193 298.3867 290.6797 299.2661 290.6797 C
+300.4824 290.6797 300.5015 289.5947 300.5015 289.0889 C
+300.5015 289.0889 L
+f
1 D
+294.4565 290.7734 m
+294.8872 290.792 L
+295.3174 290.8105 295.6729 290.5859 295.6729 290.249 C
+295.6729 289.8564 293.7642 282.8945 293.2588 280.7988 C
+293.1094 280.2002 292.9971 279.6943 292.0049 279.6943 C
+292.0049 279.3955 L
+295.8413 279.3955 L
+295.8413 279.6758 L
+295.355 279.6758 294.6436 279.6758 294.6436 280.2744 C
+294.6436 280.6494 295.168 282.708 295.3364 283.3438 C
+295.7666 283.1191 296.1411 283.0254 296.6089 283.0254 C
+299.1914 283.0254 302.1855 286.1318 302.1855 289.0332 C
+302.1855 290.3799 301.624 291.4844 299.9585 291.4844 C
+298.4238 291.4844 297.3574 290.1182 296.9082 289.4629 C
+296.8706 289.501 L
+297.376 291.2412 L
+297.4507 291.4473 297.376 291.4844 297.3198 291.4844 C
+294.4194 291.0723 L
+294.4565 290.7734 L
+294.4565 290.7734 L
+f
*U
+0 D
+305.0459 282.1221 m
+304.5557 281.4922 304.3457 281.2119 304.0957 281.2119 C
+303.9458 281.2119 303.9458 281.3525 303.9458 281.4121 C
+303.9458 281.5225 304.0259 281.792 304.0459 281.8818 C
+305.5557 287.6719 L
+305.5059 287.7227 L
+304.9858 287.6025 304.4658 287.5127 303.9458 287.4521 C
+303.9458 287.292 L
+304.2061 287.3027 304.626 287.3027 304.626 287.042 C
+304.626 286.832 303.1758 281.6123 303.1758 281.4023 C
+303.1758 281.1221 303.2158 280.7822 303.6558 280.7822 C
+304.2759 280.7822 304.666 281.2627 305.1758 282.0322 C
+305.0459 282.1221 L
+305.0459 282.1221 L
+f
*u
+0 Ap
+289.1611 370.5566 m
+289.3589 370.7822 L
+290.0879 370.1074 290.5107 370.3945 291.0332 370.7373 C
+292.833 371.9248 298.9712 375.7139 299.2412 376.002 C
+299.4751 376.2451 299.3672 376.6504 299.0342 376.9287 C
+298.71 377.208 L
+298.8901 377.4512 L
+301.293 375.7773 L
+301.3291 375.7412 301.356 375.6602 301.167 375.5605 C
+299.6099 374.6338 L
+299.6099 374.5801 L
+300.3838 374.751 302.0938 375.0215 303.2188 373.9766 C
+304.4341 372.8428 304.0918 371.6553 303.1738 370.665 C
+301.1938 368.541 296.8921 368.3164 295.002 370.0801 C
+294.6602 370.3945 294.4531 370.7188 294.291 371.1777 C
+293.7329 370.8271 291.9419 369.6748 291.6899 369.4053 C
+291.2759 368.9639 291.7979 368.4775 292.1582 368.1543 C
+291.96 367.9473 L
+289.1611 370.5566 L
+F
1 D
+298.917 373.9766 m
+297.7559 373.4189 295.4702 372.0693 294.9751 371.5293 C
+294.6421 371.1777 294.8491 370.71 295.1909 370.3857 C
+296.856 368.8291 300.4648 370.2236 301.9858 371.8525 C
+302.3281 372.2217 303.0571 373.0322 302.166 373.8604 C
+301.8115 374.1895 301.2397 374.3711 300.5938 374.3711 C
+300.0581 374.3711 299.4717 374.2461 298.917 373.9766 C
+F
*U
+*u
+0 D
+300.4019 361.9443 m
+300.1138 362.2139 300.231 362.4482 300.375 362.6006 C
+300.5278 362.7725 300.7168 362.9072 301.0142 363.1143 C
+301.0142 363.1406 L
+299.7358 362.8262 299.2139 363.0869 298.8452 363.4287 C
+298.2329 363.9873 298.5298 364.6172 298.8901 364.9951 C
+299.916 366.1016 302.4092 366.2822 303.2822 365.4717 C
+303.687 365.085 303.5161 364.7969 303.3989 364.6084 C
+303.4258 364.6084 L
+304.8208 365.4814 L
+305.0732 365.6338 305.2891 365.7686 305.3882 365.8682 C
+305.541 366.0391 305.5322 366.1201 305.1357 366.5068 C
+305.2529 366.624 L
+305.6582 366.3184 306.0718 366.0215 306.522 365.751 C
+306.5313 365.6787 L
+305.0278 364.707 301.2388 362.4121 301.1221 362.2949 C
+301.0229 362.1865 301.0322 362.0791 301.104 362.0156 C
+301.2568 361.8721 301.5542 361.9082 302.1929 361.9707 C
+302.2109 361.8184 L
+301.9219 361.7441 301.6304 361.7119 301.3657 361.7119 C
+300.9219 361.7119 300.5542 361.8027 300.4019 361.9443 C
+F
1 D
+299.5562 364.4365 m
+299.439 364.3105 299.043 363.8877 299.4932 363.4736 C
+300.186 362.8262 302.2021 363.5459 303.0479 364.4551 C
+303.2012 364.626 303.5068 364.9502 303.1563 365.2646 C
+302.937 365.4697 302.6216 365.5527 302.2656 365.5527 C
+301.2886 365.5527 300.0044 364.9248 299.5562 364.4365 C
+F
*U
+0 D
+0.251 0.251 0.251 Xa
+330.7949 357.1738 m
+329.9307 357.9121 329.4268 358.8926 329.4268 359.9639 C
+329.4268 361.0439 329.9307 362.0254 330.7949 362.7539 C
+331.6504 363.4834 332.8564 363.9512 334.1875 363.9512 C
+334.1875 364.4551 L
+334.1875 363.9512 L
+335.5293 363.9512 336.7354 363.4834 337.5898 362.7539 C
+338.4453 362.0254 338.958 361.0439 338.958 359.9639 C
+338.958 358.8926 338.4453 357.9121 337.5898 357.1738 C
+336.7354 356.4453 335.5293 355.9863 334.1875 355.9863 C
+332.8564 355.9863 331.6504 356.4453 330.7949 357.1738 C
+F
331.3936 355.6104 m
+328.7412 358.3408 L
+328.5391 358.8486 328.4277 359.3955 328.4277 359.9639 C
+328.4277 361.3682 329.0938 362.6279 330.1475 363.5186 C
+331.1914 364.4102 332.6221 364.9502 334.1875 364.9502 C
+334.1875 364.4551 L
+331.2813 364.4551 328.9229 362.4395 328.9229 359.9639 C
+328.9229 357.4893 331.2813 355.4824 334.1875 355.4824 C
+337.0947 355.4824 339.4531 357.4893 339.4531 359.9639 C
+339.4531 362.4395 337.0947 364.4551 334.1875 364.4551 C
+334.1875 364.9502 L
+334.1875 364.4551 L
+334.1875 364.9502 L
+335.7627 364.9502 337.1846 364.4102 338.2383 363.5186 C
+339.2822 362.6279 339.957 361.3682 339.957 359.9639 C
+339.957 358.5693 339.2822 357.3086 338.2383 356.418 C
+337.1846 355.5273 335.7627 354.9873 334.1875 354.9873 C
+334.1875 355.4824 L
+334.1875 354.9873 L
+333.1777 354.9873 332.2236 355.2119 331.3936 355.6104 C
+Bb
+0 0 0 0 Bh
+1 (Unnamed gradient 8) 0 0 0 81.888 1 0 0 1 298.8145 -387.5547 Bg
+81.888 0 0 -81.888 298.8145 387.5547 Bm
+F
0 BB
+0.251 0.251 0.251 Xa
+328.9229 359.9639 m
+328.9229 362.4395 331.2813 364.4551 334.1875 364.4551 C
+334.1875 363.9512 L
+332.8564 363.9512 331.6504 363.4834 330.7949 362.7539 C
+329.9307 362.0254 329.4268 361.0439 329.4268 359.9639 C
+329.4268 358.8926 329.9307 357.9121 330.7949 357.1738 C
+331.6504 356.4453 332.8564 355.9863 334.1875 355.9863 C
+335.5293 355.9863 336.7354 356.4453 337.5898 357.1738 C
+338.4453 357.9121 338.958 358.8926 338.958 359.9639 C
+338.958 361.0439 338.4453 362.0254 337.5898 362.7539 C
+336.7354 363.4834 335.5293 363.9512 334.1875 363.9512 C
+334.1875 364.4551 L
+337.0947 364.4551 339.4531 362.4395 339.4531 359.9639 C
+339.4531 357.4893 337.0947 355.4824 334.1875 355.4824 C
+331.2813 355.4824 328.9229 357.4893 328.9229 359.9639 C
+F
*u
+1 1 1 Xa
+224 300.5 m
+373.5 300.5 L
+F
224 300.5 m
+F
*U
+372.708 300.4922 m
+370.9805 295.7402 L
+372.708 300.4922 L
+F
*u
+0 R
+0 0 0 XA
+224 300.5 m
+373.5 300.5 L
+S
224 300.5 m
+S
*U
+0 O
+0 0 0 Xa
+372.708 300.4922 m
+370.9805 305.2529 L
+373.167 303.3447 376.6953 301.5449 379.5303 300.4922 C
+376.6953 299.4395 373.167 297.6484 370.9805 295.7402 C
+372.708 300.4922 L
+F
217.9619 300.4922 m
+220.7969 301.5449 224.3252 303.3447 226.5029 305.2529 C
+224.7842 300.4922 L
+226.5029 295.7402 L
+224.3252 297.6484 220.7969 299.4395 217.9619 300.4922 C
+F
222.3101 466.4492 m
+222.543 466.9292 L
+223.0317 467.1494 L
+375.1738 310.5479 L
+374.9404 310.0684 L
+374.458 309.8496 L
+222.3101 466.4492 L
+F
370.332 307.9805 m
+374.9404 310.0684 L
+377.1543 314.6133 L
+377.3164 311.7148 378.4766 307.9346 379.7012 305.1631 C
+376.9648 306.4678 373.2207 307.7461 370.332 307.9805 C
+F
217.791 471.8252 m
+220.5269 470.52 224.271 469.251 227.1602 469.0078 C
+222.543 466.9292 L
+220.3379 462.3838 L
+220.1758 465.2729 219.0151 469.0527 217.791 471.8252 C
+F
U
LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_pattern_AI5 /terminate get exec
+AGM_Gradient /terminate get exec
+Adobe_typography_AI5 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/doc/scangeometry.gif b/doc/scangeometry.gif
new file mode 100644
index 0000000..5465713
Binary files /dev/null and b/doc/scangeometry.gif differ
diff --git a/doc/tex2rtf.ini b/doc/tex2rtf.ini
new file mode 100644
index 0000000..2d6e779
--- /dev/null
+++ b/doc/tex2rtf.ini
@@ -0,0 +1,31 @@
+winHelpVersion = 4
+winHelpContents = yes
+#generateHPJ = yes
+htmlWorkshopFiles = true
+#combineSubSections = true
+runTwice = yes
+useUpButton = yes
+winHelpTitle = "CTSim Manual"
+aliasFileName = "ctsim.alias"
+mapFileName = "../src/ctsim-map.h"
+\parbox [2]{}
+\mathrms [1]{}
+\sqrt [1]{}
+\sin [0]{}
+\tan [0]{}
+\hyphenation [1]{}
+\circ [0]{}
+\includeonly [1]{}
+\frac [2]{}
+\nonumber [0]{}
+\sum [0]{}
+\max [0]{}
+\atop [0]{}
+\setlength [2]{}
+\displaystyle [0]{}
+\textstyle [0]{}
+\[ [0]{}
+\] [0]{}
+\bar [1]{}
+\toocomplex [1]{}
+\quad [0]{}
diff --git a/doc/texhelp.sty b/doc/texhelp.sty
new file mode 100644
index 0000000..54769c3
--- /dev/null
+++ b/doc/texhelp.sty
@@ -0,0 +1,284 @@
+% LaTeX style file
+% Name:   texhelp.sty
+% Author: Julian Smart
+%
+% Purpose
+% -------
+% Style file to enable the simultaneous preparation of printed LaTeX and on-line
+% hypertext manuals.
+% Use in conjunction with Tex2RTF (see Tex2RTF documentation).
+%
+% Note that if a non-ASCII character starts a newline and there should be a space
+% between the last word on the previous line and the first word on this line,
+% you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored
+% in all other formats.
+%
+% Julian Smart
+% Artificial Intelligence Applications Institute
+%
+%
+% ============== C++/CLIPS Documentation Facilities ==============
+%
+% Each class definition should be typeset with e.g.
+%
+% \section{\class{Name}: Parent}
+%
+% followed by a description of the class.
+% Each member should follow:
+%
+% \membersection{wxName::Member}
+%
+% with a description of what this member does.
+% Then, one (or more if overloaded) member (function) in detail:
+%
+% \func{return type}{name}{args}
+% or
+% \member{type}{name}
+%
+% where args is a list of \param{type}{name}, ...
+
+% Function, e.g.
+% e.g. to typeset
+%
+% void DoIt(char *string);
+%
+% write:
+%
+% \func{void}{DoIt}{\param{char *}{string}}
+%
+
+\newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm
+{{\it #1} {\bf #2}\index{#2}}(#3)}
+
+% For function/type definition where the name is a pointer,
+% e.g. to typeset
+%
+% typedef void (*wxFunction)(wxObject&)
+%
+% write:
+%
+% \pfunc{typedef void}{wxFunction}{param{wxObject&}}
+
+\newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm
+{{\it #1} ({\bf *#2})\index{#2}}(#3)}
+
+% Use an ordinary \section command for class name definitions.
+
+% This is used for a member, such as wxBitmap: GetDepth
+\newcommand{\membersection}[1]{\subsection*{#1}\index{#1}}
+
+% CLIPS function
+\newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm
+{{\bf #1} ({\bf #2}\index{#2}}#3)}
+
+\newcommand{\clipssection}[1]{\chapter{#1}}
+
+% This is used for a CLIPS function name
+\newcommand{\functionsection}[1]{\subsection*{#1}}
+
+% Member: a type and a name
+\newcommand{\member}[2]{{\bf #1 \it #2}}
+
+% C++ Parameter: a type and a name (no intervening space)
+\newcommand{\param}[2]{{\it #1}{\bf #2}}
+
+% CLIPS Parameter: a type and a name (one intervening space)
+\newcommand{\cparam}[2]{{\bf #1} {\it #2}}
+
+% Class: puts in index
+\newcommand{\class}[1]{#1\index{#1}}
+
+% Void type
+\newcommand{\void}{{\it void}}
+
+% Typeset destructor
+\newcommand{\destruct}[1]{{$\sim$}#1}
+
+% Typeset insert/extract operators
+\newcommand{\cinsert}{$<<$}
+\newcommand{\cextract}{$>>$}
+
+
+% =================== Hypertext facilities ===================
+%
+% To insert hyperlinks (or references, in Latex), \label the sections
+% or membersections \label{ref-label} immediately after the section, on the same line,
+% and use \helpref{text-to-show}{ref-label} to make a reference.
+%
+
+% Type text with section reference
+\newcommand{\helpref}[2]{{\it #1} (section \ref{#2}) }
+
+% Type text with URL in verbatim mode
+%\newcommand{\urlref}[2]{#1 (\verb$#2$)}
+\newcommand{\urlref}[2]{#1 ($#2$)}
+%\newcommand{\urlref}[2]{#1 \begin{verbatim}(#2)\end{verbatim}}
+
+% Don't typeset section number in LaTeX
+\newcommand{\helprefn}[2]{{\it #1}}
+
+% Like helpref, but popup text in WinHelp instead of hyperlinked
+\newcommand{\popref}[2]{{\it #1}}
+
+% Like footnote, but popup text.
+\newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}}
+
+% =================== On-line help specific macros ===================
+%
+
+% Global document font size/family, help only.
+\newcommand{\helpfontsize}[1]{}
+\newcommand{\helpfontfamily}[1]{}
+
+% Ignore in all on-line help
+\newcommand{\helpignore}[1]{#1}
+% Only print in all on-line help
+\newcommand{\helponly}[1]{}
+
+% Ignore in LaTeX
+\newcommand{\latexignore}[1]{}
+% Only print in LaTeX
+\newcommand{\latexonly}[1]{#1}
+
+% Ignore in linear RTF
+\newcommand{\rtfignore}[1]{#1}
+% Only print in linear RTF
+\newcommand{\rtfonly}[1]{}
+
+% Ignore in WinHelp RTF
+\newcommand{\winhelpignore}[1]{#1}
+% Only print in WinHelp RTF
+\newcommand{\winhelponly}[1]{}
+
+% Ignore in wxHelp
+\newcommand{\xlpignore}[1]{#1}
+% Only print in wxHelp
+\newcommand{\xlponly}[1]{}
+
+% Ignore in HTML
+\newcommand{\htmlignore}[1]{#1}
+% Only print in HTML
+\newcommand{\htmlonly}[1]{}
+
+% Input a file only for help system (binder thickness is not a limitation
+% in help systems!)
+\newcommand{\helpinput}[1]{}
+
+\newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex
+
+% =================== Miscellaneous macros ===================
+%
+% Headings consistent with generated ones
+\newcommand{\myheading}[1]{\vspace*{25pt}
+\begin{flushleft}
+{\LARGE \bf #1}
+\end{flushleft}
+\vskip 20pt
+}
+
+% Heading with entry in contents page.
+\newcommand{\chapterheading}[1]{\myheading{#1}
+\addcontentsline{toc}{chapter}{#1}}
+
+\newcommand{\sectionheading}[1]{\myheading{#1}
+\addcontentsline{toc}{section}{#1}}
+
+% Glossary environment
+\newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}}
+
+% Glossary entry
+\newcommand{\gloss}[1]{\item[#1]\index{#1}}
+
+% Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox.
+\newcommand{\image}[2]{\psboxto(#1){#2}}
+
+% Image, left aligned (HTML)
+\newcommand{\imager}[2]{\psboxto(#1){#2}}
+
+% Image, right aligned (HTML)
+\newcommand{\imagel}[2]{\psboxto(#1){#2}}
+
+% Imagemap: principally for HTML only. In Latex,
+% acts like \image.
+\newcommand{\imagemap}[3]{\psboxto(#1){#2}}
+
+% Headers and footers
+% \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight}
+% {OddPageLeft}{OddPageCentre}{OddPageRight}
+\newcommand{\setheader}[6]{
+\lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}}
+\chead[\fancyplain{}{#2}]{\fancyplain{}{#5}}
+\rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}}
+}
+
+% \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight}
+% {OddPageLeft}{OddPageCentre}{OddPageRight}
+\newcommand{\setfooter}[6]{
+\lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}}
+\cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}}
+\rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}}
+}
+
+% Needed for telling RTF where margin paragraph should go
+% in mirrored margins mode.
+\newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}}
+\newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}}
+
+% Environment for two-column table popular in WinHelp and manuals.
+\newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}}
+\newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}}
+\newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}}
+
+\twocolwidtha{3cm}
+\twocolwidthb{8.5cm}
+\twocolspacing{2}
+
+\newcommand{\twocolitem}[2]{#1 & #2\\}
+\newcommand{\twocolitemruled}[2]{#1 & #2\\\hline}
+
+\newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}%
+{\end{tabular}\renewcommand{\arraystretch}{1}}
+
+% Specifying table rows for RTF compatibility
+\newcommand{\row}[1]{#1\\}
+
+% Use for the last ruled row for correct RTF generation.
+\newcommand{\ruledrow}[1]{#1\\\hline}
+
+% Indentation environment. Arg1 is left margin size
+\newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}%
+{\end{list}}
+
+% Framed box of text, normal formatting.
+\newcommand{\normalbox}[1]{\fbox{\vbox{#1}}}
+% Double-framed box of text.
+\newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}}
+
+% WITHDRAWN -- can't do in RTF, easily.
+% Framed box of text, horizontally centred. Ragged right within box.
+% \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}}
+% Double-framed box of text, horizontally centred. Ragged right within box.
+% \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}}
+
+% toocomplex environment: simply prints the argument in LaTeX,
+% comes out verbatim in all generated formats.
+\newenvironment{toocomplex}{}{}
+
+% Colour: dummy commands since LaTeX doesn't support colour.
+% \definecolour{name}{red}{blue}{green}
+% \fcol{name}{text} ; Foreground
+% \bcol{name}{text} ; Background
+\newcommand{\definecolour}[4]{}
+\newcommand{\definecolor}[4]{}
+\newcommand{\fcol}[2]{#2}
+\newcommand{\bcol}[2]{#2}
+\newcommand{\sethotspotcolour}[1]{}
+\newcommand{\sethotspotunderline}[1]{}
+\newcommand{\settransparency}[1]{}
+\newcommand{\backslashraw}[0]{}
+\newcommand{\lbraceraw}[0]{}
+\newcommand{\rbraceraw}[0]{}
+\newcommand{\registered}[0]{(r)}
+\newcommand{\background}[1]{}
+\newcommand{\textcolour}[1]{}
+\newcommand{\overview}[2]{See \helpref{#1}{#2}.}
diff --git a/doc/verbatim.sty b/doc/verbatim.sty
new file mode 100644
index 0000000..462c329
--- /dev/null
+++ b/doc/verbatim.sty
@@ -0,0 +1,212 @@
+%% 
+%% This is file `verbatim.sty' generated
+%% on <1991/9/3> with the docstrip utility (v1.1l test). 
+%% 
+%% The original source file was `verbatim.doc'.
+%% 
+%% 
+%% Copyright (C) 1989,1990,1991 by Rainer Schoepf. All rights reserved. 
+%% 
+%% IMPORTANT NOTICE: 
+%% 
+%% You are not allowed to change this file. You may however copy this file 
+%% to a different name and then change this copy. 
+%% 
+%% You are allowed to distribute this file under the condition that it is 
+%% distributed together with all files mentioned in readme.mz4. If you 
+%% receive only some of these files from someone, complain! 
+%% 
+%% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED 
+%% to take money for the distribution or use of this file (or a changed 
+%% version) except for some nominal charge for copying etc. 
+%% 
+%% Error Reports in case of UNCHANGED versions to 
+%% 
+%% Rainer Schoepf 
+%% Konrad-Zuse-Zentrum fuer Informationstechnik Berlin 
+%% Heilbronner Str. 10 
+%% W-1000 Berlin 31 
+%% Federal Republic of Germany 
+%% Internet: <SCHOEPF at SC.ZIB-Berlin.DE> 
+%% 
+\def\fileversion{v1.4f}
+\def\filedate{91/08/05}
+\def\docdate{91/08/05}
+
+%% \CheckSum{439}
+%% \CharacterTable
+%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%%   Digits        \0\1\2\3\4\5\6\7\8\9
+%%   Exclamation   \!     Double quote  \"     Hash (number) \#
+%%   Dollar        \$     Percent       \%     Ampersand     \&
+%%   Acute accent  \'     Left paren    \(     Right paren   \)
+%%   Asterisk      \*     Plus          \+     Comma         \,
+%%   Minus         \-     Point         \.     Solidus       \/
+%%   Colon         \:     Semicolon     \;     Less than     \<
+%%   Equals        \=     Greater than  \>     Question mark \?
+%%   Commercial at \@     Left bracket  \[     Backslash     \\
+%%   Right bracket \]     Circumflex    \^     Underscore    \_
+%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
+%%   Right brace   \}     Tilde         \~}
+%%
+%% Style-option `verbatim' to use with LaTeX v2.09
+%% Copyright (C) 1989, 1990, 1991 by Rainer Sch\"opf, all rights reserved.
+\@ifundefined{verbatim@@@}{}{\endinput}
+\typeout{Style-Option: `verbatim'
+   \fileversion \space <\filedate>  (RmS)}
+\typeout{English Documentation
+   \@spaces \@spaces \space <\docdate>  (RmS)}
+\def\addto at hook#1#2{#1\expandafter{\the#1#2}}
+\newtoks\every at verbatim
+\every at verbatim={}
+\def\@makeother#1{\catcode`#112\relax}
+\begingroup
+ \catcode`\ =\active%
+\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}%
+\endgroup
+\def\@xobeysp{\leavevmode\penalty\@M\ }
+\newtoks\verbatim at line
+\def\verbatim at startline{\verbatim at line{}}
+\def\verbatim at addtoline#1{%
+  \verbatim at line\expandafter{\the\verbatim at line#1}}
+\def\verbatim at processline{\the\verbatim at line\par}
+\def\verbatim at finish{\ifcat$\the\verbatim at line$\else
+  \verbatim at processline\fi}
+\begingroup
+ \catcode`\`=\active
+ \gdef\verbatim at font{\tt \catcode96\active
+   \def`{\leavevmode\kern\z@\char96 }}
+\endgroup
+\def\@verbatim{\the\every at verbatim
+  \trivlist \item[]%
+  \leftskip\@totalleftmargin\rightskip\z@
+  \parindent\z@\parfillskip\@flushglue\parskip\z@
+  \@@par
+  \def\par{\leavevmode\null\@@par\penalty\interlinepenalty}%
+  \obeylines
+  \verbatim at font
+  \let\do\@makeother \dospecials}
+\def\verbatim{\@verbatim \frenchspacing\@vobeyspaces\verbatim at start}
+\@namedef{verbatim*}{\@verbatim\verbatim at start}
+\let\endverbatim=\endtrivlist
+\expandafter\let\csname endverbatim*\endcsname =\endtrivlist
+\def\comment{\@bsphack
+             \let\do\@makeother\dospecials\catcode`\^^M\active
+             \let\verbatim at startline\relax
+             \let\verbatim at addtoline\@gobble
+             \let\verbatim at processline\relax
+             \let\verbatim at finish\relax
+             \verbatim@}
+\let\endcomment=\@esphack
+\@ifundefined{vrb at catcodes}%
+  {\def\vrb at catcodes{%
+     \catcode`\!12\catcode`\[12\catcode`\]12}}{}
+\begingroup
+ \vrb at catcodes
+ \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\}
+ \catcode`\~=\active \lccode`\~=`\^^M
+ \lccode`\C=`\C
+ \lowercase{%
+    \gdef\verbatim at start#1{%
+      \verbatim at startline
+      \if\noexpand#1\noexpand~%
+        \let\next\verbatim@
+      \else \def\next{\verbatim@#1}\fi
+      \next}%
+    \gdef\verbatim@#1~{\verbatim@@#1!end\@nil}%
+    \gdef\verbatim@@#1!end{%
+       \verbatim at addtoline{#1}%
+       \futurelet\next\verbatim@@@}%
+    \gdef\verbatim@@@#1\@nil{%
+       \ifx\next\@nil
+         \verbatim at processline
+         \verbatim at startline
+         \let\next\verbatim@
+       \else
+         \def\@tempa##1!end\@nil{\toks@{##1}}%
+           \@tempa#1\@nil
+         \@temptokena{!end}%
+         \edef\next{\noexpand\verbatim at test\the\toks@\noexpand~}%
+       \fi \next}%
+ \gdef\verbatim at test#1{%
+           \let\next\verbatim at test
+           \if\noexpand#1\noexpand~%
+             \expandafter\verbatim at addtoline
+               \expandafter{\the\@temptokena}%
+             \verbatim at processline
+             \verbatim at startline
+             \let\next\verbatim@
+           \else \if\noexpand#1
+             \@temptokena\expandafter{\the\@temptokena#1}%
+           \else \if\noexpand#1\noexpand[%
+             \let\@tempc\@empty
+             \let\next\verbatim at testend
+           \else
+             \expandafter\verbatim at addtoline
+               \expandafter{\the\@temptokena}%
+             \def\next{\verbatim@#1}%
+           \fi\fi\fi
+           \next}%
+    \gdef\verbatim at testend#1{%
+         \if\noexpand#1\noexpand~%
+           \expandafter\verbatim at addtoline
+             \expandafter{\the\@temptokena[}%
+           \expandafter\verbatim at addtoline
+             \expandafter{\@tempc}%
+           \verbatim at processline
+           \verbatim at startline
+           \let\next\verbatim@
+         \else\if\noexpand#1\noexpand]%
+           \let\next\verbatim@@testend
+         \else\if\noexpand#1\noexpand!%
+           \expandafter\verbatim at addtoline
+             \expandafter{\the\@temptokena[}%
+           \expandafter\verbatim at addtoline
+             \expandafter{\@tempc}%
+           \def\next{\verbatim@!}%
+         \else \expandafter\def\expandafter\@tempc\expandafter
+           {\@tempc#1}\fi\fi\fi
+         \next}%
+    \gdef\verbatim@@testend{%
+       \ifx\@tempc\@currenvir
+         \verbatim at finish
+         \edef\next{\noexpand\end{\@currenvir}%
+                    \noexpand\verbatim at rescan{\@currenvir}}%
+       \else
+         \expandafter\verbatim at addtoline
+           \expandafter{\the\@temptokena[}%
+           \expandafter\verbatim at addtoline
+             \expandafter{\@tempc]}%
+         \let\next\verbatim@
+       \fi
+       \next}%
+  \gdef\verbatim at rescan#1#2~{\if\noexpand~\noexpand#2~\else
+        \@warning{Characters dropped after `\string\end{#1}'}\fi}}
+\endgroup
+\def\verbatiminput{\begingroup
+  \@ifstar\sverbatim at input\verbatim at input}
+\def\sverbatim at input#1{\@verbatim
+  \@input{#1}\endtrivlist\endgroup\@doendpe}
+\def\verbatim at input#1{\@verbatim
+  \frenchspacing \@vobeyspaces
+  \@input{#1}\endtrivlist\endgroup\@doendpe}
+\begingroup
+  \lccode`\~=`\^^M
+  \lowercase{%
+    \gdef\verb{\begingroup
+      \verbatim at font
+      \catcode`\^^M\active
+      \def~{\endgroup\@latexerr{\string\verb\space command ended by
+                                end of line.}\@ehc}%
+    \let\do\@makeother \dospecials
+    \@ifstar\@sverb{\@vobeyspaces \frenchspacing \@sverb}}}
+\endgroup
+\def\@sverb#1{%
+  \catcode`#1\active
+  \lccode`\~`#1%
+  \lowercase{\let~\endgroup}%
+  \leavevmode\null}
+\endinput
+%% 
+%% End of file `verbatim.sty'.
diff --git a/docs/ctsim.htb b/docs/ctsim.htb
new file mode 100644
index 0000000..9ae2219
Binary files /dev/null and b/docs/ctsim.htb differ
diff --git a/docs/ctsim.pdf b/docs/ctsim.pdf
new file mode 100644
index 0000000..72ab549
Binary files /dev/null and b/docs/ctsim.pdf differ
diff --git a/docs/html.tar.gz b/docs/html.tar.gz
new file mode 100644
index 0000000..9d751e4
Binary files /dev/null and b/docs/html.tar.gz differ
diff --git a/getopt/Makefile b/getopt/Makefile
new file mode 100644
index 0000000..9e7bfb4
--- /dev/null
+++ b/getopt/Makefile
@@ -0,0 +1,439 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# getopt/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = getopt
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in depcomp
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libgetopt_a_AR = $(AR) $(ARFLAGS)
+libgetopt_a_LIBADD =
+am_libgetopt_a_OBJECTS = getopt.$(OBJEXT) getopt1.$(OBJEXT)
+libgetopt_a_OBJECTS = $(am_libgetopt_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libgetopt_a_SOURCES)
+DIST_SOURCES = $(libgetopt_a_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+noinst_LIBRARIES = libgetopt.a
+libgetopt_a_SOURCES = getopt.c getopt1.c 
+noinst_HEADERS = getopt.h
+INCLUDES =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  getopt/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  getopt/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libgetopt.a: $(libgetopt_a_OBJECTS) $(libgetopt_a_DEPENDENCIES) 
+	-rm -f libgetopt.a
+	$(libgetopt_a_AR) libgetopt.a $(libgetopt_a_OBJECTS) $(libgetopt_a_LIBADD)
+	$(RANLIB) libgetopt.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/getopt.Po
+include ./$(DEPDIR)/getopt1.Po
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/getopt/Makefile.am b/getopt/Makefile.am
new file mode 100644
index 0000000..baefe33
--- /dev/null
+++ b/getopt/Makefile.am
@@ -0,0 +1,5 @@
+noinst_LIBRARIES=libgetopt.a
+libgetopt_a_SOURCES=getopt.c getopt1.c 
+noinst_HEADERS=getopt.h
+INCLUDES=@my_includes@
+EXTRA_DIST=Makefile.nt
diff --git a/getopt/Makefile.in b/getopt/Makefile.in
new file mode 100644
index 0000000..82318c5
--- /dev/null
+++ b/getopt/Makefile.in
@@ -0,0 +1,461 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = getopt
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in depcomp
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libgetopt_a_AR = $(AR) $(ARFLAGS)
+libgetopt_a_LIBADD =
+am_libgetopt_a_OBJECTS = getopt.$(OBJEXT) getopt1.$(OBJEXT)
+libgetopt_a_OBJECTS = $(am_libgetopt_a_OBJECTS)
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libgetopt_a_SOURCES)
+DIST_SOURCES = $(libgetopt_a_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+noinst_LIBRARIES = libgetopt.a
+libgetopt_a_SOURCES = getopt.c getopt1.c 
+noinst_HEADERS = getopt.h
+INCLUDES = @my_includes@
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu getopt/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu getopt/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libgetopt.a: $(libgetopt_a_OBJECTS) $(libgetopt_a_DEPENDENCIES) 
+	-rm -f libgetopt.a
+	$(libgetopt_a_AR) libgetopt.a $(libgetopt_a_OBJECTS) $(libgetopt_a_LIBADD)
+	$(RANLIB) libgetopt.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getopt.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getopt1.Po at am__quote@
+
+.c.o:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+ at am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES) $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/getopt/depcomp b/getopt/depcomp
new file mode 100755
index 0000000..51606f8
--- /dev/null
+++ b/getopt/depcomp
@@ -0,0 +1,464 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000 Free Software Foundation, Inc.
+
+# 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, 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., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  This file always lives in the current directory.
+  # Also, the AIX compiler puts `$object:' at the start of each line;
+  # $object doesn't have directory information.
+  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  outname="$stripped.o"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Must come before tru64.
+
+  # Intel's C compiler understands `-MD -MF file'.  However
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a space and a tab in the [].
+      sed -e 's,^.*\.[a-z]*:[ 	]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the proprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
diff --git a/getopt/getopt.c b/getopt/getopt.c
new file mode 100644
index 0000000..63c2ca2
--- /dev/null
+++ b/getopt/getopt.c
@@ -0,0 +1,1069 @@
+/* Getopt for GNU.
+   NOTE: getopt is now part of the C library, so if you don't know what
+   "Keep this file name-space clean" means, talk to drepper at gnu.org
+   before changing it!
+
+   Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+        Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+

+/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
+   Ditto for AIX 3.2 and <stdlib.h>.  */
+#ifndef _NO_PROTO
+# define _NO_PROTO
+#endif
+
+#ifdef HAVE_CONFIG_H
+//# include <config.h>
+#endif
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+# ifndef const
+#  define const
+# endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+# include <gnu-versions.h>
+# if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#  define ELIDE_CODE
+# endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef  __GNU_LIBRARY__
+/* Don't include stdlib.h for non-GNU C libraries because some of them
+   contain conflicting prototypes for getopt.  */
+# include <stdlib.h>
+# include <unistd.h>
+#endif  /* GNU C library.  */
+
+#ifdef VMS
+# include <unixlib.h>
+# if HAVE_STRING_H - 0
+#  include <string.h>
+# endif
+#endif
+
+#ifndef _
+/* This is for other GNU distributions with internationalized messages.
+   When compiling libc, the _ macro is predefined.  */
+# ifdef HAVE_LIBINTL_H
+#  include <libintl.h>
+#  define _(msgid)      gettext (msgid)
+# else
+#  define _(msgid)      (msgid)
+# endif
+#endif
+
+/* This version of `getopt' appears to the caller like standard Unix `getopt'
+   but it behaves differently for the user, since it allows the user
+   to intersperse the options with the other arguments.
+
+   As `getopt' works, it permutes the elements of ARGV so that,
+   when it is done, all the options precede everything else.  Thus
+   all application programs are extended to handle flexible argument order.
+
+   Setting the environment variable POSIXLY_CORRECT disables permutation.
+   Then the behavior is completely standard.
+
+   GNU application programs can use a third alternative mode in which
+   they can distinguish the relative order of options and other arguments.  */
+
+#include "getopt.h"
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+#if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG)
+char *optarg;
+#endif
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+/* 1003.2 says this must be 1 before any call.  */
+#if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG)
+int optind = 1;
+#endif
+
+/* Formerly, initialization of getopt depended on optind==0, which
+   causes problems with re-calling getopt as programs generally don't
+   know that. */
+
+#if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG)
+int __getopt_initialized;
+#else
+extern int __getopt_initialized;
+#endif
+
+/* The next char to be scanned in the option-element
+   in which the last option character we returned was found.
+   This allows us to pick up the scan where we left off.
+
+   If this is zero, or a null string, it means resume the scan
+   by advancing to the next ARGV-element.  */
+
+static char *nextchar;
+
+/* Callers store zero here to inhibit the error message
+   for unrecognized options.  */
+
+#if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG)
+int opterr = 1;
+#endif
+
+/* Set to an option character which was unrecognized.
+   This must be initialized on some systems to avoid linking in the
+   system's own getopt implementation.  */
+
+#if ! defined(HAVE_GETOPT) && ! defined(HAVE_GETOPT_LONG)
+int optopt = '?';
+#endif
+
+/* Describe how to deal with options that follow non-option ARGV-elements.
+
+   If the caller did not specify anything,
+   the default is REQUIRE_ORDER if the environment variable
+   POSIXLY_CORRECT is defined, PERMUTE otherwise.
+
+   REQUIRE_ORDER means don't recognize them as options;
+   stop option processing when the first non-option is seen.
+   This is what Unix does.
+   This mode of operation is selected by either setting the environment
+   variable POSIXLY_CORRECT, or using `+' as the first character
+   of the list of option characters.
+
+   PERMUTE is the default.  We permute the contents of ARGV as we scan,
+   so that eventually all the non-options are at the end.  This allows options
+   to be given in any order, even with programs that were not written to
+   expect this.
+
+   RETURN_IN_ORDER is an option available to programs that were written
+   to expect options and other ARGV-elements in any order and that care about
+   the ordering of the two.  We describe each non-option ARGV-element
+   as if it were the argument of an option with character code 1.
+   Using `-' as the first character of the list of option characters
+   selects this mode of operation.
+
+   The special argument `--' forces an end of option-scanning regardless
+   of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
+   `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
+
+static enum
+{
+  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+} ordering;
+
+/* Value of POSIXLY_CORRECT environment variable.  */
+static char *posixly_correct;
+

+#ifdef  __GNU_LIBRARY__
+/* We want to avoid inclusion of string.h with non-GNU libraries
+   because there are many ways it can cause trouble.
+   On some systems, it contains special magic macros that don't work
+   in GCC.  */
+# include <string.h>
+# define my_index       strchr
+#else
+
+# if HAVE_STRING_H
+#  include <string.h>
+# else
+#  include <strings.h>
+# endif
+
+/* Avoid depending on library functions or files
+   whose names are inconsistent.  */
+
+#ifndef getenv
+extern char *getenv ();
+#endif
+
+static char *
+my_index (str, chr)
+     const char *str;
+     int chr;
+{
+  while (*str)
+    {
+      if (*str == chr)
+        return (char *) str;
+      str++;
+    }
+  return 0;
+}
+
+/* If using GCC, we can safely declare strlen this way.
+   If not using GCC, it is ok not to declare it.  */
+#ifdef __GNUC__
+/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h.
+   That was relevant to code that was here before.  */
+# if (!defined __STDC__ || !__STDC__) && !defined strlen
+/* gcc with -traditional declares the built-in strlen to return int,
+   and has done so at least since version 2.4.5. -- rms.  */
+extern int strlen (const char *);
+# endif /* not __STDC__ */
+#endif /* __GNUC__ */
+
+#endif /* not __GNU_LIBRARY__ */
+

+/* Handle permutation of arguments.  */
+
+/* Describe the part of ARGV that contains non-options that have
+   been skipped.  `first_nonopt' is the index in ARGV of the first of them;
+   `last_nonopt' is the index after the last of them.  */
+
+static int first_nonopt;
+static int last_nonopt;
+
+#ifdef _LIBC
+/* Bash 2.0 gives us an environment variable containing flags
+   indicating ARGV elements that should not be considered arguments.  */
+
+/* Defined in getopt_init.c  */
+extern char *__getopt_nonoption_flags;
+
+static int nonoption_flags_max_len;
+static int nonoption_flags_len;
+
+static int original_argc;
+static char *const *original_argv;
+
+/* Make sure the environment variable bash 2.0 puts in the environment
+   is valid for the getopt call we must make sure that the ARGV passed
+   to getopt is that one passed to the process.  */
+static void
+__attribute__ ((unused))
+store_args_and_env (int argc, char *const *argv)
+{
+  /* XXX This is no good solution.  We should rather copy the args so
+     that we can compare them later.  But we must not use malloc(3).  */
+  original_argc = argc;
+  original_argv = argv;
+}
+# ifdef text_set_element
+text_set_element (__libc_subinit, store_args_and_env);
+# endif /* text_set_element */
+
+# define SWAP_FLAGS(ch1, ch2) \
+  if (nonoption_flags_len > 0)                                                \
+    {                                                                         \
+      char __tmp = __getopt_nonoption_flags[ch1];                             \
+      __getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2];          \
+      __getopt_nonoption_flags[ch2] = __tmp;                                  \
+    }
+#else   /* !_LIBC */
+# define SWAP_FLAGS(ch1, ch2)
+#endif  /* _LIBC */
+
+/* Exchange two adjacent subsequences of ARGV.
+   One subsequence is elements [first_nonopt,last_nonopt)
+   which contains all the non-options that have been skipped so far.
+   The other is elements [last_nonopt,optind), which contains all
+   the options processed since those non-options were skipped.
+
+   `first_nonopt' and `last_nonopt' are relocated so that they describe
+   the new indices of the non-options in ARGV after they are moved.  */
+
+#if defined __STDC__ && __STDC__
+static void exchange (char **);
+#endif
+
+static void
+exchange (argv)
+     char **argv;
+{
+  int bottom = first_nonopt;
+  int middle = last_nonopt;
+  int top = optind;
+  char *tem;
+
+  /* Exchange the shorter segment with the far end of the longer segment.
+     That puts the shorter segment into the right place.
+     It leaves the longer segment in the right place overall,
+     but it consists of two parts that need to be swapped next.  */
+
+#ifdef _LIBC
+  /* First make sure the handling of the `__getopt_nonoption_flags'
+     string can work normally.  Our top argument must be in the range
+     of the string.  */
+  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
+    {
+      /* We must extend the array.  The user plays games with us and
+         presents new arguments.  */
+      char *new_str = malloc (top + 1);
+      if (new_str == NULL)
+        nonoption_flags_len = nonoption_flags_max_len = 0;
+      else
+        {
+          memset (__mempcpy (new_str, __getopt_nonoption_flags,
+                             nonoption_flags_max_len),
+                  '\0', top + 1 - nonoption_flags_max_len);
+          nonoption_flags_max_len = top + 1;
+          __getopt_nonoption_flags = new_str;
+        }
+    }
+#endif
+
+  while (top > middle && middle > bottom)
+    {
+      if (top - middle > middle - bottom)
+        {
+          /* Bottom segment is the short one.  */
+          int len = middle - bottom;
+          register int i;
+
+          /* Swap it with the top part of the top segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[top - (middle - bottom) + i];
+              argv[top - (middle - bottom) + i] = tem;
+              SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
+            }
+          /* Exclude the moved bottom segment from further swapping.  */
+          top -= len;
+        }
+      else
+        {
+          /* Top segment is the short one.  */
+          int len = top - middle;
+          register int i;
+
+          /* Swap it with the bottom part of the bottom segment.  */
+          for (i = 0; i < len; i++)
+            {
+              tem = argv[bottom + i];
+              argv[bottom + i] = argv[middle + i];
+              argv[middle + i] = tem;
+              SWAP_FLAGS (bottom + i, middle + i);
+            }
+          /* Exclude the moved top segment from further swapping.  */
+          bottom += len;
+        }
+    }
+
+  /* Update records for the slots the non-options now occupy.  */
+
+  first_nonopt += (optind - last_nonopt);
+  last_nonopt = optind;
+}
+
+/* Initialize the internal data when the first call is made.  */
+
+#if defined __STDC__ && __STDC__
+static const char *_getopt_initialize (int, char *const *, const char *);
+#endif
+static const char *
+_getopt_initialize (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  /* Start processing options with ARGV-element 1 (since ARGV-element 0
+     is the program name); the sequence of previously skipped
+     non-option ARGV-elements is empty.  */
+
+  first_nonopt = last_nonopt = optind;
+
+  nextchar = NULL;
+
+  posixly_correct = getenv ("POSIXLY_CORRECT");
+
+  /* Determine how to handle the ordering of options and nonoptions.  */
+
+  if (optstring[0] == '-')
+    {
+      ordering = RETURN_IN_ORDER;
+      ++optstring;
+    }
+  else if (optstring[0] == '+')
+    {
+      ordering = REQUIRE_ORDER;
+      ++optstring;
+    }
+  else if (posixly_correct != NULL)
+    ordering = REQUIRE_ORDER;
+  else
+    ordering = PERMUTE;
+
+#ifdef _LIBC
+  if (posixly_correct == NULL
+      && argc == original_argc && argv == original_argv)
+    {
+      if (nonoption_flags_max_len == 0)
+        {
+          if (__getopt_nonoption_flags == NULL
+              || __getopt_nonoption_flags[0] == '\0')
+            nonoption_flags_max_len = -1;
+          else
+            {
+              const char *orig_str = __getopt_nonoption_flags;
+              int len = nonoption_flags_max_len = strlen (orig_str);
+              if (nonoption_flags_max_len < argc)
+                nonoption_flags_max_len = argc;
+              __getopt_nonoption_flags =
+                (char *) malloc (nonoption_flags_max_len);
+              if (__getopt_nonoption_flags == NULL)
+                nonoption_flags_max_len = -1;
+              else
+                memset (__mempcpy (__getopt_nonoption_flags, orig_str, len),
+                        '\0', nonoption_flags_max_len - len);
+            }
+        }
+      nonoption_flags_len = nonoption_flags_max_len;
+    }
+  else
+    nonoption_flags_len = 0;
+#endif
+
+  return optstring;
+}
+

+/* Scan elements of ARGV (whose length is ARGC) for option characters
+   given in OPTSTRING.
+
+   If an element of ARGV starts with '-', and is not exactly "-" or "--",
+   then it is an option element.  The characters of this element
+   (aside from the initial '-') are option characters.  If `getopt'
+   is called repeatedly, it returns successively each of the option characters
+   from each of the option elements.
+
+   If `getopt' finds another option character, it returns that character,
+   updating `optind' and `nextchar' so that the next call to `getopt' can
+   resume the scan with the following option character or ARGV-element.
+
+   If there are no more option characters, `getopt' returns -1.
+   Then `optind' is the index in ARGV of the first ARGV-element
+   that is not an option.  (The ARGV-elements have been permuted
+   so that those that are not options now come last.)
+
+   OPTSTRING is a string containing the legitimate option characters.
+   If an option character is seen that is not listed in OPTSTRING,
+   return '?' after printing an error message.  If you set `opterr' to
+   zero, the error message is suppressed but we still return '?'.
+
+   If a char in OPTSTRING is followed by a colon, that means it wants an arg,
+   so the following text in the same ARGV-element, or the text of the following
+   ARGV-element, is returned in `optarg'.  Two colons mean an option that
+   wants an optional arg; if there is text in the current ARGV-element,
+   it is returned in `optarg', otherwise `optarg' is set to zero.
+
+   If OPTSTRING starts with `-' or `+', it requests different methods of
+   handling the non-option ARGV-elements.
+   See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
+
+   Long-named options begin with `--' instead of `-'.
+   Their names may be abbreviated as long as the abbreviation is unique
+   or is an exact match for some defined option.  If they have an
+   argument, it follows the option name in the same ARGV-element, separated
+   from the option name by a `=', or else the in next ARGV-element.
+   When `getopt' finds a long-named option, it returns 0 if that option's
+   `flag' field is nonzero, the value of the option's `val' field
+   if the `flag' field is zero.
+
+   The elements of ARGV aren't really const, because we permute them.
+   But we pretend they're const in the prototype to be compatible
+   with other systems.
+
+   LONGOPTS is a vector of `struct option' terminated by an
+   element containing a name which is zero.
+
+   LONGIND returns the index in LONGOPT of the long-named option found.
+   It is only valid when a long-named option has been found by the most
+   recent call.
+
+   If LONG_ONLY is nonzero, '-' as well as '--' can introduce
+   long-named options.  */
+
+int
+_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+     const struct option *longopts;
+     int *longind;
+     int long_only;
+{
+  int print_errors = opterr;
+  if (optstring[0] == ':')
+    print_errors = 0;
+
+  optarg = NULL;
+
+  if (optind == 0 || !__getopt_initialized)
+    {
+      if (optind == 0)
+        optind = 1;     /* Don't scan ARGV[0], the program name.  */
+      optstring = _getopt_initialize (argc, argv, optstring);
+      __getopt_initialized = 1;
+    }
+
+  /* Test whether ARGV[optind] points to a non-option argument.
+     Either it does not have option syntax, or there is an environment flag
+     from the shell indicating it is not an option.  The later information
+     is only used when the used in the GNU libc.  */
+#ifdef _LIBC
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'       \
+                      || (optind < nonoption_flags_len                        \
+                          && __getopt_nonoption_flags[optind] == '1'))
+#else
+# define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
+#endif
+
+  if (nextchar == NULL || *nextchar == '\0')
+    {
+      /* Advance to the next ARGV-element.  */
+
+      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+         moved back by the user (who may also have changed the arguments).  */
+      if (last_nonopt > optind)
+        last_nonopt = optind;
+      if (first_nonopt > optind)
+        first_nonopt = optind;
+
+      if (ordering == PERMUTE)
+        {
+          /* If we have just processed some options following some non-options,
+             exchange them so that the options come first.  */
+
+          if (first_nonopt != last_nonopt && last_nonopt != optind)
+            exchange ((char **) argv);
+          else if (last_nonopt != optind)
+            first_nonopt = optind;
+
+          /* Skip any additional non-options
+             and extend the range of non-options previously skipped.  */
+
+          while (optind < argc && NONOPTION_P)
+            optind++;
+          last_nonopt = optind;
+        }
+
+      /* The special ARGV-element `--' means premature end of options.
+         Skip it like a null option,
+         then exchange with previous non-options as if it were an option,
+         then skip everything else like a non-option.  */
+
+      if (optind != argc && !strcmp (argv[optind], "--"))
+        {
+          optind++;
+
+          if (first_nonopt != last_nonopt && last_nonopt != optind)
+            exchange ((char **) argv);
+          else if (first_nonopt == last_nonopt)
+            first_nonopt = optind;
+          last_nonopt = argc;
+
+          optind = argc;
+        }
+
+      /* If we have done all the ARGV-elements, stop the scan
+         and back over any non-options that we skipped and permuted.  */
+
+      if (optind == argc)
+        {
+          /* Set the next-arg-index to point at the non-options
+             that we previously skipped, so the caller will digest them.  */
+          if (first_nonopt != last_nonopt)
+            optind = first_nonopt;
+          return -1;
+        }
+
+      /* If we have come to a non-option and did not permute it,
+         either stop the scan or describe it to the caller and pass it by.  */
+
+      if (NONOPTION_P)
+        {
+          if (ordering == REQUIRE_ORDER)
+            return -1;
+          optarg = argv[optind++];
+          return 1;
+        }
+
+      /* We have found another option-ARGV-element.
+         Skip the initial punctuation.  */
+
+      nextchar = (argv[optind] + 1
+                  + (longopts != NULL && argv[optind][1] == '-'));
+    }
+
+  /* Decode the current option-ARGV-element.  */
+
+  /* Check whether the ARGV-element is a long option.
+
+     If long_only and the ARGV-element has the form "-f", where f is
+     a valid short option, don't consider it an abbreviated form of
+     a long option that starts with f.  Otherwise there would be no
+     way to give the -f short option.
+
+     On the other hand, if there's a long option "fubar" and
+     the ARGV-element is "-fu", do consider that an abbreviation of
+     the long option, just like "--fu", and not "-f" with arg "u".
+
+     This distinction seems to be the most useful approach.  */
+
+  if (longopts != NULL
+      && (argv[optind][1] == '-'
+          || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
+    {
+      char *nameend;
+      const struct option *p;
+      const struct option *pfound = NULL;
+      int exact = 0;
+      int ambig = 0;
+      int indfound = -1;
+      int option_index;
+
+      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
+        /* Do nothing.  */ ;
+
+      /* Test all long options for either exact match
+         or abbreviated matches.  */
+      for (p = longopts, option_index = 0; p->name; p++, option_index++)
+        if (!strncmp (p->name, nextchar, nameend - nextchar))
+          {
+            if ((unsigned int) (nameend - nextchar)
+                == (unsigned int) strlen (p->name))
+              {
+                /* Exact match found.  */
+                pfound = p;
+                indfound = option_index;
+                exact = 1;
+                break;
+              }
+            else if (pfound == NULL)
+              {
+                /* First nonexact match found.  */
+                pfound = p;
+                indfound = option_index;
+              }
+            else
+              /* Second or later nonexact match found.  */
+              ambig = 1;
+          }
+
+      if (ambig && !exact)
+        {
+          if (print_errors)
+            fprintf (stderr, _("%s: option `%s' is ambiguous\n"),
+                     argv[0], argv[optind]);
+          nextchar += strlen (nextchar);
+          optind++;
+          optopt = 0;
+          return '?';
+        }
+
+      if (pfound != NULL)
+        {
+          option_index = indfound;
+          optind++;
+          if (*nameend)
+            {
+              /* Don't test has_arg with >, because some C compilers don't
+                 allow it to be used on enums.  */
+              if (pfound->has_arg)
+                optarg = nameend + 1;
+              else
+                {
+                  if (print_errors)
+                    {
+                      if (argv[optind - 1][1] == '-')
+                        /* --option */
+                        fprintf (stderr,
+                                 _("%s: option `--%s' doesn't allow an argument\n"),
+                                 argv[0], pfound->name);
+                      else
+                        /* +option or -option */
+                        fprintf (stderr,
+                                 _("%s: option `%c%s' doesn't allow an argument\n"),
+                                 argv[0], argv[optind - 1][0], pfound->name);
+                    }
+
+                  nextchar += strlen (nextchar);
+
+                  optopt = pfound->val;
+                  return '?';
+                }
+            }
+          else if (pfound->has_arg == 1)
+            {
+              if (optind < argc)
+                optarg = argv[optind++];
+              else
+                {
+                  if (print_errors)
+                    fprintf (stderr,
+                           _("%s: option `%s' requires an argument\n"),
+                           argv[0], argv[optind - 1]);
+                  nextchar += strlen (nextchar);
+                  optopt = pfound->val;
+                  return optstring[0] == ':' ? ':' : '?';
+                }
+            }
+          nextchar += strlen (nextchar);
+          if (longind != NULL)
+            *longind = option_index;
+          if (pfound->flag)
+            {
+              *(pfound->flag) = pfound->val;
+              return 0;
+            }
+          return pfound->val;
+        }
+
+      /* Can't find it as a long option.  If this is not getopt_long_only,
+         or the option starts with '--' or is not a valid short
+         option, then it's an error.
+         Otherwise interpret it as a short option.  */
+      if (!long_only || argv[optind][1] == '-'
+          || my_index (optstring, *nextchar) == NULL)
+        {
+          if (print_errors)
+            {
+              if (argv[optind][1] == '-')
+                /* --option */
+                fprintf (stderr, _("%s: unrecognized option `--%s'\n"),
+                         argv[0], nextchar);
+              else
+                /* +option or -option */
+                fprintf (stderr, _("%s: unrecognized option `%c%s'\n"),
+                         argv[0], argv[optind][0], nextchar);
+            }
+          nextchar = (char *) "";
+          optind++;
+          optopt = 0;
+          return '?';
+        }
+    }
+
+  /* Look at and handle the next short option-character.  */
+
+  {
+    char c = *nextchar++;
+    char *temp = my_index (optstring, c);
+
+    /* Increment `optind' when we start to process its last character.  */
+    if (*nextchar == '\0')
+      ++optind;
+
+    if (temp == NULL || c == ':')
+      {
+        if (print_errors)
+          {
+            if (posixly_correct)
+              /* 1003.2 specifies the format of this message.  */
+              fprintf (stderr, _("%s: illegal option -- %c\n"),
+                       argv[0], c);
+            else
+              fprintf (stderr, _("%s: invalid option -- %c\n"),
+                       argv[0], c);
+          }
+        optopt = c;
+        return '?';
+      }
+    /* Convenience. Treat POSIX -W foo same as long option --foo */
+    if (temp[0] == 'W' && temp[1] == ';')
+      {
+        char *nameend;
+        const struct option *p;
+        const struct option *pfound = NULL;
+        int exact = 0;
+        int ambig = 0;
+        int indfound = 0;
+        int option_index;
+
+        /* This is an option that requires an argument.  */
+        if (*nextchar != '\0')
+          {
+            optarg = nextchar;
+            /* If we end this ARGV-element by taking the rest as an arg,
+               we must advance to the next element now.  */
+            optind++;
+          }
+        else if (optind == argc)
+          {
+            if (print_errors)
+              {
+                /* 1003.2 specifies the format of this message.  */
+                fprintf (stderr, _("%s: option requires an argument -- %c\n"),
+                         argv[0], c);
+              }
+            optopt = c;
+            if (optstring[0] == ':')
+              c = ':';
+            else
+              c = '?';
+            return c;
+          }
+        else
+          /* We already incremented `optind' once;
+             increment it again when taking next ARGV-elt as argument.  */
+          optarg = argv[optind++];
+
+        /* optarg is now the argument, see if it's in the
+           table of longopts.  */
+
+        for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+          /* Do nothing.  */ ;
+
+        /* Test all long options for either exact match
+           or abbreviated matches.  */
+        for (p = longopts, option_index = 0; p->name; p++, option_index++)
+          if (!strncmp (p->name, nextchar, nameend - nextchar))
+            {
+              if ((unsigned int) (nameend - nextchar) == strlen (p->name))
+                {
+                  /* Exact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                  exact = 1;
+                  break;
+                }
+              else if (pfound == NULL)
+                {
+                  /* First nonexact match found.  */
+                  pfound = p;
+                  indfound = option_index;
+                }
+              else
+                /* Second or later nonexact match found.  */
+                ambig = 1;
+            }
+        if (ambig && !exact)
+          {
+            if (print_errors)
+              fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
+                       argv[0], argv[optind]);
+            nextchar += strlen (nextchar);
+            optind++;
+            return '?';
+          }
+        if (pfound != NULL)
+          {
+            option_index = indfound;
+            if (*nameend)
+              {
+                /* Don't test has_arg with >, because some C compilers don't
+                   allow it to be used on enums.  */
+                if (pfound->has_arg)
+                  optarg = nameend + 1;
+                else
+                  {
+                    if (print_errors)
+                      fprintf (stderr, _("\
+%s: option `-W %s' doesn't allow an argument\n"),
+                               argv[0], pfound->name);
+
+                    nextchar += strlen (nextchar);
+                    return '?';
+                  }
+              }
+            else if (pfound->has_arg == 1)
+              {
+                if (optind < argc)
+                  optarg = argv[optind++];
+                else
+                  {
+                    if (print_errors)
+                      fprintf (stderr,
+                               _("%s: option `%s' requires an argument\n"),
+                               argv[0], argv[optind - 1]);
+                    nextchar += strlen (nextchar);
+                    return optstring[0] == ':' ? ':' : '?';
+                  }
+              }
+            nextchar += strlen (nextchar);
+            if (longind != NULL)
+              *longind = option_index;
+            if (pfound->flag)
+              {
+                *(pfound->flag) = pfound->val;
+                return 0;
+              }
+            return pfound->val;
+          }
+          nextchar = NULL;
+          return 'W';   /* Let the application handle it.   */
+      }
+    if (temp[1] == ':')
+      {
+        if (temp[2] == ':')
+          {
+            /* This is an option that accepts an argument optionally.  */
+            if (*nextchar != '\0')
+              {
+                optarg = nextchar;
+                optind++;
+              }
+            else
+              optarg = NULL;
+            nextchar = NULL;
+          }
+        else
+          {
+            /* This is an option that requires an argument.  */
+            if (*nextchar != '\0')
+              {
+                optarg = nextchar;
+                /* If we end this ARGV-element by taking the rest as an arg,
+                   we must advance to the next element now.  */
+                optind++;
+              }
+            else if (optind == argc)
+              {
+                if (print_errors)
+                  {
+                    /* 1003.2 specifies the format of this message.  */
+                    fprintf (stderr,
+                             _("%s: option requires an argument -- %c\n"),
+                             argv[0], c);
+                  }
+                optopt = c;
+                if (optstring[0] == ':')
+                  c = ':';
+                else
+                  c = '?';
+              }
+            else
+              /* We already incremented `optind' once;
+                 increment it again when taking next ARGV-elt as argument.  */
+              optarg = argv[optind++];
+            nextchar = NULL;
+          }
+      }
+    return c;
+  }
+}
+
+#ifndef HAVE_GETOPT
+int
+getopt (argc, argv, optstring)
+     int argc;
+     char *const *argv;
+     const char *optstring;
+{
+  return _getopt_internal (argc, argv, optstring,
+                           (const struct option *) 0,
+                           (int *) 0,
+                           0);
+}
+#endif
+
+#endif  /* Not ELIDE_CODE.  */
+

+#ifdef TEST
+
+/* Compile with -DTEST to make an executable for use in testing
+   the above definition of `getopt'.  */
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+
+      c = getopt (argc, argv, "abc:d:0123456789");
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\n");
+          break;
+
+        case 'b':
+          printf ("option b\n");
+          break;
+
+        case 'c':
+          printf ("option c with value `%s'\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+        printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/getopt/getopt.h b/getopt/getopt.h
new file mode 100644
index 0000000..17450ad
--- /dev/null
+++ b/getopt/getopt.h
@@ -0,0 +1,178 @@
+/* Declarations for getopt.
+   Copyright (C) 1989,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _GETOPT_H
+
+#ifdef HAVE_CONFIG_H
+#include "../config.h"
+#endif
+
+#ifndef __need_getopt
+# define _GETOPT_H 1
+#endif
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/* For communication from `getopt' to the caller.
+   When `getopt' finds an option that takes an argument,
+   the argument value is returned here.
+   Also, when `ordering' is RETURN_IN_ORDER,
+   each non-option ARGV-element is returned here.  */
+
+extern char *optarg;
+
+/* Index in ARGV of the next element to be scanned.
+   This is used for communication to and from the caller
+   and for communication between successive calls to `getopt'.
+
+   On entry to `getopt', zero means this is the first call; initialize.
+
+   When `getopt' returns -1, this is the index of the first of the
+   non-option elements that the caller should itself scan.
+
+   Otherwise, `optind' communicates from one call to the next
+   how much of ARGV has been scanned so far.  */
+
+extern int optind;
+
+/* Callers store zero here to inhibit the error message `getopt' prints
+   for unrecognized options.  */
+
+extern int opterr;
+
+/* Set to an option character which was unrecognized.  */
+
+extern int optopt;
+
+#ifndef __need_getopt
+/* Describe the long-named options requested by the application.
+   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
+   of `struct option' terminated by an element containing a name which is
+   zero.
+
+   The field `has_arg' is:
+   no_argument          (or 0) if the option does not take an argument,
+   required_argument    (or 1) if the option requires an argument,
+   optional_argument    (or 2) if the option takes an optional argument.
+
+   If the field `flag' is not NULL, it points to a variable that is set
+   to the value given in the field `val' when the option is found, but
+   left unchanged if the option is not found.
+
+   To have a long-named option do something other than set an `int' to
+   a compiled-in constant, such as set a value from `optarg', set the
+   option's `flag' field to zero and its `val' field to a nonzero
+   value (the equivalent single-letter option character, if there is
+   one).  For long options that have a zero `flag' field, `getopt'
+   returns the contents of the `val' field.  */
+
+struct option
+{
+# if defined __STDC__
+  const char *name;
+# else
+  char *name;
+# endif
+  /* has_arg can't be an enum because some compilers complain about
+     type mismatches in all the code that assumes it is an int.  */
+  int has_arg;
+  int *flag;
+  int val;
+};
+
+/* Names for the values of the `has_arg' field of `struct option'.  */
+
+# define no_argument            0
+# define required_argument      1
+# define optional_argument      2
+#endif  /* need getopt */
+
+
+/* Get definitions and prototypes for functions to process the
+   arguments in ARGV (ARGC of them, minus the program name) for
+   options given in OPTS.
+
+   Return the option character from OPTS just read.  Return -1 when
+   there are no more options.  For unrecognized options, or options
+   missing arguments, `optopt' is set to the option letter, and '?' is
+   returned.
+
+   The OPTS string is a list of characters which are recognized option
+   letters, optionally followed by colons, specifying that that letter
+   takes an argument, to be placed in `optarg'.
+
+   If a letter in OPTS is followed by two colons, its argument is
+   optional.  This behavior is specific to the GNU `getopt'.
+
+   The argument `--' causes premature termination of argument
+   scanning, explicitly telling `getopt' that there are no more
+   options.
+
+   If OPTS begins with `--', then non-option arguments are treated as
+   arguments to the option '\0'.  This behavior is specific to the GNU
+   `getopt'.  */
+
+#if defined __STDC__
+# ifdef __GNU_LIBRARY__
+/* Many other libraries have conflicting prototypes for getopt, with
+   differences in the consts, in stdlib.h.  To avoid compilation
+   errors, only prototype getopt for the GNU C library.  */
+extern int getopt (int __argc, char *const *__argv, const char *__shortopts);
+# else /* not __GNU_LIBRARY__ */
+  /* extern int getopt (); */
+# endif /* __GNU_LIBRARY__ */
+
+# ifndef __need_getopt
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+                        const struct option *longopts, int *longind);
+extern int getopt_long_only (int __argc, char *const *__argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind);
+
+/* Internal only.  Users should not call this directly.  */
+extern int _getopt_internal (int __argc, char *const *__argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind,
+                             int __long_only);
+# endif
+#else /* not __STDC__ */
+extern int getopt ();
+# ifndef __need_getopt
+extern int getopt_long (int argc, char *const *argv, const char *shortopts,
+                        const struct option *longopts, int *longind);
+extern int getopt_long_only (int __argc, char *const *__argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind);
+extern int _getopt_internal (int __argc, char *const *__argv,
+                             const char *__shortopts,
+                             const struct option *__longopts, int *__longind,
+                             int __long_only);
+# endif
+#endif /* __STDC__ */
+
+#ifdef  __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations.  */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/getopt/getopt1.c b/getopt/getopt1.c
new file mode 100644
index 0000000..83ce613
--- /dev/null
+++ b/getopt/getopt1.c
@@ -0,0 +1,188 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+   Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
+     Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+

+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "getopt.h"
+
+#if !defined __STDC__ || !__STDC__
+/* This is a separate conditional since some stdc systems
+   reject `defined (const)'.  */
+#ifndef const
+#define const
+#endif
+#endif
+
+#include <stdio.h>
+
+/* Comment out all this code if we are using the GNU C Library, and are not
+   actually compiling the library itself.  This code is part of the GNU C
+   Library, but also included in many other GNU distributions.  Compiling
+   and linking in this code is a waste when using the GNU C library
+   (especially if it is a shared library).  Rather than having every GNU
+   program understand `configure --with-gnu-libc' and omit the object files,
+   it is simpler to just do this in the source for each such file.  */
+
+#define GETOPT_INTERFACE_VERSION 2
+#if !defined _LIBC && defined __GLIBC__ && __GLIBC__ >= 2
+#include <gnu-versions.h>
+#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
+#define ELIDE_CODE
+#endif
+#endif
+
+#ifndef ELIDE_CODE
+
+
+/* This needs to come after some library #include
+   to get __GNU_LIBRARY__ defined.  */
+#ifdef __GNU_LIBRARY__
+#include <stdlib.h>
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+int
+getopt_long (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
+}
+
+/* Like getopt_long, but '-' as well as '--' can indicate a long option.
+   If an option that starts with '-' (not '--') doesn't match a long option,
+   but does match a short option, it is parsed as a short option
+   instead.  */
+
+int
+getopt_long_only (argc, argv, options, long_options, opt_index)
+     int argc;
+     char *const *argv;
+     const char *options;
+     const struct option *long_options;
+     int *opt_index;
+{
+  return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
+}
+
+
+#endif  /* Not ELIDE_CODE.  */
+

+#ifdef TEST
+
+#include <stdio.h>
+
+int
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int c;
+  int digit_optind = 0;
+
+  while (1)
+    {
+      int this_option_optind = optind ? optind : 1;
+      int option_index = 0;
+      static struct option long_options[] =
+      {
+        {"add", 1, 0, 0},
+        {"append", 0, 0, 0},
+        {"delete", 1, 0, 0},
+        {"verbose", 0, 0, 0},
+        {"create", 0, 0, 0},
+        {"file", 1, 0, 0},
+        {0, 0, 0, 0}
+      };
+
+      c = getopt_long (argc, argv, "abc:d:0123456789",
+                       long_options, &option_index);
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case 0:
+          printf ("option %s", long_options[option_index].name);
+          if (optarg)
+            printf (" with arg %s", optarg);
+          printf ("\n");
+          break;
+
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          if (digit_optind != 0 && digit_optind != this_option_optind)
+            printf ("digits occur in two different argv-elements.\n");
+          digit_optind = this_option_optind;
+          printf ("option %c\n", c);
+          break;
+
+        case 'a':
+          printf ("option a\n");
+          break;
+
+        case 'b':
+          printf ("option b\n");
+          break;
+
+        case 'c':
+          printf ("option c with value `%s'\n", optarg);
+          break;
+
+        case 'd':
+          printf ("option d with value `%s'\n", optarg);
+          break;
+
+        case '?':
+          break;
+
+        default:
+          printf ("?? getopt returned character code 0%o ??\n", c);
+        }
+    }
+
+  if (optind < argc)
+    {
+      printf ("non-option ARGV-elements: ");
+      while (optind < argc)
+        printf ("%s ", argv[optind++]);
+      printf ("\n");
+    }
+
+  exit (0);
+}
+
+#endif /* TEST */
diff --git a/helical/Makefile b/helical/Makefile
new file mode 100644
index 0000000..c8996b0
--- /dev/null
+++ b/helical/Makefile
@@ -0,0 +1,341 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# helical/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = helical
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/sample-helical.sh.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = sample-helical.sh
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+CLEANFILES = sample-helical.sh \*.pgm \*.if \*~ \*.pj \.*~ \#\*\# \#\*~
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  helical/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  helical/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+sample-helical.sh: $(top_builddir)/config.status $(srcdir)/sample-helical.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/helical/Makefile.am b/helical/Makefile.am
new file mode 100644
index 0000000..608170c
--- /dev/null
+++ b/helical/Makefile.am
@@ -0,0 +1 @@
+CLEANFILES=sample-helical.sh \*.pgm \*.if \*~ \*.pj \.*~ \#\*\# \#\*~
diff --git a/helical/Makefile.in b/helical/Makefile.in
new file mode 100644
index 0000000..be1fff4
--- /dev/null
+++ b/helical/Makefile.in
@@ -0,0 +1,357 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = helical
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/sample-helical.sh.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = sample-helical.sh
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+CLEANFILES = sample-helical.sh \*.pgm \*.if \*~ \*.pj \.*~ \#\*\# \#\*~
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu helical/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu helical/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+sample-helical.sh: $(top_builddir)/config.status $(srcdir)/sample-helical.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/helical/dynphm.c b/helical/dynphm.c
new file mode 100644
index 0000000..e350e46
--- /dev/null
+++ b/helical/dynphm.c
@@ -0,0 +1,49 @@
+#include <stdio.h>
+#include <math.h>
+int
+main(int argc, char *argv[])
+{
+        int view, nview;
+        char filename[128];
+
+        float mu1=0. , mu2=6., density, afac, s;
+
+        FILE *fp = (FILE *)NULL;
+        if (argc !=4){
+                fprintf(stderr, "Usage: %s iview nview phmfilename\n", argv[0]);
+                exit (1);
+        }
+
+        view = atoi(argv[1]);
+        nview = atoi(argv[2]);
+        sprintf(filename, "%s", argv[3]);
+
+        s = (float)view/((float)(nview-1));
+
+   if ( s < 7./16. )
+                density = mu1;
+   else if ( s  > 9./16. )
+        density = mu2;
+   else {
+        afac = ( (s - 7./16.) / 2./16.);
+        density = log(1/((1-afac)*exp(-mu1) + afac * exp(-mu2)));
+   }
+
+/*
+        density = mu1 + (mu2-mu1)*s;
+        if (s <=0.5)
+                        density = mu1;
+        else
+                        density = mu2;
+ */
+        if ( (fp = fopen(filename, "w"))  == (FILE *)NULL){
+                fprintf(stderr,"Error, can not open file \"tmpphmfile\"\n");
+                exit(2);
+        }
+        fprintf(fp, "rectangle 0 0 11.5 11.5 0 0\n");
+        fprintf(fp, "ellipse   0 0 11.4 11.4 0 1\n");
+        fprintf(fp, "ellipse   0 0 1.25 1.25 0 %f\n", density);
+
+        fclose(fp);
+        exit(0);
+}
diff --git a/helical/sample-helical.sh.in b/helical/sample-helical.sh.in
new file mode 100644
index 0000000..9e12f20
--- /dev/null
+++ b/helical/sample-helical.sh.in
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+if test "$1" != "" ; then
+  bin=$1
+else
+  bin="@prefix@/bin/"
+fi
+
+if test "$1" = "clean" ; then
+  rm -f sample-phm.png sample-phm.if sample-pj.pj sample-pj.if sample-pj.png sample-rec.if sample-rec.png 540-pj.pj  540-pj.if 540-pj.png  540-rec.if 540-rec.png dynphm
+  exit
+fi
+
+# Generate phantom image
+
+cc -o dynphm dynphm.c -lm
+dynphm 100 200 tmpphm
+${bin}ctsimtext phm2if sample-phm.if 256 256 --nsample 2 --phmfile tmpphm
+rm -f tmpphm 
+if [ -f sample-phm.if ] ; then
+  ${bin}ctsimtext ifexport sample-phm.if sample-phm.png --format png
+fi
+
+# Simulate helical CT data collection and generate raysum sinugram for display
+${bin}ctsimtext phm2helix  sample-pj.pj 367 1080 dynphm --nray 2  --geometry equiangular --rotangle 3
+if [ -f sample-pj.pj ]; then
+  ${bin}ctsimtext pj2if  sample-pj.pj sample-pj.if
+fi
+if [ -f sample-pj.if ]; then
+  ${bin}ctsimtext ifexport sample-pj.if sample-pj.png --format png
+fi
+if [ -f sample-pj.pj ]; then 
+  ${bin}ctsimtext pjHinterp sample-pj.pj 540-pj.pj --interpview 540
+fi
+if [ -f 540-pj.pj ]; then
+  ${bin}ctsimtext pj2if  540-pj.pj 540-pj.if
+fi
+if [ -f sample-pj.if ]; then
+  ${bin}ctsimtext ifexport 540-pj.if 540-pj.png --format png
+fi
+
+# Reconstruct raysums and generate image for display
+${bin}ctsimtext pjrec   540-pj.pj 540-rec.if 256 256 
+if [ -f sample-rec.if ]; then 
+  ${bin}ctsimtext ifexport 540-rec.if 540-rec.png --format png
+
+  # Display comparison statistics
+  ${bin}ctsimtext if2 sample-phm.if 540-rec.if --comp
+fi
+
diff --git a/html/Makefile b/html/Makefile
new file mode 100644
index 0000000..3191c77
--- /dev/null
+++ b/html/Makefile
@@ -0,0 +1,370 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# html/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = html
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/simulate.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = simulate.html
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(htmldir)"
+htmlDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(html_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+html_DATA = simulate.html
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  html/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  html/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+simulate.html: $(top_builddir)/config.status $(srcdir)/simulate.html.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+uninstall-info-am:
+install-htmlDATA: $(html_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(htmldir)" || $(mkdir_p) "$(DESTDIR)$(htmldir)"
+	@list='$(html_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(htmlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+	  $(htmlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+	done
+
+uninstall-htmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(html_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(htmldir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(htmldir)/$$f"; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(htmldir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-htmlDATA
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-htmlDATA uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-htmlDATA install-info install-info-am \
+	install-man install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-htmlDATA uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/html/Makefile.am b/html/Makefile.am
new file mode 100644
index 0000000..ec027a5
--- /dev/null
+++ b/html/Makefile.am
@@ -0,0 +1,3 @@
+if USE_HTML
+html_DATA=@htmldata@
+endif
diff --git a/html/Makefile.in b/html/Makefile.in
new file mode 100644
index 0000000..b95b75e
--- /dev/null
+++ b/html/Makefile.in
@@ -0,0 +1,404 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = html
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/simulate.html.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = simulate.html
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(htmldir)"
+DATA = $(html_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+ at USE_HTML_TRUE@html_DATA = @htmldata@
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu html/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu html/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+simulate.html: $(top_builddir)/config.status $(srcdir)/simulate.html.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-htmlDATA: $(html_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+	@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+	done
+
+uninstall-htmlDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(html_DATA)'; test -n "$(htmldir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(htmldir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(htmldir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(htmldir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-htmlDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-htmlDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-htmlDATA install-info install-info-am \
+	install-man install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-htmlDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/html/simulate.html b/html/simulate.html
new file mode 100644
index 0000000..f08ddd2
--- /dev/null
+++ b/html/simulate.html
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="copyright" content="Copyright (c) 1983-2001, Kevin M. Rosenberg, M.D.">
+<meta name="description" content="CTsim - The Open-Source Computed Tomography Simulator">
+<meta name="keywords" content="ctsim, computed tomography, ct, open source, scientific software, simulation, c++, online simulation, medical imaging">
+<LINK rel="stylesheet" href="http://www.ctsim.org/main.css" type="text/css">
+<TITLE>CTSim's Online Computed Tomography Simulator</TITLE>
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<H1>
+<a href="http://www.ctsim.org">CTSim's</a>
+Online Computed Tomography Simulator</H1>
+Reasonable defaults have been filled into this form. For detailed explanations of the
+parameters on this form, please visit CTSim's online <a href="http://www.ctsim.org/manual/ctsim_contents.html">manual</a>.<br>
+
+<FORM action="/ctsim.cgi" method="POST">
+<table border=1 cellpadding="5" bgcolor="#FFFFFF">
+<tr><td valign="top">
+<h3>Select Image and Size</h3>
+<font size="-1">
+Phantom Name:<br>
+<INPUT type="radio" name="Phantom_Name" value="herman" checked>G.T. Herman<br>
+<INPUT type="radio" name="Phantom_Name" value="shepp-logan">Shepp-Logan<br>
+<INPUT type="radio" name="Phantom_Name" value="unit-pulse">Unit Pulse<br>
+<p>
+Image Size:<br>
+Width: <input type="text" name="Phantom_Nx" size="4" value="128"><br>
+Height: <input type="text" name="Phantom_Ny" size="4" value="128"><br>
+<p>
+View Ratio: <input type="text" name="Phantom_ViewRatio" size="4" value="1.01">
+<p>
+Number of Samples<br>per pixel: <input type="text" name="Phantom_NSample" size="2" value="2"><br>
+<p>
+Display Window:<br>
+Minimum: <input type="text" name="Disp_Min" size=5 value="auto"><br>
+Maximum: <input type="text" name="Disp_Max" size=5 value="auto"><br>
+<p> 
+<!--MPI Supercomputing:<br>
+<INPUT type="radio" name="MPI" value="yes">Yes (Multiple CPUs)<br>
+<INPUT type="radio" name="MPI" value="no" checked>No (Single CPU)<br>
+</td>
+-->
+</font>
+<td valign="top">
+<h3>Simulate X-Ray acquistion</h3>
+<font size=-1>
+Geometry:<br>
+<INPUT type="radio" name="PJ_Geometry" value="parallel" checked>Parallel<br>
+<INPUT type="radio" name="PJ_Geometry" value="equiangular">Equiangular<br>
+<INPUT type="radio" name="PJ_Geometry" value="equilinear">Equilinear<br>
+<p>
+Number of Detectors: <input type="text" name="PJ_NDet" size="4" value="200"><p>
+Number of Rotations: <input type="text" name="PJ_NRot" size="4" value="200"><p>
+Focal Length: <input type="text" name="PJ_FocalLength" size="4" value="2.0"><p>
+Scan Ratio: <input type="text" name="PJ_ScanRatio" size="4" value="1.0"><p>
+Number of Rays<br>(samples) per detector: <input type="text" name="PJ_NRay" size="2" value="2"><p>
+Rotation Angle<br>as a fraction of a cricle: <input type="text" name="PJ_RotAngle" size="3" value="1.0"><br>
+</td></font>
+<td valign="top">
+<H3>Image Reconstruction</H3>
+<font size=-1>
+Filter Method:<br>
+<input type="radio" name="IR_FilterMethod" value="convolution" checked>Convolution<br>
+<input type="radio" name="IR_FilterMethod" value="fourier">Fourier<br>
+<input type="radio" name="IR_FilterMethod" value="fourier_table">Fourier Table<br>
+<input type="radio" name="IR_FilterMethod" value="rfftw">FFT<br>
+<p>
+Zeropad (applies to<br> Fourier & FFT):
+<input type="text" name="IR_Zeropad" size="1" value="1"><br>
+<p>
+Interpolation:<br>
+<input type="radio" name="IR_Interp" value="nearest">Nearest Neighbor<br>
+<input type="radio" name="IR_Interp" value="linear" checked>Linear<br>
+<input type="radio" name="IR_Interp" value="cubic">Cubic<br>
+<p>
+Filter:<br>
+<input type="radio" name="IR_Filter" value="abs_bandlimit" checked>Bandlimit<br>
+<input type="radio" name="IR_Filter" value="abs_cos">Cosine<br>
+<input type="radio" name="IR_Filter" value="abs_hamming">Hamming<br>
+<input type="radio" name="IR_Filter" value="abs_hanning">Hanning<br>
+<input type="radio" name="IR_Filter" value="abs_sinc">Sinc<br>
+<input type="radio" name="IR_Filter" value="shepp">Shepp-Logan
+<p>
+Hamming alpha factor (0.0-1.0): <input type="text" name="IR_Filter_Param" size="3" value="1.0"><p>
+Backprojection Method:<br>
+<input type="radio" name="IR_Backproj" value="trig">Trig<br>
+<input type="radio" name="IR_Backproj" value="table">Trig Table<br>
+<input type="radio" name="IR_Backproj" value="diff">Difference<br>
+<input type="radio" name="IR_Backproj" value="idiff" checked>Difference (integer math)<br>
+</td></tr>
+</font>
+</table>
+<p>
+<input type="submit" value="Simulate"><input type="reset" value="Set Fields to Default">
+<br>
+After clicking the <b>Simulate</b> button, it will take a few seconds to a few minutes for your results to appear depending
+upon the simulation parameters that you have chosen.
+</form>
+</BODY>
+</HTML>
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/html/simulate.html.in b/html/simulate.html.in
new file mode 100644
index 0000000..45c8ee6
--- /dev/null
+++ b/html/simulate.html.in
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<HTML>
+<HEAD>
+<meta name="copyright" content="Copyright (c) 1983-2001, Kevin M. Rosenberg, M.D.">
+<meta name="description" content="CTsim - The Open-Source Computed Tomography Simulator">
+<meta name="keywords" content="ctsim, computed tomography, ct, open source, scientific software, simulation, c++, online simulation, medical imaging">
+<LINK rel="stylesheet" href="http://www.ctsim.org/main.css" type="text/css">
+<TITLE>CTSim's Online Computed Tomography Simulator</TITLE>
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<H1>
+<a href="http://www.ctsim.org">CTSim's</a>
+Online Computed Tomography Simulator</H1>
+Reasonable defaults have been filled into this form. For detailed explanations of the
+parameters on this form, please visit CTSim's online <a href="http://www.ctsim.org/manual/ctsim_contents.html">manual</a>.<br>
+
+<FORM action="@cgibinurl@/ctsim.cgi" method="POST">
+<table border=1 cellpadding="5" bgcolor="#FFFFFF">
+<tr><td valign="top">
+<h3>Select Image and Size</h3>
+<font size="-1">
+Phantom Name:<br>
+<INPUT type="radio" name="Phantom_Name" value="herman" checked>G.T. Herman<br>
+<INPUT type="radio" name="Phantom_Name" value="shepp-logan">Shepp-Logan<br>
+<INPUT type="radio" name="Phantom_Name" value="unit-pulse">Unit Pulse<br>
+<p>
+Image Size:<br>
+Width: <input type="text" name="Phantom_Nx" size="4" value="128"><br>
+Height: <input type="text" name="Phantom_Ny" size="4" value="128"><br>
+<p>
+View Ratio: <input type="text" name="Phantom_ViewRatio" size="4" value="1.01">
+<p>
+Number of Samples<br>per pixel: <input type="text" name="Phantom_NSample" size="2" value="2"><br>
+<p>
+Display Window:<br>
+Minimum: <input type="text" name="Disp_Min" size=5 value="auto"><br>
+Maximum: <input type="text" name="Disp_Max" size=5 value="auto"><br>
+<p> 
+<!--MPI Supercomputing:<br>
+<INPUT type="radio" name="MPI" value="yes">Yes (Multiple CPUs)<br>
+<INPUT type="radio" name="MPI" value="no" checked>No (Single CPU)<br>
+</td>
+-->
+</font>
+<td valign="top">
+<h3>Simulate X-Ray acquistion</h3>
+<font size=-1>
+Geometry:<br>
+<INPUT type="radio" name="PJ_Geometry" value="parallel" checked>Parallel<br>
+<INPUT type="radio" name="PJ_Geometry" value="equiangular">Equiangular<br>
+<INPUT type="radio" name="PJ_Geometry" value="equilinear">Equilinear<br>
+<p>
+Number of Detectors: <input type="text" name="PJ_NDet" size="4" value="200"><p>
+Number of Rotations: <input type="text" name="PJ_NRot" size="4" value="200"><p>
+Focal Length: <input type="text" name="PJ_FocalLength" size="4" value="2.0"><p>
+Scan Ratio: <input type="text" name="PJ_ScanRatio" size="4" value="1.0"><p>
+Number of Rays<br>(samples) per detector: <input type="text" name="PJ_NRay" size="2" value="2"><p>
+Rotation Angle<br>as a fraction of a cricle: <input type="text" name="PJ_RotAngle" size="3" value="1.0"><br>
+</td></font>
+<td valign="top">
+<H3>Image Reconstruction</H3>
+<font size=-1>
+Filter Method:<br>
+<input type="radio" name="IR_FilterMethod" value="convolution" checked>Convolution<br>
+<input type="radio" name="IR_FilterMethod" value="fourier">Fourier<br>
+<input type="radio" name="IR_FilterMethod" value="fourier_table">Fourier Table<br>
+<input type="radio" name="IR_FilterMethod" value="rfftw">FFT<br>
+<p>
+Zeropad (applies to<br> Fourier & FFT):
+<input type="text" name="IR_Zeropad" size="1" value="1"><br>
+<p>
+Interpolation:<br>
+<input type="radio" name="IR_Interp" value="nearest">Nearest Neighbor<br>
+<input type="radio" name="IR_Interp" value="linear" checked>Linear<br>
+<input type="radio" name="IR_Interp" value="cubic">Cubic<br>
+<p>
+Filter:<br>
+<input type="radio" name="IR_Filter" value="abs_bandlimit" checked>Bandlimit<br>
+<input type="radio" name="IR_Filter" value="abs_cos">Cosine<br>
+<input type="radio" name="IR_Filter" value="abs_hamming">Hamming<br>
+<input type="radio" name="IR_Filter" value="abs_hanning">Hanning<br>
+<input type="radio" name="IR_Filter" value="abs_sinc">Sinc<br>
+<input type="radio" name="IR_Filter" value="shepp">Shepp-Logan
+<p>
+Hamming alpha factor (0.0-1.0): <input type="text" name="IR_Filter_Param" size="3" value="1.0"><p>
+Backprojection Method:<br>
+<input type="radio" name="IR_Backproj" value="trig">Trig<br>
+<input type="radio" name="IR_Backproj" value="table">Trig Table<br>
+<input type="radio" name="IR_Backproj" value="diff">Difference<br>
+<input type="radio" name="IR_Backproj" value="idiff" checked>Difference (integer math)<br>
+</td></tr>
+</font>
+</table>
+<p>
+<input type="submit" value="Simulate"><input type="reset" value="Set Fields to Default">
+<br>
+After clicking the <b>Simulate</b> button, it will take a few seconds to a few minutes for your results to appear depending
+upon the simulation parameters that you have chosen.
+</form>
+</BODY>
+</HTML>
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/SplashScreen.psd b/images/SplashScreen.psd
new file mode 100644
index 0000000..fa27e89
Binary files /dev/null and b/images/SplashScreen.psd differ
diff --git a/images/logo-full-size.psd b/images/logo-full-size.psd
new file mode 100644
index 0000000..b2fbac0
Binary files /dev/null and b/images/logo-full-size.psd differ
diff --git a/images/logo16.bmp b/images/logo16.bmp
new file mode 100644
index 0000000..463bd88
Binary files /dev/null and b/images/logo16.bmp differ
diff --git a/images/logo32.bmp b/images/logo32.bmp
new file mode 100644
index 0000000..a72657b
Binary files /dev/null and b/images/logo32.bmp differ
diff --git a/images/logo48.bmp b/images/logo48.bmp
new file mode 100644
index 0000000..29ef715
Binary files /dev/null and b/images/logo48.bmp differ
diff --git a/include/Makefile b/include/Makefile
new file mode 100644
index 0000000..1d3943f
--- /dev/null
+++ b/include/Makefile
@@ -0,0 +1,384 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# include/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = include
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+noinst_HEADERS = ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h plotfile.h hashtable.h fourier.h ctglobals.h interpolator.h ctndicom.h nographics.h
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  include/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	ctags distclean distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-exec install-exec-am \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/include/Makefile.am b/include/Makefile.am
new file mode 100644
index 0000000..abf8c6e
--- /dev/null
+++ b/include/Makefile.am
@@ -0,0 +1,19 @@
+noinst_HEADERS=ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h plotfile.h hashtable.h fourier.h ctglobals.h interpolator.h ctndicom.h nographics.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/include/Makefile.in b/include/Makefile.in
new file mode 100644
index 0000000..4a769c8
--- /dev/null
+++ b/include/Makefile.in
@@ -0,0 +1,405 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = include
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+noinst_HEADERS = ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h plotfile.h hashtable.h fourier.h ctglobals.h interpolator.h ctndicom.h nographics.h
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	ctags distclean distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/include/array2d.h b/include/array2d.h
new file mode 100644
index 0000000..d397e5f
--- /dev/null
+++ b/include/array2d.h
@@ -0,0 +1,109 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         array2d.h
+**      Purpose:      2-dimension array classes
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef ARRAY2D_H
+#define ARRAY2D_H
+
+#include "ctsupport.h"
+
+
+template<class T>
+class Array2d {
+ public:
+    Array2d (unsigned int x, unsigned int y)
+        : m_nx(x), m_ny(y), array_data(0)
+        {
+            allocArray();
+        }
+
+    Array2d ()
+        : m_nx(0), m_ny(0), array_data(0)
+        {}
+
+    ~Array2d ()
+        {
+            deleteArray();
+        }
+
+    void initSetSize (unsigned int x, unsigned int y)
+        {
+            m_nx = x;
+            m_ny = y;
+            deleteArray();
+            allocArray();
+        }
+
+    T** getArray () const
+        { return array_data; }
+
+    T* getColumn (unsigned int x) const
+        { return (array_data ? array_data[x] : NULL); }
+
+    T getPoint (unsigned int x, unsigned int y) const
+        { return (array_data ? array_data[x][y] : NULL); }
+
+    unsigned int sizeofPixel () const
+        {  return sizeof(T); }
+
+    unsigned int sizeofColumn () const
+        { return (sizeof(T) * m_ny); }
+
+    unsigned int sizeofArray () const
+        { return (sizeof(T) * m_nx * m_ny); }
+
+
+ private:
+    unsigned int m_nx;
+    unsigned int m_ny;
+    T** array_data;
+
+    void allocArray ()
+        {
+            if (array_data)
+                deleteArray();
+
+            array_data = new T*[m_nx];
+
+            for (unsigned int i = 0; i < m_nx; i++)
+                array_data[i] = new T[m_ny];
+        }
+
+    void deleteArray ()
+        {
+            if (array_data) {
+                for (unsigned int i = 0; i < m_nx; i++)
+                    delete array_data [i];
+                delete array_data;
+                array_data = NULL;
+            }
+        }
+
+
+    Array2d& operator= (const Array2d& rhs); //assignment operator
+    Array2d (const Array2d& rhs);  // copy constructor
+};
+
+
+#endif
diff --git a/include/array2dfile.h b/include/array2dfile.h
new file mode 100644
index 0000000..8569d49
--- /dev/null
+++ b/include/array2dfile.h
@@ -0,0 +1,273 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         array2dfile.h
+**      Purpose:      2-dimension array file class
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef ARRAY2DFILE_H
+#define ARRAY2DFILE_H
+
+#ifndef MSVC
+#include <unistd.h>
+#endif
+
+#include <sys/types.h>
+#include <cstring>
+#include <string>
+#include <iosfwd>
+#include <iomanip>
+#include <fstream>
+#include <iostream>
+#include <vector>
+#include "ctsupport.h"
+#include "fnetorderstream.h"
+#include "array2d.h"
+
+class Array2dFileLabel
+{
+public:
+  enum {
+    L_EMPTY = 0,
+      L_HISTORY = 1,
+      L_USER = 2,
+  };
+
+  Array2dFileLabel();
+
+  Array2dFileLabel(const char* const str, double ctime = 0.);
+
+  Array2dFileLabel(const int type, const char* const str, double ctime = 0.);
+
+  ~Array2dFileLabel();
+
+  const std::string& getLabelString (void) const
+  { return m_strLabel; }
+
+  kfloat64 getCalcTime (void) const
+  { return m_calcTime; }
+
+  void setCalcTime (kfloat64 calcTime)
+  { m_calcTime = calcTime; }
+
+  void setLabelType (int labelType)
+  { m_labelType = labelType; }
+
+  int getLabelType (void) const
+  { return m_labelType; }
+
+  std::string& setLabelString (const char* const str)
+  { m_strLabel = str; return (m_strLabel); }
+
+  std::string& setLabelString (const std::string& str)
+  { m_strLabel = str; return (m_strLabel); }
+
+  void setDateTime (int year, int month, int day, int hour, int minute, int second);
+
+  void getDateTime (int& year, int& month, int& day, int& hour, int& minute, int& second) const;
+
+  const std::string& getDateString () const;
+
+  void print (std::ostream& os) const;
+  void printBrief (std::ostream& os) const;
+  void printBrief (std::ostringstream& os) const;
+
+  Array2dFileLabel (const Array2dFileLabel& rhs);
+
+  Array2dFileLabel& operator= (const Array2dFileLabel& rhs);
+
+private:
+  void init (void);
+
+  kuint16 m_labelType;
+  kuint16 m_year;
+  kuint16 m_month;
+  kuint16 m_day;
+  kuint16 m_hour;
+  kuint16 m_minute;
+  kuint16 m_second;
+  std::string m_strLabel;
+  kfloat64 m_calcTime;
+
+  mutable std::string m_strDate;
+};
+
+
+class Array2dFile
+{
+public:
+  enum {
+    PIXEL_INVALID = 0,
+      PIXEL_INT8 = 1,
+      PIXEL_UINT8 = 2,
+      PIXEL_INT16 = 3,
+      PIXEL_UINT16 = 4,
+      PIXEL_INT32 = 5,
+      PIXEL_UINT32 = 6,
+      PIXEL_FLOAT32 = 7,
+      PIXEL_FLOAT64 = 8,
+  };
+
+  enum {
+    DATA_TYPE_INVALID = 0,
+      DATA_TYPE_REAL,
+      DATA_TYPE_COMPLEX,
+  };
+
+  Array2dFile (int nx, int ny, int pixelSize, int pixelFormat = PIXEL_INVALID, int dataType = DATA_TYPE_REAL);
+  Array2dFile (void);
+  ~Array2dFile ();
+
+  void setArraySize (int nx, int ny, int pixelSize, int pixelFormat = PIXEL_INVALID, int dataType = DATA_TYPE_REAL);
+
+  void setArraySize (int nx, int ny);
+
+  unsigned int getNumLabels (void) const
+  { return m_labels.size(); }
+
+  const Array2dFileLabel& labelGet (int label_num) const;
+
+  void labelAdd (const Array2dFileLabel& label);
+
+  void labelAdd (const char* const m_strLabel, double calc_time=0.);
+
+  void labelAdd (int type, const char* const m_strLabel, double calc_time=0.);
+
+  void labelsCopy (const Array2dFile& file, const char* const idStr = NULL);
+
+  void setPixelFormat (int type)
+  { m_pixelFormat = type; }
+
+  void setPixelSize (int size)
+  { m_pixelSize = size; }
+
+  kuint32 nx (void) const
+  { return m_nx; }
+
+  kuint32 ny (void) const
+  { return m_ny; }
+
+  bool isComplex() const
+  { return m_dataType == DATA_TYPE_COMPLEX; }
+
+  bool isReal() const
+  { return m_dataType == DATA_TYPE_REAL; }
+
+  int dataType () const
+  { return static_cast<int>(m_dataType); }
+
+  void setDataType (int dataType)
+  { m_dataType = dataType; }
+
+  void setAxisIncrement (double axisIncX, double axisIncY);
+
+  bool reallocRealToComplex ();
+
+  bool reallocComplexToReal ();
+
+  void getPixelValueRange (double& pvmin, double& pvmax) const;
+  void setAxisExtent (double minX, double maxX, double minY, double maxY);
+  bool getAxisExtent (double& minX, double& maxX, double& minY, double& maxY) const
+  { if (! m_axisExtentKnown) return false; minX = m_minX; maxX = m_maxX; minY = m_minY; maxY=m_maxY;
+    return true; }
+
+  void doPixelOffsetScale (double offset, double scale);
+
+  kfloat64 axisIncrementX() const {return m_axisIncrementKnown ? m_axisIncrementX : 0.;}
+  kfloat64 axisIncrementY() const {return m_axisIncrementKnown ? m_axisIncrementY : 0.;}
+
+  void arrayDataClear (void);
+
+  bool fileRead (const char* const filename);
+
+  bool fileRead (const std::string& filename);
+
+  bool fileWrite (const char* const filename);
+
+  bool fileWrite (const std::string& filename);
+
+  const std::string& getFilename (void) const
+  {  return m_filename; }
+
+  void printLabels (std::ostream& os) const;
+  void printLabelsBrief (std::ostream& os) const;
+  void printLabelsBrief (std::ostringstream& os) const;
+
+  unsigned int nLabels() const
+  { return m_labels.size(); }
+
+  typedef std::vector<Array2dFileLabel*>::iterator labelIterator;
+  typedef std::vector<Array2dFileLabel*>::const_iterator constLabelIterator;
+
+protected:
+         typedef std::vector<Array2dFileLabel*> labelContainer;
+
+   static const kuint16 m_signature;
+   kuint16 m_headersize;
+   std::string  m_filename;
+
+   kuint16 m_pixelSize;
+   kuint16 m_pixelFormat;
+   kuint16 m_axisIncrementKnown;
+   kfloat64 m_axisIncrementX, m_axisIncrementY;
+   kuint16 m_axisExtentKnown;
+   kfloat64 m_minX, m_maxX, m_minY, m_maxY;
+   kfloat64 m_offsetPV, m_scalePV;
+   kuint32 m_nx;
+   kuint32 m_ny;
+   kuint32 m_arraySize;
+   labelContainer m_labels;
+   kuint16 m_numFileLabels;
+   kuint16 m_dataType;
+   unsigned char** m_arrayData;
+   unsigned char** m_imaginaryArrayData;
+
+private:
+  void init (void);
+
+  bool headerRead (frnetorderstream& fs);
+
+  bool headerWrite (frnetorderstream& fs);
+
+  bool arrayDataRead (frnetorderstream& fs);
+
+  bool arrayDataWrite (frnetorderstream& fs);
+
+  bool labelsRead (frnetorderstream& fs);
+
+  bool labelsWrite (frnetorderstream& fs);
+
+  bool labelSeek (int label_num);
+
+  void allocArrays ();
+  void freeArrays ();
+
+  void allocArray (unsigned char**& rppData);
+  void freeArray (unsigned char**& rppData);
+
+  Array2dFile (const Array2dFile& rhs);        // copy constructor
+  Array2dFile& operator= (const Array2dFile&); // assignment operator
+
+};
+
+
+
+#endif
diff --git a/include/backprojectors.h b/include/backprojectors.h
new file mode 100644
index 0000000..f1d7af7
--- /dev/null
+++ b/include/backprojectors.h
@@ -0,0 +1,228 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         backproject.h
+**      Purpose:      Backprojection classes
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#ifndef __BACKPROJECTORS_H
+#define __BACKPROJECTORS_H
+
+#undef HAVE_BSPLINE_INTERP
+
+#include "imagefile.h"
+
+
+class Backproject;
+class ImageFile;
+class Projections;
+struct ReconstructionROI;
+
+class Backprojector
+{
+ public:
+  static const int BPROJ_INVALID;
+  static const int BPROJ_TRIG;
+  static const int BPROJ_TABLE;
+  static const int BPROJ_DIFF;
+  static const int BPROJ_IDIFF;
+
+  static const int INTERP_INVALID;
+  static const int INTERP_NEAREST;
+  static const int INTERP_LINEAR;
+  static const int INTERP_CUBIC;
+  static const int INTERP_FREQ_PREINTERPOLATION;
+#if HAVE_BSPLINE_INTERP
+  static const int INTERP_BSPLINE;
+  static const int INTERP_1BSPLINE;
+  static const int INTERP_2BSPLINE;
+  static const int INTERP_3BSPLINE;
+#endif
+
+  Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName,
+    const char* const interpName, const int interpFactor, const ReconstructionROI* pROI);
+
+  ~Backprojector ();
+
+  void BackprojectView (const double* const viewData, const double viewAngle);
+  void PostProcessing();
+
+  bool fail() const {return m_fail;}
+  const std::string& failMessage() const {return m_failMessage;}
+
+  static const int getBackprojectCount() {return s_iBackprojectCount;}
+  static const char* const* getBackprojectNameArray() {return s_aszBackprojectName;}
+  static const char* const* getBackprojectTitleArray() {return s_aszBackprojectTitle;}
+  static int convertBackprojectNameToID (const char* const bprojName);
+  static const char* convertBackprojectIDToName (const int bprojID);
+  static const char* convertBackprojectIDToTitle (const int bprojID);
+
+  static const int getInterpCount() {return s_iInterpCount;}
+  static const char* const * getInterpNameArray() {return s_aszInterpName;}
+  static const char* const * getInterpTitleArray() {return s_aszInterpTitle;}
+  static int convertInterpNameToID (const char* const interpName);
+  static const char* convertInterpIDToName (const int interpID);
+  static const char* convertInterpIDToTitle (const int interpID);
+
+
+ private:
+  std::string m_nameBackproject;
+  std::string m_nameInterpolation;
+  int m_idBackproject;
+  int m_idInterpolation;
+  Backproject* m_pBackprojectImplem;
+  bool m_fail;
+  std::string m_failMessage;
+
+  static const char* const s_aszBackprojectName[];
+  static const char* const s_aszBackprojectTitle[];
+  static const int s_iBackprojectCount;
+
+  static const char* const s_aszInterpName[];
+  static const char* const s_aszInterpTitle[];
+  static const int s_iInterpCount;
+
+  bool initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName,
+    const char* const interpName, const int interpFactor, const ReconstructionROI* pROI);
+};
+
+
+class Backproject
+{
+ public:
+    Backproject (const Projections& proj, ImageFile& im, int interpID, const int interpFactor,
+      const ReconstructionROI* pROI);
+
+    virtual ~Backproject ();
+
+    virtual void BackprojectView (const double* const viewData, const double viewAngle) = 0;
+    virtual void PostProcessing (); // call after backprojecting all views
+
+ protected:
+    void ScaleImageByRotIncrement ();
+    void errorIndexOutsideDetector (int ix, int iy, double theta, double r, double phi, double L, int ni);
+    void errorIndexOutsideDetector (int ix, int iy, double theta, double L, int ni);
+    const Projections& proj;
+    ImageFile& im;
+    int interpType;
+    ImageFileArray v;
+    kint32 nx;
+    kint32 ny;
+    double detInc;
+    double rotScale;
+    int iDetCenter;             // index refering to L=0 projection
+    int nDet;
+    double xMin, xMax, yMin, yMax;     // Retangular coords of phantom
+    double xInc, yInc;  // size of cells
+    int m_interpFactor;
+    double m_dFocalLength;
+    double m_dSourceDetectorLength;
+    bool m_bPostProcessingDone;
+
+ private:
+    Backproject (const Backproject& rhs);
+    Backproject& operator= (const Backproject& rhs);
+};
+
+
+class BackprojectTrig : public Backproject
+{
+ public:
+  BackprojectTrig (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI)
+      : Backproject (proj, im, interpID, interpFactor, pROI)
+      {}
+
+  void BackprojectView (const double* const t, const double view_angle);
+};
+
+
+class BackprojectTable : public Backproject
+{
+ public:
+  BackprojectTable (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI);
+  virtual ~BackprojectTable ();
+
+  virtual void BackprojectView (const double* const t, const double view_angle);
+  virtual void PostProcessing (); // call after backprojecting all views
+
+ protected:
+  Array2d<kfloat64> arrayR;
+  Array2d<kfloat64> arrayPhi;
+  kfloat64** r;
+  kfloat64** phi;
+};
+
+
+class BackprojectDiff : public Backproject
+{
+ public:
+  BackprojectDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI);
+  ~BackprojectDiff ();
+
+  virtual void BackprojectView (const double* const t, const double view_angle);
+  virtual void PostProcessing (); // call after backprojecting all views
+
+ protected:
+  double start_r;
+  double start_phi;
+  double im_xinc, im_yinc;
+};
+
+
+class BackprojectIntDiff : public BackprojectDiff
+{
+ public:
+  BackprojectIntDiff (const Projections& proj, ImageFile& im, int interpID, const int interpFactor, const ReconstructionROI* pROI)
+    :  BackprojectDiff (proj, im, interpID, interpFactor, pROI)
+    {}
+
+  void BackprojectView (const double* const t, const double view_angle);
+};
+
+class BackprojectEquilinear : public BackprojectTable
+{
+ public:
+  BackprojectEquilinear (const Projections& proj, ImageFile& im, int interpID, const int interpFactor,  const ReconstructionROI* pROI)
+      : BackprojectTable (proj, im, interpID, interpFactor, pROI)
+      {}
+
+  void BackprojectView (const double* const t, const double view_angle);
+
+  virtual ~BackprojectEquilinear()
+      {}
+};
+
+class BackprojectEquiangular : public BackprojectTable
+{
+ public:
+  BackprojectEquiangular (const Projections& proj, ImageFile& im, int interpID, const int interpFactor,  const ReconstructionROI* pROI)
+      : BackprojectTable (proj, im, interpID, interpFactor, pROI)
+      {}
+
+  void BackprojectView (const double* const t, const double view_angle);
+
+  virtual ~BackprojectEquiangular()
+      {}
+};
+
+
+#endif
diff --git a/include/ct.h b/include/ct.h
new file mode 100644
index 0000000..84f1e91
--- /dev/null
+++ b/include/ct.h
@@ -0,0 +1,189 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          ct.h
+**   Purpose:       Master header file for CTSim
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Aug 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef CT_H
+#define CT_H
+
+#define NO_MAIN 1    // filter out all old main blocks
+
+#ifdef MSVC
+#include "msvc_compat.h"
+#endif
+
+#ifdef HAVE_CONFIG_H
+  #include <config.h>
+#endif
+
+#ifdef _DEBUG
+#undef DEBUG
+#define DEBUG 1
+#endif
+
+#define HAVE_ANSI_CPP 1
+#ifdef HAVE_ANSI_CPP
+#include <complex>
+#include <cmath>
+#include <cstdio>
+#include <cctype>
+#include <cstring>
+#include <cstddef>
+#include <cstdarg>
+#include <cstdlib>
+
+#if defined(MSVC) || HAVE_SSTREAM
+#include <sstream>
+#else
+#include <sstream_subst>
+#endif
+
+#include <fstream>
+#include <iostream>
+#include <string>
+#include <iterator>
+#include <algorithm>
+#include <exception>
+#include <stdexcept>
+#include <memory>
+
+#else
+
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_MATH_H
+#include <math.h>
+#endif
+#ifdef HAVE_STDIO_H
+#include <stdio.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_STDDEF_H
+#include <stddef.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STDARG_H
+#include <stdarg.h>
+#endif
+
+#endif
+
+
+#ifdef HAVE_DMALLOC
+#include <dmalloc.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_PNG
+  #include "png.h"
+#endif
+#ifdef HAVE_G2_H
+extern "C" {
+#include "g2.h"
+}
+#ifdef HAVE_X11
+extern "C" {
+#include "g2_X11.h"
+}
+#endif
+#endif
+
+
+#ifdef  HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_SYS_FCNTL_H
+#include <sys/fcntl.h>
+#endif
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+#if defined(HAVE_GETOPT_H) || defined(HAVE_GETOPT_LONG)
+#include <getopt.h>
+#endif
+#ifdef HAVE_SETJMP_H
+#include <setjmp.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>          /* for htonl on FreeBSD */
+#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>         /* for htonl on Linux/Solaris */
+#endif
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>           /* for htonl on Solaris */
+#endif
+#ifdef HAVE_STDINT_H
+#include <stdint.h>             /* Standard ints on Linux */
+#endif
+#ifdef HAVE_ASSERT_H
+#include <assert.h>
+#endif
+
+
+#ifdef HAVE_FFTW
+#include <fftw3.h>
+#define HAVE_FFT 1
+#endif
+
+#ifdef HAVE_MPI
+#include "mpi++.h"
+#include "mpiworld.h"
+#endif
+
+#include "ctsupport.h"
+#include "fnetorderstream.h"
+
+#ifdef HAVE_SGP
+  #include "ezplot.h"
+  #include "sgp.h"
+#endif
+
+#include "array2d.h"
+#include "array2dfile.h"
+#include "fnetorderstream.h"
+#include "imagefile.h"
+#include "phantom.h"
+#include "scanner.h"
+#include "backprojectors.h"
+#include "filter.h"
+#include "fourier.h"
+#include "procsignal.h"
+#include "projections.h"
+#include "reconstruct.h"
+#include "plotfile.h"
+#include "trace.h"
+
+#include "ctglobals.h"
+
+#endif
+
diff --git a/include/ctglobals.h b/include/ctglobals.h
new file mode 100644
index 0000000..57aef39
--- /dev/null
+++ b/include/ctglobals.h
@@ -0,0 +1,32 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         ctglobals.h
+**      Purpose:      Global variables for CTSim
+**      Programmer:   Kevin Rosenberg
+**      Date Started: Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#ifndef __CTGLOBALS_H
+#define __CTGLOBALS_H
+
+extern bool g_bRunningWXWindows;   // variable defined in syserror.cpp
+
+#endif
diff --git a/include/ctndicom.h b/include/ctndicom.h
new file mode 100644
index 0000000..0060453
--- /dev/null
+++ b/include/ctndicom.h
@@ -0,0 +1,130 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:           ctndicomp.cpp
+**  Purpose:      Interface to CTN Dicom header
+**      Programmer:   Kevin Rosenberg
+**      Date Started: March 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _CTNDICOM_H_
+#define _CTNDICOM_H_
+#if HAVE_CTN_DICOM
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef GCCSUNOS
+#include <sys/types.h>
+#endif
+
+#include "ctsupport.h"
+
+#if SIZEOF_LONG == 4
+#define LONGSIZE 32
+#elif SIZEOF_LONG ==8
+#define LONGSIZE 64
+#endif
+
+#if SIZEOF_INT == 2
+#define INTSIZE 16
+#elif SIZEOF_INT == 4
+#define INTSIZE 32
+#elif SIZEOF_INT == 8
+#define INTSIZE 64
+#endif
+
+#if SIZEOF_SHORT == 2
+#define SHORTSIZE 16
+#elif SIZEOF_SHORT == 4
+#define SHORTSIZE 32
+#endif
+
+#include "dicom.h"
+#include "ctnthread.h"
+#include "lst.h"
+#include "condition.h"
+#include "dicom_objects.h"
+
+#include <string>
+class ImageFile;
+class Projections;
+
+class DicomImporter {
+private:
+  std::string m_strFilename;
+  bool m_bFail;
+  std::string m_strFailMessage;
+  int m_iContents;
+  ImageFile* m_pImageFile;
+  Projections* m_pProjections;
+  DCM_OBJECT* m_pFile;
+
+  void loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated,
+            unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep);
+
+  void loadProjections();
+
+  enum {
+    TAG_GROUP_SOMATOM = 0x7fe1,
+    TAG_MEMBER_SOMATOM_DATA = 0x1000,
+  };
+
+public:
+  enum {
+    DICOM_CONTENTS_INVALID = -1,
+    DICOM_CONTENTS_IMAGE,
+    DICOM_CONTENTS_PROJECTIONS,
+  };
+
+  DicomImporter (const char* const pszFile);
+  ~DicomImporter();
+
+  bool testImage() const {return m_iContents == DICOM_CONTENTS_IMAGE;}
+  bool testProjections() const {return m_iContents == DICOM_CONTENTS_PROJECTIONS;}
+  bool fail() const {return m_bFail;}
+  const std::string& failMessage() const {return m_strFailMessage;}
+
+  ImageFile* getImageFile() const {return m_pImageFile;}
+  Projections* getProjections() const {return m_pProjections;}
+};
+
+
+class DicomExporter {
+private:
+  const ImageFile* m_pImageFile;
+  std::string m_strFilename;
+  bool m_bFail;
+  std::string m_strFailMessage;
+  DCM_OBJECT* m_pObject;
+
+  bool createDicomObject();
+
+public:
+
+  DicomExporter (ImageFile* pImageFile);
+  ~DicomExporter();
+
+  bool writeFile (const char* const pszFilename);
+  bool fail() const {return m_bFail;}
+  const std::string& failMessage() const {return m_strFailMessage;}
+};
+
+#endif // HAVE_CTN_DICOM
+#endif // _CTNDICOM_H_
diff --git a/include/ctsupport.h b/include/ctsupport.h
new file mode 100644
index 0000000..b509eee
--- /dev/null
+++ b/include/ctsupport.h
@@ -0,0 +1,341 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      File Name:      ctsupport.h
+**      Author:         Kevin Rosenberg
+**      Purpose:        Header file for CT support library
+**      Date Started:   Dec. 83
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef CTSUPPORT_H
+#define CTSUPPORT_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef MSVC
+#include "msvc_compat.h"
+#endif
+
+#define STR_MAX_LEN 255
+#define STR_SIZE    STR_MAX_LEN+1
+
+#include <cstdio>
+#include <cstdlib>
+#include <cstring>
+#include <cstdarg>
+#include <string>
+#include <vector>
+#include <algorithm>
+
+#if defined(MSVC) || HAVE_SSTREAM
+#include <sstream>
+#else
+#include <sstream_subst>
+#endif
+
+#ifndef TRUE
+#define TRUE    1
+#endif
+#ifndef FALSE
+#define FALSE   0
+#endif
+#define OK      TRUE
+
+/*----------------------------------------------------------------------*/
+
+#define SHOW(var, fmt)  { cerr << "var = " << var << endl; }
+
+/*----------------------------------------------------------------------*/
+
+#define NEWLINE '\n'
+#define TAB     '\t'
+#define EOS     '\0'
+#define BLANK   ' '
+
+/*----------------------------------------------------------------------*/
+
+#define ERR_TRACE -1
+#define ERR_WARNING     0
+#define ERR_SEVERE      1
+#define ERR_FATAL       2
+
+/*----------------------------------------------------------------------*/
+
+
+/* codes for open command */
+#ifdef MSVC
+#define OPEN_RDONLY  O_RDONLY                   /* other system use standard codes */
+#define OPEN_WRONLY  O_WRONLY                   /* for binary */
+#define OPEN_RDWR    O_RDWR
+#else
+#define OPEN_RDONLY  0                  /* other system use standard codes */
+#define OPEN_WRONLY  1                  /* for binary */
+#define OPEN_RDWR    2
+#endif
+
+/*----------------------------------------------------------------------*/
+
+#if !defined(O_BINARY) && !defined(MSVC)
+#define O_BINARY (0)
+#endif
+
+#ifndef S_IWRITE
+#define S_IWRITE S_IWUSR
+#endif
+
+/*----------------------------------------------------------------------*/
+
+#if defined(MSVC) || ! defined(SIZEOF_INT)
+   #define SIZEOF_INT 4
+   #define SIZEOF_LONG 4
+   #define SIZEOF_SHORT 2
+   #define SIZEOF_FLOAT 4
+   #define SIZEOF_DOUBLE 8
+#endif
+
+typedef signed char kint8;
+typedef unsigned char kuint8;
+
+#if SIZEOF_INT == 4
+    typedef int kint32;
+    typedef unsigned int kuint32;
+#elif SIZEOF_LONG == 4
+    typedef long int kint32;
+    typedef unsigned int kuint32;
+#endif
+
+#if SIZEOF_SHORT == 2
+    typedef short int kint16;
+    typedef unsigned short int kuint16;
+#elif SIZEOF_INT == 2
+    typedef int kint16;
+    typedef unsigned int kuint16;
+#endif
+
+#if SIZEOF_FLOAT == 4
+    typedef float kfloat32;
+#endif
+#if SIZEOF_DOUBLE == 8
+    typedef double kfloat64;
+#endif
+
+
+inline const char*
+fileBasename (const char* const filename)
+{
+  const char* p = strrchr (filename, '/');
+  return (p ? p + 1 : filename);
+}
+
+
+/* strfuncs.cpp */
+char* str_skip_head(const char* str, const char* const charlist);
+char* str_skip_head(const char* str, char* charlist);
+char *str_lower(char *s);
+char *str_wrm_tail(char *str);
+char *str_rm_tail(char *str, const char* const charlist);
+char *str_upper(char *str);
+
+/* syserror.cpp */
+void sys_error(int severity, const char *msg, ...);
+void sys_verror (std::string& strOutput, int severity, const char *msg, va_list arg);
+void sys_error_level(int severity);
+extern unsigned long int g_lSysErrorMaxCount;
+
+// Math Section
+
+#include <cmath>
+
+#define PI      3.14159265358979323846
+#define HALFPI  1.57079632679489661923  /* PI divided by 2 */
+#define QUARTPI 0.78539816339744830962  /* PI divided by 4 */
+#define I_PI    0.31830988618379067154  /* Inverse of PI */
+#define I_PID2  0.63661977236758134308  /* Inverse of PID2 */
+
+#define TWOPI   6.28318530717958647692
+#define SQRT2   1.414213562373095049
+
+#define F_EPSILON       1.0E-6
+#define D_EPSILON       1.0E-10
+
+#define ASSUMEDZERO  1E-10
+
+typedef double GRFMTX_2D[3][3];
+typedef double GRFMTX_3D[4][4];
+
+inline double
+convertDegreesToRadians (double x)
+{ return (x * (PI/180.)); }
+
+inline double
+convertRadiansToDegrees (double x)
+{ return (x*(180./PI)); }
+
+template<class T>
+inline T nearest (double x)
+{ return (x > 0 ? static_cast<T>(x+0.5) : static_cast<T>(x-0.5)); }
+
+template<class T>
+inline T maxValue (T x, T y)
+{ return (x > y ? x : y); }
+
+inline bool isEven (int n)
+{ return (n % 2) == 0; }
+
+inline bool isOdd (int n)
+{ return (n % 2) != 0; }
+
+#if 0
+inline bool isEven (long n)
+{ return (n % 2) == 0; }
+
+inline bool isOdd (long n)
+{ return (n % 2) != 0; }
+#endif
+
+inline int imax (int a, int b)
+{ return (a >= b ? a : b); }
+
+inline double dmax (double a, double b)
+{ return (a >= b ? a : b); }
+
+template<class T>
+inline T clamp (T value, T lowerBounds, T upperBounds)
+{ return (value >= upperBounds ? upperBounds : (value <= lowerBounds ? lowerBounds : value )); }
+
+template<class T>
+inline T lineLength (T x1, T y1, T x2, T y2)
+{ return static_cast<T>( sqrt ((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)) ); }
+
+template<class T>
+inline void minmax_array (const T* array, const int n, T& min, T& max)
+{
+  max = min = array[0];
+
+  for (int i = 1; i < n; i++)
+    if (array[i] < min)
+      min = array[i];
+    else if (array[i] > max)
+      max = array[i];
+}
+
+
+//////////////////////////////////////////////////////////////
+// FUNTION DECLARATIONS
+//////////////////////////////////////////////////////////////
+
+// clip.cpp
+bool clip_rect (double& x1, double& y1, double& x2, double& y2, const double rect[4]);
+bool clip_segment (double& x1, double& y1, double& x2, double& y2, const double u, const double v);
+bool clip_sector (double& x1, double& y1, double& x2, double& y2, const double u, const double v);
+bool clip_circle (double& x1, double& y1, double& x2, double& y2, const double cx, const double cy, const double radius, double t1, double t2);
+bool clip_triangle (double& x1, double& y1, double& x2, double& y2, const double u, const double v, const int clip_xaxis);
+
+
+// xform.cpp
+void indent_mtx2 (GRFMTX_2D m);
+void xlat_mtx2 (GRFMTX_2D m, const double x, const double y);
+void scale_mtx2 (GRFMTX_2D m, const double sx, const double sy);
+void rot_mtx2 (GRFMTX_2D m, const double theta);
+void mult_mtx2 (const GRFMTX_2D m1, const GRFMTX_2D m2, GRFMTX_2D result);
+void xform_mtx2 (const GRFMTX_2D m, double& x, double& y);
+void rotate2d (double x[], double y[], int pts, double angle);
+void xlat2d (double x[], double y[], int pts, double xoffset, double yoffset);
+void scale2d (double x[], double y[], int pts, double xfact, double yfact);
+
+// mathfuncs.cpp
+double normalizeAngle (double theta);
+double integrateSimpson (const double xmin, const double xmax, const double *y, const int np);
+void vectorNumericStatistics (std::vector<double> vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev);
+
+
+/*----------------------------------------------------------------------*/
+
+/* screen character codes */
+
+#define SC_BKSP           8
+#define SC_TAB            9
+#define SC_BLANK        ' '
+
+
+/* audio.cpp */
+void cio_beep(void);
+void cio_tone(double freq, double length);
+
+/* crtput.cpp */
+void cio_put_c(int c);
+void cio_put_cc(int c, int count);
+void cio_put_str(const char *str);
+
+/* kbget.cpp */
+unsigned int cio_kb_getc(void);
+void cio_kb_ungetc(unsigned int c);
+char *cio_kb_gets(char *str, int maxlen);
+unsigned int cio_kb_waitc(const char *astr, int beep);
+
+// Keyboard Section
+
+#define KEY_BKSP         8
+#define KEY_TAB          9
+#define KEY_RETURN      13
+#define KEY_ESCAPE      27
+
+// ASCII Section
+
+#define BACKSPACE  8
+// #define LF   0x0A
+// #define CR   0x0D
+#define BELL    0x07
+
+#define SQUOTE    '\''
+#define DQUOTE    '\"'
+#define BSLASH    '\\'
+#define BACKSLASH '\\'
+#define SHARP     '#'
+#define SLASH     '/'
+#define ASTERICK  '*'
+#define COLON     ':'
+#define LBRACE    '{'
+#define RBRACE    '}'
+#define LPAREN    '('
+#define RPAREN    ')'
+#define LBRACK    '['
+#define RBRACK    ']'
+#define LANBRACK  '<'
+#define RANBRACK  '>'
+#define SEMICOL   ';'
+#define UNDERLIN  '_'
+#define COMMA     ','
+#define CARET     '^'
+#define TILDE     '~'
+#define ATSIGN    '@'
+#define AMPERSAND  '&'
+#define EXCLAM    '!'
+#define DOLLAR    '$'
+#define PERCENT   '%'
+#define PLUS      '+'
+#define HYPHEN    '-'
+#define EQUALS    '='
+#define QUESTION  '?'
+#define PERIOD    '.'
+#define VERTBAR   '|'
+
+#endif  /* #ifndef CTSUPPORT_H */
diff --git a/include/ezplot.h b/include/ezplot.h
new file mode 100644
index 0000000..e4ca7eb
--- /dev/null
+++ b/include/ezplot.h
@@ -0,0 +1,355 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**  Name:    ezplot.h
+**  Purpose: Header file for EZplot library
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#ifndef __H_EZPLOT
+#define __H_EZPLOT
+
+#include <cstdio>
+#include <cctype>
+#include <cmath>
+#include <stddef.h>
+#include "ctsupport.h"
+#include "sgp.h"
+#include "pol.h"
+
+
+class EZPlotCurve {
+public:
+  double *x;
+  double *y;
+  int m_iPointCount;
+
+  EZPlotCurve (const double* x, const double* y, int n);
+
+  ~EZPlotCurve();
+};
+
+//----------------------------------------------------------------------
+//                             GLOBAL VARIABLES
+//----------------------------------------------------------------------
+
+// axis definitions
+enum {
+  LINEAR =      1,              // linear axis
+  LOG,          // logrithmic axis
+  NOAXIS,       // don't plot axis
+};
+
+// tick definitions
+enum {
+  ABOVE = 1,
+ BELOW,
+ RIGHT,
+ LEFT,
+};
+
+// line types
+enum {
+ NOLINE =       0,
+ SOLID,
+ DASH,
+ DASH1,
+ DASH2,
+ DASH3,
+ DASH4,
+};
+
+// symbol definitions
+enum {
+ SB_CROSS = 1,
+ SB_PLUS,
+ SB_BOX,
+ SB_CIRCLE,
+ SB_ERRORBAR,
+ SB_POINT,
+ MAXSYMBOL,
+};
+
+enum {
+ INSIDE = 1,            // values of o_legendbox
+ OUTSIDE,
+ NOLEGEND,
+};
+
+
+struct KeywordCodeTable {
+  const char* keyword;
+  int code;
+};
+
+/*-----------------------------------------------------------------------------
+*                               GLOBAL VARIABLES
+*
+* Naming Convention:
+*       i_   Internal variable
+*               Not user changable
+*       o_   Option variable
+*               Normal variable that is user modifiable
+*               These variables must always have a valid value
+*       d_   Device variable
+*               Variables controlling devices
+*      clr_ Color variable
+*               Holds a color value
+*       c_   Character string variable
+*               Contains a character string
+*       v_   Value variable
+*               User modifiable variable associated with the set variable (s_)
+*               These variables do not always have a valid value
+*               These variables change assumption EZPLOT makes about the plot
+*       s_   Set variable.
+*               TRUE if associated value variable (v_) has been set by the user
+*---------------------------------------------------------------------------*/
+
+#include <vector>
+
+typedef std::vector<EZPlotCurve*>::iterator EZPlotCurveIterator;
+typedef std::vector<EZPlotCurve*>::const_iterator EZPlotCurveConstIterator;
+
+class SGP;
+class EZPlot {
+private:
+  //----------------------------------------------------------------------
+  //                    POL Codes
+  //----------------------------------------------------------------------
+
+  enum {
+    S_DATA = 2,
+      S_HELP,
+      S_EXIT,
+      S_CURVE,
+      S_SOLID,
+      S_DASH,
+      S_NOLINE,
+      S_BLACK,
+      S_RED,
+      S_GREEN,
+      S_BLUE,
+      S_SYMBOL,
+      S_PEN,
+      S_EVERY,
+      S_NONE,
+      S_LEGEND,
+      S_XLEGEND,
+      S_YLEGEND,
+      S_XLIN,
+      S_YLIN,
+      S_XLOG,
+      S_YLOG,
+      S_XLABEL,
+      S_YLABEL,
+      S_XLENGTH,
+      S_YLENGTH,
+      S_XTICKS,
+      S_YTICKS,
+      S_ABOVE,
+      S_LABEL,
+      S_BELOW,
+      S_NOLABEL,
+      S_RIGHT,
+      S_LEFT,
+      S_XAUTOSCALE,
+      S_YAUTOSCALE,
+      S_XMIN,
+      S_YMIN,
+      S_XMAX,
+      S_YMAX,
+      S_LXFRAC,
+      S_LYFRAC,
+      S_XCROSS,
+      S_YCROSS,
+      S_NOXAXIS,
+      S_NOYAXIS,
+      S_XPORIGIN,
+      S_YPORIGIN,
+      S_TITLE,
+      S_XTITLE,
+      S_YTITLE,
+      S_REPLOT,
+      S_CLEAR,
+      S_STORE,
+      S_RESTORE,
+      S_AMARK,
+      S_NO,
+      S_INTERACTIVE,
+      S_UNITS,
+      S_INCHES,
+      S_USER,
+      S_BOX,
+      S_NOBOX,
+      S_GRID,
+      S_NOGRID,
+      S_MAJOR,
+      S_MINOR,
+      S_COLOR,
+      S_LEGENDBOX,
+      S_TAG,
+      S_TEXTSIZE,
+  };
+
+  static const struct KeywordCodeTable m_sKeywords[];
+  static const int NKEYS;
+
+  std::vector<class EZPlotCurve*> m_vecCurves;
+  std::vector<int> m_veciColor;
+  std::vector<bool> m_vecbColorSet;
+  std::vector<int> m_veciSymbol;
+  std::vector<bool> m_vecbSymbolSet;
+  std::vector<int> m_veciSymbolFreq;
+  std::vector<bool> m_vecbSymbolFreqSet;
+  std::vector<int> m_veciLinestyle;
+  std::vector<bool> m_vecbLinestyleSet;
+  std::vector<std::string> m_vecsLegend;
+  std::vector<bool> m_vecbLegendSet;
+
+  int getColor (unsigned int iCurve) const;
+  int getSymbol (unsigned int iCurve) const;
+  const std::string* getLegend (unsigned int iCurve) const;
+  int getSymbolFreq (unsigned int iCurve) const;
+  int getLinestyle (unsigned int iCurve) const;
+
+  void setColor (unsigned int iCurve, int iColor);
+  void setSymbol (unsigned int iCurve, int iSymbol);
+  void setSymbolFreq (unsigned int iCurve, int iSymbolFreq);
+  void setLinestyle (unsigned int iCurve, int iLinestyle);
+  void setLegend (unsigned int iCurve, const std::string& strLegend);
+  void setLegend (unsigned int iCurve, const char* const pszLegend);
+
+  int m_iCurrentCurve;
+
+  // Colors
+  int clr_axis;                 // color of all axis lines
+  int clr_title;                        // color of main title
+  int clr_label;                        // color of axis labels
+  int clr_legend;                       // color of legend box
+  int clr_grid;                 // color of grid lines
+  int clr_number;                       // color of axis number labels
+
+  // Options
+  double o_xporigin, o_yporigin;        // origin of plot frame in NDC
+  double o_xlength, o_ylength;  // length of plot frame in NDC
+
+  std::string c_xlabel; // label for x axis
+  std::string c_ylabel; // label for y axis
+  std::string c_title;          // title to print above graph
+
+  int o_linestyle, o_color;     // style to use for curves all subsequent curves to EZPLOT
+  int o_xaxis, o_yaxis;         // Specifies where axis & labels are drawn
+  bool o_grid;                  // Flag to draw a grid at major ticks
+  bool o_box;                   // Flag to draw a box around the graph
+
+  int o_xticks, o_yticks;               // direction to draw tick marks
+  bool o_xtlabel, o_ytlabel;    // TRUE if label tick marks
+
+  int o_xmajortick, o_ymajortick;       // number of major ticks to draw
+  int o_xminortick, o_yminortick;       // number of minor ticks between major ticks
+
+  int o_symbol;                 // Symbol type, (0 = no symbol)
+  int o_symfreq;                        // frequency to draw symbols at curve points
+
+  int o_legendbox;              // controls whether legend is inside or outside of the axis extents
+  int o_tag;                    // controls whether to draw tag at end of axes
+
+  // VALUE & SET variables
+  double v_xmin, v_xmax, v_ymin, v_ymax;        // user supplied axis endpoints
+  bool   s_xmin, s_xmax, s_ymin, s_ymax;        // TRUE is endpoint has been set
+  double v_xtitle, v_ytitle;    // NDC position to plot title
+  bool   s_xtitle, s_ytitle;    // TRUE if set position for title
+  double v_xcross, v_ycross;    // position that axes cross
+  bool   s_xcross, s_ycross;    // TRUE if set axes cross position
+  double v_xlegend, v_ylegend;  // upper-left position of legend box in NDC
+  bool   s_xlegend, s_ylegend;  // TRUE if set position of legend box
+  int  v_lxfrac, v_lyfrac;      // number of digits to right of decimal place
+  bool s_lxfrac, s_lyfrac;      // TRUE if set number of fractional digits
+  double v_textsize;            // size of text in NDC
+  bool   s_textsize;            // TRUE if user set size of text
+
+  // Global variables
+  double charheight;    // Height of characters in NDC
+  double charwidth;     // Height of characters in NDC
+  double  xp_min, xp_max, yp_min, yp_max;       // boundry of plot frame in NDC
+  double  xa_min, xa_max, ya_min, ya_max;       // extent of axes in NDC
+  double  xgw_min, xgw_max, ygw_min, ygw_max;   // boundary of graph in input coords
+  double  xgn_min, xgn_max, ygn_min, ygn_max;   // boundy of graph in NDC
+  double xt_min, xt_max, yt_min, yt_max;        // boundary of axis ticks
+  double  xl_min, xl_max, yl_min, yl_max;       // boundary of legend box
+  double title_row;     // y-coord of title row
+  double xtl_ofs;               // Offset y-coord of x tick labels from axis
+  double ytl_ofs;               // Offset x-coord of y tick labels from axis
+  double xlbl_row;      // row of x label in world coord
+  double ylbl_col;      // column of y label in world coord
+  double xw_tickinc, yw_tickinc;        // increment between major ticks in WC
+  double xn_tickinc, yn_tickinc;        // increment between major ticks in NDC
+  int x_nint, y_nint;   // number of intervals along x & y axes
+  int x_fldwid, x_frac; // numeric field sizes & number of digits
+  int y_fldwid, y_frac; // in fraction of number, used for printf()
+  double xtl_wid, ytl_wid;      // length of ticks labels in NDC
+  double tl_height;     // height of tick labels in NDC
+  char x_numfmt[20];    // format to print x tick labels
+  char y_numfmt[20];    // format to print y tick labels
+
+  double m_dVP_xmin, m_dVP_ymin;
+  double m_dVP_xmax, m_dVP_ymax;
+  double m_dVP_xscale, m_dVP_yscale;
+  double m_xWorldScale, m_yWorldScale;
+
+  void drawAxes();
+  void symbol (int sym, double symwidth, double symheight);
+  void make_numfmt(char *fmtstr, int *fldwid, int *nfrac, double min, double max, int nint);
+  int axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp);
+
+  SGP* m_pSGP;
+  POL m_pol;
+
+  void clearCurves ();
+
+  bool ezcmd (const char* const comm);
+  bool do_cmd(int lx);
+  void bad_option(const char *opt);
+  void initPlotSettings();
+
+  void initKeywords ();
+
+  double convertWorldToNDC_X (double x)
+  { return xgn_min + (x - xgw_min) * m_xWorldScale; }
+
+  double convertWorldToNDC_Y (double y)
+  { return ygn_min + (y - ygw_min) * m_yWorldScale; }
+
+ public:
+   EZPlot ();
+   ~EZPlot ();
+
+   bool ezset (const std::string& command);
+   bool ezset (const char* const command);
+
+   void addCurve (const float* x, const double* y, int num);
+   void addCurve (const double* x, const float* y, int num);
+   void addCurve (const double* x, const double* y, int num);
+   void addCurve (const double* y, int n);
+   void addCurve (const float* y, int n);
+
+   void plot (SGP* pSGP);
+};
+
+#endif
diff --git a/include/filter.h b/include/filter.h
new file mode 100644
index 0000000..6b7d34e
--- /dev/null
+++ b/include/filter.h
@@ -0,0 +1,167 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         filter.h
+**      Purpose:      Signal filter header file
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef FILTER_H
+#define FILTER_H
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_FFTW
+#include <fftw3.h>
+#endif
+
+
+// CLASS IDENTIFICATION
+//    SignalFilter       A filter used to process signals
+//
+// CONTAINS
+//    signal vector
+//
+//    Can create either a time/spatial waveform or a frequency signal
+//    Waveforms can be created either by direct calculation or by inverse fourier transform
+
+class SignalFilter {
+ public:
+    static const int FILTER_INVALID;
+    static const int FILTER_ABS_BANDLIMIT;      // filter times |x|
+    static const int FILTER_ABS_SINC;
+    static const int FILTER_ABS_G_HAMMING;
+    static const int FILTER_ABS_HANNING;
+    static const int FILTER_ABS_COSINE;
+    static const int FILTER_SHEPP;
+    static const int FILTER_BANDLIMIT;
+    static const int FILTER_SINC;
+    static const int FILTER_G_HAMMING;
+    static const int FILTER_HANNING;
+    static const int FILTER_COSINE;
+    static const int FILTER_TRIANGLE;
+
+    static const int DOMAIN_INVALID;
+    static const int DOMAIN_FREQUENCY;
+    static const int DOMAIN_SPATIAL;
+
+    SignalFilter (const char* szFilterName, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const char* szDomainName);
+
+    SignalFilter (const int idFilter, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain);
+
+    SignalFilter (const char* szFilterName, const char* szDomainName, double dBandwidth, double dFilterParam);
+
+    ~SignalFilter (void);
+
+    double* getFilter (void) const
+      { return m_adFilter; }
+
+    bool fail(void) const       {return m_fail;}
+    const std::string& failMessage(void) const {return m_failMessage;}
+
+    const std::string& nameFilter(void) const   { return m_nameFilter;}
+    const std::string& nameDomain(void) const   { return m_nameDomain;}
+    const int idFilter(void) const      { return m_idFilter;}
+    const int idDomain(void) const      { return m_idDomain;}
+
+    int getNFilterPoints (void) const  { return m_nFilterPoints; }
+    const double getFilterMin(void) const {return m_dFilterMin;}
+    const double getFilterMax(void) const {return m_dFilterMax;}
+    const double getFilterIncrement(void) const {return m_dFilterInc;}
+    void copyFilterData(double *pdFilter, const int iStart, const int nPoints) const;
+
+    double response (double x);
+
+    static double spatialResponse (int fType, double bw, double x, double param);
+
+    static double frequencyResponse (int fType, double bw, double u, double param);
+
+    static double spatialResponseAnalytic (int fType, double bw, double x, double param);
+
+    static double spatialResponseCalc (int fType, double bw, double x, double param, int nIntegral);
+
+    static void setNumIntegral(int nIntegral) {N_INTEGRAL = nIntegral;}
+
+  static const int getFilterCount() {return s_iFilterCount;}
+  static const int getReconstructFilterCount() { return s_iReconstructFilterCount; }
+
+  static const char* const* getFilterNameArray() {return s_aszFilterName;}
+  static const char* const* getFilterTitleArray() {return s_aszFilterTitle;}
+  static int convertFilterNameToID (const char* const filterName);
+  static const char* convertFilterIDToName (const int idFilter);
+  static const char* convertFilterIDToTitle (const int idFilter);
+
+  static const int getDomainCount() {return s_iDomainCount;}
+  static const char* const* getDomainNameArray() {return s_aszDomainName;}
+  static const char* const* getDomainTitleArray() {return s_aszDomainTitle;}
+  static int convertDomainNameToID (const char* const domainName);
+  static const char* convertDomainIDToName (const int idDomain);
+  static const char* convertDomainIDToTitle (const int idDomain);
+
+  static double sinc (double x)
+      { return (fabs(x) > F_EPSILON ? (sin (x) / x) : 1.0); }
+
+  static double sinc (double x, double mult)
+      { return (fabs(x) > F_EPSILON ? (sin (x * mult) / x) : 1.0); }
+
+ private:
+    int m_nFilterPoints;
+    double m_dBandwidth;
+    double m_dFilterParam;
+    double m_dFilterInc;
+    double m_dFilterMin;
+    double m_dFilterMax;
+    double* m_adFilter;
+
+    std::string m_nameFilter;
+    std::string m_nameDomain;
+    int m_idFilter;
+    int m_idDomain;
+
+    bool m_fail;
+    std::string m_failMessage;
+
+    static const char* const s_aszFilterName[];
+    static const char* const s_aszFilterTitle[];
+    static const int s_iFilterCount;
+    static const int s_iReconstructFilterCount;
+    static const char* const s_aszDomainName[];
+    static const char* const s_aszDomainTitle[];
+    static const int s_iDomainCount;
+    static int N_INTEGRAL;
+
+    static const bool haveAnalyticSpatial (const int filterID);
+
+    void init (const int idFilter, double dFilterMin, double dFilterMax, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain);
+
+    void createFrequencyFilter (double* x) const;
+    void createSpatialFilter (double* x) const;
+
+    double spatialResponseCalc (double x) const;
+    double spatialResponseAnalytic (double x) const;
+    double frequencyResponse (double u) const;
+
+    static double integral_abscos (double u, double w)
+    { return (fabs (u) > F_EPSILON ? (cos (u * w) - 1) / (u * u) + w / u * sin (u * w) : (w * w / 2)); }
+};
+
+#endif
diff --git a/include/fnetorderstream.h b/include/fnetorderstream.h
new file mode 100644
index 0000000..fdce3ea
--- /dev/null
+++ b/include/fnetorderstream.h
@@ -0,0 +1,153 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          fnetorderstream.h
+**   Purpose:       Network-order file stream header
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Sep 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#ifndef NETORDER_H
+#define NETORDER_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <fstream>
+#include <iostream>
+#include <string>
+
+
+inline bool NativeBigEndian (void)
+{
+#ifdef WORDS_BIGENDIAN
+    return true;
+#else
+    return false;
+#endif
+}
+
+inline void
+SwapBytes2 (void* buffer)
+{
+  unsigned char* p = static_cast<unsigned char*>(buffer);
+  unsigned char temp = p[0];
+  p[0] = p[1];
+  p[1] = temp;
+}
+
+// 0<->3  1<->2 = 0123 -> 3210
+inline void
+SwapBytes4 (void* buffer)
+{
+  unsigned char* p = static_cast<unsigned char*>(buffer);
+  unsigned char temp = p[0];
+  p[0] = p[3];
+  p[3] = temp;
+  temp = p[1];
+  p[1] = p[2];
+  p[2] = temp;
+}
+
+// 0<->7 1<->6 2<->5 3<->4 = 01234567 -> 76543210
+inline void
+SwapBytes8 (void* buffer)
+{
+  unsigned char* p = static_cast<unsigned char*>(buffer);
+  unsigned char temp = p[0];
+  p[0] = p[7];
+  p[7] = temp;
+  temp = p[1];
+  p[1] = p[6];
+  p[6] = temp;
+  temp = p[2];
+  p[2] = p[5];
+  p[5] = temp;
+  temp = p[3];
+  p[3] = p[4];
+  p[4] = temp;
+}
+
+inline void
+SwapBytes2IfLittleEndian (void* buffer)
+{
+#ifndef WORDS_BIGENDIAN
+  SwapBytes2 (buffer);
+#endif
+}
+
+inline void
+SwapBytes4IfLittleEndian (void* buffer)
+{
+#ifndef WORDS_BIGENDIAN
+  SwapBytes4 (buffer);
+#endif
+}
+
+inline void
+SwapBytes8IfLittleEndian (void* buffer)
+{
+#ifndef WORDS_BIGENDIAN
+  SwapBytes8 (buffer);
+#endif
+}
+
+void ConvertNetworkOrder (void* buffer, size_t bytes);
+void ConvertReverseNetworkOrder (void* buffer, size_t bytes);
+
+using std::fstream;
+class fnetorderstream : public fstream {
+ public:
+  fnetorderstream (const char* filename, std::ios::openmode mode)
+          : fstream (filename, mode) {}
+
+  ~fnetorderstream (void)
+      {}
+
+  virtual void writeInt16 (kuint16 n);
+  virtual void writeInt32 (kuint32 n);
+  virtual void  writeFloat32 (kfloat32 n);
+  virtual void  writeFloat64 (kfloat64 n);
+
+  virtual void  readInt16 (kuint16& n);
+  virtual void  readInt32 (kuint32& n);
+  virtual void  readFloat32 (kfloat32& n);
+  virtual void  readFloat64 (kfloat64& n);
+};
+
+
+class frnetorderstream : public fnetorderstream {
+ public:
+  frnetorderstream (const char* filename, std::ios::openmode mode)
+    : fnetorderstream (filename, mode) {}
+
+  virtual void writeInt16 (kuint16 n);
+  virtual void writeInt32 (kuint32 n);
+  virtual void writeFloat32 (kfloat32 n);
+  virtual void writeFloat64 (kfloat64 n);
+
+  virtual void readInt16 (kuint16& n);
+  virtual void readInt32 (kuint32& n);
+  virtual void readFloat32 (kfloat32& n);
+  virtual void readFloat64 (kfloat64& n);
+};
+
+#endif
diff --git a/include/fourier.h b/include/fourier.h
new file mode 100644
index 0000000..fd34545
--- /dev/null
+++ b/include/fourier.h
@@ -0,0 +1,112 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          fourier.h
+**   Purpose:       Header for Fourier transform functions
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Dec 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <complex>
+#ifdef HAVE_FFTW
+#include <fftw3.h>
+#endif
+
+class ImageFile;
+
+class Fourier {
+public:
+    static void shuffleFourierToNaturalOrder (ImageFile& im);
+    static void shuffleNaturalToFourierOrder (ImageFile& im);
+
+#ifdef HAVE_FFTW
+    static void shuffleFourierToNaturalOrder (fftw_complex* pc, const int n);
+    static void shuffleNaturalToFourierOrder (fftw_complex* pc, const int n);
+#endif
+
+// Odd Number of Points
+//   Natural Frequency Order: -(n-1)/2...-1,0,1...(n-1)/2
+//   Fourier Frequency Order: 0, 1..(n-1)/2,-(n-1)/2...-1
+// Even Number of Points
+//   Natural Frequency Order: -n/2...-1,0,1...((n/2)-1)
+//   Fourier Frequency Order: 0,1...((n/2)-1),-n/2...-1
+    template<class T>
+    static void shuffleNaturalToFourierOrder (T* pVector, const int n)
+    {
+      T* pTemp = new T [n];
+      int i;
+      if (isOdd(n)) { // Odd
+        int iHalfN = (n - 1) / 2;
+
+        pTemp[0] = pVector[iHalfN];
+        for (i = 0; i < iHalfN; i++)
+          pTemp[i + 1] = pVector[i + 1 + iHalfN];
+        for (i = 0; i < iHalfN; i++)
+          pTemp[i + iHalfN + 1] = pVector[i];
+      } else {     // Even
+        int iHalfN = n / 2;
+        pTemp[0] = pVector[iHalfN];
+        for (i = 0; i < iHalfN - 1; i++)
+        pTemp[i + 1] = pVector[i + iHalfN + 1];
+        for (i = 0; i < iHalfN; i++)
+          pTemp[i + iHalfN] = pVector[i];
+      }
+
+    for (i = 0; i < n; i++)
+      pVector[i] = pTemp[i];
+    delete pTemp;
+  }
+
+  template<class T>
+  static void shuffleFourierToNaturalOrder (T* pVector, const int n)
+  {
+    T* pTemp = new T [n];
+    int i;
+    if (isOdd(n)) { // Odd
+      int iHalfN = (n - 1) / 2;
+
+      pTemp[iHalfN] = pVector[0];
+      for (i = 0; i < iHalfN; i++)
+        pTemp[i + 1 + iHalfN] = pVector[i + 1];
+      for (i = 0; i < iHalfN; i++)
+        pTemp[i] = pVector[i + iHalfN + 1];
+    } else {     // Even
+      int iHalfN = n / 2;
+      pTemp[iHalfN] = pVector[0];
+      for (i = 0; i < iHalfN; i++)
+        pTemp[i] = pVector[i + iHalfN];
+      for (i = 0; i < iHalfN - 1; i++)
+        pTemp[i + iHalfN + 1] = pVector[i+1];
+    }
+
+    for (i = 0; i < n; i++)
+      pVector[i] = pTemp[i];
+    delete pTemp;
+  }
+#if 0
+    static void shuffleNaturalToFourierOrder (float* pdVector, const int n);
+    static void shuffleNaturalToFourierOrder (double* pdVector, const int n);
+    static void shuffleNaturalToFourierOrder (std::complex<double>* pdVector, const int n);
+    static void shuffleFourierToNaturalOrder (float* pdVector, const int n);
+    static void shuffleFourierToNaturalOrder (double* pdVector, const int n);
+    static void shuffleFourierToNaturalOrder (std::complex<double>* pdVector, const int n);
+#endif
+};
+
+
diff --git a/include/hashtable.h b/include/hashtable.h
new file mode 100644
index 0000000..a466523
--- /dev/null
+++ b/include/hashtable.h
@@ -0,0 +1,84 @@
+/* FILE IDENTIFICATION
+**
+**      File Name:      hashtable.h
+**      Author:         Kevin Rosenberg
+**      Purpose:        Header file for hash table library
+**      Date Started:   Dec. 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef HASHTABLE_H
+#define HASHTABLE_H
+
+
+class KeywordCodeEntry
+{
+private:
+  std::string m_strKeyword;
+  int m_iCode;
+  class KeywordCodeEntry *m_pNext;
+
+  public:
+
+    KeywordCodeEntry (const char* const pszKeyword, int iCode);
+
+    const char* const getKeyword() const
+    { return m_strKeyword.c_str(); }
+
+    bool matchesKeyword (const char* const pszMatch) const;
+
+    int getCode () const
+    { return m_iCode; }
+
+    void setCode (int iCode)
+    { m_iCode = iCode; }
+
+    void setNext (KeywordCodeEntry* pNext)
+    { m_pNext = pNext; }
+
+    KeywordCodeEntry* getNext ()
+    { return m_pNext; }
+};
+
+
+class KeywordCodeHashTable {
+public:
+  enum {
+    HASHSIZE = 100,
+  };
+
+  KeywordCodeHashTable()
+  { initTable(); }
+
+  ~KeywordCodeHashTable()
+  { freeTable(); }
+
+  void installKeywordCode (const char* const pszKeyword, int iCode);
+  KeywordCodeEntry* lookup (const char* const pszKeyword);
+
+private:
+  KeywordCodeEntry* m_hashTable[HASHSIZE];
+
+  int hash (const char* s);
+  void initTable ();
+  void freeTable ();
+};
+
+#endif
+
+
diff --git a/include/imagefile.h b/include/imagefile.h
new file mode 100644
index 0000000..a5dfd3a
--- /dev/null
+++ b/include/imagefile.h
@@ -0,0 +1,244 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         imagefile.h
+**      Purpose:      imagefile class header
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef IMAGEFILE_H
+#define IMAGEFILE_H
+
+#ifndef MSVC
+#include <unistd.h>
+#endif
+#include <string>
+#include <sys/types.h>
+#include <fstream>
+#include <iostream>
+#include "ctsupport.h"
+#include "fnetorderstream.h"
+#include "array2dfile.h"
+
+#ifdef HAVE_MPI
+#include <mpi++.h>
+#endif
+
+class F32Image : public Array2dFile
+{
+public:
+  F32Image (int nx, int ny, int dataType = Array2dFile::DATA_TYPE_REAL);
+  F32Image (void);
+
+  kfloat32** getArray (void)
+      { return (kfloat32**) (m_arrayData); }
+
+  kfloat32** const getArray (void) const
+       { return (kfloat32** const) (m_arrayData); }
+
+  kfloat32** getImaginaryArray (void)
+      { return (kfloat32**) (m_imaginaryArrayData); }
+
+  kfloat32** const getImaginaryArray (void) const
+       { return (kfloat32** const) (m_imaginaryArrayData); }
+
+#ifdef HAVE_MPI
+  MPI::Datatype getMPIDataType (void) const
+      { return MPI::FLOAT; }
+#endif
+
+ private:
+  F32Image (const F32Image& rhs);             //copy constructor
+  F32Image& operator= (const F32Image& rhs);  // assignment operator
+};
+
+
+class F64Image : public Array2dFile
+{
+ public:
+
+   F64Image (int nx, int ny, int dataType = Array2dFile::DATA_TYPE_REAL);
+  F64Image (void);
+
+  kfloat64** getArray (void)
+      { return (kfloat64**) (m_arrayData); }
+
+  kfloat64** const getArray (void) const
+      { return (kfloat64** const) (m_arrayData); }
+
+  kfloat64** getImaginaryArray (void)
+      { return (kfloat64**) (m_imaginaryArrayData); }
+
+  kfloat64** const getImaginaryArray (void) const
+      { return (kfloat64** const) (m_imaginaryArrayData); }
+
+#ifdef HAVE_MPI
+  MPI::Datatype getMPIDataType (void) const
+      { return MPI::DOUBLE; }
+#endif
+ private:
+  F64Image (const F64Image& rhs);             //copy constructor
+  F64Image& operator= (const F64Image& rhs);  // assignment operator
+};
+
+#undef IMAGEFILE_64_BITS
+#ifdef IMAGEFILE_64_BITS
+typedef F64Image   ImageFileBase;
+typedef kfloat64   ImageFileValue;
+typedef kfloat64*  ImageFileColumn;
+typedef kfloat64** ImageFileArray;
+typedef kfloat64** const ImageFileArrayConst;
+typedef const kfloat64* ImageFileColumnConst;
+#else
+typedef F32Image   ImageFileBase;
+typedef kfloat32   ImageFileValue;
+typedef kfloat32*  ImageFileColumn;
+typedef kfloat32** ImageFileArray;
+typedef kfloat32** const ImageFileArrayConst;
+typedef const kfloat32* ImageFileColumnConst;
+#endif
+
+
+
+class ImageFile : public ImageFileBase
+{
+private:
+
+  static const char* s_aszExportFormatName[];
+  static const char* s_aszExportFormatTitle[];
+  static const int s_iExportFormatCount;
+  static const char* s_aszImportFormatName[];
+  static const char* s_aszImportFormatTitle[];
+  static const int s_iImportFormatCount;
+
+  static void skipSpacePPM (FILE* fp); // skip space in a ppm file
+
+public:
+
+  static const int EXPORT_FORMAT_INVALID;
+  static const int IMPORT_FORMAT_INVALID;
+  static const int EXPORT_FORMAT_TEXT;
+  static const int EXPORT_FORMAT_PGM;
+  static const int EXPORT_FORMAT_PGMASCII;
+  static const int IMPORT_FORMAT_PPM;
+#if HAVE_PNG
+  static const int EXPORT_FORMAT_PNG;
+  static const int EXPORT_FORMAT_PNG16;
+  static const int IMPORT_FORMAT_PNG;
+#endif
+#if HAVE_CTN_DICOM
+  static const int EXPORT_FORMAT_DICOM;
+  static const int IMPORT_FORMAT_DICOM;
+#endif
+  static const int EXPORT_FORMAT_RAW;
+
+  static const int getExportFormatCount() {return s_iExportFormatCount;}
+  static const char** getExportFormatNameArray() {return s_aszExportFormatName;}
+  static const char** getExportFormatTitleArray() {return s_aszExportFormatTitle;}
+  static int convertExportFormatNameToID (const char* const ExportFormatName);
+  static const char* convertExportFormatIDToName (const int ExportFormatID);
+  static const char* convertExportFormatIDToTitle (const int ExportFormatID);
+
+  static const int getImportFormatCount() {return s_iImportFormatCount;}
+  static const char** getImportFormatNameArray() {return s_aszImportFormatName;}
+  static const char** getImportFormatTitleArray() {return s_aszImportFormatTitle;}
+  static int convertImportFormatNameToID (const char* const ImportFormatName);
+  static const char* convertImportFormatIDToName (const int ImportFormatID);
+  static const char* convertImportFormatIDToTitle (const int ImportFormatID);
+
+  static const double s_dRedGrayscaleFactor;
+  static const double s_dGreenGrayscaleFactor;
+  static const double s_dBlueGrayscaleFactor;
+
+  ImageFile (int nx, int ny)
+      : ImageFileBase (nx, ny)
+  {}
+
+  ImageFile (void)
+      : ImageFileBase ()
+  {}
+
+  void getCenterCoordinates (unsigned int& iXCenter, unsigned int& iYCenter);
+
+  bool convertRealToComplex ();
+  bool convertComplexToReal ();
+
+  void filterResponse (const char* const domainName, double bw, const char* const filterName, double filt_param, double dInputScale = 1., double dOutputScale = 1.);
+
+  void statistics (double& min, double& max, double& mean, double& mode, double& median, double& stddev) const;
+  void statistics (ImageFileArrayConst v, double& min, double& max, double& mean, double& mode, double& median, double& stddev) const;
+  void getMinMax (double& min, double& max) const;
+  void printStatistics (std::ostream& os) const;
+  bool comparativeStatistics (const ImageFile& imComp, double& d, double& r, double& e) const;
+  bool printComparativeStatistics (const ImageFile& imComp, std::ostream& os) const;
+
+  bool subtractImages (const ImageFile& rRHS, ImageFile& result) const;
+  bool addImages (const ImageFile& rRHS, ImageFile& result) const;
+  bool multiplyImages (const ImageFile& rRHS, ImageFile& result) const;
+  bool divideImages (const ImageFile& rRHS, ImageFile& result) const;
+
+  bool scaleImage (ImageFile& result) const;
+
+  bool invertPixelValues (ImageFile& result) const;
+  bool sqrt (ImageFile& result) const;
+  bool square (ImageFile& result) const;
+  bool log (ImageFile& result) const;
+  bool exp (ImageFile& result) const;
+  bool fourier (ImageFile& result) const;
+  bool inverseFourier (ImageFile& result) const;
+#ifdef HAVE_FFTW
+  bool fft (ImageFile& result) const;
+  bool ifft (ImageFile& result) const;
+  bool fftRows (ImageFile& result) const;
+  bool ifftRows (ImageFile& result) const;
+  bool fftCols (ImageFile& result) const;
+  bool ifftCols (ImageFile& result) const;
+#endif
+  bool magnitude (ImageFile& result) const;
+  bool phase (ImageFile& result) const;
+  bool real (ImageFile& result) const;
+  bool imaginary (ImageFile& result) const;
+
+  bool exportImage (const char* const pszFormat, const char* const pszFilename, int nxcell, int nycell, double densmin, double densmax);
+
+  bool importImage (const char* const pszFormat, const char* const pszFilename);
+
+#ifdef HAVE_PNG
+  bool writeImagePNG (const char* const outfile, int bitdepth, int nxcell, int nycell, double densmin, double densmax);
+  bool readImagePNG (const char* const pszFile);
+#endif
+#ifdef HAVE_GD
+  bool writeImageGIF (const char* const outfile, int nxcell, int nycell, double densmin, double densmax);
+#endif
+  bool writeImagePGM (const char* const outfile, int nxcell, int nycell, double densmin, double densmax);
+  bool writeImagePGMASCII (const char* const outfile, int nxcell, int nycell, double densmin, double densmax);
+  bool readImagePPM (const char* const pszFile);
+  bool writeImageRaw(const char* const outfile, int nxcell, int nycell);
+  bool writeImageText (const char* const outfile);
+
+  static double redGrayscaleFactor() {return s_dRedGrayscaleFactor;}
+  static double greenGrayscaleFactor() {return s_dGreenGrayscaleFactor;}
+  static double blueGrayscaleFactor() {return s_dBlueGrayscaleFactor;}
+  static double colorToGrayscale (double r, double g, double b)
+  { return r * s_dRedGrayscaleFactor + g * s_dGreenGrayscaleFactor + b * s_dBlueGrayscaleFactor; }
+};
+
+
+#endif
diff --git a/include/interpolator.h b/include/interpolator.h
new file mode 100644
index 0000000..e93e2f5
--- /dev/null
+++ b/include/interpolator.h
@@ -0,0 +1,268 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+class CubicSplineInterpolator {
+private:
+  double *m_pdY2;  // second differential of y data
+
+  const double* const m_pdY;
+  const int m_n;
+
+public:
+  CubicSplineInterpolator (const double* const y, int n);
+
+  ~CubicSplineInterpolator ();
+
+  double interpolate (double x);
+};
+
+
+class CubicPolyInterpolator {
+private:
+  const double* const m_pdY;
+  const int m_n;
+
+public:
+  CubicPolyInterpolator (const double* const y, int n);
+
+  ~CubicPolyInterpolator ();
+
+  double interpolate (double x);
+};
+
+
+template<class T>
+class BilinearInterpolator {
+private:
+  T** const m_ppMatrix;
+  const int m_nx;
+  const int m_ny;
+
+public:
+  BilinearInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny)
+  : m_ppMatrix(ppMatrix), m_nx(nx), m_ny(ny)
+  {}
+
+  T interpolate (double dXPos, double dYPos)
+{
+  int iFloorX = static_cast<int>(floor(dXPos));
+  int iFloorY = static_cast<int>(floor (dYPos));
+  double dXFrac = dXPos - iFloorX;
+  double dYFrac = dYPos - iFloorY;
+
+  T result = 0;
+
+  if (iFloorX < 0 || iFloorY < 0 || iFloorX > m_nx-1 || iFloorY > m_ny-1)
+    result = 0;
+  else if (iFloorX == m_nx - 1 && iFloorY == m_ny - 1)
+      result = static_cast<T>(m_ppMatrix[m_nx-1][m_ny-1]);
+  else if (iFloorX == m_nx - 1)
+    result = static_cast<T>(m_ppMatrix[iFloorX][iFloorY] + dYFrac * (m_ppMatrix[iFloorX][iFloorY+1] - m_ppMatrix[iFloorX][iFloorY]));
+    else if (iFloorY == m_ny - 1)
+      result = static_cast<T>(m_ppMatrix[iFloorX][iFloorY] + dXFrac * (m_ppMatrix[iFloorX+1][iFloorY] - m_ppMatrix[iFloorX][iFloorY]));
+  else
+    result = static_cast<T>
+      ((1 - dXFrac) * (1 - dYFrac) * m_ppMatrix[iFloorX][iFloorY] +
+       dXFrac * (1 - dYFrac) * m_ppMatrix[iFloorX+1][iFloorY] +
+       dYFrac * (1 - dXFrac) * m_ppMatrix[iFloorX][iFloorY+1] +
+       dXFrac * dYFrac * m_ppMatrix[iFloorX+1][iFloorY+1]);
+
+  return result;
+}
+    };
+
+
+template<class T>
+class BilinearPolarInterpolator {
+private:
+  T** const m_ppMatrix;
+  const int m_nAngle;
+  const int m_nPos;
+  int m_nCenterPos;
+
+public:
+  BilinearPolarInterpolator (T** ppMatrix, unsigned int nAngle,
+                             unsigned int nPos)
+  : m_ppMatrix(ppMatrix), m_nAngle(nAngle), m_nPos(nPos)
+  {
+    if (m_nPos %2)
+      m_nCenterPos = (m_nPos - 1) / 2;
+    else
+      m_nCenterPos = m_nPos / 2;
+  }
+
+  T interpolate (double dAngle, double dPos)
+{
+  int iFloorAngle = static_cast<int>(floor(dAngle));
+  int iFloorPos = static_cast<int>(floor (dPos));
+  double dAngleFrac = dAngle - iFloorAngle;
+  double dPosFrac = dPos - iFloorPos;
+
+  T result = 0;
+
+  if (iFloorAngle < -1 || iFloorPos < 0 || iFloorAngle > m_nAngle-1 || iFloorPos > m_nPos-1)
+    result = 0;
+  else if (iFloorAngle == -1 && iFloorPos == m_nPos-1)
+    result = static_cast<T>(m_ppMatrix[0][m_nPos-1] + dAngleFrac * (m_ppMatrix[m_nAngle-1][iFloorPos] - m_ppMatrix[0][iFloorPos]));
+  else if (iFloorAngle == m_nAngle - 1 && iFloorPos == m_nPos-1)
+    result = static_cast<T>(m_ppMatrix[m_nAngle-1][m_nPos-1] + dAngleFrac * (m_ppMatrix[0][iFloorPos] - m_ppMatrix[m_nAngle-1][iFloorPos]));
+  else if (iFloorPos == m_nPos - 1)
+    result = static_cast<T>(m_ppMatrix[iFloorAngle][iFloorPos] + dAngleFrac * (m_ppMatrix[iFloorAngle+1][iFloorPos] - m_ppMatrix[iFloorAngle][iFloorPos]));
+  else {
+    if (iFloorAngle == m_nAngle-1) {
+      int iUpperAngle = 0;
+      int iLowerPos = (m_nPos-1) - iFloorPos;
+      int iUpperPos = (m_nPos-1) - (iFloorPos+1);
+      result = static_cast<T>
+        ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] +
+         dAngleFrac * (1-dPosFrac) * m_ppMatrix[iUpperAngle][iLowerPos] +
+         dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] +
+         dAngleFrac * dPosFrac * m_ppMatrix[iUpperAngle][iUpperPos]);
+    } else if (iFloorAngle == -1) {
+      int iLowerAngle = m_nAngle - 1;
+      int iLowerPos = (m_nPos-1) - iFloorPos;
+      int iUpperPos = (m_nPos-1) - (iFloorPos+1);
+      result = static_cast<T>
+        ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iLowerAngle][iLowerPos] +
+         dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] +
+         dPosFrac * (1-dAngleFrac) * m_ppMatrix[iLowerAngle][iUpperPos] +
+         dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]);
+    } else
+      result = static_cast<T>
+        ((1-dAngleFrac) * (1-dPosFrac) * m_ppMatrix[iFloorAngle][iFloorPos] +
+         dAngleFrac * (1-dPosFrac) * m_ppMatrix[iFloorAngle+1][iFloorPos] +
+         dPosFrac * (1-dAngleFrac) * m_ppMatrix[iFloorAngle][iFloorPos+1] +
+         dAngleFrac * dPosFrac * m_ppMatrix[iFloorAngle+1][iFloorPos+1]);
+  }
+  return result;
+}
+};
+
+
+template<class T>
+class BicubicPolyInterpolator {
+private:
+  T** const m_ppMatrix;
+  const unsigned int m_nx;
+  const unsigned int m_ny;
+
+public:
+  BicubicPolyInterpolator (T** ppMatrix, unsigned int nx, unsigned int ny)
+  : m_ppMatrix(ppMatrix), m_nx(nx), m_ny(ny)
+  {}
+
+  T interpolate (double dXPos, double dYPos)
+  {
+    // int iFloorX = static_cast<int>(floor (dXPos));
+    // int iFloorY = static_cast<int>(floor (dYPos));
+    // double dXFrac = dXPos - iFloorX;
+    // double dYFrac = dYPos - iFloorY;
+
+    T result = 0;
+
+    // Need to add code
+
+    return result;
+  }
+};
+
+
+template<class T>
+class LinearInterpolator {
+private:
+  T* const m_pX;
+  T* const m_pY;
+  const int m_n;
+  const bool m_bZeroOutsideRange;
+
+public:
+  LinearInterpolator (T* pY, unsigned int n, bool bZeroOutside = true)
+  : m_pX(0), m_pY(pY), m_n(n), m_bZeroOutsideRange(bZeroOutside)
+  {}
+
+  LinearInterpolator (T* pX, T* pY, unsigned int n, bool bZeroOutside = true)
+  : m_pX(pX), m_pY(pY), m_n(n), m_bZeroOutsideRange(bZeroOutside)
+  {}
+
+  double interpolate (double dX, int* piLastFloor = NULL)
+  {
+    double result = 0;
+
+    if (! m_pX) {
+      if (dX == 0)
+        result = m_pY[0];
+      else if (dX < 0) {
+        if (m_bZeroOutsideRange)
+          result = 0;
+        else
+          result = m_pY[0];
+      } else if (dX == m_n - 1)
+        result = m_pY[m_n-1];
+      else if (dX > m_n - 1) {
+        if (m_bZeroOutsideRange)
+          result = 0;
+        else
+          result = m_pY[m_n - 1];
+      } else {
+       int iFloor = static_cast<int>(floor(dX));
+       result = m_pY[iFloor] + (m_pY[iFloor+1] - m_pY[iFloor]) * (dX - iFloor);
+      }
+    } else {
+      int iLower = -1;
+      int iUpper = m_n;
+      if (piLastFloor && *piLastFloor >= 0 && m_pX[*piLastFloor] < dX)
+        iLower = *piLastFloor;
+
+      while (iUpper - iLower > 1) {
+        int iMiddle = (iUpper + iLower) >> 1;
+        if (dX >= m_pX[iMiddle])
+          iLower = iMiddle;
+        else
+          iUpper = iMiddle;
+      }
+      if (dX == m_pX[0])
+        result = m_pY[0];
+      else if (dX < m_pX[0]) {
+        if (m_bZeroOutsideRange)
+          result = 0;
+        else
+          result = m_pY[0];
+      } else if (dX == m_pX[m_n-1])
+        result = m_pY[m_n-1];
+      else if (dX > m_pX[m_n - 1]) {
+        if (m_bZeroOutsideRange)
+          result = 0;
+        else
+          result = m_pY[m_n - 1];
+      } else {
+        if (iLower < 0 || iLower >= m_n) {
+          sys_error (ERR_SEVERE, "Coordinate out of range [linearInterpolate]");
+          return 0;
+        }
+
+       if (piLastFloor)
+         *piLastFloor = iLower;
+       result = m_pY[iLower] + (m_pY[iUpper] - m_pY[iLower]) * ((dX - m_pX[iLower]) / (m_pX[iUpper] - m_pX[iLower]));
+      }
+    }
+
+    return result;
+  }
+};
+
diff --git a/include/mpiworld.h b/include/mpiworld.h
new file mode 100644
index 0000000..d6bf57e
--- /dev/null
+++ b/include/mpiworld.h
@@ -0,0 +1,74 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          mpiworld.h
+**   Purpose:       MPIWorld classes
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  June 6, 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <mpi++.h>
+#include <vector.h>
+#include <string>
+
+class MPIWorld
+{
+ public:
+    MPIWorld (int& argc, char* const *& argv);
+
+    void setTotalWorkUnits (int totalUnits);
+
+    int getRank (void) const
+        { return m_myRank; }
+
+    int getNumProcessors (void) const
+        { return m_nProcessors; }
+
+    int getStartWorkUnit (int rank) const
+        { return m_vStartWorkUnit [rank]; }
+
+    int getEndWorkUnit (int rank) const
+      { return m_vEndWorkUnit [rank]; }
+
+    int getLocalWorkUnits (int rank) const
+        { return m_vLocalWorkUnits [rank]; }
+
+    int getMyStartWorkUnit (void) const
+        { return m_vStartWorkUnit [m_myRank]; }
+
+    int getMyEndWorkUnit (void) const
+        { return m_vEndWorkUnit [m_myRank]; }
+
+    int getMyLocalWorkUnits (void) const
+        { return m_vLocalWorkUnits [m_myRank]; }
+
+    MPI::Intracomm& getComm()
+      { return m_comm; }
+
+    void BcastString (string& str);
+
+private:
+    int m_myRank;
+    int m_nProcessors;
+    vector<int> m_vLocalWorkUnits;
+    vector<int> m_vStartWorkUnit;
+    vector<int> m_vEndWorkUnit;
+    MPI::Intracomm m_comm;
+};
+
diff --git a/include/msvc_compat.h b/include/msvc_compat.h
new file mode 100644
index 0000000..a6566c4
--- /dev/null
+++ b/include/msvc_compat.h
@@ -0,0 +1,41 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         msvc_compat.h
+**      Purpose:      Microsoft Visual C compatibility header
+**      Author:       Kevin Rosenberg
+**      Date Started: Dec 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __MSVC_COMPAT_H
+#define __MSVC_COMPAT_H
+
+#ifdef MSVC
+  typedef long off_t;
+  #define HAVE_STRING_H 1
+  #define HAVE_VSNPRINTF 1
+  #include <fcntl.h>
+  #define strdup _strdup
+  #define strcasecmp _stricmp
+  #define strncasecmp _strnicmp
+  #define snprintf _snprintf
+  #define vsnprintf _vsnprintf
+  #pragma warning(disable:4786)
+#endif
+#endif
diff --git a/include/nographics.h b/include/nographics.h
new file mode 100644
index 0000000..3e26407
--- /dev/null
+++ b/include/nographics.h
@@ -0,0 +1,50 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          nographics.h
+**   Purpose:       Headers for empty duplicate of graphics functions
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Mar 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __NOGRAPHICS_H_
+#define __NOGRAPHICS_H_
+
+#include <cstdio>
+
+#ifdef HAVE_WXWINDOWS
+class EZPlot;
+class wxWindow;
+class wxEZPlotDialog;
+
+class EZPlotDialog
+{
+private:
+  wxEZPlotDialog* m_pDialog;
+
+public:
+  EZPlotDialog (wxWindow *parent = NULL, bool bCancelButton = false);
+
+  EZPlot* getEZPlot ();
+  int ShowModal();
+};
+#endif
+
+#endif
+
diff --git a/include/phantom.h b/include/phantom.h
new file mode 100644
index 0000000..0b66b49
--- /dev/null
+++ b/include/phantom.h
@@ -0,0 +1,233 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          phantom.h
+**   Purpose:       Header file for Phantom objects
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 1, 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef PHANTOM_H
+#define PHANTOM_H
+
+#include <list>
+#include "ctsupport.h"
+
+typedef enum {
+    PELEM_INVALID,
+    PELEM_RECTANGLE,
+    PELEM_TRIANGLE,
+    PELEM_ELLIPSE,
+    PELEM_SECTOR,
+    PELEM_SEGMENT
+} PhmElemType;
+
+/* Codes for Coordinate Types      */
+/* Defines coords for isPointInside() */
+
+typedef enum {
+  PELEM_COORD,         /* Normalized PElem Coordinates */
+  PHM_COORD           /* World phantom Coordinates */
+} CoordType;
+
+
+class PhantomElement
+{
+ public:
+    PhantomElement (const char* const type, const double cx, const double cy, const double u, const double v, const double rot, const double atten);
+
+    ~PhantomElement ();
+
+    bool isPointInside (double x, double y, const CoordType coord_type) const;
+
+    bool clipLineNormalizedCoords (double& x1, double& y1, double& x2, double& y2) const;
+
+    bool clipLineWorldCoords (double& x1, double& y1, double& x2, double& y2) const;
+
+    const int nOutlinePoints() const {return m_nPoints;}
+    double* rectLimits() {return m_rectLimits;}
+    double* xOutline() {return m_xOutline;}
+    double* yOutline() {return m_yOutline;}
+    double* const xOutline() const {return m_xOutline;}
+    double* const yOutline() const {return m_yOutline;}
+    const double atten() const {return m_atten;}
+    const double xmin() const {return m_xmin;}
+    const double xmax() const {return m_xmax;}
+    const double ymin() const {return m_ymin;}
+    const double ymax() const {return m_ymax;}
+    const double rot() const {return m_rot;}
+    const double cx() const {return m_cx;}
+    const double cy() const {return m_cy;}
+    const double u() const {return m_u;}
+    const double v() const {return m_v;}
+
+    static PhmElemType convertNameToType (const char* const typeName);
+
+    void printDefinition (std::ostream& os) const;
+    void printDefinition (std::ostringstream& os) const;
+
+ private:
+    PhmElemType m_type;      // pelem type (box, ellipse, etc)
+    double m_cx, m_cy;       // center of pelem
+    double m_u, m_v;                 // size of pelem
+    double m_atten;          // X-ray attenuation coefficient
+    double m_rot;                    // pelem rotation angle (in radians)
+    double *m_x, *m_y;       // ptr to array of points in obj world coord
+    int m_nPoints;                   // number of points in outline arrays
+    double m_xmin, m_xmax, m_ymin, m_ymax;  // pelem limits
+    GRFMTX_2D m_xformPhmToObj;        // map from phantom to normalized pelem coords
+    GRFMTX_2D m_xformObjToPhm;        // map from normalized pelem coords to phantom coords
+    double* m_xOutline;
+    double* m_yOutline;
+    double  m_rectLimits[4];
+
+    static const int POINTS_PER_CIRCLE;
+    static const double SCALE_PELEM_EXTENT;  // increase pelem limits by 0.5%
+
+    static const char* const convertTypeToName (PhmElemType iType);
+
+    void makeTransformMatrices ();
+
+    void makeVectorOutline ();
+
+    void calcArcPoints (double x[], double y[], const int pts, const double xcent, const double ycent, const double r, const double start, const double stop);
+
+    void calcEllipsePoints (double x[], double y[], const int pts, const double u, const double v);
+
+    static int numCirclePoints (double theta);
+
+    PhantomElement (const PhantomElement& rhs);        // copy constructor
+    PhantomElement& operator= (const PhantomElement&); // assignment operator
+};
+
+
+typedef enum {
+    P_PELEMS,        // Phantom made of PElems
+    P_UNIT_PULSE,   // Special phantom, not made of pelems
+    P_FILTER      // defined only by this type
+} PhantomComposition;
+
+
+//////////////////////////////////////////////////////
+// Phantom Class Declaration
+//////////////////////////////////////////////////////
+
+class SGP;
+class ImageFile;
+class Phantom
+{
+ public:
+    static const int PHM_INVALID;
+    static const int PHM_HERMAN;
+    static const int PHM_SHEPP_LOGAN;
+    static const int PHM_UNITPULSE;
+
+    Phantom ();
+    Phantom (const char* const phmName);
+
+    ~Phantom ();
+
+    void setComposition (PhantomComposition composition)
+        { m_composition = composition; }
+
+    const PhantomComposition getComposition () const
+        { return m_composition; }
+
+    bool createFromPhantom (const char* const phmName);
+
+    bool createFromPhantom (const int phmid);
+
+    bool createFromFile (const char* const fname);
+
+    bool fileWrite (const char* const fname);
+
+    void addPElem (const PhantomElement& pelem);
+
+    void addPElem (const char* const composition, const double cx, const double cy, const double u, const double v, const double rot, const double atten);
+
+    void convertToImagefile (ImageFile& im, double dViewRatio, const int in_nsample, const int trace) const;
+    void convertToImagefile (ImageFile& im, double dViewRatio, const int in_nsample, const int trace,
+      const int colStart, const int colCount, bool bStoreAtColumnPos) const;
+    void convertToImagefile (ImageFile& im, int iNX, double dViewRatio, const int in_nsample, const int trace,
+      const int colStart, const int colCount, int iStorageOffset) const;
+
+    void printDefinitions (std::ostream& os) const;
+    void printDefinitions (std::ostringstream& os) const;
+
+    bool fail() const             {return m_fail;}
+    const std::string& failMessage() const {return m_failMessage;}
+    const std::string& name() const     {return m_name;}
+    const int id() const     {return m_id;}
+
+#ifdef HAVE_SGP
+    void show () const;
+    void show (SGP& sgp) const;
+    void draw (SGP& sgp) const;
+#endif
+
+    void addStdHerman ();
+    void addStdSheppLogan ();
+
+    void print (std::ostream& os) const;
+    void print (std::ostringstream& os) const;
+
+    double maxAxisLength () const
+    {  return maxValue<double> (m_xmax - m_xmin, m_ymax - m_ymin); }
+
+    double getDiameterBoundaryCircle() const
+    { return SQRT2 * maxAxisLength(); }
+
+    const double xmin() const {return m_xmin;}
+    const double xmax() const {return m_xmax;}
+    const double ymin() const {return m_ymin;}
+    const double ymax() const {return m_ymax;}
+          std::list<PhantomElement*>& listPElem() {return m_listPElem;}
+    const std::list<PhantomElement*>& listPElem() const {return m_listPElem;}
+    const int nPElem() const {return m_nPElem;}
+
+    static const int getPhantomCount() {return s_iPhantomCount;}
+    static const char** getPhantomNameArray() {return s_aszPhantomName;}
+    static const char** getPhantomTitleArray() {return s_aszPhantomTitle;}
+    static int convertNameToPhantomID (const char* const phmName);
+    static const char* convertPhantomIDToName (const int phmID);
+    static const char* convertPhantomIDToTitle (const int phmID);
+
+ private:
+    PhantomComposition m_composition;
+    int m_nPElem;                           // number of pelems in phantom
+    double m_xmin, m_xmax, m_ymin, m_ymax;  // extent of pelems in pelem coordinates
+    mutable std::list<PhantomElement*> m_listPElem;      // pelem lists
+    std::string m_name;
+    int m_id;
+    bool m_fail;
+    std::string m_failMessage;
+    static const char* s_aszPhantomName[];
+    static const char* s_aszPhantomTitle[];
+    static const int s_iPhantomCount;
+
+    void init();
+
+    Phantom (const Phantom& rhs);        // copy constructor
+    Phantom& operator= (const Phantom&); // assignment operator
+};
+
+typedef std::list<PhantomElement*>::iterator PElemIterator;
+typedef std::list<PhantomElement*>::const_iterator PElemConstIterator;
+
+#endif
diff --git a/include/plotfile.h b/include/plotfile.h
new file mode 100644
index 0000000..6cfd009
--- /dev/null
+++ b/include/plotfile.h
@@ -0,0 +1,140 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         plotfile.h
+**      Purpose:      PlotFile class header
+**      Programmer:   Kevin Rosenberg
+**      Date Started: Dec 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef PLOTFILE_H
+#define PLOTFILE_H
+
+#ifndef MSVC
+#include <unistd.h>
+#endif
+
+#include <sys/types.h>
+#include <cstring>
+#include <string>
+#include <iosfwd>
+#include <iomanip>
+#include <fstream>
+#include <iostream>
+#include <vector>
+#include "ctsupport.h"
+#include "plotfile.h"
+
+
+// Plotfile structure:
+// 1. Lines that begin with # are comments
+// 2. ASCII file format
+// 3. Header lines begin with <tags> and end with </tags>
+// 4. Valid headers
+//      <plotfile ncolumns nrecords>    (signifies beginning of plotfile)
+//      <description> (beginning of description lines)
+//      <ezset>       (signifies beginning of ezset commands)
+//      <columns>     Beginning of data columns
+// 5. Data is ASCII file format, one record per line
+//    Number of columns is variable and is set by ncolumns header
+
+
+
+class PlotFile
+{
+private:
+  std::string m_strFilename;
+  std::string m_strDate;
+  std::vector<std::string> m_vecStrDescriptions;
+  std::vector<std::string> m_vecStrEzsetCommands;
+  std::vector<double> m_vecCurves;
+  int m_iNumColumns;
+  int m_iNumRecords;
+  bool m_bScatterPlot;
+
+  bool headerRead (std::iostream& os);
+  bool headerWrite (std::iostream& os);
+  bool columnsRead (std::iostream& os);
+  bool columnsWrite (std::iostream& os);
+
+  void initHeaders ();
+
+  PlotFile (const PlotFile& rhs);        // copy constructor
+  PlotFile& operator= (const PlotFile&); // assignment operator
+
+public:
+  PlotFile (int iNColumns, int iNRecords);
+  PlotFile (void);
+  ~PlotFile ();
+
+  void setCurveSize (int iNCurves, int iNRecords, bool bScatterPlot = false);
+
+  void addDescription (const char* const pszDesc)
+  { m_vecStrDescriptions.push_back (pszDesc); }
+
+  void addEzsetCommand (const char* const pszCmd)
+  { m_vecStrEzsetCommands.push_back (pszCmd); }
+
+  bool addColumn (int iCol, const double* const pdColumn);
+  bool addColumn (int iCol, const float* const pdColumn);
+  void getColumn (int iCol, double *pdColumnData) const;
+
+  const std::string& getDate () const
+  { return m_strDate; }
+
+  int getNumColumns () const
+  { return m_iNumColumns; }
+
+  int getNumRecords () const
+  { return m_iNumRecords; }
+
+  bool getIsScatterPlot() const
+  { return m_bScatterPlot; }
+
+  bool getMinMax (int startingCol, double& min, double& max) const;
+
+  bool statistics (int startingCol, double& min, double& max, double& mean, double& mode, double& median, double &stddev) const;
+
+  unsigned int getNumDescriptions (void) const
+  { return m_vecStrDescriptions.size(); }
+
+  const std::string& getDescription (int iDescIndex) const
+  { return m_vecStrDescriptions[iDescIndex]; }
+
+  unsigned int getNumEzsetCommands (void) const
+  { return m_vecStrEzsetCommands.size(); }
+
+  const std::string& getEzsetCommand (int iIndex) const
+  { return m_vecStrEzsetCommands[iIndex]; }
+
+  bool fileRead (const char* const filename);
+
+  bool fileWrite (const char* const filename);
+
+  const std::string& getFilename (void) const
+  {  return m_strFilename; }
+
+  void printHeaders (std::ostream& os) const;
+  void printHeaders (std::ostringstream& os) const;
+  void printHeadersBrief (std::ostream& os) const;
+  void printHeadersBrief (std::ostringstream& os) const;
+};
+
+
+#endif
diff --git a/include/pol.h b/include/pol.h
new file mode 100644
index 0000000..ede84f9
--- /dev/null
+++ b/include/pol.h
@@ -0,0 +1,217 @@
+/*****************************************************************************
+**      Name:         pol.h
+**      Purpose:      Header file for Problem Oriented Language Class
+**      Programmer:   Kevin Rosenberg
+**      Date Started: 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+#ifndef __H_POL
+#define __H_POL
+
+#include "hashtable.h"
+#include <stack>
+
+class POL {
+
+  public:
+
+    // codes for pol_usefile
+    enum {
+      P_USE_STR = 1,            // use string as input source
+      P_USE_FILE,                 // use file as input source
+    };
+
+
+    POL();
+    ~POL();
+
+    void init ();
+    void addSkipWord (const char* const w);
+    void addSkipChar (int c);
+    void addKeyword (const char* const str, int code);
+    bool readWord (const char *search, int nlet);
+    bool readUserToken (char *str, int *code);
+    bool readString (char *str);
+    bool readInteger (int *n, int typecode, bool boundcode, int bb1, int bb2);
+    bool readFloat (double *n, double typecode, bool boundcode, double bb1, double bb2);
+    bool skipTokens ();
+    void reader ();
+    bool readText (char *str, int lim);
+    void usefile (int source, const char *fn);
+    void closefile ();
+    int lookchar ();
+    int inchar ();
+    void ungetch (int c);
+    int get_inputline (FILE *fp);
+    void set_inputline (const char* const line);
+
+
+  enum {
+    MAXTOK = 200,               // maximum length of a token
+      MAXLINE = 1024,       // maximum line length
+      MAXIDENT = 20,
+      MAXSKIPWORD = 20,
+      MAXSKIPCHAR = 20,
+      MIN_INT = -2000000000,
+      MAX_INT =  2000000000,
+  };
+
+  // token types
+  enum {
+    TT_STRING = 1,  // string token
+      TT_INT,         // integer token
+      TT_REAL,                  // floating point token
+      TT_ALPHA,                 // alphabetic token
+      TT_ALPNUM,                // alphanumeric token
+      TT_NUMALPHA,
+      TT_SPECLCHAR,
+      TT_EOF,         // end of file reached
+      TT_ERROR,       // error in token, caused by call to wrong type of token reader
+      TT_BLANK,        // white space token.  pol_tok() skips these
+      TT_USERTOK,     // user defined token
+  };
+
+
+private:
+
+  // codes for pol_int and pol_float
+  // if in reject catagory, get new number from terminal
+  enum {
+    P_FLTINT = 1,        // get a real or integer number
+      P_BFLTINT,     // get a real or integer number, clip against bounds
+      P_CBFLTINT,        // get real or int, reject if outside bounds
+      P_FLT,               // get a real number
+      P_BFLT,        // get a real, clip against bounds
+      P_CBFLT,       // get a floating, reject if outside bounds
+      P_INT,         // get a integer number
+      P_BINT,        // get a integer, clip against bounds
+      P_CBINT,       // get a integer, reject if outside bounds
+  };
+
+#define LETTER   'a'
+#define DIGIT    '0'
+
+
+//  typedef std::map<std::string,int> KeywordCodeList;
+
+  struct token_st {
+    int ready;                          // TRUE if token is ready
+  //  std::string tokstr;       // token string
+    char tokstr[MAXTOK+1];
+    int type;                             // type of token 'TT_'
+    int code;                             // holds code for user defined tokens
+    double fnum;                        // real value of token
+    int inum;                       // integer value of token
+  };
+  typedef struct token_st TOKEN;
+  struct token_st token;                                // current token
+
+  // Tables words stored with install() & found with lookup()
+  KeywordCodeHashTable skiptable;               // words to ignore and skip
+  KeywordCodeHashTable cmdtable;                // pol parameter commands
+  KeywordCodeHashTable usertable;               // user defined symbols
+
+  struct metachar {
+    char eoc;           /* end of command character */
+    char str;           /* string delimiter */
+    char com;           /* comment character */
+    char cmd;           /* pol parameter command character */
+    char prg;           /* program load character */
+    char con;           /* continuation across newline character */
+    char out;           /* character that delimits output to terminal */
+    char ter;           /* character indicates insertion of input from terminal */
+    char inb;           /* input from graphics device */
+  } meta;
+
+
+  char m_szSkipChars [MAXSKIPCHAR]; // characters to skip
+  bool m_bTrace;
+  bool m_bNewlineIsEOC;
+
+  struct KeywordCodeList {
+    const char *keyword;
+    int  code;
+  };
+
+  static const struct KeywordCodeList cmdlist[];
+  static const unsigned int NUMCMD;
+
+  // Internal codes for pol commands
+  enum {
+    PC_EOC = 1,
+      PC_STR,
+      PC_COM,
+      PC_CMD,
+      PC_PRG,
+      PC_CON,
+      PC_OUT,
+      PC_TER,
+      PC_INB,
+      PC_NL_EOC,
+      PC_NL_NEOC,
+      PC_TRON,
+      PC_TROFF,
+      PC_FILE,
+      PC_DUMP,
+  };
+
+  enum {
+    INPUT_STREAM = 1,
+    INPUT_FILE,
+    INPUT_STRING,
+  };
+
+  int m_iInputType;
+  std::istream* m_pInputStream;
+  FILE* m_pInputFile;
+  char* m_pszInputString;
+
+  enum {
+    MAXFILE = 8,
+  };
+
+  int currentf;         /* pointer to current fp */
+  FILE *filep[MAXFILE];         /* == NULL for string input */
+  char *fname[MAXFILE];         /* pointer to filename */
+
+  char inputline[MAXLINE];              /* current input line */
+  int lineptr;                  /* current position in inputline */
+
+  std::stack<int> m_stackPushBackInput;
+
+  bool skipSingleToken (char term[]);
+  int tok (struct token_st *token);
+  void dumptok (struct token_st *token);
+
+
+  int getpol_tok (struct token_st *token);
+  int getcmd ();
+  int gettok (TOKEN *tok);
+  void getblank (char *s, int toksiz);
+  int getalpha (char *s, int toksiz);
+  void getquote (char *qs, int toksiz);
+  void getescape (char *s, int delim, int toksiz);
+  int getnumber (char str[], int strsize, double *fnum, int *inum);
+  void eatline ();
+  int type (int c);
+  int getch (FILE *fp);
+
+};
+
+#endif
+
diff --git a/include/procsignal.h b/include/procsignal.h
new file mode 100644
index 0000000..5035605
--- /dev/null
+++ b/include/procsignal.h
@@ -0,0 +1,176 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         filter.h
+**      Purpose:      Signal filter header file
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef PROCSIGNAL_H
+#define PROCSIGNAL_H
+
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_FFTW
+#include <fftw3.h>
+#endif
+
+#include <complex>
+
+class SignalFilter;
+class SGP;
+
+typedef std::complex<double> CTSimComplex;
+
+
+class ProcessSignal {
+ public:
+    static const int FILTER_METHOD_INVALID;
+    static const int FILTER_METHOD_CONVOLUTION;
+    static const int FILTER_METHOD_FOURIER;
+    static const int FILTER_METHOD_FOURIER_TABLE;
+    static const int FILTER_METHOD_FFT;
+#if HAVE_FFTW
+    static const int FILTER_METHOD_FFTW;
+    static const int FILTER_METHOD_RFFTW;
+#endif
+
+    static const int FILTER_GENERATION_INVALID;
+    static const int FILTER_GENERATION_DIRECT;
+    static const int FILTER_GENERATION_INVERSE_FOURIER;
+
+    enum {
+      FORWARD = -1,
+      BACKWARD = 1,
+    };
+
+    ProcessSignal (const char* szFilterName, const char* szFilterMethodName,double bw, double signalIncrement,
+      int n, double param, const char* szDomainName, const char* szFilterGenerationName,
+      const int zeropad, const int preinterpolationFactor, const int iTraceLevel, int iGeometry,
+      double dFocalLength, double dSourceDetectorLength, SGP* pSGP = NULL);
+
+    ~ProcessSignal();
+
+    void filterSignal (const float input[], double output[]) const;
+
+    bool fail(void) const       {return m_fail;}
+    const std::string& failMessage(void) const {return m_failMessage;}
+
+    void setTraceLevel (int traceLevel) {m_traceLevel = traceLevel; }
+
+    int getNFilterPoints (void) const  { return m_nFilterPoints; }
+    const double getFilterMin(void) const {return m_dFilterMin;}
+    const double getFilterMax(void) const {return m_dFilterMax;}
+    const double getFilterIncrement(void) const {return m_dFilterInc;}
+    double* getFilter(void) {return m_adFilter;}
+    const double* getFilter(void) const {return m_adFilter;}
+
+    const int idFilterGeneration() const { return m_idFilterGeneration;}
+
+    static const int getFilterGenerationCount() {return s_iFilterGenerationCount;}
+    static const char* const* getFilterGenerationNameArray() {return s_aszFilterGenerationName;}
+    static const char* const* getFilterGenerationTitleArray() {return s_aszFilterGenerationTitle;}
+    static int convertFilterGenerationNameToID (const char* const fgName);
+    static const char* convertFilterGenerationIDToName (const int idFG);
+    static const char* convertFilterGenerationIDToTitle (const int idFG);
+
+    static const int getFilterMethodCount() {return s_iFilterMethodCount;}
+    static const char* const* getFilterMethodNameArray() {return s_aszFilterMethodName;}
+    static const char* const* getFilterMethodTitleArray() {return s_aszFilterMethodTitle;}
+    static int convertFilterMethodNameToID (const char* const filterMethodName);
+    static const char* convertFilterMethodIDToName (const int idFilterMethod);
+    static const char* convertFilterMethodIDToTitle (const int idFilterMethod);
+
+    // transforms using direct trigometric calculation
+    static void finiteFourierTransform (const double input[], double output[], const int n, const int direction);
+    static void finiteFourierTransform (const double input[], std::complex<double> output[], const int n, const int direction);
+    static void finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], const int n, const int direction);
+    static void finiteFourierTransform (const std::complex<double> input[], double output[], const int n, const int direction);
+
+    static int addZeropadFactor (int n, int iZeropad);
+
+ private:
+         std::string m_nameFilterMethod;
+         std::string m_nameFilterGeneration;
+    int m_idFilterMethod;
+    int m_idFilterGeneration;
+    int m_nSignalPoints;
+    double* m_adFourierCosTable;
+    double* m_adFourierSinTable;
+    int m_nFilterPoints;
+    double m_dSignalInc;
+    double m_dFilterInc;
+    double m_dFilterMin;
+    double m_dFilterMax;
+    double* m_adFilter;
+    bool m_bFrequencyFiltering;
+
+    // Variables also kept in SignalFilter class
+    int m_idFilter;
+    int m_idDomain;
+
+    int m_traceLevel;
+    double m_dBandwidth;
+    double m_dFilterParam;
+    int m_iZeropad;
+    int m_nOutputPoints;
+    int m_iPreinterpolationFactor;
+    int m_idGeometry;
+    double m_dFocalLength;
+    double m_dSourceDetectorLength;
+
+    bool m_fail;
+    std::string m_failMessage;
+
+    static const char* const s_aszFilterMethodName[];
+    static const char* const s_aszFilterMethodTitle[];
+    static const int s_iFilterMethodCount;
+    static const char* const s_aszFilterGenerationName[];
+    static const char* const s_aszFilterGenerationTitle[];
+    static const int s_iFilterGenerationCount;
+
+#ifdef HAVE_FFTW
+    double *m_adRealFftInput, *m_adRealFftOutput, *m_adRealFftSignal, *m_adRealFftBackwardOutput;
+    fftw_plan m_realPlanForward, m_realPlanBackward;
+    fftw_complex *m_adComplexFftInput, *m_adComplexFftOutput, *m_adComplexFftSignal, *m_adComplexFftBackwardOutput;
+    fftw_plan m_complexPlanForward, m_complexPlanBackward;
+#endif
+
+    void init (const int idFilter, int idFilterMethod, double dBandwidth, double dSignalIncrement,
+      int nSignalPoints, double dFilterParam, const int idDomain, int idFilterGeneration, const int iZeropad,
+      const int iPreinterpolationFactor, const int iTraceLevel, const int iGeometry, double dFocalLength,
+      double dSourceDetectorLength, SGP* pSGP);
+
+    // transforms that use precalculated trig tables, therefore don't
+    // require number of data points (n) as an argument
+    void finiteFourierTransform (const double input[], std::complex<double> output[], const int direction) const;
+    void finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], const int direction) const;
+    void finiteFourierTransform (const std::complex<double> input[], double output[], const int direction) const;
+
+    double convolve (const double func[], const double filter[], const double dx, const int n, const int np) const;
+    double convolve (const double f[], const double dx, const int n, const int np) const;
+    double convolve (const float f[], const double dx, const int n, const int np) const;
+
+};
+
+
+#endif
diff --git a/include/projections.h b/include/projections.h
new file mode 100644
index 0000000..3efbde9
--- /dev/null
+++ b/include/projections.h
@@ -0,0 +1,228 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          projections.h
+**   Purpose:       Header file for Projections class
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 1, 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef PROJECTIONS_H
+#define PROJECTIONS_H
+
+class Scanner;
+class DetectorArray;
+class Array2dFileLabel;
+class fnetorderstream;
+
+#include "array2dfile.h"
+#include "imagefile.h"
+#include <complex>
+#include <vector>
+
+
+//used for rebinning divergent beam projections to parallel
+class ParallelRaysumCoordinate {
+public:
+  double m_dT;      // Distance from center of origin
+  double m_dTheta;  // perpendicular angle to origin
+  double m_dRaysum;
+
+  static bool compareByTheta (ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b)
+  { return a->m_dTheta == b->m_dTheta ? b->m_dT > a->m_dT : b->m_dTheta > a->m_dTheta; }
+
+  // sort first by T, then Theta
+  static bool compareByT (ParallelRaysumCoordinate* a, ParallelRaysumCoordinate* b)
+  { return a->m_dT == b->m_dT ? b->m_dTheta > a->m_dTheta : b->m_dT > a->m_dT; }
+
+};
+
+class ParallelRaysums {
+public:
+
+  enum {
+    THETA_RANGE_UNCONSTRAINED = 0,
+    THETA_RANGE_NORMALIZE_TO_TWOPI,
+    THETA_RANGE_FOLD_TO_PI,
+  };
+
+  ParallelRaysums (const Projections* pProjections, int iThetaRange);
+  ~ParallelRaysums ();
+
+  typedef std::vector<ParallelRaysumCoordinate*> CoordinateContainer;
+  typedef CoordinateContainer::iterator CoordinateIterator;
+
+  CoordinateContainer& getCoordinates() {return m_vecpCoordinates;}
+  int getNumCoordinates() const {return m_iNumCoordinates;}
+  void getLimits (double* dMinT, double* dMaxT, double* dMinTheta, double* dMaxTheta) const;
+  CoordinateContainer& getSortedByT();
+  CoordinateContainer& getSortedByTheta();
+  double interpolate (double* pdX, double* pdY, int n, double dXValue, int* iLastFloor = NULL);
+  void getThetaAndRaysumsForT (int iT, double* pdTheta, double* pdRaysum);
+  void getDetPositions (double* pdDetPos);
+
+private:
+  CoordinateContainer m_vecpCoordinates;
+  CoordinateContainer m_vecpSortedByT;
+  CoordinateContainer m_vecpSortedByTheta;
+  ParallelRaysumCoordinate* m_pCoordinates;
+  int m_iNumCoordinates;
+  int m_iNumView;
+  int m_iNumDet;
+  int m_iThetaRange;
+};
+
+
+
+// Projections
+class Projections
+{
+ public:
+
+  static const int POLAR_INTERP_INVALID;
+  static const int POLAR_INTERP_NEAREST;
+  static const int POLAR_INTERP_BILINEAR;
+  static const int POLAR_INTERP_BICUBIC;
+
+  Projections (const int nView, const int nDet);
+  Projections (const Scanner& scanner);
+  Projections ();
+  ~Projections ();
+
+  static const int getInterpCount() {return s_iInterpCount;}
+  static const char* const* getInterpNameArray() {return s_aszInterpName;}
+  static const char* const* getInterpTitleArray() {return s_aszInterpTitle;}
+  static int convertInterpNameToID (const char* const interpName);
+  static const char* convertInterpIDToName (const int interpID);
+  static const char* convertInterpIDToTitle (const int interpID);
+
+  void initFromScanner (const Scanner& scanner);
+  bool initFromSomatomAR_STAR (int iNViews, int iNDets, unsigned char* pData, unsigned long lDataLength);
+
+  void printProjectionData (int startView, int endView);
+  void printProjectionData ();
+  void printScanInfo (std::ostringstream& os) const;
+
+  int Helical180LI(int interpView);
+  int Helical180LI_Equiangular(int interpView);
+  int HalfScanFeather(void);
+
+  bool read (const std::string& fname);
+  bool read (const char* fname);
+  bool write (const char* fname);
+  bool write (const std::string& fname);
+  bool detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int view_num);
+  bool detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int view_num);
+
+  Projections* interpolateToParallel() const;
+
+  bool convertPolar (ImageFile& rIF, int iInterpolation);
+  bool convertFFTPolar (ImageFile& rIF, int iInterpolation, int iZeropad);
+  void calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet,
+    int iNumDetWithZeros, double dZeropadRatio, double dDetInc);
+  void interpolatePolar (ImageFileArray& v, ImageFileArray& vImag, unsigned int nx, unsigned int ny, std::complex<double>** ppcDetValue,
+    double** ppdDet, double** ppdView, unsigned int nView, unsigned int nDet, unsigned int nDetWithZeros,
+    int iInterpolate);
+
+  bool reconstruct (ImageFile& im, const char* const filterName, double filt_param, const char* const filterMethodName, const int zeropad, const char* frequencyFilterName, const char* const interpName, int interp_param, const char* const backprojName, const int trace) const;
+
+  void setNView (int nView);  // used in MPI to restrict # of views
+  void setRotInc (double rotInc) { m_rotInc = rotInc;}
+  void setDetInc (double detInc) { m_detInc = detInc;}
+  void setCalcTime (double calcTime) {m_calcTime = calcTime;}
+  void setRemark (const char* remark) {m_remark = remark; m_label.setLabelString(remark);}
+  void setRemark (const std::string& remark) {setRemark(remark.c_str());}
+
+  double detStart() const {return m_detStart;}
+  double rotStart() const {return m_rotStart;}
+  double calcTime() const {return m_calcTime;}
+  double viewLen() const {return m_dViewDiameter / SQRT2;}
+  const char*  remark() const {return m_remark.c_str();}
+  double detInc() const {return m_detInc;}
+  double rotInc() const {return m_rotInc;}
+  int nDet() const {return m_nDet;}
+  int nView() const {return m_nView;}
+  int geometry() const {return m_geometry;}
+  double focalLength() const {return m_dFocalLength;}
+  double sourceDetectorLength() const { return m_dSourceDetectorLength;}
+  double viewDiameter() const {return m_dViewDiameter; }
+  double phmLen() const { return m_dViewDiameter / SQRT2; }
+  void setPhmLen(double phmLen) { m_dViewDiameter = phmLen * SQRT2; }
+
+  const std::string& getFilename() const {return m_filename;}
+  Array2dFileLabel& getLabel() {return m_label;}
+  const Array2dFileLabel& getLabel() const {return m_label;}
+
+  DetectorArray& getDetectorArray (const int iview)
+      { return (*m_projData[iview]); }
+
+  const DetectorArray& getDetectorArray (const int iview) const
+      { return (*m_projData[iview]); }
+
+  static bool copyHeader (const char* const filename, std::ostream& os);
+  static bool copyHeader (const std::string& filename, std::ostream& os);
+
+  static bool copyViewData (const char* const filename, std::ostream& os, int startView, int endView);
+  static bool copyViewData (const std::string& filename, std::ostream& os, int startView, int endView);
+
+ private:
+  int m_headerSize;             // Size of disk file header
+  int m_geometry;               // Geometry of scanner
+  class DetectorArray **m_projData;     // Pointer to array of detarray_st pointers
+  std::string m_remark;         // description of raysum data
+  int m_nDet;                   // number of detectors in array
+  int m_nView;                  // number of rotated views
+  double m_calcTime;            // time required to calculate raysums
+  double m_rotStart;            // starting view rotation
+  double m_rotInc;              // angle between rotations
+  double m_detStart;            // distance of beginning detector to center phantom
+  double m_detInc;              // increment between detectors
+  double m_dFocalLength;
+  double m_dSourceDetectorLength;
+  double m_dViewDiameter;
+  double m_dFanBeamAngle;
+  kuint32 m_year;                   // Creation date & time
+  kuint32 m_month;
+  kuint32 m_day;
+  kuint32 m_hour;
+  kuint32 m_minute;
+  kuint32 m_second;
+  std::string m_filename;
+  Array2dFileLabel m_label;
+
+  const static kuint16 m_signature;
+
+  static const char* const s_aszInterpName[];
+  static const char* const s_aszInterpTitle[];
+  static const int s_iInterpCount;
+
+  bool headerWrite (fnetorderstream& fs);
+  bool headerRead (fnetorderstream& fs);
+  void newProjData ();
+  void deleteProjData ();
+
+  void init (const int nView, const int nDet);
+
+  // prevent default methods
+  Projections& operator= (const Projections& rhs);   // assignment
+  Projections(const Projections& rhs);               // copy
+};
+
+
+#endif
diff --git a/include/reconstruct.h b/include/reconstruct.h
new file mode 100644
index 0000000..293fe7b
--- /dev/null
+++ b/include/reconstruct.h
@@ -0,0 +1,78 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:         reconstruct.h          Header file for Reconstruction class
+**   Programmer:   Kevin Rosenberg
+**   Date Started: Aug 84
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __RECONSTRUCT_H
+#define __RECONSTRUCT_H
+
+
+class Projections;
+class ImageFile;
+class Backprojector;
+class ProcessSignal;
+
+#include <string>
+
+struct ReconstructionROI {
+  double m_dXMin;
+  double m_dYMin;
+  double m_dXMax;
+  double m_dYMax;
+};
+
+class Reconstructor
+{
+ private:
+    const Projections& m_rOriginalProj;
+    const Projections* m_pProj;
+    ImageFile& m_rImagefile;
+    ProcessSignal* m_pProcessSignal;
+    Backprojector* m_pBackprojector;
+    int m_nFilteredProjections;
+    int m_iTrace;
+    const bool m_bRebinToParallel;
+    bool m_bFail;
+    std::string m_strFailMessage;
+
+    double* m_adPlotXAxis;
+
+ public:
+    Reconstructor (const Projections& rProj, ImageFile& rIF, const char* const filterName, double filt_param,
+      const char* const filterMethodName, const int zeropad, const char* filterGenerationName,
+      const char* const interpName, int interpFactor, const char* const backprojectName, const int trace,
+      ReconstructionROI* pROI = NULL, bool bRebinToParallel = false, SGP* pSGP = NULL);
+
+    ~Reconstructor ();
+
+    bool fail() const {return m_bFail;}
+    const std::string& failMessage() const {return m_strFailMessage;}
+
+    void plotFilter (SGP* pSGP = NULL);
+
+    void reconstructAllViews ();
+
+    void reconstructView (int iStartView = 0, int iViewCount = -1, SGP* pSGP = NULL, bool bBackprojectView = true, double dGraphWidth = 1.);
+    void postProcessing ();
+};
+
+#endif
diff --git a/include/scanner.h b/include/scanner.h
new file mode 100644
index 0000000..d302b67
--- /dev/null
+++ b/include/scanner.h
@@ -0,0 +1,194 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          scanner.h
+**   Purpose:       Scanner header file
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 1, 1984
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef SCANNER_H
+#define SCANNER_H
+
+#include "trace.h"
+
+class Projections;
+class Phantom;
+class PhantomElement;
+class SGP;
+
+// Projections are collected along an array of ndet detectors.  The data
+// for these detectors is stored in the class DetectorArray
+
+typedef float DetectorValue;
+
+class DetectorArray
+{
+ public:
+  DetectorArray (const int ndet);
+  ~DetectorArray ();
+
+  const int nDet() const {return m_nDet;}
+  const double viewAngle() const {return m_viewAngle;}
+  DetectorValue* detValues() {return m_detValues;}
+  const DetectorValue* detValues() const {return m_detValues;}
+
+  void setViewAngle (double viewAngle)
+      { m_viewAngle = viewAngle; }
+
+ private:
+  DetectorValue* m_detValues;   // Pointer to array of values recorded by detector
+  int m_nDet;                   // Number of detectors in array */
+  double m_viewAngle;           // View angle in radians
+
+  DetectorArray& operator=(const DetectorArray& rhs);   // assignment
+  DetectorArray (const DetectorArray& rhs);             // copy constructor
+};
+
+
+class Scanner
+{
+ public:
+  static const int GEOMETRY_INVALID;
+  static const int GEOMETRY_PARALLEL;
+  static const int GEOMETRY_EQUILINEAR;
+  static const int GEOMETRY_EQUIANGULAR;
+  static const int GEOMETRY_LINOGRAM;
+
+
+  Scanner (const Phantom& phm, const char* const geometryName, int nDet,
+    int nView, int iOffsetView, int nSample, const double rot_anglen,
+    double dFocalLengthRatio, double dCenterDetectorRatio, double dViewRatio, double dScanRatio);
+  ~Scanner();
+
+  void collectProjections (Projections& proj, const Phantom& phm, const int trace = Trace::TRACE_NONE,
+    SGP* pSGP = NULL);
+
+  void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, bool bStoreAtViewPosition, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL);
+
+  void collectProjections (Projections& proj, const Phantom& phm, const int iStartView, const int iNumViews, const int iOffsetView, int iStorageOffset, const int trace = Trace::TRACE_NONE, SGP* pSGP = NULL);
+
+  void setNView (int nView);
+  void setOffsetView (int iOffsetView);
+
+  bool fail() const {return m_fail;}
+  const std::string& failMessage() const {return m_failMessage;}
+  unsigned int nDet() const {return m_nDet;}
+  unsigned int nView() const {return m_nView;}
+  unsigned int offsetView() const {return m_iOffsetView;}
+  unsigned int startView() const {return m_startView;}
+  double rotInc() const {return m_rotInc;}
+  double detInc() const {return m_detInc;}
+  double detLen() const {return m_detLen;}
+  double detStart() const {return m_detStart;}
+  double focalLength() const {return m_dFocalLength;}
+  double sourceDetectorLength() const {return m_dSourceDetectorLength;}
+  double centerDetectorLength() const {return m_dCenterDetectorLength;}
+
+  double viewDiameter() const {return m_dViewDiameter;}
+  double scanDiameter() const {return m_dScanDiameter;}
+  double fanBeamAngle() const {return m_dFanBeamAngle;}
+
+  int geometry() const {return m_idGeometry;}
+
+  static int getGeometryCount() {return s_iGeometryCount;}
+  static const char* const* getGeometryNameArray() {return s_aszGeometryName;}
+  static const char* const* getGeometryTitleArray() {return s_aszGeometryTitle;}
+  static int convertGeometryNameToID (const char* const geometryName);
+  static const char* convertGeometryIDToName (const int idGeometry);
+  static const char* convertGeometryIDToTitle (const int idGeometry);
+
+ private:
+  bool m_fail;
+  std::string m_failMessage;
+  int m_idGeometry;
+  unsigned int m_nDet;          /* Number of detectors in array */
+  unsigned int m_nView;         /* Number of rotated views */
+  unsigned int m_iOffsetView;
+  unsigned int m_startView;
+  unsigned int m_nSample;       /* Number of rays per detector */
+  double m_dFocalLength;        // Focal Length, distance from source to center
+  double m_dSourceDetectorLength; // Distance from source to detectors
+  double m_dCenterDetectorLength; // Distance from center to detectors
+  double m_dViewDiameter; // Diameter of area being processed
+  double m_dScanDiameter; // Diamer of area being scanned
+  double m_dViewRatio;   // View Ratio to diameter phantom
+  double m_dFocalLengthRatio;   // Source to Center Length as ratio to viewDiameter radius
+  double m_dCenterDetectorRatio; // Center to Detector Length as ratio of viewDiameter radius
+  double m_dScanRatio;       // Scan length to view length ratio
+  double m_dFanBeamAngle;
+  double m_detLen;              // Total length of detector array
+  double m_rotLen;              // Rotation angle length in radians (norm 2PI)
+  double m_detInc;              // Increment between centers of detectors
+  double m_rotInc;              // Increment in rotation angle between views
+  double m_detStart;
+  double m_dXCenter;            // Center of Phantom
+  double m_dYCenter;
+  double m_dAngularDetIncrement;
+  double m_dAngularDetLen;
+
+  int m_trace;
+  struct {
+    double xd1,yd1,xd2,yd2;     /* Coordinates of detector endpoints */
+    double xs1,ys1,xs2,ys2;     /* Coordinates of source endpoints */
+    double angle;               /* Starting angle */
+    double dAngularDet;
+  } m_initPos;
+
+  GRFMTX_2D m_rotmtxIncrement;
+
+#ifdef HAVE_SGP
+  SGP* m_pSGP;                  // Pointer to graphics device
+  double m_dXMinWin;            // Extent of graphics window
+  double m_dXMaxWin;
+  double m_dYMinWin;
+  double m_dYMaxWin;
+  double m_dTextHeight;
+#endif
+
+  static const char* const s_aszGeometryName[];
+  static const char* const s_aszGeometryTitle[];
+  static const int s_iGeometryCount;
+
+  void projectSingleView (const Phantom& phm, DetectorArray& darray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const double dDetAngle);
+
+  double projectSingleLine (const Phantom& phm, const double x1, const double y1, const double x2, const double y2);
+
+  double projectLineAgainstPElem (const PhantomElement& pelem, const double x1, const double y1, const double x2, const double y2);
+
+  void traceShowParam (const char* szLabel, const char *fmt, int row, int color, ...);
+  void traceShowParamXOR (const char* szLabel, const char *fmt, int row, int color, ...);
+  void traceShowParamRasterOp (int iRasterOp, const char* szLabel, const char* fmt, int row, int color, va_list va);
+
+
+};
+
+const static int PROJECTION_TRACE_ROW_PHANT_ID=0;
+const static int PROJECTION_TRACE_ROW_GEOMETRY=1;
+const static int PROJECTION_TRACE_ROW_FOCAL_LENGTH=2;
+const static int PROJECTION_TRACE_ROW_FIELD_OF_VIEW=3;
+const static int PROJECTION_TRACE_ROW_NDET=4;
+const static int PROJECTION_TRACE_ROW_NVIEW=5;
+const static int PROJECTION_TRACE_ROW_SAMPLES=6;
+const static int PROJECTION_TRACE_ROW_CURR_VIEW=7;
+const static int PROJECTION_TRACE_ROW_ATTEN=8;
+
+
+
+#endif
diff --git a/include/sgp.h b/include/sgp.h
new file mode 100644
index 0000000..0f947c5
--- /dev/null
+++ b/include/sgp.h
@@ -0,0 +1,306 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         sgp.h
+**      Purpose:      Header file for Simple Graphics Package
+**      Author:       Kevin Rosenberg
+**      Date Started: 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __H_SGP
+#define __H_SGP
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "transformmatrix.h"
+
+#ifdef HAVE_WXWINDOWS
+#include <wx/wx.h>
+#include <wx/font.h>
+#endif
+
+#if HAVE_G2_H
+extern "C" {
+#include "g2.h"
+#include "g2_X11.h"
+}
+#endif
+
+#include <string>
+
+class SGPDriver {
+private:
+  int m_iPhysicalXSize;
+  int m_iPhysicalYSize;
+  std::string m_sWindowTitle;
+  int m_idDriver;
+
+#ifdef HAVE_WXWINDOWS
+  wxDC* m_pDC;
+#endif
+  int m_idG2;
+
+public:
+  enum {
+    SGPDRIVER_WXWINDOWS = 1,
+    SGPDRIVER_G2 = 2,
+    SGPDRIVER_OPENGL = 4,
+  };
+
+#ifdef HAVE_WXWINDOWS
+  SGPDriver (wxDC* pDC, int xsize = 640, int ysize = 480);
+#endif
+
+  SGPDriver (const char* szWinTitle = "", int xsize = 640, int ysize = 480);
+
+  ~SGPDriver ();
+
+  int getPhysicalXSize () const
+    { return m_iPhysicalXSize; }
+
+  int getPhysicalYSize () const
+    { return m_iPhysicalYSize; }
+
+  const std::string& getWindowTitle () const
+    { return m_sWindowTitle; }
+
+  bool isWX () const
+  { return (m_idDriver & SGPDRIVER_WXWINDOWS ? true : false); }
+
+  bool isG2 () const
+  { return (m_idDriver & SGPDRIVER_G2 ? true : false); }
+
+  int idG2 () const
+    { return m_idG2; }
+
+#ifdef HAVE_WXWINDOWS
+  wxDC* idWX () const
+    { return m_pDC; }
+
+  void setDC (wxDC* dc)
+      { m_pDC = dc; }
+#endif
+};
+
+
+class SGP_RGBColor;
+class SGP {
+private:
+  int m_iPhysicalXSize;   // Physical Window size
+  int m_iPhysicalYSize;
+  SGPDriver m_driver;
+
+  double xw_min;    // Window extents
+  double yw_min;
+  double xw_max;
+  double yw_max;
+  double xv_min;    // Viewport extents
+  double yv_min;
+  double xv_max;
+  double yv_max;
+  double viewNDC[4];   // Viewport array for clip_rect()
+
+  int m_iCurrentPhysicalX;
+  int m_iCurrentPhysicalY;
+  double m_dCurrentWorldX;
+  double m_dCurrentWorldY;
+  double m_dTextAngle;
+  int m_iTextPointSize;
+  bool m_bRecalcTransform;
+  double m_dPointsPerPixel;  // points (72pt/in) per screen pixel;
+  int m_iLinestyle;
+  int m_iMarker;
+
+  // Master coordinates are coordinates before CTM transformation
+  // World coordinates are coordinates defined by setWindow()
+  // Normalized device coordinates range from 0. to 1. in both axes
+  TransformationMatrix2D wc_to_ndc;     // World coord to NDC matrix
+  TransformationMatrix2D mc_to_ndc;     // Master to NDC
+  TransformationMatrix2D ndc_to_mc;     // NDC to Master
+  TransformationMatrix2D m_ctm;         // Current transfromation matrix
+
+  void calc_transform ();
+
+  static SGP_RGBColor s_aRGBColor[];
+  static int s_iRGBColorCount;
+
+#if HAVE_WXWINDOWS
+  wxPen m_pen;
+  wxFont* m_pFont;
+
+  void initFromDC (wxDC* pDC);
+#endif
+
+public:
+  enum {                  // linestyles
+      LS_NOLINE = 0,
+      LS_SOLID = 0xffff,
+      LS_DASH1 = 0xff00,
+      LS_DASH2 = 0xf0f0,
+      LS_DASH3 = 0xcccc,
+      LS_DASH4 = 0xff3e,
+      LS_DOTTED = 0xaaaa,
+  };
+
+  enum {            // Codes for marker symbols
+      MARKER_POINT = 0, // small dot
+      MARKER_SQUARE = 1,        // empty square
+      MARKER_FSQUARE = 2,       // filled square
+      MARKER_DIAMOND = 3,       // empty diamond
+      MARKER_FDIAMOND = 4,      // filled diamond
+      MARKER_CROSS =  5,        // cross
+      MARKER_XCROSS = 6,        // x
+      MARKER_CIRCLE = 7,    // open circle
+      MARKER_FCIRCLE = 8,       // filled circle
+      MARKER_BSQUARE = 9,       // big open square
+      MARKER_BDIAMOND = 10,     // big open diamond
+  };
+  enum  { MARK_COUNT = 11, };
+  static const unsigned char MARKER_BITMAP[MARK_COUNT][5];
+
+  SGP (const SGPDriver& driver);
+  ~SGP();
+
+  void drawCircle (const double r);
+  void drawArc (const double r, double start, double stop);
+  void drawRect (double xmin, double ymin, double xmax, double ymax);
+  void lineAbs(double x, double y);
+  void moveAbs(double x, double y);
+  void lineRel(double x, double y);
+  void moveRel(double x, double y);
+  void drawText(const char *szMessage);
+  void drawText(const std::string& rsMessage);
+  void polylineAbs(double x[], double y[], int n);
+  void markerAbs (double x, double y);
+  void markerRel(double x, double y);
+  void pointAbs(double x, double y);
+  void pointRel(double x, double y);
+
+  void eraseWindow ();
+  void setWindow (double xmin, double ymin, double xmax, double ymax);
+  void setViewport (double xmin, double ymin, double xmax, double ymax);
+  void frameViewport();
+
+  void setColor (int icol);
+  void setLineStyle (int style);
+  void setTextSize (double height);
+  void setTextNDCSize (double height);
+  void setTextPointSize (double height);
+  void setTextAngle (double angle);
+  void setTextColor (int iFGcolor, int iBGcolor);
+  void setPenWidth (int width);
+  void setMarker (int idMarker);
+  void setRasterOp (int ro);
+
+  void getWindow (double& xmin, double& ymin, double& xmax, double& ymax);
+  void getViewport (double& xmin, double& ymin, double& xmax, double& ymax);
+  void getTextExtent (const char *szText, double* x, double* y);
+  double getCharHeight ();
+  double getCharWidth ();
+  SGPDriver& getDriver() {return m_driver;}
+  const SGPDriver& getDriver() const {return m_driver;}
+
+  void ctmClear ();
+  void ctmSet (const TransformationMatrix2D& m);
+  void preTranslate (double x, double y);
+  void postTranslate (double x, double y);
+  void preScale (double sx, double sy);
+  void postScale (double sx, double sy);
+  void preRotate (double theta);
+  void postRotate (double theta);
+  void preShear (double shrx, double shry);
+  void postShear (double shrx, double shry);
+  void transformNDCtoMC (double* x, double* y);
+  void transformMCtoNDC (double* x, double* y);
+  void transformMCtoNDC (double xIn, double yIn, double* xOut, double* yOut);
+
+  void stylusNDC (double x, double y, bool beam);
+  void pointNDC (double x, double y);
+  void markerNDC (double x, double y);
+
+#if HAVE_WXWINDOWS
+  void setDC (wxDC* pDC);
+#endif
+};
+
+
+enum {
+    C_BLACK     = 0,     // color codes
+    C_BLUE      = 1,
+    C_GREEN     = 2,
+    C_CYAN      = 3,
+    C_RED       = 4,
+    C_MAGENTA   = 5,
+    C_BROWN     = 6,
+    C_GRAY      = 7,
+    C_LTGRAY    = 8,
+    C_LTBLUE    = 9,
+    C_LTGREEN   = 10,
+    C_LTCYAN    = 11,
+    C_LTRED     = 12,
+    C_LTMAGENTA = 13,
+    C_YELLOW    = 14,
+    C_WHITE     = 15,
+};
+
+enum RasterOp {
+    RO_AND = 1,
+    RO_AND_INVERT,
+    RO_AND_REVERSE,
+    RO_CLEAR,
+    RO_COPY,
+    RO_EQUIV,
+    RO_INVERT,
+    RO_NAND,
+    RO_NOR,
+    RO_NO_OP,
+    RO_OR,
+    RO_OR_INVERT,
+    RO_OR_REVERSE,
+    RO_SET,
+    RO_SRC_INVERT,
+    RO_XOR,
+};
+
+
+class SGP_RGBColor {
+ private:
+  short int r;
+  short int g;
+  short int b;
+
+ public:
+  SGP_RGBColor (int r, int g, int b)
+    : r(r), g(g), b(b)
+    {}
+
+  int getRed () const
+    { return r; }
+
+  int getGreen () const
+    { return g; }
+
+  int getBlue () const
+    { return b; }
+
+};
+
+#endif
diff --git a/include/sstream_subst b/include/sstream_subst
new file mode 100644
index 0000000..bb9080a
--- /dev/null
+++ b/include/sstream_subst
@@ -0,0 +1,115 @@
+#ifndef __CM_SSTREAM__
+#define __CM_SSTREAM__
+
+#if 0
+//#ifndef MSVC
+
+#include <string>
+#include <cstdio>
+#include <strstream>
+#include <algorithm>
+
+namespace std {
+
+class ostringstream
+{
+public:
+    ostringstream (const string & str = "")
+        : buffer(str) {}
+
+    const string & str() const
+    {
+        return buffer;
+    }
+
+    void str (const string & new_string)
+    {
+        buffer = new_string;
+    }
+
+    ostringstream & operator<< (const string & item)
+    {
+        buffer += item;
+
+        return *this;
+    }
+
+    ostringstream & operator<< (int item)
+    {
+        char temp[100];
+
+        sprintf (temp, "%d", item);
+        buffer += temp;
+
+        return *this;
+    }
+
+    ostringstream & operator<< (unsigned int item)
+    {
+        char temp[100];
+
+        sprintf (temp, "%u", item);
+        buffer += temp;
+
+        return *this;
+    }
+
+    ostringstream & operator<< (char item)
+    {
+        buffer += item;
+        return *this;
+    }
+
+    ostringstream & operator<< (double item)
+    {
+        char temp[1000];
+
+        sprintf (temp, "%g", item);
+        buffer += temp;
+
+        return *this;
+    }
+
+private:
+    string buffer;
+};
+
+
+
+class istringstream
+{
+    friend istringstream & getline (istringstream &, string &, char = '\n');
+
+public:
+    istringstream (const string & str = "")
+        : buffer (str.c_str(), str.length()) {}
+
+    template <class T>
+    istringstream & operator>> (T & item)
+    {
+        buffer >> item;
+        return *this;
+    }
+
+    operator void * () const
+    {
+        return (void *) buffer;
+    }
+
+private:
+    istrstream buffer;
+};
+
+
+inline istringstream & getline (istringstream & src_stream, string & str, char separator)
+{
+    getline (src_stream.buffer, str, separator);
+    return src_stream;
+}
+
+}   // End of namespace std
+
+#endif
+
+#endif
+
diff --git a/include/timer.h b/include/timer.h
new file mode 100644
index 0000000..ceefb6d
--- /dev/null
+++ b/include/timer.h
@@ -0,0 +1,193 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         timer.h
+**      Purpose:      Header file for Timer class
+**      Author:       Kevin Rosenberg
+**      Date Started: Sep 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _TIMER_H
+#define _TIMER_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef MSVC
+#include <sys/timeb.h>
+#endif
+
+class Timer
+{
+ public:
+    Timer (void)
+        { m_timeStart = ttime(); }
+
+    virtual ~Timer (void)
+        {}
+
+    virtual double timerEnd (void)
+      {
+        m_timeEnd = ttime();
+        m_timeElapsed = m_timeEnd - m_timeStart;
+
+        return (m_timeElapsed);
+      }
+
+    virtual void timerReport (const char* const msg) const
+      {
+                std::cout << msg << ": " << m_timeElapsed << " seconds" << std::endl;
+      }
+
+    virtual double timerEndAndReport (const char* const msg)
+      {
+        double t = timerEnd ();
+        timerReport (msg);
+        return (t);
+      }
+
+    double getTimeElapsed (void) const
+        { return m_timeElapsed; }
+
+ protected:
+    double m_timeStart;
+    double m_timeEnd;
+    double m_timeElapsed;
+
+    double ttime(void) const
+        {
+#ifdef HAVE_GETTIMEOFDAY
+            struct timeval now;
+            if (gettimeofday (&now, NULL))
+                return 0;
+
+            return (now.tv_sec + static_cast<double>(now.tv_usec) / 1000000.);
+#elif defined(MSVC)
+                struct _timeb now;
+                _ftime (&now);
+                return (now.time + static_cast<double>(now.millitm) / 1000.);
+#else
+            return 0;
+#endif
+        }
+};
+
+
+#ifdef HAVE_MPI
+
+#include "mpi++.h"
+
+class TimerMPI : public Timer
+{
+ public:
+    TimerMPI (MPI::Intracomm& comm)
+        : m_comm(comm)
+      {
+          m_timeStart = MPI::Wtime();
+      }
+
+    virtual ~TimerMPI (void)
+      {}
+
+    virtual double timerEnd (void)
+      {
+        m_timeEnd = MPI::Wtime();
+        m_timeElapsed = m_timeEnd - m_timeStart;
+
+        return (m_timeElapsed);
+      }
+
+    virtual void timerReport (const char* const msg)
+      {
+          if (m_comm.Get_rank() == 0)
+                  std::cout << msg << ": " << m_timeElapsed << " seconds" << std::endl;
+      }
+
+    virtual double timerEndAndReport (const char* const msg)
+      {
+        double t = timerEnd ();
+        timerReport (msg);
+        return (t);
+      }
+
+    virtual void timerReportAllProcesses (const char* const msg)
+      {
+          timerReport (msg);
+      }
+
+ protected:
+    MPI::Intracomm& m_comm;
+};
+
+class TimerCollectiveMPI : public TimerMPI
+{
+ public:
+    TimerCollectiveMPI (MPI::Intracomm& comm)
+        : TimerMPI::TimerMPI (comm)
+      {
+        m_comm.Barrier();
+        m_timeStart = MPI::Wtime();
+      }
+
+    virtual ~TimerCollectiveMPI (void)
+      {}
+
+    virtual double timerEnd (void)
+      {
+        m_timeEnd = MPI::Wtime();
+        m_timeElapsed = m_timeEnd - m_timeStart;
+        m_comm.Reduce (&m_timeElapsed, &m_timeMin, 1, MPI::DOUBLE, MPI::MIN, 0);
+        m_comm.Reduce (&m_timeElapsed, &m_timeMax, 1, MPI::DOUBLE, MPI::MAX, 0);
+
+        return (m_timeElapsed);
+      }
+
+    virtual double timerEndAndReport (const char* const msg)
+      {
+        double t = timerEnd ();
+        timerReport (msg);
+        return (t);
+      }
+
+    virtual void timerReport (const char* const msg)
+      {
+        if (m_comm.Get_rank() == 0)
+                std::cout << msg << " " << "Minimum=" << m_timeMin << ", Maximum=" << m_timeMax << " seconds" << std::endl;
+      }
+
+    virtual void timerReportAllProcesses (const char* const msg)
+      {
+                std::cout << msg << ": " << "Minimum=" << m_timeMin << ", Maximum=" << m_timeMax << " seconds (Rank " << m_comm.Get_rank() << ")" << std::endl;
+      }
+
+ private:
+    double m_timeMin;
+    double m_timeMax;
+};
+#endif
+
+
+#endif  // _TIMER_H
+
+
diff --git a/include/trace.h b/include/trace.h
new file mode 100644
index 0000000..3785074
--- /dev/null
+++ b/include/trace.h
@@ -0,0 +1,77 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         trace.h
+**      Purpose:      Header file for Trace class
+**      Author:       Kevin Rosenberg
+**      Date Started: Oct 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef TRACE_H
+#define TRACE_H
+
+
+class Trace
+{
+ public:
+    static const int TRACE_INVALID;
+    static const int TRACE_NONE;
+    static const int TRACE_CONSOLE;
+    static const int TRACE_PHANTOM;
+    static const int TRACE_PROJECTIONS;
+    static const int TRACE_PLOT;
+    static const int TRACE_CLIPPING;
+
+    static const int BIT_CONSOLE;
+    static const int BIT_PHANTOM;
+    static const int BIT_PROJECTIONS;
+    static const int BIT_PLOT;
+    static const int BIT_CLIPPING;
+
+  Trace (const char* const traceString);
+
+  void addTrace (const char* const traceString);
+
+  bool isTrace (const char* const traceQuery) const;
+
+  int getTraceLevel(void) const { return m_traceLevel; }
+
+  static int convertTraceNameToID (const char* traceName);
+  static const char* convertTraceIDToTitle (int idTrace);
+  static const char* convertTraceIDToName (int idTrace);
+
+  static const int getTraceCount() {return s_iTraceCount;}
+  static const char** getTraceNameArray() {return s_aszTraceName;}
+  static const char** getTraceTitleArray() {return s_aszTraceTitle;}
+
+ private:
+
+  int m_traceLevel;
+
+  bool addTraceElements (const char* const traceString);
+
+  static const char* s_aszTraceName[];
+  static const char* s_aszTraceTitle[];
+  static const int s_iTraceCount;
+
+};
+
+
+#endif
+
diff --git a/include/transformmatrix.h b/include/transformmatrix.h
new file mode 100644
index 0000000..78c866c
--- /dev/null
+++ b/include/transformmatrix.h
@@ -0,0 +1,59 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         sgp.h
+**      Purpose:      Header file for Simple Graphics Package
+**      Author:       Kevin Rosenberg
+**      Date Started: 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __H_TRANSFORMMATRIX
+#define __H_TRANSFORMMATRIX
+
+#include <iostream>
+
+class TransformationMatrix2D {
+public:
+  double mtx[3][3];
+
+  TransformationMatrix2D () {};
+  TransformationMatrix2D (double m[3][3]);
+
+  void setIdentity();
+  void setTranslate (double x, double y);
+  void setScale (double sx, double sy);
+  void setShear (double shrx, double shry);
+  void setRotate (double theta);
+
+  double determinant () const;
+
+  const TransformationMatrix2D invert () const;
+
+  void transformPoint (double *pX, double *pY) const;
+
+  void print (std::ostream& ostr) const;
+
+  friend const TransformationMatrix2D operator* (const TransformationMatrix2D& lhs, const TransformationMatrix2D& rhs);
+
+};
+
+
+const TransformationMatrix2D  operator* (const TransformationMatrix2D& lhs, const TransformationMatrix2D& rhs);
+
+#endif
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000..6781b98
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,520 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2009-04-28.21; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+nl='
+'
+IFS=" ""	$nl"
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit=${DOITPROG-}
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_glob='?'
+initialize_posix_glob='
+  test "$posix_glob" != "?" || {
+    if (set -f) 2>/dev/null; then
+      posix_glob=
+    else
+      posix_glob=:
+    fi
+  }
+'
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+no_target_directory=
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+     --help     display this help and exit.
+     --version  display version info and exit.
+
+  -c            (ignored)
+  -C            install only if different (preserve the last data modification time)
+  -d            create directories instead of installing files.
+  -g GROUP      $chgrpprog installed files to GROUP.
+  -m MODE       $chmodprog installed files to MODE.
+  -o USER       $chownprog installed files to USER.
+  -s            $stripprog installed files.
+  -t DIRECTORY  install into DIRECTORY.
+  -T            report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+  RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+  case $1 in
+    -c) ;;
+
+    -C) copy_on_change=true;;
+
+    -d) dir_arg=true;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+	shift;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) mode=$2
+	case $mode in
+	  *' '* | *'	'* | *'
+'*	  | *'*'* | *'?'* | *'['*)
+	    echo "$0: invalid mode: $mode" >&2
+	    exit 1;;
+	esac
+	shift;;
+
+    -o) chowncmd="$chownprog $2"
+	shift;;
+
+    -s) stripcmd=$stripprog;;
+
+    -t) dst_arg=$2
+	shift;;
+
+    -T) no_target_directory=true;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    --)	shift
+	break;;
+
+    -*)	echo "$0: invalid option: $1" >&2
+	exit 1;;
+
+    *)  break;;
+  esac
+  shift
+done
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dst_arg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dst_arg"
+      shift # fnord
+    fi
+    shift # arg
+    dst_arg=$arg
+  done
+fi
+
+if test $# -eq 0; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+	u_plus_rw=
+      else
+	u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
+  else
+
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dst_arg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dst_arg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dst_arg: Is a directory" >&2
+	exit 1
+      fi
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+	(dirname "$dst") 2>/dev/null ||
+	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	     X"$dst" : 'X\(//\)[^/]' \| \
+	     X"$dst" : 'X\(//\)$' \| \
+	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+	echo X"$dst" |
+	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)[^/].*/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\/\)$/{
+		   s//\1/
+		   q
+		 }
+		 /^X\(\/\).*/{
+		   s//\1/
+		   q
+		 }
+		 s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
+    fi
+  fi
+
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+	# Create intermediate dirs using mode 755 as modified by the umask.
+	# This is like FreeBSD 'install' as of 1997-10-28.
+	umask=`umask`
+	case $stripcmd.$umask in
+	  # Optimize common cases.
+	  *[2367][2367]) mkdir_umask=$umask;;
+	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+	  *[0-7])
+	    mkdir_umask=`expr $umask + 22 \
+	      - $umask % 100 % 40 + $umask % 20 \
+	      - $umask % 10 % 4 + $umask % 2
+	    `;;
+	  *) mkdir_umask=$umask,go-w;;
+	esac
+
+	# With -d, create the new directory with the user-specified mode.
+	# Otherwise, rely on $mkdir_umask.
+	if test -n "$dir_arg"; then
+	  mkdir_mode=-m$mode
+	else
+	  mkdir_mode=
+	fi
+
+	posix_mkdir=false
+	case $umask in
+	  *[123567][0-7][0-7])
+	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
+	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+	    ;;
+	  *)
+	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+	    if (umask $mkdir_umask &&
+		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+	    then
+	      if test -z "$dir_arg" || {
+		   # Check for POSIX incompatibilities with -m.
+		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+		   # other-writeable bit of parent directory when it shouldn't.
+		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+		   case $ls_ld_tmpdir in
+		     d????-?r-*) different_mode=700;;
+		     d????-?--*) different_mode=755;;
+		     *) false;;
+		   esac &&
+		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+		   }
+		 }
+	      then posix_mkdir=:
+	      fi
+	      rmdir "$tmpdir/d" "$tmpdir"
+	    else
+	      # Remove any dirs left behind by ancient mkdir implementations.
+	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+	    fi
+	    trap '' 0;;
+	esac;;
+    esac
+
+    if
+      $posix_mkdir && (
+	umask $mkdir_umask &&
+	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
+
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+	/*) prefix='/';;
+	-*) prefix='./';;
+	*)  prefix='';;
+      esac
+
+      eval "$initialize_posix_glob"
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob set -f
+      set fnord $dstdir
+      shift
+      $posix_glob set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+	test -z "$d" && continue
+
+	prefix=$prefix$d
+	if test -d "$prefix"; then
+	  prefixes=
+	else
+	  if $posix_mkdir; then
+	    (umask=$mkdir_umask &&
+	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+	    # Don't fail if two instances are running concurrently.
+	    test -d "$prefix" || exit 1
+	  else
+	    case $prefix in
+	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+	      *) qprefix=$prefix;;
+	    esac
+	    prefixes="$prefixes '$qprefix'"
+	  fi
+	fi
+	prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+	# Don't fail if two instances are running concurrently.
+	(umask $mkdir_umask &&
+	 eval "\$doit_exec \$mkdirprog $prefixes") ||
+	  test -d "$dstdir" || exit 1
+	obsolete_mkdir_used=true
+      fi
+    fi
+  fi
+
+  if test -n "$dir_arg"; then
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+  else
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+    # Copy the file name to the temp name.
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+    # If -C, don't bother to copy if it wouldn't change the file.
+    if $copy_on_change &&
+       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
+
+       eval "$initialize_posix_glob" &&
+       $posix_glob set -f &&
+       set X $old && old=:$2:$4:$5:$6 &&
+       set X $new && new=:$2:$4:$5:$6 &&
+       $posix_glob set +f &&
+
+       test "$old" = "$new" &&
+       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+    then
+      rm -f "$dsttmp"
+    else
+      # Rename the file to the real destination.
+      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+      # The rename failed, perhaps because mv can't rename something else
+      # to itself, or perhaps because mv is so ancient that it does not
+      # support -f.
+      {
+	# Now remove or move aside any old file at destination location.
+	# We try this two ways since rm can't unlink itself on some
+	# systems and the destination file might be busy for other
+	# reasons.  In this case, the final cleanup might fail but the new
+	# file should still install successfully.
+	{
+	  test ! -f "$dst" ||
+	  $doit $rmcmd -f "$dst" 2>/dev/null ||
+	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+	  } ||
+	  { echo "$0: cannot unlink or rename $dst" >&2
+	    (exit 1); exit 1
+	  }
+	} &&
+
+	# Now rename the file to the real destination.
+	$doit $mvcmd "$dsttmp" "$dst"
+      }
+    fi || exit 1
+
+    trap '' 0
+  fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/libctgraphics/Makefile b/libctgraphics/Makefile
new file mode 100644
index 0000000..a48fbf2
--- /dev/null
+++ b/libctgraphics/Makefile
@@ -0,0 +1,440 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# libctgraphics/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = libctgraphics
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libctgraphics_a_AR = $(AR) $(ARFLAGS)
+libctgraphics_a_LIBADD =
+am_libctgraphics_a_OBJECTS = ezplot.$(OBJEXT) ezset.$(OBJEXT) \
+	pol.$(OBJEXT) sgp.$(OBJEXT) transformmatrix.$(OBJEXT)
+libctgraphics_a_OBJECTS = $(am_libctgraphics_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(libctgraphics_a_SOURCES)
+DIST_SOURCES = $(libctgraphics_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+noinst_LIBRARIES = libctgraphics.a
+libctgraphics_a_SOURCES = ezplot.cpp ezset.cpp pol.cpp sgp.cpp transformmatrix.cpp 
+INCLUDES =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  libctgraphics/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  libctgraphics/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libctgraphics.a: $(libctgraphics_a_OBJECTS) $(libctgraphics_a_DEPENDENCIES) 
+	-rm -f libctgraphics.a
+	$(libctgraphics_a_AR) libctgraphics.a $(libctgraphics_a_OBJECTS) $(libctgraphics_a_LIBADD)
+	$(RANLIB) libctgraphics.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/ezplot.Po
+include ./$(DEPDIR)/ezset.Po
+include ./$(DEPDIR)/pol.Po
+include ./$(DEPDIR)/sgp.Po
+include ./$(DEPDIR)/transformmatrix.Po
+
+.cpp.o:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libctgraphics/Makefile.am b/libctgraphics/Makefile.am
new file mode 100644
index 0000000..9536c8e
--- /dev/null
+++ b/libctgraphics/Makefile.am
@@ -0,0 +1,7 @@
+noinst_LIBRARIES = libctgraphics.a
+libctgraphics_a_SOURCES=ezplot.cpp ezset.cpp pol.cpp sgp.cpp transformmatrix.cpp 
+INCLUDES=@my_includes@
+EXTRA_DIST=Makefile.nt
+
+
+
diff --git a/libctgraphics/Makefile.in b/libctgraphics/Makefile.in
new file mode 100644
index 0000000..6ab1460
--- /dev/null
+++ b/libctgraphics/Makefile.in
@@ -0,0 +1,462 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libctgraphics
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libctgraphics_a_AR = $(AR) $(ARFLAGS)
+libctgraphics_a_LIBADD =
+am_libctgraphics_a_OBJECTS = ezplot.$(OBJEXT) ezset.$(OBJEXT) \
+	pol.$(OBJEXT) sgp.$(OBJEXT) transformmatrix.$(OBJEXT)
+libctgraphics_a_OBJECTS = $(am_libctgraphics_a_OBJECTS)
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(libctgraphics_a_SOURCES)
+DIST_SOURCES = $(libctgraphics_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+noinst_LIBRARIES = libctgraphics.a
+libctgraphics_a_SOURCES = ezplot.cpp ezset.cpp pol.cpp sgp.cpp transformmatrix.cpp 
+INCLUDES = @my_includes@
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libctgraphics/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu libctgraphics/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libctgraphics.a: $(libctgraphics_a_OBJECTS) $(libctgraphics_a_DEPENDENCIES) 
+	-rm -f libctgraphics.a
+	$(libctgraphics_a_AR) libctgraphics.a $(libctgraphics_a_OBJECTS) $(libctgraphics_a_LIBADD)
+	$(RANLIB) libctgraphics.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ezplot.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ezset.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pol.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/sgp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/transformmatrix.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libctgraphics/bresenham.cpp b/libctgraphics/bresenham.cpp
new file mode 100644
index 0000000..9d3077b
--- /dev/null
+++ b/libctgraphics/bresenham.cpp
@@ -0,0 +1,91 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+// REFERENCES FOR BRESENHAM'S ALGORITHM
+// Newman & Sproll, "Principals of Interactive Computer Graphics",  page 25.
+// Foley & van Dam, "Fundementals of Interactive Computer Graphics", page 433
+
+
+static void
+bresx (int x, int y, int major_inc, int minor_inc, int count, int d, 
+       int dinc1, int dinc2, void(*fn)(const int, const int))
+{
+  do {
+    (*fn)(x,y);
+    x += major_inc;
+
+    if (d < 0)
+      d += dinc2;
+    else {
+      d += dinc1;
+      y += minor_inc;
+    }
+  } while (--count > 0);
+}
+
+
+static void
+bresy (int x, int y, int major_inc, int minor_inc, int count, int d,
+       int dinc1, int dinc2, void(*fn)(const int, const int))
+{
+  do {
+    (*fn)(x,y);
+    y += major_inc;
+
+    if (d < 0)
+      d += dinc2;
+    else {
+      d += dinc1;
+      x += minor_inc;
+    }
+  } while (--count > 0);
+}
+
+void
+bresenham (int x1, int y1, int x2, int y2, void(*fn)(const int, const int))
+{0000
+  int delta_x = x2 - x1;
+  int dx_abs = (delta_x >= 0 ? delta_x : -delta_x);
+
+  int delta_y = y2 - y1;
+  int dy_abs = (delta_y >= 0 ? delta_y : -delta_y);
+
+  // draws a line when abs(dx) >= abs(dy)
+  if (dx_abs > dy_abs) {
+    int count = dx_abs + 1;
+    int major_inc = (x1 <= x2 ? 1 : -1);
+    int minor_inc = (delta_y >= 0 ? 1 : -1);     // determine direction of minor axis
+
+    int d = dy_abs * 2 - dx_abs;      // Put decision variable in d
+    int dinc1 = (dy_abs - dx_abs) * 2;
+    int dinc2 = 2 * dy_abs;
+
+    bresx (x1, y1, major_inc, minor_inc, count, d, dinc1, dinc2, fn);
+  } else {    //For plotting lines with abs(dy) > abs(sx)
+    int count = dy_abs + 1;
+
+    int major_inc = (y1 <= y2 ? 1 : -1);
+    int minor_inc = (delta_x >= 0 ? 1 : -1);      // check direction of minor axis
+
+    int d = dx_abs * 2 - dy_abs;
+    int dinc1 = (dx_abs - dy_abs) * 2;
+    int dinc2 = 2 * dx_abs;
+
+    bresy (x1, y1, major_inc, minor_inc, count, d, dinc1, dinc2, fn);
+  }
+}
diff --git a/libctgraphics/ezplot.cpp b/libctgraphics/ezplot.cpp
new file mode 100644
index 0000000..4f32d63
--- /dev/null
+++ b/libctgraphics/ezplot.cpp
@@ -0,0 +1,1320 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**  ezplot.cpp
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ezplot.h"
+#include <algorithm>
+
+#ifdef __GNUWIN32__
+int snprintf (char *, size_t, const char*, ...);
+#endif
+
+// Defaults
+static const double TICKRATIO = 0.4;    // ratio of minor to major tick lengths
+static const int MAXNUMFMT = 15;        // maximum length of a numeric format
+static const int DEF_CURVE_CLR = C_RED;
+
+
+EZPlotCurve::EZPlotCurve (const double* xData, const double* yData, int n)
+: x(new double[n]), y(new double[n])
+{
+  for (int i = 0; i < n; i++) {
+    x[i] = xData[i];
+    y[i] = yData[i];
+  }
+
+  m_iPointCount = n;
+}
+
+EZPlotCurve::~EZPlotCurve ()
+{
+  delete x;
+  delete y;
+}
+
+
+void
+EZPlot::addCurve (const double *y, int n)
+{
+  double* x = new double [n];
+
+  for (int i = 0; i < n; i++)
+    x[i] = i;
+
+  addCurve (x, y, n);
+  delete x;
+}
+
+
+void
+EZPlot::addCurve (const float *y, int n)
+{
+  double* yDouble = new double [n];
+
+  for (int i = 0; i < n; i++)
+    yDouble[i] = y[i];
+
+  addCurve (yDouble, n);
+  delete yDouble;
+}
+
+
+void
+EZPlot::addCurve (const float x[], const double y[], int num)
+{
+  double* dx = new double [num];
+
+  for (int i = 0; i < num; i++)
+    dx[i] = x[i];
+
+  addCurve (dx, y, num);
+  delete dx;
+}
+
+void
+EZPlot::addCurve (const double* const x, const float* const y, int num)
+{
+  double* dy = new double [num];
+
+  for (int i = 0; i < num; i++)
+    dy[i] = y[i];
+
+  addCurve (x, dy, num);
+
+  delete dy;
+}
+
+
+void
+EZPlot::addCurve (const double* const x, const double* const y, int num)
+{
+  if (num < 1)
+    return;
+
+  EZPlotCurve* pCurve = new EZPlotCurve (x, y, num);
+  m_vecCurves.push_back (pCurve);
+}
+
+
+EZPlot::~EZPlot ()
+{
+  for (EZPlotCurveIterator i = m_vecCurves.begin(); i != m_vecCurves.end(); i++)
+    delete *i;
+}
+
+void
+EZPlot::clearCurves ()
+{
+  for (EZPlotCurveIterator i = m_vecCurves.begin(); i != m_vecCurves.end(); i++)
+    delete *i;
+  m_vecCurves.erase (m_vecCurves.begin(), m_vecCurves.end());
+  initPlotSettings();
+}
+
+
+EZPlot::EZPlot ()
+{
+    initKeywords();
+
+    m_pol.addSkipWord ("please");
+
+    m_pol.addSkipWord ("use");
+
+    m_pol.addSkipWord ("are");
+
+    m_pol.addSkipWord ("and");
+
+    m_pol.addSkipWord ("is");
+
+    m_pol.addSkipWord ("the");
+
+    m_pol.addSkipWord ("equals");
+
+    m_pol.addSkipChar ('=');
+
+
+
+    m_pol.usefile (POL::P_USE_STR,"");
+
+    m_pol.set_inputline ("!eoc ,");
+
+    m_pol.reader ();
+
+    m_pol.closefile ();
+
+
+
+    initPlotSettings();
+}
+
+void
+EZPlot::initPlotSettings ()
+{
+  m_iCurrentCurve = -1;
+
+  m_pSGP = NULL;
+
+
+  c_xlabel = "";
+  c_ylabel =  "";
+  c_title = "";
+
+  o_xporigin = 0.0;
+  o_yporigin = 0.0;
+  o_xlength  = 1.0;
+  o_ylength  = 1.0;
+
+  o_xaxis = LINEAR;
+  o_yaxis = LINEAR;
+
+  o_grid = FALSE;
+  o_box = FALSE;
+
+  o_xmajortick = 10;
+  o_ymajortick =  8;
+  o_xminortick =  4;
+  o_yminortick =  4;
+
+  o_color = DEF_CURVE_CLR;
+  o_symfreq = 1;
+  o_symbol = -1;
+  o_linestyle = SGP::LS_SOLID;
+
+  o_xtlabel = TRUE;
+  o_ytlabel = TRUE;
+  o_xticks = BELOW;
+  o_yticks = LEFT;
+
+  o_legendbox = INSIDE;
+  o_tag = FALSE;
+
+  s_xtitle   = FALSE;
+  s_ytitle   = FALSE;
+  s_xcross   = FALSE;
+  s_ycross   = FALSE;
+  s_lxfrac   = FALSE;
+  s_lyfrac   = FALSE;
+  s_xlegend  = FALSE;
+  s_ylegend  = FALSE;
+  s_textsize = FALSE;
+  s_xmin     = FALSE;
+  s_xmax     = FALSE;
+  s_ymin     = FALSE;
+  s_ymax     = FALSE;
+
+  clr_axis   = C_LTGRAY;                // set fixed colors
+  clr_title  = C_RED;
+  clr_label  = C_BLUE;
+  clr_legend = C_CYAN;
+  clr_number = C_GREEN;
+  clr_grid   = C_LTGRAY;
+}
+
+void
+
+EZPlot::setColor (unsigned int iCurve, int iColor)
+
+{
+
+  if (m_veciColor.size() <= iCurve) {
+
+    m_veciColor.resize ((m_iCurrentCurve + 1) * 2);
+
+    m_vecbColorSet.resize ((m_iCurrentCurve + 1) * 2);
+
+  }
+
+  m_veciColor [iCurve] = iColor;
+
+  m_vecbColorSet [iCurve] = true;
+
+}
+
+
+
+void
+
+EZPlot::setSymbol (unsigned int iCurve, int iSymbol)
+
+{
+
+  if (m_veciSymbol.size() <= iCurve) {
+
+    m_veciSymbol.resize ((m_iCurrentCurve + 1) * 2);
+
+    m_vecbSymbolSet.resize ((m_iCurrentCurve + 1) * 2);
+
+  }
+
+  m_veciSymbol [iCurve] = iSymbol;
+
+  m_vecbSymbolSet [iCurve] = true;
+
+}
+
+
+
+void
+
+EZPlot::setSymbolFreq (unsigned int iCurve, int iSymbolFreq)
+
+{
+
+  if (m_veciSymbolFreq.size() <= iCurve) {
+
+    m_veciSymbolFreq.resize ((m_iCurrentCurve + 1) * 2);
+
+    m_vecbSymbolFreqSet.resize ((m_iCurrentCurve + 1) * 2);
+
+  }
+
+  m_veciSymbolFreq [iCurve] = iSymbolFreq;
+
+  m_vecbSymbolFreqSet [iCurve] = true;
+
+}
+
+
+
+void
+
+EZPlot::setLinestyle (unsigned int iCurve, int iLinestyle)
+
+{
+
+  if (m_veciLinestyle.size() <= iCurve) {
+
+    m_veciLinestyle.resize ((m_iCurrentCurve + 1) * 2);
+
+    m_vecbLinestyleSet.resize ((m_iCurrentCurve + 1) * 2);
+
+  }
+
+  m_veciLinestyle [iCurve] = iLinestyle;
+
+  m_vecbLinestyleSet [iCurve] = true;
+
+}
+
+
+
+void
+
+EZPlot::setLegend (unsigned int iCurve, const std::string& strLegend)
+
+{
+
+  if (m_vecsLegend.size() <= iCurve) {
+
+    m_vecsLegend.resize ((m_iCurrentCurve + 1) * 2);
+
+    m_vecbLegendSet.resize ((m_iCurrentCurve + 1) * 2);
+
+  }
+
+  m_vecsLegend [iCurve] = strLegend;
+
+  m_vecbLegendSet [iCurve] = true;
+
+}
+
+
+
+void
+
+EZPlot::setLegend (unsigned int iCurve, const char* const pszLegend)
+
+{
+
+  if (m_vecsLegend.size() <= iCurve) {
+
+    m_vecsLegend.resize ((m_iCurrentCurve + 1) * 2);
+
+    m_vecbLegendSet.resize ((m_iCurrentCurve + 1) * 2);
+
+  }
+
+  m_vecsLegend [iCurve] = pszLegend;
+
+  m_vecbLegendSet [iCurve] = true;
+
+}
+
+
+
+int
+
+EZPlot::getColor (unsigned int iCurve) const
+
+{
+
+  if (m_veciColor.size() > iCurve && m_vecbColorSet[iCurve])
+
+    return m_veciColor[iCurve];
+
+  else
+
+    return o_color;
+
+}
+
+
+
+int
+
+EZPlot::getSymbol (unsigned int iCurve) const
+
+{
+
+  if (m_veciSymbol.size() > iCurve && m_vecbSymbolSet[iCurve])
+
+    return m_veciSymbol[iCurve];
+
+  else
+
+    return o_symbol;
+
+}
+
+
+
+int
+
+EZPlot::getSymbolFreq (unsigned int iCurve) const
+
+{
+
+  if (m_veciSymbolFreq.size() > iCurve && m_vecbSymbolFreqSet[iCurve])
+
+    return m_veciSymbolFreq[iCurve];
+
+  else
+
+    return o_symfreq;
+
+}
+
+
+
+int
+
+EZPlot::getLinestyle (unsigned int iCurve) const
+
+{
+
+  if (m_veciLinestyle.size() > iCurve && m_vecbLinestyleSet[iCurve])
+
+    return m_veciLinestyle[iCurve];
+
+  else
+
+    return o_linestyle;
+
+}
+
+
+
+const std::string*
+
+EZPlot::getLegend (unsigned int iCurve) const
+
+{
+
+  if (m_vecsLegend.size() > iCurve && m_vecbLegendSet[iCurve])
+
+    return &m_vecsLegend[iCurve];
+
+  else
+
+    return NULL;
+
+}
+
+
+
+
+
+/* NAME
+*   plot                Plots all curves collected by addCurves ()
+*
+* SYNOPSIS
+*   plot()
+*
+* DESCRIPTION
+*   This routine plots the curves that have stored by addCurves().
+*
+* CALLS
+*   drawAxes() & make_numfmt()
+*/
+
+void
+EZPlot::plot (SGP* pSGP)
+{
+  if (m_vecCurves.size() <= 0)
+    return;
+
+  m_pSGP = pSGP;
+
+  m_pSGP->setWindow (0., 0., 1., 1.);
+
+  if (s_textsize == TRUE)
+    m_pSGP->setTextPointSize (v_textsize);
+
+  charheight = m_pSGP->getCharHeight();
+  charwidth = m_pSGP->getCharWidth();
+  double symheight = charheight * 0.3;       // size of symbol in NDC
+  double symwidth = symheight;
+
+  if (m_vecCurves.size() < 1)
+    return; // can't plot if there are no curves to plot
+
+  // find a curve with at least one point to get base point
+  double xmin, xmax, ymin, ymax;   // extent of curves in world coord
+  bool found = false;
+
+  for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) {
+    const EZPlotCurve* const pCurve = m_vecCurves [iCurve];
+    if (pCurve->m_iPointCount > 0) {
+      xmin = pCurve->x[0];
+      xmax = xmin;
+      ymin = pCurve->y[0];
+      ymax = ymin;
+      found = true;
+      break;
+    }
+  }
+  if (! found)
+    return; // curve(s) are empty, so no plotting
+
+  for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) {
+    const EZPlotCurve* const pCurve = m_vecCurves [iCurve];
+
+    for (int ip = 0; ip < pCurve->m_iPointCount; ip++) {
+      if (pCurve->x[ip] > xmax)
+        xmax = pCurve->x[ip];
+      else if (pCurve->x[ip] < xmin)
+        xmin = pCurve->x[ip];
+      if (pCurve->y[ip] > ymax)
+        ymax = pCurve->y[ip];
+      else if (pCurve->y[ip] < ymin)
+        ymin = pCurve->y[ip];
+    }
+  }
+
+  // extend graph limits for user defined axis cross positions
+  if (s_xcross == TRUE) {
+    if (v_xcross < xmin)
+      xmin = v_xcross;
+    else if (v_xcross > xmax)
+      xmax = v_xcross;
+  }
+
+  if (s_ycross == TRUE) {
+    if (v_ycross < ymin)
+      ymin = v_ycross;
+    else if (v_ycross > ymax)
+      ymax = v_ycross;
+  }
+
+  // find nice endpoints for axes
+  if (! axis_scale (xmin, xmax, o_xmajortick - 1, &xgw_min, &xgw_max, &x_nint) || ! axis_scale (ymin, ymax, o_ymajortick - 1, &ygw_min, &ygw_max, &y_nint))
+    return;
+
+
+  // check if user set x-axis extents
+  if (s_xmin == TRUE) {
+    xgw_min = v_xmin;
+    x_nint = o_xmajortick - 1;
+  }
+  if (s_xmax == TRUE) {
+    xgw_max = v_xmax;
+    x_nint = o_xmajortick - 1;
+  }
+
+  // check if user set y-axis extents
+  if (s_ymin == TRUE) {
+    ygw_min = v_ymin;
+    y_nint = o_ymajortick - 1;
+  }
+  if (s_ymax == TRUE) {
+    ygw_max = v_ymax;
+    y_nint = o_ymajortick - 1;
+  }
+
+  // calculate increment between major axis in world coordinates
+  xw_tickinc = (xgw_max - xgw_min) / x_nint;
+  yw_tickinc = (ygw_max - ygw_min) / y_nint;
+
+  // we have now calcuated xgw_min, xyw_max, ygw_min, & ygw_max
+
+  // set the number of decimal point to users' setting or default
+  // Two formats for numbers: Fixed:    -nnn.f and  Exponent: -n.fffE+eee
+  if (s_lxfrac == TRUE)
+    x_frac = v_lxfrac;
+  else
+    x_frac = -1;
+
+  if (s_lyfrac == TRUE)
+    y_frac = v_lyfrac;
+  else
+    y_frac = -1;
+
+  make_numfmt (x_numfmt, &x_fldwid, &x_frac, xgw_min, xgw_max, x_nint);
+  make_numfmt (y_numfmt, &y_fldwid, &y_frac, ygw_min, ygw_max, y_nint);
+
+  xtl_wid = x_fldwid * charwidth;               // calc size of tick labels
+  ytl_wid = y_fldwid * charwidth;
+  tl_height = charheight;
+
+  // calculate the extent of the plot frame
+  xp_min = o_xporigin;
+  yp_min = o_yporigin;
+  xp_max = xp_min + o_xlength;
+  yp_max = yp_min + o_ylength;
+
+  xp_min = clamp (xp_min, 0., 1.);
+  xp_max = clamp (xp_max, 0., 1.);
+  yp_min = clamp (yp_min, 0., 1.);
+  yp_max = clamp (yp_max, 0., 1.);
+
+  xa_min = xp_min;              // extent of axes
+  xa_max = xp_max;
+  ya_min = yp_min;
+  ya_max = yp_max;
+
+  // adjust frame for title
+  title_row = ya_max;;
+
+  if (c_title.length() > 0)
+    ya_max -= 2 * charheight;
+
+  else
+
+    ya_max -= 0.7 * charheight;  // allow room for yaxis ticklabel
+
+
+  // calculate legend box boundaries
+  int max_leg = 0;                      // longest legend in characters
+  int num_leg = 0;                      // number of legend titles
+
+  for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) {
+    const std::string* pstrLegend = getLegend (iCurve);
+
+    if (pstrLegend && pstrLegend->length() > 0) {
+
+      int nLegend = pstrLegend->length();
+      if (nLegend > 0) {
+        ++num_leg;
+        if (nLegend > max_leg)
+
+          nLegend = max_leg;
+
+      }
+    }
+  }
+
+  if (num_leg > 0 && o_legendbox != NOLEGEND) {
+    double leg_width  = (max_leg + 2) * charwidth;      // size of legend box
+    double leg_height = num_leg * 3 * charheight;
+
+    if (s_xlegend == TRUE)
+      xl_max = v_xlegend;
+    else {
+      xl_max = xa_max;
+      if (o_legendbox == OUTSIDE)
+        xa_max -= (leg_width + 0.5 * charwidth);
+    }
+    xl_min = xl_max - leg_width;
+
+    if (s_ylegend == TRUE)
+      yl_max = v_ylegend;
+    else
+      yl_max = ya_max;
+
+    yl_min = yl_max - leg_height;
+
+    m_pSGP->setColor (clr_legend);
+    m_pSGP->drawRect (xl_min, yl_min, xl_max, yl_max);
+
+    int iLegend = 0;                    // current legend position
+
+    for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) {
+      const std::string* pstrLegend = getLegend (iCurve);
+      if (! pstrLegend || pstrLegend->length() == 0)
+        continue;
+
+      double xmin = xl_min + 1.0 * charwidth;
+      double xmax = xl_max - 1.0 * charwidth;
+      double y = yl_max - (2.0 + iLegend * 3) * charheight;
+
+      m_pSGP->moveAbs (xmin, y + 0.5 * charheight);
+
+      m_pSGP->drawText (pstrLegend->c_str());
+      m_pSGP->setColor (getColor (iCurve));
+
+      int iLS = getLinestyle (iCurve);
+      if (iLS != SGP::LS_NOLINE) {
+        m_pSGP->setLineStyle (iLS);
+        m_pSGP->moveAbs (xmin, y);
+        m_pSGP->lineAbs (xmax, y);
+      }
+
+      int iSymbol = getSymbol (iCurve);
+      if (iSymbol > 0) {
+        double xinc = (xmax - xmin) / (5 - 1);
+        m_pSGP->setLineStyle (SGP::LS_SOLID);
+        for (int j = 0; j < 5; j++) {
+          m_pSGP->moveAbs (xmin + j * xinc, y);
+          symbol (iSymbol, symwidth, symheight);
+        }
+      }
+      ++iLegend;        // move to next legend position
+    }
+  }   // end legend printing
+
+  // calculate the extent of the axes
+
+  /*-------------------------*/
+  /* adjust frame for labels */
+  /*-------------------------*/
+
+  // X-Label
+  if (c_xlabel.length() > 0)
+    ya_min += 1.5 * charheight;
+  xlbl_row = xp_min;            // put x-label on bottom of plot frame
+
+  // Y-Label
+  if (c_ylabel.length() > 0) {
+
+    m_pSGP->setTextAngle (HALFPI);
+
+    m_pSGP->setTextSize (1.5 * charheight);
+
+    double xExtent, yExtent;
+
+    m_pSGP->getTextExtent (c_ylabel.c_str(), &xExtent, &yExtent);
+
+    m_pSGP->setTextSize (charheight);
+
+    xa_min += xExtent;
+
+    m_pSGP->setTextAngle (0.0);
+
+  }
+  ylbl_col = xp_min;
+
+  /*------------------------------*/
+  /* adjust frame for tick labels */
+  /*------------------------------*/
+
+  // Calc offset of tick labels from axes
+  if (o_xaxis == NOAXIS || o_xtlabel == FALSE)
+    xtl_ofs = 0.0;
+  else if (o_xticks == BELOW)
+    xtl_ofs = -0.5 * charheight;
+  else if (o_xticks == ABOVE)
+    xtl_ofs = 0.5 * charheight;
+
+  if (o_yaxis == NOAXIS || o_ytlabel == FALSE)
+    ytl_ofs = 0.0;
+  else if (o_yticks == LEFT) {
+    double xExtentMin, xExtentMax, yExtent;
+    char s[1024];
+    snprintf (s, sizeof(s), y_numfmt, ymin);
+    m_pSGP->getTextExtent (s, &xExtentMin, &yExtent);
+    snprintf (s, sizeof(s), y_numfmt, ymax);
+    m_pSGP->getTextExtent (s, &xExtentMax, &yExtent);
+    if (xExtentMin > xExtentMax)
+      xExtentMax = xExtentMin;
+    ytl_ofs = -xExtentMax;
+  } else if (o_yticks == RIGHT)
+    ytl_ofs = 1.5 * charwidth;
+
+  xa_max -= 0.7 * x_fldwid * charwidth; // make room for last x tick label
+
+  xt_min = xa_min;
+  yt_min = ya_min;
+  xt_max = xa_max;
+  yt_max = ya_max;
+
+  // see if need to shrink axis extents and/or tick extents
+  if (xtl_ofs != 0.0 && s_ycross == FALSE) {
+    if (o_xticks == BELOW) {
+      ya_min += 1.5 * charheight;
+      yt_min = ya_min;
+    } else if (o_xticks == ABOVE) {
+      ya_min += 0.0;
+      yt_min = ya_min + 1.5 * charheight;
+    }
+  } else   // noaxis, no t-labels, or user set cross
+    yt_min = ya_min;
+
+  if (ytl_ofs != 0.0 && s_xcross == FALSE) {
+    if (o_yticks == LEFT) {
+      xa_min += 2*charwidth - ytl_ofs; // (2 + y_fldwid) * charwidth;
+      xt_min = xa_min;
+    } else if (o_yticks == RIGHT) {
+      xa_min += 0.0;
+      xt_min = xa_min + ytl_ofs; // + y_fldwid * charwidth;
+    }
+  } else
+    xt_min = xa_min;
+
+  // decrease size of graph, if necessary, to accommadate space
+  // between axis boundary and boundary of ticks
+  double x_added_ticks = 0; // number of tick spaces added to axis
+  double y_added_ticks = 0;
+  if (o_xaxis == NOAXIS || o_xtlabel == FALSE)
+    x_added_ticks = 0;
+  if (o_yaxis == NOAXIS || o_ytlabel == FALSE)
+    y_added_ticks = 0;
+
+  if (o_grid == TRUE) {
+    if (x_added_ticks < 0)
+      x_added_ticks = 2;
+    if (y_added_ticks < 0)
+      y_added_ticks = 2;
+  }
+
+  if (x_added_ticks < 0) {
+    if (o_yticks == LEFT || s_ycross)
+      x_added_ticks = 1;
+    else
+      x_added_ticks = 2;
+  }
+
+  if (y_added_ticks < 0) {
+    if (o_xticks == BELOW || s_xcross)
+      y_added_ticks = 1;
+    else
+      y_added_ticks = 2;
+  }
+
+  xn_tickinc = (xt_max - xt_min) / (x_nint + x_added_ticks);
+  yn_tickinc = (yt_max - yt_min) / (y_nint + y_added_ticks);
+
+  xt_min += 0.5 * x_added_ticks * xn_tickinc;
+  xt_max -= 0.5 * x_added_ticks * xn_tickinc;
+  yt_min += 0.5 * y_added_ticks * yn_tickinc;
+  yt_max -= 0.5 * y_added_ticks * yn_tickinc;
+
+  xgn_min = xt_min;
+  xgn_max = xt_max;
+  ygn_min = yt_min;
+  ygn_max = yt_max;
+
+  //------------------------------------------------------------------------
+
+  m_xWorldScale = (xgn_max - xgn_min) / (xgw_max - xgw_min);
+  m_yWorldScale = (ygn_max - ygn_min) / (ygw_max - ygw_min);
+
+  // PLOT CURVES
+
+  m_pSGP->setLineStyle (SGP::LS_SOLID);
+  drawAxes();
+
+
+  double clipRect[4];
+
+  clipRect[0] = xgn_min; clipRect[1] = ygn_min; clipRect[2] = xgn_max; clipRect[3] = ygn_max;
+
+
+
+  for (unsigned int iCurve = 0; iCurve < m_vecCurves.size(); iCurve++) {
+    const EZPlotCurve* const pCurve = m_vecCurves [iCurve];
+
+    m_pSGP->setColor (getColor (iCurve));
+    int iSym = getSymbol (iCurve);
+    int iLS = getLinestyle (iCurve);
+
+    if (iLS != SGP::LS_NOLINE) {
+      m_pSGP->setLineStyle (iLS);
+      double x1 = convertWorldToNDC_X (pCurve->x[0]);
+      double y1 = convertWorldToNDC_Y (pCurve->y[0]);
+
+      for (int i = 1; i < pCurve->m_iPointCount; i++) {
+        double x2 = convertWorldToNDC_X (pCurve->x[i]);
+        double y2 = convertWorldToNDC_Y (pCurve->y[i]);
+        double x2Clip = x2;
+        double y2Clip = y2;
+
+        if (clip_rect (x1, y1, x2Clip, y2Clip, clipRect)) {
+          m_pSGP->moveAbs (x1, y1);
+          m_pSGP->lineAbs (x2Clip, y2Clip);
+        }
+        x1 = x2;
+        y1 = y2;
+      }
+    }
+    if (iSym > 0) {
+      int iSymFreq = getSymbolFreq (iCurve);
+      m_pSGP->setLineStyle (SGP::LS_SOLID);
+      double x = convertWorldToNDC_X (pCurve->x[0]);
+      double y = convertWorldToNDC_Y (pCurve->y[0]);
+      m_pSGP->moveAbs (x, y);
+      symbol (iSym, symwidth, symheight);
+      for (int i = 1; i < pCurve->m_iPointCount; i++)
+        if (i % iSymFreq == 0 || i == pCurve->m_iPointCount - 1) {
+          x = convertWorldToNDC_X (pCurve->x[i]);
+          y = convertWorldToNDC_Y (pCurve->y[i]);
+
+          if (y >= ygn_min && y <= ygn_max) {
+            m_pSGP->moveAbs (x, y);
+            symbol (iSym, symwidth, symheight);
+          }
+        }
+    }
+  }
+}
+
+
+/* NAME
+*   drawAxes                    INTERNAL routine to draw axis & label them
+*
+* SYNOPSIS
+*   drawAxes()
+*/
+
+
+void
+EZPlot::drawAxes()
+{
+  double xticklen = 0, yticklen = 0; // length of ticks in NDC
+  double minorinc;              // increment between minor axes
+  double xaxispos, yaxispos;    // crossing of axes
+  double x, y, x2, y2;
+  bool axis_near;       // TRUE if axis too close to print t-label
+  int i, j;
+  char str[256];
+  char *numstr;
+
+  m_pSGP->setTextSize (charheight);
+  m_pSGP->setTextColor (1, -1);
+
+  if (o_xticks == ABOVE)
+    xticklen = 0.5 * charheight;
+  else if (o_xticks == BELOW)
+    xticklen = -0.5 * charheight;
+
+  if (o_yticks == RIGHT)
+    yticklen = charwidth;
+  else if (o_yticks == LEFT)
+    yticklen = -charwidth;
+
+  if (c_title.length() > 0) {
+    double wText, hText;
+    m_pSGP->setTextSize (charheight * 2.0);
+    m_pSGP->getTextExtent (c_title.c_str(), &wText, &hText);
+    m_pSGP->moveAbs (xa_min + (xa_max-xa_min)/2 - wText/2, title_row);
+    m_pSGP->setTextColor (clr_title, -1);
+    m_pSGP->drawText (c_title);
+    m_pSGP->setTextSize (charheight);
+  }
+
+  if (o_grid == TRUE || o_box == TRUE) {
+    m_pSGP->setColor (clr_axis);
+    m_pSGP->moveAbs (xa_min, ya_min);
+    m_pSGP->lineAbs (xa_max, ya_min);
+    m_pSGP->lineAbs (xa_max, ya_max);
+    m_pSGP->lineAbs (xa_min, ya_max);
+    m_pSGP->lineAbs (xa_min, ya_min);
+  }
+
+  // calculate position of axes
+
+  // x-axis
+  if (s_ycross == TRUE) {       // convert users' world-coord
+    xaxispos = convertWorldToNDC_Y (v_ycross);// axis to its position in NDC
+    x = convertWorldToNDC_X (xgw_min);
+  } else
+    xaxispos = ya_min;
+
+  // y-axis
+  if (s_xcross == TRUE) {       // convert users' world-coord
+    yaxispos = convertWorldToNDC_X (v_xcross);// axis to its NDC position
+    y = convertWorldToNDC_Y (ygw_min);
+  } else
+    yaxispos = xa_min;
+
+  /*-------------*/
+  /* draw x-axis */
+  /*-------------*/
+
+  if (o_xaxis == LINEAR) {
+    // draw axis line
+
+    m_pSGP->setColor (clr_axis);
+    if (o_tag && !o_grid && !o_box && s_xcross) {
+      m_pSGP->moveAbs (xa_min, xaxispos - charheight);
+      m_pSGP->lineAbs (xa_min, xaxispos + charheight);
+    }
+    m_pSGP->moveAbs (xa_min, xaxispos);
+    m_pSGP->lineAbs (xa_max, xaxispos);
+    if (o_tag && !o_grid && !o_box) {
+      m_pSGP->moveAbs (xa_max, xaxispos - charheight);
+      m_pSGP->lineAbs (xa_max, xaxispos + charheight);
+    }
+
+    if (o_grid == TRUE) {
+      m_pSGP->setColor (clr_grid);
+      for (i = 0; i <= x_nint; i++) {
+        m_pSGP->moveAbs (xt_min + xn_tickinc * i, ya_max);
+        m_pSGP->lineAbs (xt_min + xn_tickinc * i, ya_min);
+      }
+    }
+    m_pSGP->setTextSize (charheight * 1.5);
+    m_pSGP->setTextColor (clr_label, -1);
+
+    double wText, hText;
+
+    m_pSGP->getTextExtent (c_xlabel.c_str(), &wText, &hText);
+    m_pSGP->moveAbs (xa_min + (xa_max-xa_min)/2 - wText / 2, xlbl_row +  charheight * 1.5);
+
+    m_pSGP->drawText (c_xlabel);
+    m_pSGP->setTextSize (charheight);
+    minorinc = xn_tickinc / (o_xminortick + 1);
+
+    for (i = 0; i <= x_nint; i++) {
+      x = xt_min + xn_tickinc * i;
+      m_pSGP->setColor (clr_axis);
+      m_pSGP->moveAbs (x, xaxispos);
+      m_pSGP->lineAbs (x, xaxispos + xticklen);
+      if (i != x_nint)
+        for (j = 1; j <= o_xminortick; j++) {
+          x2 = x + minorinc * j;
+          m_pSGP->moveAbs (x2, xaxispos);
+          m_pSGP->lineAbs (x2, xaxispos + TICKRATIO * xticklen);
+        }
+        axis_near = FALSE;
+        if (xaxispos + xtl_ofs > ya_min && o_yaxis != NOAXIS) {
+          double xw = xgw_min + i * xw_tickinc;
+          double x = convertWorldToNDC_X (xw);
+          double d = x - yaxispos;
+          if (o_yticks == RIGHT && d >= 0  && d < 0.9 * xn_tickinc)
+            axis_near = TRUE;
+          if (o_yticks == LEFT && d <= 0 && d > -0.9 * xn_tickinc)
+            axis_near = TRUE;
+        }
+
+        if (o_xtlabel == TRUE && axis_near == FALSE) {
+          snprintf (str, sizeof(str), x_numfmt, xgw_min + xw_tickinc * i);
+          numstr = str_skip_head (str, " ");
+          double xExtent, yExtent;
+          m_pSGP->getTextExtent (numstr, &xExtent, &yExtent);
+          m_pSGP->moveAbs (x - xExtent/2, xaxispos + xtl_ofs);
+          m_pSGP->setTextColor (clr_number, -1);
+          m_pSGP->drawText (numstr);
+        }
+    }
+  }             // X - Axis
+
+
+  /*--------*/
+  /* y-axis */
+  /*--------*/
+
+  if (o_yaxis == LINEAR) {
+
+    m_pSGP->setColor (clr_axis);
+    if (o_tag && !o_grid && !o_box && s_ycross) {
+      m_pSGP->moveAbs (yaxispos - charwidth, ya_min);
+      m_pSGP->lineAbs (yaxispos + charwidth, ya_min);
+    }
+    m_pSGP->moveAbs (yaxispos, ya_min);
+    m_pSGP->lineAbs (yaxispos, ya_max);
+    if (o_tag && !o_grid && !o_box) {
+      m_pSGP->moveAbs (yaxispos - charwidth, ya_max);
+      m_pSGP->lineAbs (yaxispos + charwidth, ya_max);
+    }
+
+    if (o_grid == TRUE) {
+      m_pSGP->setColor (clr_grid);
+      for (i = 0; i <= y_nint; i++) {
+        y = yt_min + yn_tickinc * i;
+        m_pSGP->moveAbs (xa_max, y);
+        m_pSGP->lineAbs (xa_min, y);
+      }
+    }
+
+    m_pSGP->setTextAngle (HALFPI);
+    m_pSGP->setTextSize (1.5 * charheight);
+    m_pSGP->setTextColor (clr_label, -1);
+
+    double xExtent, yExtent;
+
+    m_pSGP->getTextExtent (c_ylabel.c_str(), &xExtent, &yExtent);
+    m_pSGP->moveAbs (ylbl_col, ya_min + (ya_max-ya_min)/2 - yExtent / 2);
+    m_pSGP->drawText (c_ylabel);
+
+    m_pSGP->setTextAngle (0.0);
+    m_pSGP->setTextSize (charheight);
+    minorinc = yn_tickinc / (o_yminortick + 1);
+
+    for (i = 0; i <= y_nint; i++) {
+      y = yt_min + yn_tickinc * i;
+      m_pSGP->setColor (clr_axis);
+      m_pSGP->moveAbs (yaxispos, y);
+      m_pSGP->lineAbs (yaxispos + yticklen, y);
+      if (i != y_nint)
+        for (j = 1; j <= o_yminortick; j++) {
+          y2 = y + minorinc * j;
+          m_pSGP->moveAbs (yaxispos, y2);
+          m_pSGP->lineAbs (yaxispos + TICKRATIO * yticklen, y2);
+        }
+        axis_near = FALSE;
+        if (yaxispos + ytl_ofs > xa_min && o_xaxis != NOAXIS) {
+          double yw = ygw_min + i * yw_tickinc;
+          double y = convertWorldToNDC_Y (yw);
+          double d = y - xaxispos;
+          if (o_xticks == ABOVE && d >= 0 && d < 0.9 * yn_tickinc)
+            axis_near = TRUE;
+          if (o_xticks == BELOW && d <= 0 && d > -0.9 * yn_tickinc)
+            axis_near = TRUE;
+        }
+        if (o_ytlabel == TRUE && axis_near == FALSE) {
+          snprintf (str, sizeof(str), y_numfmt, ygw_min + yw_tickinc * i);
+          double xExtent, yExtent;
+          m_pSGP->getTextExtent (str, &xExtent, &yExtent);
+          if (o_yticks == LEFT)
+            m_pSGP->moveAbs (yaxispos - 1.5 * charwidth - xExtent, y + 0.5 * yExtent);
+          else
+            m_pSGP->moveAbs (yaxispos + 1.5 * charwidth, y + 0.5 * yExtent);
+          m_pSGP->setTextColor (clr_number, -1);
+          m_pSGP->drawText (str);
+        }
+    }
+  }             // Y - Axis
+}
+
+
+void
+EZPlot::symbol (int sym, double symwidth, double symheight)
+{
+  if (sym <= 0)
+    return;
+
+  if (sym == SB_CROSS) {
+    m_pSGP->markerRel (0, 0);
+//    m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight);
+//    m_pSGP->lineRel (symwidth, symheight);
+//    m_pSGP->moveRel (-symwidth, 0.0);
+//    m_pSGP->lineRel (symwidth, -symheight);
+//    m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight);
+  } else if (sym == SB_PLUS) {
+    m_pSGP->moveRel (-0.5 * symwidth, 0.0);
+    m_pSGP->lineRel (symwidth, 0.0);
+    m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight);
+    m_pSGP->lineRel (0.0, symheight);
+    m_pSGP->moveRel (0.0, -0.5 * symheight);
+  } else if (sym == SB_BOX) {
+    m_pSGP->moveRel (-0.5 * symwidth, -0.5 * symheight);
+    m_pSGP->lineRel (symwidth, 0.0);
+    m_pSGP->lineRel (0.0, symheight);
+    m_pSGP->lineRel (-symwidth, 0.0);
+    m_pSGP->lineRel (0.0, -symheight);
+    m_pSGP->moveRel (0.5 * symwidth, 0.5 * symheight);
+  } else if (sym == SB_CIRCLE) {
+    m_pSGP->drawCircle (symwidth);
+  } else if (sym == SB_ERRORBAR) {
+    m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight);
+    m_pSGP->lineRel (symwidth, 0.0);
+    m_pSGP->moveRel (-0.5 * symwidth, 0.0);
+    m_pSGP->lineRel (0.0, -symheight);
+    m_pSGP->moveRel (-0.5 * symwidth, 0.0);
+    m_pSGP->lineRel (symwidth, 0.0);
+    m_pSGP->moveRel (-0.5 * symwidth, 0.5 * symheight);
+  } else if (sym == SB_POINT) {
+    m_pSGP->pointRel (0, 0);
+  }
+}
+
+
+
+/* NAME
+*    axis_scale                 calculates graph axis scaling
+*
+*  SYNOPSIS:
+*    retval = axis_scale (min, max, nint, minp, maxp, nintp,
+*                          rec_total, rec_frac)
+*
+*    INPUT:
+*       double min         Smallest value to plot
+*       double max         Largest value to plot
+*       int    nint        Number of intervals desired
+*
+*    OUTPUT:
+*       int   retval       FALSE if illegal parameters, else TRUE
+*       double *minp       Minimum graph value
+*       double *maxp       Maximum graph value
+*       int    *nintp      Number of intervals for graph
+*      int    *rec_total  Recommended field width for printing out the number
+*       int    *rec_frac   Recommended number of digits for print fraction
+*/
+
+int
+EZPlot::axis_scale (double min, double max, int nint, double *minp, double *maxp, int *nintp)
+{
+  if (nint < 1) {
+    sys_error (ERR_WARNING, "No intervals to plot: num intervals=%d [axis_scale]", nint);
+    return (FALSE);
+  }
+  if (min >= max) {
+    double scaled = fabs(max) / 10;
+    if (scaled == 0)
+      scaled = 0.1;
+    *minp = min - scaled;
+    *maxp = max + scaled;
+    *nintp = 2;
+    return (TRUE);
+  }
+
+  double eps = 0.025;
+  double a = fabs(min);
+  if (fabs(min) < fabs(max))
+    a = fabs(max);
+  double scale = pow (10.0, floor(log10(a)));
+loop:
+  double mina = min / scale;
+  double maxa = max / scale;
+  double d = (maxa - mina) / nint;
+  double j = d * eps;
+  double e = floor (log10(d));
+  double f = d / pow (10.0, e);
+  double v = 10.0;
+  if (f < sqrt(2.0))
+    v = 1.0;
+  else if (f < sqrt (10.0))
+    v = 2.0;
+  else if (f < sqrt (50.0))
+    v = 5.0;
+  double wdt = v * pow (10.0, e);
+  double g = floor (mina / wdt);
+  if (fabs(g + 1 - mina / wdt) < j)
+    g = g + 1;
+#undef TEST1
+
+#ifdef TEST1
+  g++;
+#endif
+  *minp = wdt * g;
+  double h = floor (maxa / wdt) + 1.0;
+  if (fabs(maxa / wdt + 1 - h) < j)
+    h = h - 1;
+#ifdef TEST1
+  h--;
+#endif
+  *maxp = wdt * h;
+  *nintp = static_cast<int>(h - g);
+  if (fabs(*maxp) >= 10.0 || fabs(*minp) >= 10.0) {
+    scale = scale * 10.0;
+    goto loop;
+  }
+
+  *minp *= scale;
+  *maxp *= scale;
+
+  return (TRUE);
+}
+
+
+/* NAME
+*   make_numfmt         Make a numeric format string
+*
+* SYNOPSIS
+*   make_numfmt (fmtstr, fldwid, nfrac, min, max, nint)
+*   char *fmtstr                Returned format string for printf()
+*   int  *fldwid                Returned field width
+*   int  *nfrac         If < 0, then calculate best number of
+*                               fraction places & return that value
+*                               If >= 0, then use that number of places
+*   double min                  Minimum value
+*   double max                  Maximum value
+*   int nint                    Number of intervals between min & max
+*
+* DESCRIPTION
+*   This  routine is written as an INTERNAL routine for EZPLOT
+*/
+
+static inline double
+my_trunc (double x)
+{
+  double integer;
+
+  modf (x, &integer);
+
+  return (integer);
+}
+
+void
+EZPlot::make_numfmt (char *fmtstr, int *fldwid, int *nfrac, double minval, double maxval, int nint)
+{
+  int wid, frac, expon;
+
+  double delta = (maxval - minval) / nint;
+  double absmin = fabs(minval);
+  double absmax = fabs(maxval);
+
+  if (absmin > absmax)
+
+    absmax = absmin;
+  double logt = log10( absmax );
+
+  if (fabs(logt) >= 6) {                // use exponential format
+    if (fabs(logt) > 99)
+      expon = 5;                //  E+102
+    else
+      expon = 4;                //  E+00
+
+    if (*nfrac < 0) {           // calculate frac
+      delta /= pow (10., floor(logt));  // scale delta
+      frac = static_cast<int>(fabs(my_trunc(log10(delta)))) + 1;
+      if (frac < 1)
+        frac = 1;               // to be safe, add decimal pt
+    } else                      // use users' frac
+      frac = *nfrac;
+
+    wid = 2 + frac + expon;
+    if (minval < 0. || maxval < 0.)
+      ++wid;
+    sprintf (fmtstr, "%s%d%s%d%s", "%", wid, ".", frac, "g");
+  } else {                      // use fixed format
+    wid = static_cast<int>(my_trunc(logt)) + 1;
+    if (wid < 1)
+      wid = 1;
+    if (minval < 0. || maxval < 0.)
+      ++wid;
+
+    if (*nfrac < 0) {           // calculate frac
+      if (delta >= 0.999999)
+        frac = 1;               // add a decimal pt to be safe
+      else
+        frac = static_cast<int>(fabs(my_trunc(log10(delta)))) + 1;
+    } else                      // use users' frac
+      frac = *nfrac;
+
+    wid += 1 + frac;
+    sprintf (fmtstr, "%s%d%s%d%s", "%", wid, ".", frac, "f");
+  }
+
+  *fldwid = wid;
+  *nfrac = frac;
+}
+
diff --git a/libctgraphics/ezset.cpp b/libctgraphics/ezset.cpp
new file mode 100644
index 0000000..eae4c28
--- /dev/null
+++ b/libctgraphics/ezset.cpp
@@ -0,0 +1,482 @@
+/*****************************************************************************
+**  FILE IDENTIFICATION
+**
+**      EZSET - Parameter control for EZPLOT
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ctsupport.h"
+#include "ezplot.h"
+#include "pol.h"
+
+
+bool
+EZPlot::ezset (const std::string& command)
+{
+  return ezset (command.c_str());
+}
+
+bool
+EZPlot::ezset (const char* const command)
+{
+
+    return ezcmd (command);
+}
+
+bool
+EZPlot::ezcmd (const char* const comm)
+{
+  m_pol.usefile (POL::P_USE_STR, "");
+  m_pol.set_inputline (comm);
+
+  char str [POL::MAXTOK+1];
+  int code;
+  bool retval = true;
+  if (! m_pol.readUserToken (str, &code)) {
+    sys_error (ERR_WARNING, "Illegal EZSET command: %s", str);
+    m_pol.reader();
+    retval = false;
+  }
+  else
+    retval = do_cmd (code);
+
+  m_pol.closefile();                    /* close input string file */
+  return (retval);
+}
+
+
+bool
+EZPlot::do_cmd (int lx)
+{
+  char str [1024];
+  char strIn [1024];
+  int n;
+  double f;
+
+  switch (lx) {
+  case S_TEXTSIZE:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      if (f >= 0.0 && f <= 1.0) {
+        v_textsize = f;
+        s_textsize = TRUE;
+      } else
+        s_textsize = FALSE;
+    }
+    break;
+  case S_REPLOT:
+    plot (m_pSGP);
+    break;
+  case S_CLEAR:
+    clearCurves ();
+    break;
+  case S_TITLE:
+    m_pol.readText (strIn, sizeof(strIn));
+    c_title = strIn;
+    break;
+  case S_LEGEND:
+    m_pol.readText (strIn, sizeof(strIn));
+    if (m_iCurrentCurve >= 0)
+      setLegend (m_iCurrentCurve, strIn);
+    break;
+  case S_XLABEL:
+    m_pol.readText (strIn, sizeof(strIn));
+    c_xlabel = strIn;
+    break;
+  case S_YLABEL:
+    m_pol.readText (strIn, sizeof(strIn));
+    c_ylabel = strIn;
+    break;
+  case S_XCROSS:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      v_xcross = f;
+      s_xcross = TRUE;
+    } else
+      s_xcross = FALSE;
+    break;
+  case S_YCROSS:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      v_ycross = f;
+      s_ycross = TRUE;
+    } else
+      s_ycross = FALSE;
+    break;
+  case S_NOXAXIS:
+    o_xaxis = NOAXIS;
+    break;
+  case S_NOYAXIS:
+    o_yaxis = NOAXIS;
+    break;
+  case S_XLIN:
+    o_xaxis = LINEAR;
+    break;
+  case S_YLIN:
+    o_yaxis = LINEAR;
+    break;
+  case S_XLOG:
+    o_xaxis = LOG;
+    break;
+  case S_YLOG:
+    o_yaxis = LOG;
+    break;
+  case S_XAUTOSCALE:
+    s_xmin = FALSE;
+    s_xmax = FALSE;
+    break;
+  case S_YAUTOSCALE:
+    s_ymin = FALSE;
+    s_ymax = FALSE;
+    break;
+  case S_XMIN:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      v_xmin = f;
+      s_xmin = TRUE;
+    }
+    break;
+  case S_XMAX:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      v_xmax = f;
+      s_xmax = TRUE;
+    }
+    break;
+  case S_YMIN:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      v_ymin = f;
+      s_ymin = TRUE;
+    }
+    break;
+  case S_YMAX:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE) {
+      v_ymax = f;
+      s_ymax = TRUE;
+    }
+    break;
+  case S_SOLID:
+    o_linestyle = SGP::LS_SOLID;
+    break;
+  case S_DASH:
+    int ls;
+    ls = SGP::LS_DASH1;
+    if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) {
+      if (n == 1)
+        ls = SGP::LS_DASH1;
+      else if (n == 2)
+        ls = SGP::LS_DASH2;
+      else if (n == 3)
+        ls = SGP::LS_DASH3;
+      else if (n == 4)
+        ls = SGP::LS_DASH4;
+      else if (n == 5)
+        ls = SGP::LS_DOTTED;
+    }
+    if (m_iCurrentCurve < 0)
+      o_linestyle = ls;
+    else
+      setLinestyle (m_iCurrentCurve, ls);
+    break;
+  case S_NOLINE:
+    o_linestyle = SGP::LS_NOLINE;
+    break;
+  case S_PEN:
+  case S_COLOR:
+    if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE)
+    {
+      if (n >= 0) {
+        if (m_iCurrentCurve < 0)
+          o_color = n;
+        else
+          setColor (m_iCurrentCurve, n);
+      } else
+        bad_option("The color you picked");
+    }
+    break;
+  case S_BOX:
+    o_box = TRUE;
+    break;
+  case S_NOBOX:
+    o_box = FALSE;
+    break;
+  case S_GRID:
+    o_grid = TRUE;
+    break;
+  case S_NOGRID:
+    o_grid = FALSE;
+    break;
+  case S_XLENGTH:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE)
+      if (f > 0.0 && f <= 1.0)
+        o_xlength = f;
+      break;
+  case S_YLENGTH:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE)
+      if (f > 0.0 && f <= 1.0)
+        o_ylength = f;
+      break;
+  case S_XPORIGIN:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE)
+      if (f >= 0.0 && f < 1.0)
+        o_xporigin = f;
+      break;
+  case S_YPORIGIN:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE)
+      if (f >= 0.0 && f < 1.0)
+        o_yporigin = f;
+      break;
+  case S_TAG:
+    if (m_pol.readWord("no", 2) == TRUE)
+      o_tag = FALSE;
+    else if (m_pol.readWord("off", 2) == TRUE)
+      o_tag = FALSE;
+    else
+      o_tag = TRUE;
+    break;
+  case S_LEGENDBOX:
+    if (m_pol.readWord("inside", 2) == TRUE)
+      o_legendbox = INSIDE;
+    else if (m_pol.readWord("outside", 3) == TRUE)
+      o_legendbox = OUTSIDE;
+    else if (m_pol.readWord("none",2) == TRUE)
+      o_legendbox = NOLEGEND;
+    else {
+      m_pol.readText (str, POL::MAXTOK);
+      bad_option(str);
+    }
+    break;
+  case S_XLEGEND:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE)
+    {
+      if (f >= 0.0 && f < 1.0) {
+        v_xlegend = f;
+        s_xlegend = TRUE;
+      }
+      else
+        s_xlegend = FALSE;
+    }
+    break;
+  case S_YLEGEND:
+    if (m_pol.readFloat (&f, POL::TT_REAL, FALSE, 0.0, 0.0) == TRUE)
+    {
+      if (f >= 0.0 && f < 1.0) {
+        v_ylegend = f;
+        s_ylegend = TRUE;
+      }
+      else
+        s_ylegend = FALSE;
+    }
+    break;
+  case S_SYMBOL:
+    if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) {
+      if (n > 0 && n <= MAXSYMBOL) {
+        if (m_iCurrentCurve < 0)
+          o_symbol = n;
+        else
+          setSymbol (m_iCurrentCurve, n);
+      }
+    } else {
+      if (m_pol.readWord("every",5) == TRUE) {
+        if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) {
+          int sym = 1;
+          if (n > 0)
+            sym = n;
+          if (m_iCurrentCurve < 0)
+            o_symfreq = sym;
+          else
+            setSymbolFreq (m_iCurrentCurve, sym);
+        }
+      } else if (m_pol.readWord ("none",4) == TRUE) {
+        o_symbol = -1;
+      }
+    }
+    break;
+  case S_CURVE:
+    if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) {
+      if (n > 0)
+        m_iCurrentCurve = n - 1;
+    } else {
+      if (m_pol.readWord ("all",3) == TRUE)
+        m_iCurrentCurve = -1;
+    }
+    break;
+  case S_XTICKS:
+    if (m_pol.readUserToken(str,&lx) == FALSE)
+      break;
+    if (lx == S_ABOVE)
+      o_xticks = ABOVE;
+    else if (lx == S_BELOW)
+      o_xticks = BELOW;
+    else if (lx == S_NOLABEL)
+      o_xtlabel = FALSE;
+    else if (lx == S_LABEL)
+      o_xtlabel = TRUE;
+    else if (lx == S_MAJOR) {
+      if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE)
+        if (n > 1 && n < 100)
+          o_xmajortick = n;
+    } else if (lx == S_MINOR)
+      if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE)
+        if (n >= 0 && n < 100)
+          o_xminortick = n;
+        break;
+  case S_YTICKS:
+    if (m_pol.readUserToken(str,&lx) == FALSE)
+      break;
+    if (lx == S_RIGHT)
+      o_yticks = RIGHT;
+    else if (lx == S_LEFT)
+      o_yticks = LEFT;
+    else if (lx == S_NOLABEL)
+      o_ytlabel = FALSE;
+    else if (lx == S_LABEL)
+      o_ytlabel = TRUE;
+    else if (lx == S_MAJOR) {
+      if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE)
+        if (n > 1 && n < 100)
+          o_ymajortick = n;
+    } else if (lx == S_MINOR)
+      if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE)
+        if (n >= 0 && n < 100)
+          o_yminortick = n;
+        break;
+  case S_LXFRAC:
+    if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) {
+      if (n >= 0) {
+        v_lxfrac = n;
+        s_lxfrac = TRUE;
+      }
+    } else
+      s_lxfrac = FALSE;
+    break;
+  case S_LYFRAC:
+    if (m_pol.readInteger (&n, POL::TT_REAL, FALSE, 0, 0) == TRUE) {
+      if (n >= 0) {
+        v_lyfrac = n;
+        s_lyfrac = TRUE;
+      }
+    } else
+      s_lyfrac = FALSE;
+    break;
+    break;
+  default:
+    fprintf (stderr, "Unimplemented EZPLOT command\n");
+    break;
+  }
+
+  m_pol.reader ();
+  return (true);
+}
+
+
+
+void
+EZPlot::bad_option (const char *opt)
+{
+  sys_error (ERR_WARNING, "INVALID option: %s", opt);
+}
+
+
+//----------------------------------------------------------------------
+//                      KEYWORDS / CODES TABLE
+//----------------------------------------------------------------------
+const struct KeywordCodeTable EZPlot::m_sKeywords[] =
+{
+  {"solid",     S_SOLID},
+  {"dash", S_DASH},
+  {"curve", S_CURVE},
+  {"noline",    S_NOLINE},
+  {"black",     S_BLACK},
+  {"red",               S_RED},
+  {"blue",              S_BLUE},
+  {"green",     S_GREEN},
+  {"pen",               S_PEN},
+  {"symbol",    S_SYMBOL},
+  {"every",     S_EVERY},
+  {"none",              S_NONE},
+  {"legend",    S_LEGEND},
+  {"xlegend",   S_XLEGEND},
+  {"ylegend",   S_YLEGEND},
+
+  {"xlin",              S_XLIN},
+  {"ylin",              S_YLIN},
+  {"xlog",              S_XLOG},
+  {"ylog",              S_YLOG},
+  {"xlabel",    S_XLABEL},
+  {"ylabel",    S_YLABEL},
+  {"xlength",   S_XLENGTH},
+  {"ylength",   S_YLENGTH},
+
+  {"xticks",    S_XTICKS},
+  {"yticks",    S_YTICKS},
+  {"above",     S_ABOVE},
+  {"label",     S_LABEL},
+  {"below",     S_BELOW},
+  {"nolabel",   S_NOLABEL},
+  {"right",     S_RIGHT},
+  {"left",              S_LEFT},
+
+  {"xautoscale",        S_XAUTOSCALE},
+  {"yautoscale",        S_YAUTOSCALE},
+  {"xmin",              S_XMIN},
+  {"ymin",              S_YMIN},
+  {"xmax",              S_XMAX},
+  {"ymax",              S_YMAX},
+  {"lxfrac",    S_LXFRAC},
+  {"lyfrac",    S_LYFRAC},
+  {"xcross",    S_XCROSS},
+  {"ycross",    S_YCROSS},
+  {"noxaxis",   S_NOXAXIS},
+  {"noyaxis",   S_NOYAXIS},
+  {"xporigin",  S_XPORIGIN},
+  {"yporigin",  S_YPORIGIN},
+  {"title",     S_TITLE},
+  {"xtitle",    S_XTITLE},
+  {"ytitle",    S_YTITLE},
+
+  {"replot",    S_REPLOT},
+  {"clear",     S_CLEAR},
+  {"store",     S_STORE},
+  {"restore",   S_RESTORE},
+  {"amark",     S_AMARK},
+  {"units",     S_UNITS},
+  {"inches",    S_INCHES},
+  {"user",              S_USER},
+
+  {"data",              S_DATA},
+  {"help",              S_HELP},
+  {"exit",              S_EXIT},
+
+  {"box",               S_BOX},
+  {"nobox",     S_NOBOX},
+  {"grid",              S_GRID},
+  {"nogrid",    S_NOGRID},
+  {"major",     S_MAJOR},
+  {"minor",     S_MINOR},
+  {"color",     S_COLOR},
+  {"legendbox", S_LEGENDBOX},
+
+  {"no",                S_NO},
+
+  {"textsize",  S_TEXTSIZE},
+};
+
+const int EZPlot::NKEYS = (sizeof(EZPlot::m_sKeywords) / sizeof (struct KeywordCodeTable));
+
+void
+EZPlot::initKeywords ()
+{
+  for (int i = 0; i < NKEYS; i++)
+    m_pol.addKeyword (m_sKeywords[i].keyword, m_sKeywords [i].code);
+}
diff --git a/libctgraphics/ezsupport.cpp b/libctgraphics/ezsupport.cpp
new file mode 100644
index 0000000..a5b9229
--- /dev/null
+++ b/libctgraphics/ezsupport.cpp
@@ -0,0 +1,29 @@
+/*****************************************************************************
+**      Name:          ezsupport.h
+**      Function:      Support routines for EZPlot library
+**      Programmer:    Kevin Rosenberg
+**      Date Started:  1-22-85
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <math.h>
+#include <algorithm>
+#include "ctsupport.h"
+#include "ezplot.h"
+
+
diff --git a/libctgraphics/pol.cpp b/libctgraphics/pol.cpp
new file mode 100644
index 0000000..e02cdec
--- /dev/null
+++ b/libctgraphics/pol.cpp
@@ -0,0 +1,948 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   POL - Problem Oriented Language
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include <math.h>
+#include <stdio.h>
+#include <ctype.h>
+#include "ctsupport.h"
+#include "pol.h"
+
+
+const struct POL::KeywordCodeList POL::cmdlist[] = {
+  {     "eoc",  PC_EOC,},
+  {     "str",  PC_STR,},
+  {     "com",  PC_COM,},
+  {     "cmd",  PC_CMD,},
+  {     "prg",  PC_PRG,},
+  {     "con",  PC_CON,},
+  {     "out",  PC_OUT,},
+  {     "ter",  PC_TER,},
+  {     "inb",  PC_INB,},
+
+  {     "nl_eoc",PC_NL_EOC,},
+  {     "nl_neoc", PC_NL_NEOC,},
+  {     "tron",  PC_TRON,},
+  {     "troff", PC_TROFF,},
+  {     "file",  PC_FILE,},
+  {     "dump",  PC_DUMP,},
+};
+
+const unsigned int POL::NUMCMD = (sizeof(POL::cmdlist) / sizeof (struct POL::KeywordCodeList));
+
+
+POL::POL()
+{
+  currentf = -1;
+  m_bTrace = false;
+  init();
+}
+
+POL::~POL()
+{
+}
+
+void
+POL::init ()
+{
+  meta.eoc    = SEMICOL;
+  meta.str    = DQUOTE;
+  meta.com    = SHARP;
+  meta.cmd    = EXCLAM;
+  meta.prg    = ATSIGN;
+  meta.con    = AMPERSAND;
+  meta.out    = DOLLAR;
+  meta.ter    = PERCENT;
+  meta.inb    = LBRACK;
+
+  m_bNewlineIsEOC = true;
+  m_szSkipChars[0] = EOS;
+
+
+  for (unsigned int i = 0; i < NUMCMD; i++)
+    cmdtable.installKeywordCode (cmdlist[i].keyword, cmdlist[i].code);
+
+  token.ready = false;          // no token read yet
+}
+
+
+/* addSkipWord (w)
+*
+* char *w - word for pol to ignore and skip over in input
+*
+* tok() compares all tokens to words given to this routine. If it finds it,
+* it will immediately read another token.
+*/
+
+void
+POL::addSkipWord (const char* const w)
+{
+  skiptable.installKeywordCode (w, 0);
+}
+
+/* skpchar (s)
+*
+* skip all characters that appear in string s
+*/
+void
+POL::addSkipChar (int c)
+{
+  int n = strlen (m_szSkipChars);
+  if (n < MAXSKIPCHAR) {
+    m_szSkipChars[n] = c;
+    m_szSkipChars[n+1] = 0;
+  }
+}
+
+// installKeyword (str, code)
+//
+// char *str - token string to install
+// int code  - code to return for token
+//
+// tok() looks for these user defined tokens.  If it finds one,
+// it stores the tokens code in the token structure and returns TT_USERTOK
+void
+POL::addKeyword (const char* const str, int code)
+{
+  usertable.installKeywordCode (str, code);
+}
+
+/* get_word - matches tokens on a letter by letter basis
+*
+* char *search - string to search for
+* int  nlet     - maximum number of chars to search for match
+*/
+
+bool
+POL::readWord (const char *search, int nlet)
+{
+  tok (&token);
+  if (m_bTrace)
+    sys_error (ERR_TRACE, "POL matching current token %s against word %s\n", token.tokstr, search);
+
+  if (strncasecmp (search, token.tokstr, nlet) == 0) {
+    dumptok (&token);
+    return (true);
+  } else
+    return (false);
+}
+
+/* usertok (str,code)
+*       see if current token is a user defined token set with install()
+*
+*    char *str - token string as read from input
+*    int *code - returned code for user defined symbol
+*    return value - true if current token has been user defined
+*                    false if current token is not user defined
+*/
+bool
+POL::readUserToken (char *str, int *code)
+{
+  tok (&token);
+
+  if (m_bTrace)
+    sys_error (ERR_TRACE, "POL checking if current token '%s' is user defined\n", token.tokstr);
+
+  if (token.type == TT_USERTOK) {
+    *code = token.code;
+    strcpy (str, token.tokstr);
+    dumptok (&token);
+    return (true);
+  } else {
+    *code = 0;
+    return (false);
+  }
+}
+
+/* isstring (s) - returns true if current token is a string
+*
+* char *s - pointer to place to store token string
+*/
+
+bool
+POL::readString (char *str)
+{
+  tok (&token);
+
+  if (token.type == TT_STRING) {
+    strcpy (str, token.tokstr);
+    dumptok (&token);
+    return (true);
+  } else
+    return (false);
+}
+
+/* integer - test for an integer
+*
+* int *n:       returned integer value
+* int typecode = TT_INT if accept only integer values
+*               = TT_REAL if accept both real and integer values
+* int boundcode= true if force to lie between boundries
+*               = false can take any value it likes
+* int bb1:      lower bound
+* int bb2:      upper bound
+*/
+bool
+POL::readInteger (int *n, int typecode, bool boundcode, int bb1, int bb2)
+{
+  tok (&token);
+
+  if (m_bTrace)
+    sys_error (ERR_TRACE, "POL checking if current token %s is an integer\n", token.tokstr);
+
+  if (token.type == TT_INT || token.type == TT_REAL) {
+           if (boundcode) {
+       if (token.inum < bb1)
+         *n = bb1;
+       else if (token.inum > bb2)
+         *n = bb2;
+       else
+         *n = token.inum;
+            } else
+        *n = token.inum;
+      dumptok (&token);
+      return (true);
+  }
+  *n = 0;
+  return (false);
+}
+
+bool
+POL::readFloat (double *n, double typecode, bool boundcode, double bb1, double bb2)
+{
+  tok (&token);
+
+  if (m_bTrace)
+    sys_error (ERR_TRACE, "POL checking if current token %s is an floating point number\n", token.tokstr);
+
+  if (token.type == TT_INT || token.type == TT_REAL) {
+           if (boundcode) {
+       if (token.fnum < bb1)
+         *n = bb1;
+       else if (token.fnum > bb2)
+         *n = bb2;
+       else
+         *n = token.fnum;
+            } else
+        *n = token.fnum;
+      dumptok (&token);
+      return (true);
+  }
+  *n = 0.0;
+  return (false);
+}
+
+/*----------------------------------------------------------------------*/
+/* skip() - skip over any token except for end of command sequence      */
+/*                                                                      */
+/*              returns true if succesful skip                          */
+/*              returns false if already at end of command or EOF       */
+/*----------------------------------------------------------------------*/
+
+bool
+POL::skipTokens()
+{
+  char term[5];         /* string of characters not to skip */
+
+  term[0] = meta.eoc;
+  if (m_bNewlineIsEOC) {
+    term[1] = NEWLINE;
+    term[2] = EOS;
+  } else
+    term[1] = EOS;
+
+  return (skipSingleToken (term));
+}
+
+void
+POL::reader()
+{
+  while (skipTokens())
+    ;
+
+  dumptok (&token);             /* skip end of command token */
+}
+
+/* skiptok (term) - skip a token unless the first character of a token is
+*                   in the string of terminators, term.
+* char *term - string of termination characters, don't skip these characters
+*               skiptok() also does NOT skip TT_EOF
+* returns (true) if succesful skip of a token
+* returns (false) if didn't skip, read termination character or TT_EOF
+*/
+
+bool
+POL::skipSingleToken (char term[])
+{
+  tok (&token);
+
+  if (token.type == TT_EOF
+    || (token.type == TT_SPECLCHAR && strchr(term, token.tokstr[0]) != NULL))
+    return (false);
+  else {
+    dumptok (&token);
+    return (true);
+  }
+}
+
+int
+POL::tok (struct token_st *token)
+{
+  if (token->ready == false)
+    getpol_tok(token);
+  else
+    if (token->type == TT_EOF && lookchar() != EOF)
+      getpol_tok(token);
+    return (token->type);
+}
+
+void
+POL::dumptok (struct token_st *token)
+{
+  if (token->ready == false)
+    getpol_tok(token);
+  token->ready = false;
+}
+
+int
+POL::getpol_tok (struct token_st *token)
+{
+  KeywordCodeEntry* sym;
+
+  token->ready = false;
+nexttok:
+  gettok (token);
+
+  if (token->type == TT_BLANK)
+    goto nexttok;
+  if (token->type == TT_SPECLCHAR) {
+    if (strchr(m_szSkipChars, token->tokstr[0]) != NULL)
+      goto nexttok;
+    if (token->tokstr[0] == NEWLINE)
+      goto nexttok;
+    if (token->tokstr[0] == meta.cmd) {
+      getcmd();
+      goto nexttok;
+    }
+    if (token->tokstr[0] == meta.com) {         /* skip comment */
+      eatline ();
+      goto nexttok;
+    }
+    if (token->tokstr[0] == meta.out) {
+      getescape(token->tokstr, meta.out, MAXTOK);
+      fputs (token->tokstr, stderr);
+      goto nexttok;
+    }
+    if (token->tokstr[0] == meta.con) {         /* continuation across NEWLINE */
+      while (lookchar() == BLANK || lookchar() == TAB)
+        inchar();
+      if (lookchar() == NEWLINE)
+        inchar();
+    }
+    if (token->tokstr[0] == meta.ter) {         /* get input from terminal */
+      usefile (P_USE_FILE, "");
+      tok (token);
+      closefile();
+      return (token->type);
+    }
+  }
+
+  /* look for filler words */
+
+  if (skiptable.lookup (token->tokstr) != NULL) /* ignore words in skip table */
+    goto nexttok;
+
+  /* look for user defined symbols */
+
+  if ((sym = usertable.lookup (token->tokstr)) != NULL) {
+    token->type = TT_USERTOK;
+    token->code = sym->getCode();
+  } else
+    token->code = 0;
+
+  if (m_bTrace)
+    sys_error (ERR_TRACE, "POL read token '%s', type = %d\n", token->tokstr, token->type);
+
+  return (token->type);
+}
+
+
+int
+POL::getcmd()
+{
+  int tt, found;
+  char str[MAXTOK+1];
+  KeywordCodeEntry *cmd;
+  TOKEN tok;
+
+  tt = getalpha (str, MAXTOK);
+  if (tt == TT_ERROR) {
+    sys_error (ERR_WARNING, "Error in POL parameter command");
+    reader();
+    return(false);
+  }
+  if ((cmd = cmdtable.lookup (str)) == NULL) {
+    sys_error  (ERR_WARNING, "POL: Unrecognized command %s", cmd);
+    reader();
+    return (false);
+  } else {
+    found = false;
+    switch (cmd->getCode()) {
+    case PC_TRON:
+                    m_bTrace = true;
+        found = true;
+        break;
+    case PC_TROFF:
+                    m_bTrace = false;
+        found = true;
+        break;
+    case PC_FILE:
+                    found = true;
+        tt = gettok (&tok);
+        usefile (P_USE_FILE, tok.tokstr);
+        break;
+    case PC_NL_EOC:
+                    found = true;
+        m_bNewlineIsEOC = true;
+        break;
+    case PC_NL_NEOC:
+                    found = true;
+        m_bNewlineIsEOC = false;
+        break;
+    case PC_DUMP:
+                    found = true;
+        printf("eoc = %c  str = %c  com = %c  cmd = %c  prg = %c\n",
+          meta.eoc, meta.str, meta.com, meta.cmd, meta.prg);
+        printf("con = %c  out = %c  ter = %c  inb = %c\n",
+          meta.con, meta.out, meta.ter, meta.inb);
+        break;
+    }
+    if (found == false) {
+      tt = gettok (&tok);
+      if (tt != TT_SPECLCHAR) {
+        sys_error (ERR_SEVERE, "POL: Illegal command character");
+        return (false);
+      }
+      switch(cmd->getCode()) {
+                    case PC_EOC:
+          meta.eoc = tok.tokstr[0];
+          break;
+        case PC_STR:
+          meta.str = tok.tokstr[0];
+          break;
+        case PC_COM:
+          meta.com = tok.tokstr[0];
+          break;
+        case PC_CMD:
+          meta.cmd = tok.tokstr[0];
+          break;
+        case PC_PRG:
+          meta.prg = tok.tokstr[0];
+          break;
+        case PC_CON:
+          meta.con = tok.tokstr[0];
+          break;
+        case PC_OUT:
+          meta.out = tok.tokstr[0];
+          break;
+        case PC_TER:
+          meta.ter = tok.tokstr[0];
+          break;
+        case PC_INB:
+          meta.inb = tok.tokstr[0];
+          break;
+        default:
+          printf("command not implemented\n");
+          break;
+      }                         /* switch (tok->type) */
+    }                                   /* if (found == false) */
+    reader();                   /* clean up command */
+  }                                     /* if legal command */
+
+  return (true);
+}
+
+
+int
+POL::gettok (TOKEN *tok)
+{
+  int c, toktype;
+  int inum;
+  double fnum;
+  int toksiz = MAXTOK;          /* maximum length of token string */
+
+  while ((c = inchar()) == BLANK || c == TAB)
+    ;
+  ungetch (c);
+
+  c = lookchar();
+  toktype = type(c);
+
+  fnum = 0.0;
+  inum = 0;
+
+  if (c == BLANK || c == TAB) {                 /* skip white space */
+    getblank(tok->tokstr, toksiz);
+    toktype = TT_BLANK;
+  } else if (toktype == LETTER) {
+    toktype = getalpha (tok->tokstr, toksiz);
+  } else if (c == meta.str) {                   /* quoted string */
+    getquote (tok->tokstr, toksiz);
+    toktype = TT_STRING;
+  } else if (type(c) == DIGIT || c == PLUS || c == HYPHEN || c == PERIOD) {
+    toktype = getnumber (tok->tokstr, toksiz, &fnum, &inum);
+  } else if (c == EOF) {
+    tok->tokstr[0] = EOS;
+    toktype = TT_EOF;
+  } else {
+    c = inchar();
+    tok->tokstr[0] = c;
+    tok->tokstr[1] = EOS;
+    toktype = TT_SPECLCHAR;
+  }
+
+  tok->type = toktype;
+  tok->ready = true;
+  if (tok->type == TT_REAL || tok->type == TT_INT) {
+    tok->fnum = fnum;
+    tok->inum = inum;
+  } else {
+    tok->fnum = 0.0;
+    tok->inum = 0;
+  }
+
+  return (toktype);
+}
+
+
+void
+POL::getblank (char *s, int toksiz)
+{
+  int c;
+
+  while ((c = inchar()) == BLANK || c == TAB)
+    ;
+  ungetch(c);
+
+  s[0] = BLANK;
+  s[1] = EOS;
+}
+
+
+int
+POL::getalpha (char *s, int toksiz)
+{
+  int i, chartype, alphatype;
+
+  if (type(lookchar()) != LETTER) {
+    s[0] = EOS;
+    return (TT_ERROR);
+  }
+
+  alphatype = TT_ALPHA;
+  for (i = 0; i < toksiz; i++) {                /* get alphanumeric token */
+    s[i] = inchar();
+    chartype = type (s[i]);
+    if (chartype != LETTER && chartype != DIGIT)
+      break;
+    if (chartype == DIGIT)
+      alphatype = TT_ALPNUM;
+  }
+  ungetch(s[i]);
+
+  if (i >= toksiz)
+    sys_error (ERR_SEVERE, "POL token too long.");
+
+  s[i] = EOS;                   /* terminate token */
+  return (alphatype);
+}
+
+
+/* getquote - get quoted string from file */
+/* have already gotten delimiter in qs[0] */
+void
+POL::getquote (char *qs, int toksiz)
+{
+  int delim;
+
+  delim = inchar();                     /* char = delimiter */
+  getescape(qs, delim, toksiz);
+}
+
+
+void
+POL::getescape (        /* reads up to delim */
+                char *s,
+                int delim,
+                int toksiz
+                )
+{
+  int i, c;
+
+  for (i = 0; (c = inchar()) != delim; i++) {
+    if (c == NEWLINE) {
+      sys_error (ERR_WARNING, "Missing closing delimiter.");
+      break;
+    }
+    if (i >= toksiz) {
+      sys_error (ERR_SEVERE, "string too long.");
+      break;
+    }
+    if (c == EOF) {
+      ungetch(c);
+      sys_error (ERR_SEVERE, "end of file inside quotation");
+      break;
+    } else if (c == BSLASH) {   /* escape character */
+      s[i++] = c;
+      c = inchar();             /* get escaped character */
+    }
+    s[i] = c;
+  }
+  s[i] = EOS;
+}
+
+
+bool
+POL::readText (char *str, int lim)
+{
+  int c;
+  while ((c = inchar()) == BLANK || c == TAB)
+    ;
+  ungetch (c);
+  if (c == EOF) {
+    str[0] = 0;
+    return false;
+  }
+
+  int i;
+  for (i = 0; i < lim && (c = inchar()) != EOF && c != NEWLINE; i++)
+    str[i] = c;
+  ungetch (c);
+  str[i] = 0;
+
+  return true;
+}
+
+//----------------------------------------------
+// Get a number for gettok()
+//----------------------------------------------
+
+int
+POL::getnumber
+(
+ char str[],                            /* string to return token in */
+ int strsize,                           /* maximum length of token string */
+ double *fnum,                          /* floating point value of number read */
+ int *inum                              /* integer value of number read */
+ )
+{
+  int sp = 0;
+  double sign = 1.0;
+  bool isSigned = false;                /* true if number prefixed by '+' or '-' */
+  *fnum = 0.0;
+  *inum = 0;
+  str[0] = EOS;
+
+  int c = inchar();
+  if (c == HYPHEN) {
+    str[sp++] = c;
+    isSigned = true;
+    sign = -1.0;
+  } else if (c == PLUS) {
+    str[sp++] = c;
+    isSigned = true;
+    sign = 1.0;
+  } else if (c == PERIOD) {
+    if (type(lookchar()) != DIGIT) {
+      str[0] = PERIOD;
+      str[1] = EOS;
+      return (TT_SPECLCHAR);
+    } else
+      ungetch (PERIOD);
+  } else if (type(c) != DIGIT) {
+    ungetch (c);
+    return (TT_ERROR);
+  } else
+    ungetch (c);
+
+  if (isSigned) {
+    c = lookchar();
+    if (c == PERIOD) {
+      inchar();         /* get period */
+      c = lookchar();           /* look at character past period */
+      ungetch (PERIOD); /* put back period */
+      if (type(c) != DIGIT) {
+        str[sp] = EOS;
+        return (TT_SPECLCHAR);
+      }
+    } else if (type (c) != DIGIT) {
+      str[sp] = EOS;
+      return (TT_SPECLCHAR);
+    }
+  }
+
+  double whole = 0.0;
+  while (type(c = inchar()) == DIGIT) {
+    if (sp < strsize)
+      str[sp++] = c;
+    whole = 10.0 * whole + (c - '0');
+  }
+  ungetch (c);          /* put back non-numeric character */
+
+  if (c != PERIOD && tolower(c) != 'e') {
+    str[sp] = EOS;
+    *fnum = whole * sign;
+    if (*fnum < MIN_INT)
+      *inum = MIN_INT;
+    else if (*fnum > MAX_INT)
+      *inum = MAX_INT;
+    else
+      *inum = (int) *fnum;
+    return (TT_INT);
+  }
+
+  if (lookchar() == PERIOD) {
+    inchar();
+    if (sp < strsize)
+      str[sp++] = PERIOD;
+  }
+
+  double frac = 0.0;
+  double powerof10 = 10.0;
+
+  while (type(c = inchar()) == DIGIT) {
+    if (sp < strsize)
+      str[sp++] = c;
+    frac += (double) (c - '0') / powerof10;
+    powerof10 *= 10.0;
+  }
+  ungetch (c);
+
+  double exp = 0.0;
+  double expsign = 1.0;
+  c = inchar();
+  if (tolower(c) != 'e')
+    ungetch (c);
+  else {
+    if (sp < strsize)
+      str[sp++] = c;
+    if ((c = inchar()) == PLUS) {
+      if (sp < strsize)
+        str[sp++] = c;
+      expsign = 1.0;
+    } else if (c == HYPHEN) {
+      if (sp < strsize)
+        str[sp++] = c;
+      expsign = -1.0;
+    } else if (type(c) != DIGIT) {
+      --sp;                             /* erase 'e' */
+      ungetch (c);
+      ungetch ('e');
+      goto getnumexit;
+    } else
+      ungetch(c);
+
+    exp = 0;
+    while (type(c = inchar()) == DIGIT) {
+      if (sp < strsize)
+        str[sp++] = c;
+      exp = 10 * exp + (c - '0');
+    }
+    ungetch (c);
+  }
+
+getnumexit:
+  str[sp] = EOS;
+  *fnum = sign * (whole + frac) * pow (10.0, expsign * exp);
+  if (*fnum < MIN_INT)
+    *inum = MIN_INT;
+  else if (*fnum > MAX_INT)
+    *inum = MAX_INT;
+  else
+    *inum = (int) *fnum;
+  return (TT_REAL);
+}
+
+void
+POL::eatline ()
+{
+  char term [2];
+
+  term[0] = NEWLINE;
+  term[1] = EOS;
+  skipSingleToken (term);
+}
+
+// return type of ASCII character
+int
+POL::type (int c)
+{
+  if (isalpha(c) || c == UNDERLIN)
+    return (LETTER);
+  else if (isdigit(c))
+    return (DIGIT);
+  else
+    return (c);
+}
+
+
+//----------------------------------------------------------------------
+//                              POL INPUT
+//----------------------------------------------------------------------
+
+
+/* usefile - set source of POL input
+*
+*    int source - source of input
+*                  P_USE_STR  - have POL use strings as input
+*                  P_USE_FILE - use file.  filename is in str
+*
+*/
+
+void
+POL::usefile (int source, const char *fn)
+{
+  FILE *fp;
+
+  ++currentf;
+  if (currentf >= MAXFILE) {
+    --currentf;
+    sys_error (ERR_SEVERE, "files nested too deeply");
+    return;
+  }
+
+  while (! m_stackPushBackInput.empty())
+    m_stackPushBackInput.pop();
+
+  if (source == P_USE_STR) {
+    filep[currentf] = NULL;
+  } else if (source == P_USE_FILE) {
+    if (fn == NULL || strlen(fn) == 0) {
+      fp = stdin;
+    } else if ((fp = fopen(fn, "r")) == NULL) {
+      --currentf;
+      sys_error (ERR_SEVERE, "can't open file");
+      return;
+    }
+    filep[currentf] = fp;
+    fname[currentf] = strdup (fn);
+  }
+}
+
+void
+POL::closefile()
+{
+  if (currentf >= 0) {
+    if (filep[currentf] != NULL)
+      fclose (filep[currentf]);
+    --currentf;
+  }
+}
+
+/*-----------------------------*/
+/* Lowest Level Input Routines */
+/*-----------------------------*/
+
+
+int
+POL::lookchar()
+{
+  int c;
+
+  c = inchar();
+  ungetch (c);
+  return (c);
+}
+
+int
+POL::inchar()
+{
+  int c = 0;
+
+  if (currentf < 0)
+    return (EOF);
+
+  while (currentf >= 0 && (c = getch(filep[currentf])) == EOF && filep[currentf] != NULL) {
+    closefile ();
+  }
+
+  return (c);
+}
+
+/*--------------------------------------------------------------*/
+/* getch - get a (possibly pushed back) character               */
+/*         if fp == NULL, then get character from inputline     */
+/*--------------------------------------------------------------*/
+
+int
+POL::getch (FILE *fp)
+{
+  int c;
+  if (m_stackPushBackInput.size() > 0) {
+    c = m_stackPushBackInput.top();
+    m_stackPushBackInput.pop();
+    return c;
+  }
+
+  if (fp == NULL) {
+    if ((c = inputline[lineptr]) == EOS)
+      return (EOF);
+    else {
+      ++lineptr;
+      return (c);
+    }
+  } else
+    c = fgetc(fp);
+
+  return (c);
+}
+
+// push character back on input
+void
+POL::ungetch (int c)
+{
+  m_stackPushBackInput.push (c);
+}
+
+
+int
+POL::get_inputline (FILE *fp)
+{
+  while (! m_stackPushBackInput.empty())
+    m_stackPushBackInput.pop();
+
+  lineptr = 0;
+  if (fgets (inputline, MAXLINE, fp) == NULL)
+    return (EOF);
+  else
+    return (OK);
+}
+
+void
+POL::set_inputline (const char* const line)
+{
+  while (! m_stackPushBackInput.empty())
+    m_stackPushBackInput.pop();
+
+  strncpy (inputline, line, MAXLINE);
+  lineptr = 0;
+}
diff --git a/libctgraphics/sgp.cpp b/libctgraphics/sgp.cpp
new file mode 100644
index 0000000..ffb26b8
--- /dev/null
+++ b/libctgraphics/sgp.cpp
@@ -0,0 +1,992 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:       sgp.cpp             Simple Graphics Package
+**      Programmer: Kevin Rosenberg
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <stdio.h>
+#include <math.h>
+#include "ctsupport.h"
+#include "sgp.h"
+
+
+SGP_RGBColor SGP::s_aRGBColor[] =
+{
+  SGP_RGBColor (0, 0, 0),
+  SGP_RGBColor (0, 0, 128),
+  SGP_RGBColor (0, 128, 0),
+  SGP_RGBColor (0, 128, 128),
+  SGP_RGBColor (128, 0, 0),
+  SGP_RGBColor (128, 0, 128),
+  SGP_RGBColor (128, 128, 0),
+  SGP_RGBColor (80, 80, 80),
+  SGP_RGBColor (160, 160, 160),
+  SGP_RGBColor (0, 0, 255),
+  SGP_RGBColor (0, 255, 0),
+  SGP_RGBColor (0, 255, 255),
+  SGP_RGBColor (255, 0, 0),
+  SGP_RGBColor (255, 0, 255),
+  SGP_RGBColor (255, 255, 0),
+  SGP_RGBColor (255, 255, 255),
+};
+
+int SGP::s_iRGBColorCount = sizeof(s_aRGBColor) / sizeof(class SGP_RGBColor);
+
+#ifdef HAVE_WXWINDOWS
+SGPDriver::SGPDriver (wxDC* pDC, int xsize, int ysize)
+  : m_iPhysicalXSize(xsize), m_iPhysicalYSize(ysize), m_idDriver(0), m_pDC(pDC)
+{
+  m_idDriver |= SGPDRIVER_WXWINDOWS;
+}
+#endif
+
+SGPDriver::SGPDriver (const char* szWinTitle, int xsize, int ysize)
+  : m_iPhysicalXSize(xsize), m_iPhysicalYSize(ysize), m_sWindowTitle(szWinTitle), m_idDriver(0)
+{
+#ifdef HAVE_G2_H
+  m_idG2 = g2_open_X11X (m_iPhysicalXSize, m_iPhysicalYSize, 10, 10, const_cast<char*>(szWinTitle), const_cast<char*>(szWinTitle), NULL, -1, -1);
+  m_idDriver |= SGPDRIVER_G2;
+#endif
+}
+
+SGPDriver::~SGPDriver ()
+{
+#if HAVE_G2_H
+  if (isG2())
+    g2_close (m_idG2);
+#endif
+}
+
+
+// NAME
+//   SGP::SGP        Constructor for Simple Graphics Package
+
+SGP::SGP (const SGPDriver& driver)
+  : m_driver (driver)
+{
+  m_iPhysicalXSize = m_driver.getPhysicalXSize();
+  m_iPhysicalYSize = m_driver.getPhysicalYSize();
+
+  wc_to_ndc.setIdentity ();
+  mc_to_ndc.setIdentity();
+  ndc_to_mc.setIdentity();
+  m_ctm.setIdentity();
+
+#ifdef HAVE_WXWINDOWS
+  initFromDC (driver.idWX());
+#endif
+
+  setWindow (0., 0., 1., 1.);
+  setViewport (0., 0., 1., 1.);
+  moveAbs (0., 0.);
+  stylusNDC (0., 0., false);
+
+  setTextAngle (0.);
+  setTextPointSize (8);
+  setColor (C_BLACK);
+  setLineStyle (LS_SOLID);
+  setMarker (MARKER_POINT);
+}
+
+
+#ifdef HAVE_WXWINDOWS
+void
+SGP::initFromDC (wxDC* pDC)
+{
+  m_pen.SetWidth (1);
+
+  if (m_driver.isWX()) {
+    static const double dScreenDPI = 82;
+    static const double dPointsPerInch = 72.;
+    m_dPointsPerPixel = dPointsPerInch / dScreenDPI;
+    const int iTestPointSize = 12;
+    m_pFont = new wxFont (iTestPointSize, wxFONTFAMILY_ROMAN, 
+                          wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
+#ifdef MSVC
+    m_pFont->SetFaceName(wxString("times new roman"));
+#endif
+    m_driver.idWX()->SetFont (*m_pFont);
+    double dTestCharHeight = m_driver.idWX()->GetCharHeight();
+    m_dPointsPerPixel = iTestPointSize / dTestCharHeight;
+        m_driver.idWX()->SetBackground (*wxWHITE_BRUSH);
+  }
+}
+#endif
+
+
+SGP::~SGP()
+{
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+ //   m_driver.idWX()->SetFont (wxNullFont);
+    delete m_pFont;
+  }
+#endif
+}
+
+void
+SGP::stylusNDC (double x, double y, bool beam)
+{
+  int xp = static_cast<int>(x * (m_iPhysicalXSize - 1) + 0.5);
+  int yp = static_cast<int>(y * (m_iPhysicalYSize - 1) + 0.5);
+  if (m_driver.isWX())
+    yp = m_iPhysicalYSize - yp;
+
+  if (beam) {
+#if HAVE_WXWINDOWS
+    if (m_driver.isWX())
+      m_driver.idWX()->DrawLine (m_iCurrentPhysicalX, m_iCurrentPhysicalY, xp, yp);
+#endif
+#if HAVE_G2_H
+    if (m_driver.isG2())
+      g2_line (m_driver.idG2(), m_iCurrentPhysicalX, m_iCurrentPhysicalY, xp, yp);
+#endif
+  }
+  m_iCurrentPhysicalX = xp;
+  m_iCurrentPhysicalY = yp;
+}
+
+void
+SGP::markerNDC (double x, double y)
+{
+  int xp = static_cast<int>(x * (m_iPhysicalXSize - 1) + 0.5);
+  int yp = static_cast<int>(y * (m_iPhysicalYSize - 1) + 0.5);
+  if (m_driver.isWX())
+    yp = m_iPhysicalYSize - yp;
+
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+      m_driver.idWX()->DrawPoint (xp, yp);
+      m_driver.idWX()->DrawPoint (xp-1, yp-1);
+      m_driver.idWX()->DrawPoint (xp+1, yp+1);
+      m_driver.idWX()->DrawPoint (xp+1, yp-1);
+      m_driver.idWX()->DrawPoint (xp-1, yp+1);
+  }
+#endif
+  m_iCurrentPhysicalX = xp;
+  m_iCurrentPhysicalY = yp;
+}
+
+void
+SGP::pointNDC (double x, double y)
+{
+  int xp = static_cast<int>(x * (m_iPhysicalXSize - 1) + 0.5);
+  int yp = static_cast<int>(y * (m_iPhysicalYSize - 1) + 0.5);
+  if (m_driver.isWX())
+    yp = m_iPhysicalYSize - yp;
+
+#if HAVE_WXWINDOWS
+    if (m_driver.isWX())
+      m_driver.idWX()->DrawPoint (xp, yp);
+#endif
+  m_iCurrentPhysicalX = xp;
+  m_iCurrentPhysicalY = yp;
+}
+
+
+// NAME
+//    clear     Clear Window
+
+void
+SGP::eraseWindow ()
+{
+#if HAVE_G2_H
+  if (m_driver.isG2())
+    g2_clear (m_driver.idG2());
+#endif
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+        wxBrush brushWhite;
+        brushWhite.SetColour(255,255,255);
+        m_driver.idWX()->SetBackground(brushWhite);
+        m_driver.idWX()->Clear();
+        m_driver.idWX()->SetBackground(wxNullBrush);
+#if 1
+        wxPen pen;
+        pen.SetColour(255,255,255);
+        m_driver.idWX()->SetBrush (brushWhite);
+        m_driver.idWX()->DrawRectangle (0, 0, m_iPhysicalXSize, m_iPhysicalYSize);
+        m_driver.idWX()->SetBrush (wxNullBrush);
+#endif
+  }
+#endif
+}
+
+// NAME
+//      sgp2_window             Set window in world coordinates
+
+
+void
+SGP::setWindow (double xmin, double ymin, double xmax, double ymax)
+{
+  if (xmin >= xmax || ymin >= ymax) {
+    sys_error (ERR_WARNING, "Minimum > Maximum [sgp2_window]");
+    return;
+  }
+
+  xw_min = xmin;
+  yw_min = ymin;
+  xw_max = xmax;
+  yw_max = ymax;
+  m_bRecalcTransform = true;
+}
+
+
+// NAME
+//      sgp2_viewport                   Set viewport in NDC
+
+void
+SGP::setViewport (double xmin, double ymin, double xmax, double ymax)
+{
+  if (xmin >= xmax || ymin >= ymax) {
+    sys_error (ERR_WARNING, "Minimum > Maximum [sgp2_viewport]");
+    return;
+  }
+
+  xv_min = xmin;
+  yv_min = ymin;
+  xv_max = xmax;
+  yv_max = ymax;
+  m_bRecalcTransform = true;
+
+  viewNDC[0] = xmin;                    // Array for clip_rect()
+  viewNDC[1] = ymin;
+  viewNDC[2] = xmax;
+  viewNDC[3] = ymax;
+}
+
+void
+SGP::getViewport (double& xmin, double& ymin, double& xmax, double& ymax)
+{
+    xmin = xv_min;
+    ymin = yv_min;
+    xmax = xv_max;
+    ymax = yv_max;
+}
+
+void
+SGP::getWindow (double& xmin, double& ymin, double& xmax, double& ymax)
+{
+    xmin = xw_min;
+    ymin = yw_min;
+    xmax = xw_max;
+    ymax = yw_max;
+}
+
+
+// NAME
+//      frameViewport           draw box around viewport
+
+void
+SGP::frameViewport (void)
+{
+  stylusNDC (xv_min, yv_min, false);
+  stylusNDC (xv_max, yv_min, true);
+  stylusNDC (xv_max, yv_max, true);
+  stylusNDC (xv_min, yv_max, true);
+  stylusNDC (xv_min, yv_min, true);
+}
+
+void
+SGP::setTextColor (int iFGcolor, int iBGcolor)
+{
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    if (iFGcolor >= 0) {
+      wxColor colour (s_aRGBColor[iFGcolor].getRed(), s_aRGBColor[iFGcolor].getGreen(), s_aRGBColor[iFGcolor].getBlue());
+      m_driver.idWX()->SetTextForeground (colour);
+    }
+    if (iBGcolor >= 0) {
+      wxColor colour (s_aRGBColor[iBGcolor].getRed(), s_aRGBColor[iBGcolor].getGreen(), s_aRGBColor[iBGcolor].getBlue());
+      m_driver.idWX()->SetTextBackground (colour);
+    }
+  }
+#endif
+}
+
+void
+SGP::setColor (int icol)
+{
+  if (icol >= 0 && icol < s_iRGBColorCount) {
+#if HAVE_G2_H
+    if (m_driver.isG2()) {
+      int iInk = g2_ink (m_driver.idG2(), s_aRGBColor[icol].getRed() / 255., s_aRGBColor[icol].getGreen() / 255., s_aRGBColor[icol].getBlue() / 255.);
+      g2_pen (m_driver.idG2(), iInk);
+    }
+#endif
+#if HAVE_WXWINDOWS
+    if (m_driver.isWX()) {
+      wxColor colour (s_aRGBColor[icol].getRed(), s_aRGBColor[icol].getGreen(), s_aRGBColor[icol].getBlue());
+      m_pen.SetColour (colour);
+      m_driver.idWX()->SetPen (m_pen);
+    }
+#endif
+  }
+}
+
+void
+SGP::setPenWidth (int iWidth)
+{
+  if (iWidth >= 0) {
+#if HAVE_WXWINDOWS
+    if (m_driver.isWX()) {
+      m_pen.SetWidth (iWidth);
+      m_driver.idWX()->SetPen (m_pen);
+    }
+#endif
+  }
+}
+
+void
+SGP::setRasterOp (int ro)
+{
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    int wxFxn = -1;
+    switch (ro) {
+    case RO_AND:
+      wxFxn = wxAND;
+      break;
+    case RO_AND_INVERT:
+      wxFxn = wxAND_INVERT;
+      break;
+    case RO_AND_REVERSE:
+      wxFxn = wxAND_REVERSE;
+      break;
+    case RO_CLEAR:
+      wxFxn = wxCLEAR;
+      break;
+    case RO_COPY:
+      wxFxn = wxCOPY;
+      break;
+    case RO_EQUIV:
+      wxFxn = wxEQUIV;
+      break;
+    case RO_INVERT:
+      wxFxn = wxINVERT;
+      break;
+    case RO_NAND:
+      wxFxn = wxNAND;
+      break;
+    case RO_NOR:
+      wxFxn = wxNOR;
+      break;
+    case RO_NO_OP:
+      wxFxn = wxNO_OP;
+      break;
+    case RO_OR:
+      wxFxn = wxOR;
+      break;
+    case RO_OR_INVERT:
+      wxFxn = wxOR_INVERT;
+      break;
+    case RO_OR_REVERSE:
+      wxFxn = wxOR_REVERSE;
+      break;
+    case RO_SET:
+      wxFxn = wxSET;
+      break;
+    case RO_SRC_INVERT:
+      wxFxn = wxSRC_INVERT;
+      break;
+    case RO_XOR:
+      wxFxn = wxXOR;
+      break;
+    }
+    if (wxFxn >= 0)
+      m_driver.idWX()->SetLogicalFunction (wxFxn);
+  }
+#endif
+}
+
+
+void
+SGP::setMarker (int idMarker)
+{
+  m_iMarker = idMarker;
+}
+
+//==============================================================
+// set line style.  Pass 16 bit repeating pattern
+//==============================================================
+void
+SGP::setLineStyle (int style)
+{
+  m_iLinestyle = style;
+
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    switch (m_iLinestyle) {
+    case LS_SOLID:
+      m_pen.SetStyle (wxSOLID);
+      break;
+    case LS_DASH1:
+      m_pen.SetStyle (wxLONG_DASH);
+      break;
+    case LS_DASH2:
+      m_pen.SetStyle (wxSHORT_DASH);
+      break;
+    case LS_DASH3:
+      m_pen.SetStyle (wxDOT_DASH);
+      break;
+    case LS_DASH4:
+      m_pen.SetStyle (wxCROSS_HATCH);
+      break;
+    case LS_DOTTED:
+      m_pen.SetStyle (wxDOT);
+      break;
+    default:
+      m_pen.SetStyle (wxSOLID);
+      break;
+    }
+    m_driver.idWX()->SetPen (m_pen);
+  }
+#endif
+}
+
+//==============================================================
+// absolute draw to
+//*==============================================================
+
+void
+SGP::lineAbs (double x, double y)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+
+  double x1 = m_dCurrentWorldX;
+  double y1 = m_dCurrentWorldY;
+  mc_to_ndc.transformPoint (&x1, &y1);
+
+  double x2 = x;
+  double y2 = y;
+  mc_to_ndc.transformPoint (&x2, &y2);
+
+  if (clip_rect (x1, y1, x2, y2, viewNDC) == true) { // clip to viewport
+    stylusNDC (x1, y1, false);  // move to first point
+    stylusNDC (x2, y2, true);  // draw to second point
+  }
+
+  m_dCurrentWorldX = x;
+  m_dCurrentWorldY = y;
+}
+
+void
+SGP::moveAbs (double x, double y)
+{
+    m_dCurrentWorldX = x;
+    m_dCurrentWorldY = y;                       /* moves are not clipped */
+}
+
+void
+SGP::lineRel (double x, double y)
+{
+  lineAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY);
+}
+
+void
+SGP::moveRel (double x, double y)
+{
+  moveAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY);
+}
+
+
+// Height is in master coordinates
+void
+SGP::setTextSize (double height)
+{
+    height /= (yw_max - yw_min);  // convert to NDC
+#if HAVE_G2_H
+  if (m_driver.isG2())
+    g2_set_font_size(m_driver.idG2(), (height * m_iPhysicalYSize));
+#endif
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+      double dHeightPixels = height * m_iPhysicalYSize;
+      double dHeightPoints = dHeightPixels * m_dPointsPerPixel;
+      m_pFont->SetPointSize (nearest<int>(dHeightPoints));
+#if DEBUG
+      sys_error (ERR_TRACE, "Setting text size to %d points", 
+                 nearest<int>(dHeightPoints));
+#endif
+
+      m_driver.idWX()->SetFont (*m_pFont);
+  }
+#endif
+}
+
+void
+SGP::setTextNDCSize (double height)
+{
+    double dHeightPixels = height * m_iPhysicalYSize;
+#if HAVE_G2_H
+  if (m_driver.isG2())
+    g2_set_font_size(m_driver.idG2(), nearest<int>(dHeightPixels));
+#endif
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+      double dHeightPoints = dHeightPixels * m_dPointsPerPixel;
+      m_pFont->SetPointSize (nearest<int>(dHeightPoints));
+      m_driver.idWX()->SetFont (*m_pFont);
+  }
+#endif
+}
+
+void
+SGP::setTextPointSize (double height)
+{
+#if HAVE_G2_H
+    //  if (m_driver.isG2())
+    //    g2_set_font_size(m_driver.idG2(), (height * m_iPhysicalYSize));
+#endif
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    m_iTextPointSize = static_cast<int>(height+0.5);
+    m_pFont->SetPointSize (m_iTextPointSize);
+#if DEBUG
+    sys_error (ERR_TRACE, "Setting point size to %d", m_iTextPointSize);
+#endif
+    m_driver.idWX()->SetFont (*m_pFont);
+  }
+#endif
+}
+
+void
+SGP::getTextExtent (const char* szText, double* worldW, double* worldH)
+{
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    wxCoord deviceW, deviceH;
+    wxString str (wxConvCurrent->cMB2WC(szText));
+    m_driver.idWX()->GetTextExtent (str, &deviceW, &deviceH);
+    if (m_dTextAngle == 90 || m_dTextAngle == -90) {
+      wxCoord temp = deviceW;
+      deviceW = deviceH;
+      deviceH = temp;
+    }
+    *worldW = (xw_max - xw_min) * deviceW / static_cast<double>(m_iPhysicalXSize);;
+    *worldH = (yw_max - yw_min) * deviceH / static_cast<double>(m_iPhysicalYSize);
+  }
+#endif
+}
+
+double
+SGP::getCharHeight ()
+{
+  double dHeight = (1. / 50.);
+
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    dHeight = m_driver.idWX()->GetCharHeight();
+    dHeight /= static_cast<double>(m_iPhysicalYSize);
+    dHeight /= (yv_max - yv_min); // scale to viewport;
+  }
+#endif
+  dHeight *= (yw_max - yw_min);  // scale to world coordinates
+  return dHeight;
+}
+
+double
+SGP::getCharWidth ()
+{
+  double dWidth = (1. / 80.);
+
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    dWidth = m_driver.idWX()->GetCharWidth();
+    dWidth /= static_cast<double>(m_iPhysicalXSize);
+    dWidth /= (xv_max - xv_min); // scale to viewport
+  }
+#endif
+  dWidth *= (xw_max - xw_min); //scale to world coordinates
+  return dWidth;
+}
+
+void
+SGP::setTextAngle (double angle)
+{
+  m_dTextAngle = convertRadiansToDegrees(angle);
+}
+
+void
+SGP::polylineAbs (double x[], double y[], int n)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+
+  double x1 = x[0], y1 = y[0];
+  mc_to_ndc.transformPoint (&x1, &y1);
+  double x2 = x[1], y2 = y[1];
+  mc_to_ndc.transformPoint (&x2, &y2);
+
+  double xt = x2;       // don't pass (x2,y2) to clip, we need them
+  double yt = y2;       // as the beginning point of the next line
+
+  if (clip_rect (x1, y1, xt, yt, viewNDC)) {
+    stylusNDC (x1, y1, false);
+    stylusNDC (xt, yt, true);
+  }
+
+  for (int i = 2; i < n; i++) {
+    x1 = x2; y1 = y2;                   // NDC endpoint of last line
+    x2 = x[i];  y2 = y[i];
+    mc_to_ndc.transformPoint (&x2, &y2);
+    xt = x2;
+    yt = y2;
+    if (clip_rect (x1, y1, xt, yt, viewNDC)) {
+      stylusNDC (x1, y1, false);
+      stylusNDC (xt, yt, true);
+    }
+  }
+}
+
+
+void
+SGP::markerAbs (double x, double y)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+
+  double xndc = x;
+  double yndc = y;
+  mc_to_ndc.transformPoint (&xndc, &yndc);
+  markerNDC (xndc, yndc);
+  m_dCurrentWorldX = x;
+  m_dCurrentWorldY = y;
+}
+
+
+void
+SGP::markerRel (double x, double y)
+{
+  markerAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY);
+}
+
+
+void
+SGP::pointAbs (double x, double y)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+  double xndc = x, yndc = y;
+  mc_to_ndc.transformPoint (&xndc, &yndc);
+  pointNDC (xndc, yndc);
+  m_dCurrentWorldX = x;
+  m_dCurrentWorldY = y;
+}
+
+
+void
+SGP::pointRel (double x, double y)
+{
+  pointAbs (x + m_dCurrentWorldX, y + m_dCurrentWorldY);
+}
+
+
+void
+SGP::drawText (const std::string& rsMessage)
+{
+  drawText (rsMessage.c_str());
+}
+
+void
+SGP::drawText (const char *pszMessage)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+
+  double xndc = m_dCurrentWorldX;
+  double yndc = m_dCurrentWorldY;
+  mc_to_ndc.transformPoint (&xndc, &yndc);
+
+  stylusNDC (xndc, yndc, false);            // move to location
+
+#if HAVE_G2_H
+  if (m_driver.isG2()) {
+    g2_string (m_driver.idG2(), m_iCurrentPhysicalX, m_iCurrentPhysicalY, const_cast<char*>(pszMessage));
+  }
+#endif
+#if HAVE_WXWINDOWS
+  if (m_driver.isWX()) {
+    wxString str(wxConvCurrent->cMB2WC(pszMessage));
+    m_driver.idWX()->DrawRotatedText (str, m_iCurrentPhysicalX, m_iCurrentPhysicalY, m_dTextAngle);
+  }
+#endif
+}
+
+
+// NAME
+//   drawRect                           Draw box in graphics mode
+//
+// SYNOPSIS
+//   drawbox (xmin, ymin, xmax, ymax)
+//   double xmin, ymin                  Lower left corner of box
+//   double xmax, ymax                  Upper left corner of box
+//
+// NOTES
+//   This routine leaves the current position of graphic cursor at lower
+//   left corner of box.
+
+void
+SGP::drawRect (double xmin, double ymin, double xmax, double ymax)
+{
+        moveAbs (xmin, ymin);
+        lineAbs (xmax, ymin);
+        lineAbs (xmax, ymax);
+        lineAbs (xmin, ymax);
+        lineAbs (xmin, ymin);
+}
+
+// FUNCTION
+// sgp2_circle - draw circle of radius r at current center
+
+void
+SGP::drawCircle (const double r)
+{
+        drawArc (r, 0.0, TWOPI);
+}
+
+//==============================================================
+// draw arc around current center.  angles in radius
+//==============================================================
+
+void
+SGP::drawArc (const double r, double start, double stop)
+{
+  if (start > stop) {
+    double temp = start;
+    start = stop;
+    stop = temp;
+  }
+
+  double xCent = m_dCurrentWorldX;
+  double yCent = m_dCurrentWorldY;
+
+  double x = r * cos (start);
+  double y = r * sin (start);
+  moveAbs (xCent + x, yCent + y);          // move from center to start of arc
+
+  const double thetaIncrement = (5 * (TWOPI / 360));  // 5 degree increments
+  double cosTheta = cos (thetaIncrement);
+  double sinTheta = sin (thetaIncrement);
+
+  double angle;
+  for (angle = start; angle < stop; angle += thetaIncrement) {
+    double xp = cosTheta * x - sinTheta * y; // translate point by thetaIncrement
+    double yp = sinTheta * x + cosTheta * y;
+    lineAbs (xCent + xp, yCent + yp);
+    x = xp; y = yp;
+  }
+
+  double c = cos (stop - angle);
+  double s = sin (stop - angle);
+  double xp = c * x - s * y;
+  double yp = s * x + c * y;
+  lineAbs (xCent + xp, yCent + yp);
+
+  moveAbs (xCent, yCent);               // move back to center of circle
+}
+
+
+
+///////////////////////////////////////////////////////////////////////
+// Coordinate Transformations
+///////////////////////////////////////////////////////////////////////
+
+
+void
+SGP::transformNDCtoMC (double* x, double* y)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+  ndc_to_mc.transformPoint (x, y);
+}
+
+
+void
+SGP::transformMCtoNDC (double* x, double* y)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+  mc_to_ndc.transformPoint (x, y);
+}
+
+
+void
+SGP::transformMCtoNDC (double xIn, double yIn, double* x, double* y)
+{
+  if (m_bRecalcTransform)
+    calc_transform();
+  *x = xIn;
+  *y = yIn;
+  mc_to_ndc.transformPoint (x, y);
+}
+
+
+// NAME
+//      calc_transform                  Calculate transform matrices
+
+void
+SGP::calc_transform ()
+{
+  double scaleX = (xv_max - xv_min) / (xw_max - xw_min);
+  double scaleY = (yv_max - yv_min) / (yw_max - yw_min);
+
+  wc_to_ndc.setIdentity();
+  wc_to_ndc.mtx[0][0] = scaleX;
+  wc_to_ndc.mtx[2][0] = xv_min - scaleX * xw_min;
+  wc_to_ndc.mtx[1][1] = scaleY;
+  wc_to_ndc.mtx[2][1] = yv_min - scaleY * yw_min;
+
+  mc_to_ndc = m_ctm * wc_to_ndc;
+  ndc_to_mc = mc_to_ndc.invert();
+
+  m_bRecalcTransform = false;
+}
+
+void
+SGP::ctmClear ()
+{
+  m_ctm.setIdentity();
+  calc_transform();
+}
+
+void
+SGP::ctmSet (const TransformationMatrix2D& m)
+{
+  m_ctm = m;
+  calc_transform();
+}
+
+
+void
+SGP::preTranslate  (double x, double y)
+{
+    TransformationMatrix2D m;
+
+    m.setTranslate (x, y);
+    ctmSet (m * m_ctm);
+}
+
+
+void
+SGP::postTranslate (double x, double y)
+{
+    TransformationMatrix2D m;
+
+    m.setTranslate (x, y);
+    ctmSet (m_ctm * m);
+}
+
+
+void
+SGP::preScale (double sx, double sy)
+{
+    TransformationMatrix2D m;
+
+    m.setScale (sx, sy);
+    ctmSet (m * m_ctm);
+}
+
+
+void
+SGP::postScale (double sx, double sy)
+{
+    TransformationMatrix2D m;
+
+    m.setScale (sx, sy);
+    m_ctm = m_ctm * m;
+    ctmSet (m_ctm * m);
+}
+
+
+void
+SGP::preRotate (double theta)
+{
+    TransformationMatrix2D m;
+
+    m.setRotate (theta);
+    m_ctm = m * m_ctm;
+    ctmSet (m * m_ctm);
+}
+
+
+void
+SGP::postRotate (double theta)
+{
+    TransformationMatrix2D m;
+
+    m.setRotate (theta);
+    ctmSet (m_ctm * m);
+}
+
+
+void
+SGP::preShear (double shrx, double shry)
+{
+    TransformationMatrix2D m;
+
+    m.setShear (shrx, shry);
+    ctmSet (m * m_ctm);
+}
+
+
+void
+SGP::postShear (double shrx, double shry)
+{
+    TransformationMatrix2D m;
+
+    m.setShear (shrx, shry);
+    ctmSet (m_ctm * m);
+}
+
+
+////////////////////////////////////////////////////////////////////////
+//  Bitmap Markers
+////////////////////////////////////////////////////////////////////////
+
+// Pixel patterns of marker symbols (1x1 to 5x5 matrix)
+const unsigned char SGP::MARKER_BITMAP[MARK_COUNT][5] =
+{
+    {'\000', '\000', '\010', '\000', '\000'},    // small dot
+    {'\000', '\034', '\024', '\034', '\000'},    // empty square
+    {'\000', '\034', '\034', '\034', '\000'},    // filled square
+    {'\000', '\010', '\024', '\010', '\000'},    // empty diamond
+    {'\000', '\010', '\034', '\010', '\000'},    // filled diamond
+    {'\010', '\010', '\076', '\010', '\010'},    // cross
+    {'\000', '\024', '\010', '\024', '\000'},    // X
+    {'\034', '\042', '\042', '\042', '\034'},    // open circle
+    {'\034', '\076', '\076', '\076', '\034'},    // filled circle
+    {'\076', '\042', '\042', '\042', '\076'},    // big open square
+    {'\010', '\024', '\042', '\024', '\010'},    // big open diamond
+};
+
+
+#if HAVE_WXWINDOWS
+void
+SGP::setDC (wxDC* pDC)
+{
+  if (m_driver.isWX()) {
+    m_driver.setDC(pDC);
+    initFromDC (pDC);
+    setTextPointSize (m_iTextPointSize);
+  }
+}
+#endif
diff --git a/libctgraphics/transformmatrix.cpp b/libctgraphics/transformmatrix.cpp
new file mode 100644
index 0000000..b9c613a
--- /dev/null
+++ b/libctgraphics/transformmatrix.cpp
@@ -0,0 +1,157 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:       transformmatrix.cpp
+**      Function:   Transform Matrix routine for graphic library
+**      Programmer: Kevin Rosenberg
+**      Date Started:   1-22-85
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <iostream>
+#include "ctsupport.h"
+#include "transformmatrix.h"
+
+
+TransformationMatrix2D::TransformationMatrix2D (double m[3][3])
+{
+  mtx[0][0] = m[0][0]; mtx[0][1] = m[0][1]; mtx[0][2] = m[0][2];
+  mtx[1][0] = m[1][0]; mtx[1][1] = m[1][1]; mtx[1][2] = m[1][2];
+  mtx[2][0] = m[2][0]; mtx[2][1] = m[2][1]; mtx[2][2] = m[2][2];
+}
+
+void
+TransformationMatrix2D::setTranslate (double x, double y)
+{
+  setIdentity();
+  mtx[2][0] = x;
+  mtx[2][1] = y;
+}
+
+
+void
+TransformationMatrix2D::setScale (double sx, double sy)
+{
+  setIdentity();
+  mtx[0][0] = sx;
+  mtx[1][1] = sy;
+}
+
+
+void
+TransformationMatrix2D::setShear (double shrx, double shry)
+{
+  setIdentity();
+  mtx[1][0] = shrx;
+  mtx[0][1] = shry;
+}
+
+void
+TransformationMatrix2D::setRotate (double theta)
+{
+    double s = sin (theta);
+    double c = cos (theta);
+
+    setIdentity();
+
+    mtx[0][0] =  c;  mtx[0][1] = s;
+    mtx[1][0] = -s;  mtx[1][1] = c;
+}
+
+
+void
+TransformationMatrix2D::setIdentity ()
+{
+    mtx[0][0] = 1.;  mtx[0][1] = 0.;  mtx[0][2] = 0.;
+    mtx[1][0] = 0.;  mtx[1][1] = 1.;  mtx[1][2] = 0.;
+    mtx[2][0] = 0.;  mtx[2][1] = 0.;  mtx[2][2] = 1.;
+}
+
+
+const TransformationMatrix2D
+TransformationMatrix2D::invert () const
+{
+  double b[3][3];
+
+  double determ = determinant ();
+  if (fabs(determ) < 1E-6) {
+    sys_error (ERR_WARNING, "Determinant = %g [TransformationMatrix2D::invert]", determ);
+        print (std::cout);
+        std::cout << std::endl;
+  }
+
+  b[0][0] =  (mtx[1][1] * mtx[2][2] - mtx[2][1] * mtx[1][2]) / determ;
+  b[1][0] = -(mtx[1][0] * mtx[2][2] - mtx[2][0] * mtx[1][2]) / determ;
+  b[2][0] =  (mtx[1][0] * mtx[2][1] - mtx[2][0] * mtx[1][1]) / determ;
+
+  b[0][1] = -(mtx[0][1] * mtx[2][2] - mtx[2][1] * mtx[0][2]) / determ;
+  b[1][1] =  (mtx[0][0] * mtx[2][2] - mtx[2][0] * mtx[0][2]) / determ;
+  b[2][1] = -(mtx[0][0] * mtx[2][1] - mtx[2][0] * mtx[0][1]) / determ;
+
+  b[0][2] =  (mtx[0][1] * mtx[1][2] - mtx[1][1] * mtx[0][2]) / determ;
+  b[1][2] = -(mtx[0][0] * mtx[1][2] - mtx[1][0] * mtx[0][2]) / determ;
+  b[2][2] =  (mtx[0][0] * mtx[1][1] - mtx[1][0] * mtx[0][1]) / determ;
+
+  return TransformationMatrix2D (b);
+}
+
+
+double
+TransformationMatrix2D::determinant () const
+{
+  return
+    (mtx[0][0] * mtx[1][1] * mtx[2][2] - mtx[0][0] * mtx[2][1] * mtx[1][2] -
+     mtx[0][1] * mtx[1][0] * mtx[2][2] + mtx[0][1] * mtx[2][0] * mtx[1][2] +
+     mtx[0][2] * mtx[1][0] * mtx[2][1] - mtx[0][2] * mtx[2][0] * mtx[1][1]);
+}
+
+
+void
+TransformationMatrix2D::transformPoint (double* pX, double *pY) const
+{
+  double x = *pX * mtx[0][0] + *pY * mtx[1][0] + mtx[2][0];
+  double y = *pX * mtx[0][1] + *pY * mtx[1][1] + mtx[2][1];
+
+  *pX = x;
+  *pY = y;
+}
+
+void
+TransformationMatrix2D::print (std::ostream& ostr) const
+{
+        std::cout << mtx[0][0] << " " << mtx[0][1] << " " << mtx[0][2] << std::endl;
+        std::cout << mtx[1][0] << " " << mtx[1][1] << " " << mtx[1][2] << std::endl;
+        std::cout << mtx[2][0] << " " << mtx[2][1] << " " << mtx[2][2] << std::endl;
+}
+
+
+// Friend of TransformMatrix2D
+
+const TransformationMatrix2D operator* (const TransformationMatrix2D& a, const TransformationMatrix2D& b)
+{
+    double c[3][3];
+
+    for (int row = 0; row < 3; row++)
+      for (int col = 0; col < 3; col++) {
+        c[row][col] = 0.;
+        for (int calc = 0; calc < 3; calc++)
+          c[row][col] += a.mtx[row][calc] * b.mtx[calc][col];
+      }
+
+    return TransformationMatrix2D (c);
+}
diff --git a/libctsim/Makefile b/libctsim/Makefile
new file mode 100644
index 0000000..85314b1
--- /dev/null
+++ b/libctsim/Makefile
@@ -0,0 +1,450 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# libctsim/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = libctsim
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libctsim_a_AR = $(AR) $(ARFLAGS)
+libctsim_a_LIBADD =
+am_libctsim_a_OBJECTS = filter.$(OBJEXT) scanner.$(OBJEXT) \
+	projections.$(OBJEXT) phantom.$(OBJEXT) imagefile.$(OBJEXT) \
+	backprojectors.$(OBJEXT) array2dfile.$(OBJEXT) trace.$(OBJEXT) \
+	procsignal.$(OBJEXT) reconstruct.$(OBJEXT) fourier.$(OBJEXT) \
+	ctndicom.$(OBJEXT)
+libctsim_a_OBJECTS = $(am_libctsim_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(libctsim_a_SOURCES)
+DIST_SOURCES = $(libctsim_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+noinst_LIBRARIES = libctsim.a 
+libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp trace.cpp procsignal.cpp reconstruct.cpp fourier.cpp ctndicom.cpp
+INCLUDES =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  libctsim/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  libctsim/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libctsim.a: $(libctsim_a_OBJECTS) $(libctsim_a_DEPENDENCIES) 
+	-rm -f libctsim.a
+	$(libctsim_a_AR) libctsim.a $(libctsim_a_OBJECTS) $(libctsim_a_LIBADD)
+	$(RANLIB) libctsim.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/array2dfile.Po
+include ./$(DEPDIR)/backprojectors.Po
+include ./$(DEPDIR)/ctndicom.Po
+include ./$(DEPDIR)/filter.Po
+include ./$(DEPDIR)/fourier.Po
+include ./$(DEPDIR)/imagefile.Po
+include ./$(DEPDIR)/phantom.Po
+include ./$(DEPDIR)/procsignal.Po
+include ./$(DEPDIR)/projections.Po
+include ./$(DEPDIR)/reconstruct.Po
+include ./$(DEPDIR)/scanner.Po
+include ./$(DEPDIR)/trace.Po
+
+.cpp.o:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libctsim/Makefile.am b/libctsim/Makefile.am
new file mode 100644
index 0000000..303da92
--- /dev/null
+++ b/libctsim/Makefile.am
@@ -0,0 +1,6 @@
+noinst_LIBRARIES = libctsim.a 
+libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp trace.cpp procsignal.cpp reconstruct.cpp fourier.cpp ctndicom.cpp
+
+
+INCLUDES=@my_includes@
+EXTRA_DIST=Makefile.nt
diff --git a/libctsim/Makefile.in b/libctsim/Makefile.in
new file mode 100644
index 0000000..ea20e5a
--- /dev/null
+++ b/libctsim/Makefile.in
@@ -0,0 +1,472 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libctsim
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libctsim_a_AR = $(AR) $(ARFLAGS)
+libctsim_a_LIBADD =
+am_libctsim_a_OBJECTS = filter.$(OBJEXT) scanner.$(OBJEXT) \
+	projections.$(OBJEXT) phantom.$(OBJEXT) imagefile.$(OBJEXT) \
+	backprojectors.$(OBJEXT) array2dfile.$(OBJEXT) trace.$(OBJEXT) \
+	procsignal.$(OBJEXT) reconstruct.$(OBJEXT) fourier.$(OBJEXT) \
+	ctndicom.$(OBJEXT)
+libctsim_a_OBJECTS = $(am_libctsim_a_OBJECTS)
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(libctsim_a_SOURCES)
+DIST_SOURCES = $(libctsim_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+noinst_LIBRARIES = libctsim.a 
+libctsim_a_SOURCES = filter.cpp scanner.cpp projections.cpp phantom.cpp imagefile.cpp backprojectors.cpp array2dfile.cpp trace.cpp procsignal.cpp reconstruct.cpp fourier.cpp ctndicom.cpp
+INCLUDES = @my_includes@
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libctsim/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu libctsim/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libctsim.a: $(libctsim_a_OBJECTS) $(libctsim_a_DEPENDENCIES) 
+	-rm -f libctsim.a
+	$(libctsim_a_AR) libctsim.a $(libctsim_a_OBJECTS) $(libctsim_a_LIBADD)
+	$(RANLIB) libctsim.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/array2dfile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/backprojectors.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctndicom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/filter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fourier.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/imagefile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/phantom.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/procsignal.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/projections.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/reconstruct.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/scanner.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/trace.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libctsim/array2dfile.cpp b/libctsim/array2dfile.cpp
new file mode 100644
index 0000000..3a75f28
--- /dev/null
+++ b/libctsim/array2dfile.cpp
@@ -0,0 +1,725 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         array2dfile.cpp
+**      Purpose:      2-dimension array file class
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "array2dfile.h"
+#include <ctime>
+#ifdef MSVC
+typedef long off_t;
+#endif
+
+#include <sstream>
+
+const kuint16 Array2dFile::m_signature = ('I'*256+'F');
+
+///////////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//
+//     Name: Array2dFileLabel
+//     Purpose: Labels for Array2dFiles
+///////////////////////////////////////////////////////////////////////////
+
+void
+Array2dFileLabel::init (void)
+{
+  m_calcTime = 0;
+  m_labelType = L_EMPTY;
+  time_t t = time(0);
+  tm* lt = localtime(&t);
+  m_year = lt->tm_year;
+  m_month = lt->tm_mon;
+  m_day = lt->tm_mday;
+  m_hour = lt->tm_hour;
+  m_minute = lt->tm_min;
+  m_second = lt->tm_sec;
+}
+
+Array2dFileLabel::Array2dFileLabel()
+{
+  init();
+}
+
+Array2dFileLabel::Array2dFileLabel(const char* const str, double ctime)
+: m_strLabel (str)
+{
+  init();
+
+  m_labelType = L_USER;
+  m_calcTime = ctime;
+}
+
+Array2dFileLabel::Array2dFileLabel(const int type, const char* const str, double ctime)
+:  m_strLabel (str)
+{
+  init();
+
+  m_labelType = type;
+  m_calcTime = ctime;
+}
+
+Array2dFileLabel::~Array2dFileLabel()
+{
+}
+
+void
+Array2dFileLabel::setDateTime (int year, int month, int day, int hour, int minute, int second)
+{
+  m_year = year;
+  m_month = month;
+  m_day = day;
+  m_hour = hour;
+  m_minute = minute;
+  m_second = second;
+}
+
+void
+Array2dFileLabel::getDateTime (int& year, int& month, int& day, int& hour, int& minute, int& second) const
+{
+  year = m_year;
+  month = m_month;
+  day = m_day;
+  hour = m_hour;
+  minute = m_minute;
+  second = m_second;
+}
+
+const std::string&
+Array2dFileLabel::getDateString (void) const
+{
+  char szDate [128];
+  snprintf (szDate, sizeof(szDate), "%2d/%02d/%4d %02d:%02d:%02d",
+    m_month + 1, m_day, m_year + 1900, m_hour, m_minute, m_second);
+  m_strDate = szDate;
+  return m_strDate;
+}
+
+
+Array2dFileLabel::Array2dFileLabel (const Array2dFileLabel& rhs)
+{
+  m_calcTime = rhs.m_calcTime;
+  m_labelType = rhs.m_labelType;
+  m_strLabel = rhs.m_strLabel;
+  m_year = rhs.m_year; m_month = rhs.m_month; m_day = rhs.m_day;
+  m_hour = rhs.m_hour; m_minute = rhs.m_minute; m_second = rhs.m_second;
+}
+
+Array2dFileLabel&
+Array2dFileLabel::operator= (const Array2dFileLabel& rhs)
+{
+  m_calcTime = rhs.m_calcTime;
+  m_labelType = rhs.m_labelType;
+  m_strLabel = rhs.m_strLabel;
+  m_year = rhs.m_year; m_month = rhs.m_month; m_day = rhs.m_day;
+  m_hour = rhs.m_hour; m_minute = rhs.m_minute; m_second = rhs.m_second;
+
+  return (*this);
+}
+
+void
+Array2dFileLabel::print (std::ostream& os) const
+{
+  if (m_labelType == L_HISTORY) {
+    os << "History: " << std::endl;
+    os << "  " << m_strLabel << std::endl;
+    os << "  calc time = " << m_calcTime << " secs" << std::endl;
+    os << "  Timestamp = " << getDateString() << std::endl;
+  } else if (m_labelType == L_USER) {
+    os << "Note: " <<  m_strLabel << std::endl;
+    os << "  Timestamp = %s" << getDateString() << std::endl;
+  } else {
+    os << "Unknown (" << m_labelType << "): " <<  m_strLabel << std::endl;
+    os << "  Timestamp = %s" << getDateString() << std::endl;
+  }
+}
+
+void
+Array2dFileLabel::printBrief (std::ostream& os) const
+{
+  if (m_labelType == L_HISTORY) {
+    os << "History (";
+    if (m_calcTime > 0)
+      os << m_calcTime << " secs, ";
+    os << getDateString() << "): " << m_strLabel << std::endl;
+  } else if (m_labelType == L_USER) {
+    os << "Note (" <<  getDateString() << "): " << m_strLabel << std::endl;
+  } else {
+    os << "Unknown (" << getDateString() << "): " << m_strLabel << std::endl;
+  }
+}
+
+void
+Array2dFileLabel::printBrief (std::ostringstream& os) const
+{
+  if (m_labelType == L_HISTORY) {
+    os << "History (";
+    if (m_calcTime > 0)
+      os << m_calcTime << " secs, ";
+    os << getDateString().c_str() << "): " << m_strLabel.c_str() << "\n";
+  } else if (m_labelType == L_USER) {
+    os << "Note (" <<  getDateString() << "): " << m_strLabel << "\n";
+  } else {
+    os << "Unknown (" << getDateString() << "): " << m_strLabel << "\n";
+  }
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//
+//     Name: Array2dFile
+//     Purpose: Array2dFiles
+///////////////////////////////////////////////////////////////////////////
+
+
+Array2dFile::Array2dFile (int x, int y, int pixelSize, int pixelFormat, int dataType)
+{
+  init();
+  setArraySize (x, y, pixelSize, pixelFormat, dataType);
+}
+
+Array2dFile::~Array2dFile (void)
+{
+  freeArrays ();
+  for (labelIterator l = m_labels.begin(); l != m_labels.end(); l++)
+    delete *l;
+}
+
+Array2dFile::Array2dFile (void)
+{
+  init();
+}
+
+void
+Array2dFile::init (void)
+{
+  m_pixelSize = 0;
+  m_pixelFormat = PIXEL_INVALID;
+  m_arrayData = NULL;
+  m_imaginaryArrayData = NULL;
+  m_dataType = DATA_TYPE_INVALID;
+  m_nx = 0;
+  m_ny = 0;
+  m_headersize = 0;
+  m_axisIncrementKnown = false;
+  m_axisIncrementX = m_axisIncrementY = 0;
+  m_axisExtentKnown = false;
+  m_minX = m_maxX = m_minY = m_maxY = 0;
+  m_offsetPV = 0;
+  m_scalePV = 1;
+}
+
+
+void
+Array2dFile::setArraySize (int x, int y, int pixelSize, int pixelFormat, int dataType)
+{
+  m_pixelSize = pixelSize;
+  m_pixelFormat = pixelFormat;
+  m_dataType = dataType;
+  setArraySize (x, y);
+}
+
+void
+Array2dFile::setArraySize (int x, int y)
+{
+  m_nx = x;
+  m_ny = y;
+  allocArrays ();
+}
+
+bool
+Array2dFile::reallocComplexToReal ()
+{
+  if (m_dataType != DATA_TYPE_COMPLEX)
+    return false;
+
+  freeArray (m_imaginaryArrayData);
+  m_dataType = DATA_TYPE_REAL;
+
+  return true;
+}
+
+
+bool
+Array2dFile::reallocRealToComplex ()
+{
+  if (m_dataType != DATA_TYPE_REAL)
+    return false;
+
+  allocArray (m_imaginaryArrayData);
+  m_dataType = DATA_TYPE_COMPLEX;
+
+  return true;
+}
+
+
+
+void
+Array2dFile::allocArrays ()
+{
+  if (m_arrayData)
+    freeArray (m_arrayData);
+  if (m_imaginaryArrayData)
+    freeArray (m_imaginaryArrayData);
+
+  allocArray (m_arrayData);
+  if (m_dataType == DATA_TYPE_COMPLEX)
+    allocArray (m_imaginaryArrayData);
+}
+
+void
+Array2dFile::allocArray (unsigned char**& rppData)
+{
+  m_arraySize = m_nx * m_ny * m_pixelSize;
+  rppData = new unsigned char* [m_nx];
+  int columnBytes = m_ny * m_pixelSize;
+  for (unsigned int i = 0; i < m_nx; i++)
+    rppData[i] = new unsigned char [columnBytes];
+}
+
+void
+Array2dFile::freeArrays ()
+{
+  if (m_arrayData)
+    freeArray (m_arrayData);
+
+  if (m_imaginaryArrayData)
+    freeArray (m_imaginaryArrayData);
+
+}
+
+void
+Array2dFile::freeArray (unsigned char**& rppData)
+{
+   for (unsigned int i = 0; i < m_nx; i++)
+      delete rppData[i];
+    delete rppData;
+    rppData = NULL;
+}
+
+
+bool
+Array2dFile::fileWrite (const std::string& filename)
+{
+  return fileWrite (filename.c_str());
+}
+
+bool
+Array2dFile::fileWrite (const char* const filename)
+{
+  m_filename = filename;
+
+  frnetorderstream fs (m_filename.c_str(), std::ios::out | std::ios::in | std::ios::trunc | std::ios::binary);
+  if (fs.fail()) {
+    sys_error (ERR_WARNING, "Error opening file %s for writing [fileCreate]", m_filename.c_str());
+    return false;
+  }
+  if (! headerWrite(fs))
+    return false;
+
+  if (! arrayDataWrite (fs))
+    return false;
+
+  if (! labelsWrite (fs))
+    return false;
+
+  return true;
+}
+
+bool
+Array2dFile::fileRead (const std::string& filename)
+{
+  return fileRead (filename.c_str());
+}
+
+bool
+Array2dFile::fileRead (const char* const filename)
+{
+  m_filename = filename;
+
+  frnetorderstream fs (m_filename.c_str(), std::ios::out | std::ios::in | std::ios::binary);
+
+  if (fs.fail()) {
+    sys_error (ERR_WARNING, "Unable to open file %s [fileRead]", m_filename.c_str());
+    return false;
+  }
+
+  if (! headerRead(fs))
+    return false;
+
+  allocArrays ();
+
+  if (! arrayDataRead(fs))
+    return false;;
+
+  if (! labelsRead (fs))
+    return false;
+
+  return true;
+}
+
+void
+Array2dFile::setAxisIncrement (double incX, double incY)
+{
+  m_axisIncrementKnown = true;
+  m_axisIncrementX = incX;
+  m_axisIncrementY = incY;
+}
+
+void
+Array2dFile::setAxisExtent (double minX, double maxX, double minY, double maxY)
+{
+  m_axisExtentKnown = true;
+  m_minX = minX;
+  m_maxY = maxX;
+  m_minX = minX;
+  m_maxY = maxY;
+}
+
+bool
+Array2dFile::headerRead (frnetorderstream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to read header with file closed [headerRead]");
+    return false;
+  }
+
+  fs.seekg (0);
+  kuint16 file_signature;
+
+  fs.readInt16 (m_headersize);
+  fs.readInt16 (file_signature);
+  fs.readInt16 (m_pixelFormat);
+  fs.readInt16 (m_pixelSize);
+  fs.readInt16 (m_numFileLabels);
+  fs.readInt32 (m_nx);
+  fs.readInt32 (m_ny);
+  fs.readInt16 (m_dataType);
+  fs.readInt16 (m_axisIncrementKnown);
+  fs.readFloat64 (m_axisIncrementX);
+  fs.readFloat64 (m_axisIncrementY);
+  fs.readInt16 (m_axisExtentKnown);
+  fs.readFloat64 (m_minX);
+  fs.readFloat64 (m_maxX);
+  fs.readFloat64 (m_minY);
+  fs.readFloat64 (m_maxY);
+  fs.readFloat64 (m_offsetPV);
+  fs.readFloat64 (m_scalePV);
+
+  int read_m_headersize = fs.tellg();
+  if (read_m_headersize != m_headersize) {
+    sys_error (ERR_WARNING, "Read m_headersize %d != file m_headersize %d", read_m_headersize, m_headersize);
+    return false;
+  }
+  if (file_signature != m_signature) {
+    sys_error (ERR_WARNING, "File signature %d != true signature %d", file_signature, m_signature);
+    return false;
+  }
+
+  return ! fs.fail();
+}
+
+
+bool
+Array2dFile::headerWrite (frnetorderstream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to write header with ! fs");
+    return false;
+  }
+
+  m_numFileLabels = m_labels.size();
+
+  fs.seekp (0);
+  fs.writeInt16 (m_headersize);
+  fs.writeInt16 (m_signature);
+  fs.writeInt16 (m_pixelFormat);
+  fs.writeInt16 (m_pixelSize);
+  fs.writeInt16 (m_numFileLabels);
+  fs.writeInt32 (m_nx);
+  fs.writeInt32 (m_ny);
+  fs.writeInt16 (m_dataType);
+  fs.writeInt16 (m_axisIncrementKnown);
+  fs.writeFloat64 (m_axisIncrementX);
+  fs.writeFloat64 (m_axisIncrementY);
+  fs.writeInt16 (m_axisExtentKnown);
+  fs.writeFloat64 (m_minX);
+  fs.writeFloat64 (m_maxX);
+  fs.writeFloat64 (m_minY);
+  fs.writeFloat64 (m_maxY);
+  fs.writeFloat64 (m_offsetPV);
+  fs.writeFloat64 (m_scalePV);
+
+  m_headersize = static_cast<kuint16>(fs.tellp());
+  fs.seekp (0);
+  fs.writeInt16 (m_headersize);
+
+  return ! fs.fail();
+}
+
+
+bool
+Array2dFile::arrayDataWrite (frnetorderstream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to arrayDataWrite with !fs");
+    return false;
+  }
+
+  if (! m_arrayData)
+    return false;
+
+  fs.seekp (m_headersize);
+  int columnSize = m_ny * m_pixelSize;
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    unsigned char* ptrColumn = m_arrayData[ix];
+    if (NativeBigEndian()) {
+      for (unsigned int iy = 0; iy < m_ny; iy++) {
+        ConvertReverseNetworkOrder (ptrColumn, m_pixelSize);
+        fs.write (reinterpret_cast<const char*>(ptrColumn), m_pixelSize);
+        ptrColumn += m_pixelSize;
+      }
+    } else
+      fs.write (reinterpret_cast<const char*>(ptrColumn), columnSize);
+  }
+  if (m_dataType == DATA_TYPE_COMPLEX) {
+    for (unsigned int ix = 0; ix < m_nx; ix++) {
+      unsigned char* ptrColumn = m_imaginaryArrayData[ix];
+      if (NativeBigEndian()) {
+        for (unsigned int iy = 0; iy < m_ny; iy++) {
+          ConvertReverseNetworkOrder (ptrColumn, m_pixelSize);
+          fs.write (reinterpret_cast<const char*>(ptrColumn), m_pixelSize);
+          ptrColumn += m_pixelSize;
+        }
+      } else
+        fs.write (reinterpret_cast<const char*>(ptrColumn), columnSize);
+    }
+  }
+
+  return true;
+}
+
+
+bool
+Array2dFile::arrayDataRead (frnetorderstream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to arrayDataRead with ! fs");
+    return false;
+  }
+
+  if (! m_arrayData)
+    return false;
+
+  fs.seekg (m_headersize);
+  int columnSize = m_ny * m_pixelSize;
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    unsigned char* ptrColumn = m_arrayData[ix];
+    if (NativeBigEndian()) {
+      for (unsigned int iy = 0; iy < m_ny; iy++) {
+        fs.read (reinterpret_cast<char*>(ptrColumn), m_pixelSize);
+        ConvertReverseNetworkOrder (ptrColumn, m_pixelSize);
+        ptrColumn += m_pixelSize;
+      }
+    } else
+      fs.read (reinterpret_cast<char*>(ptrColumn), columnSize);
+  }
+  if (m_dataType == DATA_TYPE_COMPLEX) {
+    for (unsigned int ix = 0; ix < m_nx; ix++) {
+      unsigned char* ptrColumn = m_imaginaryArrayData[ix];
+      if (NativeBigEndian()) {
+        for (unsigned int iy = 0; iy < m_ny; iy++) {
+          fs.read (reinterpret_cast<char*>(ptrColumn), m_pixelSize);
+          ConvertReverseNetworkOrder (ptrColumn, m_pixelSize);
+          ptrColumn += m_pixelSize;
+        }
+      } else
+        fs.read (reinterpret_cast<char*>(ptrColumn), columnSize);
+    }
+  }
+
+  return true;
+}
+
+bool
+Array2dFile::labelsRead (frnetorderstream& fs)
+{
+  off_t pos = m_headersize + m_arraySize;
+  fs.seekg (pos);
+  if (fs.fail())
+    return false;
+
+  for (int i = 0; i < m_numFileLabels; i++) {
+    kuint16 labelType, year, month, day, hour, minute, second;
+    kfloat64 calcTime;
+
+    fs.readInt16 (labelType);
+    fs.readInt16 (year);
+    fs.readInt16 (month);
+    fs.readInt16 (day);
+    fs.readInt16 (hour);
+    fs.readInt16 (minute);
+    fs.readInt16 (second);
+    fs.readFloat64 (calcTime);
+
+    kuint16 strLength;
+    fs.readInt16 (strLength);
+    char* pszLabelStr = new char [strLength+1];
+    fs.read (pszLabelStr, strLength);
+    pszLabelStr[strLength] = 0;
+
+    Array2dFileLabel* pLabel = new Array2dFileLabel (labelType, pszLabelStr, calcTime);
+    delete pszLabelStr;
+
+    pLabel->setDateTime (year, month, day, hour, minute, second);
+    m_labels.push_back (pLabel);
+  }
+
+  return true;
+}
+
+bool
+Array2dFile::labelsWrite (frnetorderstream& fs)
+{
+  off_t pos = m_headersize + m_arraySize;
+  fs.seekp (pos);
+
+  for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) {
+    const Array2dFileLabel& label = **l;
+    kuint16 labelType = label.getLabelType();
+    kfloat64 calcTime = label.getCalcTime();
+    const char* const labelString = label.getLabelString().c_str();
+    int year, month, day, hour, minute, second;
+    kuint16 yearBuf, monthBuf, dayBuf, hourBuf, minuteBuf, secondBuf;
+
+    label.getDateTime (year, month, day, hour, minute, second);
+    yearBuf = year; monthBuf = month; dayBuf = day;
+    hourBuf = hour; minuteBuf = minute; secondBuf = second;
+
+    fs.writeInt16 (labelType);
+    fs.writeInt16 (yearBuf);
+    fs.writeInt16 (monthBuf);
+    fs.writeInt16 (dayBuf);
+    fs.writeInt16 (hourBuf);
+    fs.writeInt16 (minuteBuf);
+    fs.writeInt16 (secondBuf);
+    fs.writeFloat64 (calcTime);
+    kuint16 strlength = strlen (labelString);
+    fs.writeInt16 (strlength);
+    fs.write (labelString, strlength);
+  }
+
+  return true;
+}
+
+void
+Array2dFile::labelAdd (const char* const lstr, double calc_time)
+{
+  labelAdd (Array2dFileLabel::L_HISTORY, lstr, calc_time);
+}
+
+
+void
+Array2dFile::labelAdd (int type, const char* const lstr, double calc_time)
+{
+  Array2dFileLabel label (type, lstr, calc_time);
+
+  labelAdd (label);
+}
+
+
+void
+Array2dFile::labelAdd (const Array2dFileLabel& label)
+{
+  Array2dFileLabel* pLabel = new Array2dFileLabel(label);
+
+  m_labels.push_back (pLabel);
+}
+
+void
+Array2dFile::labelsCopy (const Array2dFile& copyFile, const char* const pszId)
+{
+  std::string id;
+  if (pszId)
+    id = pszId;
+  for (unsigned int i = 0; i < copyFile.getNumLabels(); i++) {
+    Array2dFileLabel l (copyFile.labelGet (i));
+    std::string lstr = l.getLabelString();
+    lstr = id + lstr;
+    l.setLabelString (lstr);
+    labelAdd (l);
+  }
+}
+
+void
+Array2dFile::arrayDataClear (void)
+{
+  if (m_arrayData) {
+    int columnSize = m_ny * m_pixelSize;
+    for (unsigned int ix = 0; ix < m_nx; ix++)
+      memset (m_arrayData[ix], 0, columnSize);
+  }
+  if (m_imaginaryArrayData) {
+    int columnSize = m_ny * m_pixelSize;
+    for (unsigned int ix = 0; ix < m_nx; ix++)
+      memset (m_arrayData[ix], 0, columnSize);
+  }
+}
+
+void
+Array2dFile::printLabels (std::ostream& os) const
+{
+  for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) {
+    const Array2dFileLabel& label = **l;
+
+    label.print (os);
+    os << std::endl;
+  }
+}
+
+void
+Array2dFile::printLabelsBrief (std::ostream& os) const
+{
+  for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) {
+    const Array2dFileLabel& label = **l;
+
+    label.printBrief (os);
+  }
+}
+
+void
+Array2dFile::printLabelsBrief (std::ostringstream& os) const
+{
+  for (constLabelIterator l = m_labels.begin(); l != m_labels.end(); l++) {
+    const Array2dFileLabel& label = **l;
+
+    label.printBrief (os);
+  }
+}
+
+
+const Array2dFileLabel&
+Array2dFile::labelGet (int i) const
+{
+  return *m_labels[i];
+}
diff --git a/libctsim/backprojectors.cpp b/libctsim/backprojectors.cpp
new file mode 100644
index 0000000..b492861
--- /dev/null
+++ b/libctsim/backprojectors.cpp
@@ -0,0 +1,744 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:         backprojectors.cpp         Classes for backprojection
+**   Programmer:   Kevin Rosenberg
+**   Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include "interpolator.h"
+
+const int Backprojector::BPROJ_INVALID = -1;
+const int Backprojector::BPROJ_TRIG = 0;
+const int Backprojector::BPROJ_TABLE = 1;
+const int Backprojector::BPROJ_DIFF = 2;
+const int Backprojector::BPROJ_IDIFF = 3;
+
+const char* const Backprojector::s_aszBackprojectName[] =
+{
+  "trig",
+  "table",
+  "diff",
+  "idiff",
+};
+
+const char* const Backprojector::s_aszBackprojectTitle[] =
+{
+  "Direct Trigometric",
+  "Trigometric Table",
+  "Difference Iteration",
+  "Integer Difference Iteration",
+};
+
+const int Backprojector::s_iBackprojectCount = sizeof(s_aszBackprojectName) / sizeof(const char*);
+
+const int Backprojector::INTERP_INVALID = -1;
+const int Backprojector::INTERP_NEAREST = 0;
+const int Backprojector::INTERP_LINEAR = 1;
+const int Backprojector::INTERP_CUBIC = 2;
+const int Backprojector::INTERP_FREQ_PREINTERPOLATION = 3;
+#if HAVE_BSPLINE_INTERP
+const int Backprojector::INTERP_BSPLINE = 4;
+const int Backprojector::INTERP_1BSPLINE = 5;
+const int Backprojector::INTERP_2BSPLINE = 6;
+const int Backprojector::INTERP_3BSPLINE = 7;
+#endif
+
+const char* const Backprojector::s_aszInterpName[] =
+{
+  "nearest",
+  "linear",
+  "cubic",
+#if HAVE_FREQ_PREINTERP
+  "freq_preinterpolationj",
+#endif
+#if HAVE_BSPLINE_INTERP
+  "bspline",
+  "1bspline",
+  "2bspline",
+  "3bspline",
+#endif
+};
+
+const char* const Backprojector::s_aszInterpTitle[] =
+{
+  "Nearest",
+  "Linear",
+  "Cubic",
+#if HAVE_FREQ_PREINTERP
+  "Frequency Preinterpolation",
+#endif
+#if HAVE_BSPLINE_INTERP
+  "B-Spline",
+  "B-Spline 1st Order",
+  "B-Spline 2nd Order",
+  "B-Spline 3rd Order",
+#endif
+};
+
+const int Backprojector::s_iInterpCount = sizeof(s_aszInterpName) / sizeof(const char*);
+
+
+
+Backprojector::Backprojector (const Projections& proj, ImageFile& im, const char* const backprojName,
+                              const char* const interpName, const int interpFactor, const ReconstructionROI* pROI)
+{
+  m_fail = false;
+  m_pBackprojectImplem = NULL;
+
+  initBackprojector (proj, im, backprojName, interpName, interpFactor, pROI);
+}
+
+void
+Backprojector::BackprojectView (const double* const viewData, const double viewAngle)
+{
+  if (m_pBackprojectImplem != NULL)
+    m_pBackprojectImplem->BackprojectView (viewData, viewAngle);
+}
+
+void
+Backprojector::PostProcessing()
+{
+  if (m_pBackprojectImplem != NULL)
+    m_pBackprojectImplem->PostProcessing();
+}
+
+Backprojector::~Backprojector ()
+{
+  delete m_pBackprojectImplem;
+}
+
+// FUNCTION IDENTIFICATION
+//     Backproject* projector = selectBackprojector (...)
+//
+// PURPOSE
+//     Selects a backprojector based on BackprojType
+//     and initializes the backprojector
+
+bool
+Backprojector::initBackprojector (const Projections& proj, ImageFile& im, const char* const backprojName,
+                                  const char* const interpName, const int interpFactor, const ReconstructionROI* pROI)
+{
+  m_nameBackproject = backprojName;
+  m_nameInterpolation = interpName;
+  m_pBackprojectImplem = NULL;
+  m_idBackproject = convertBackprojectNameToID (backprojName);
+  if (m_idBackproject == BPROJ_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid backprojection name ";
+    m_failMessage += backprojName;
+  }
+  m_idInterpolation = convertInterpNameToID (interpName);
+  if (m_idInterpolation == INTERP_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid interpolation name ";
+    m_failMessage += interpName;
+  }
+
+  if (m_fail || m_idBackproject == BPROJ_INVALID || m_idInterpolation == INTERP_INVALID) {
+    m_fail = true;
+    return false;
+  }
+
+  if (proj.geometry() == Scanner::GEOMETRY_EQUILINEAR)
+    m_pBackprojectImplem = static_cast<Backproject*>(new BackprojectEquilinear(proj, im, m_idInterpolation, interpFactor, pROI));
+  else if (proj.geometry() == Scanner::GEOMETRY_EQUIANGULAR)
+    m_pBackprojectImplem = static_cast<Backproject*>(new BackprojectEquiangular(proj, im, m_idInterpolation, interpFactor, pROI));
+  else if (proj.geometry() == Scanner::GEOMETRY_PARALLEL) {
+    if (m_idBackproject == BPROJ_TRIG)
+      m_pBackprojectImplem = static_cast<Backproject*>(new BackprojectTrig (proj, im, m_idInterpolation, interpFactor, pROI));
+    else if (m_idBackproject == BPROJ_TABLE)
+      m_pBackprojectImplem = static_cast<Backproject*>(new BackprojectTable (proj, im, m_idInterpolation, interpFactor, pROI));
+    else if (m_idBackproject == BPROJ_DIFF)
+      m_pBackprojectImplem = static_cast<Backproject*>(new BackprojectDiff (proj, im, m_idInterpolation, interpFactor, pROI));
+    else if (m_idBackproject == BPROJ_IDIFF)
+      m_pBackprojectImplem = static_cast<Backproject*>(new BackprojectIntDiff (proj, im, m_idInterpolation, interpFactor, pROI));
+  } else {
+    m_fail = true;
+    m_failMessage = "Unable to select a backprojection method [Backprojector::initBackprojector]";
+    return false;
+  }
+
+  return true;
+}
+
+
+int
+Backprojector::convertBackprojectNameToID (const char* const backprojName)
+{
+  int backprojID = BPROJ_INVALID;
+
+  for (int i = 0; i < s_iBackprojectCount; i++)
+    if (strcasecmp (backprojName, s_aszBackprojectName[i]) == 0) {
+      backprojID = i;
+      break;
+    }
+
+    return (backprojID);
+}
+
+const char*
+Backprojector::convertBackprojectIDToName (int bprojID)
+{
+  static const char *bprojName = "";
+
+  if (bprojID >= 0 && bprojID < s_iBackprojectCount)
+    return (s_aszBackprojectName[bprojID]);
+
+  return (bprojName);
+}
+
+const char*
+Backprojector::convertBackprojectIDToTitle (const int bprojID)
+{
+  static const char *bprojTitle = "";
+
+  if (bprojID >= 0 && bprojID < s_iBackprojectCount)
+    return (s_aszBackprojectTitle[bprojID]);
+
+  return (bprojTitle);
+}
+
+
+int
+Backprojector::convertInterpNameToID (const char* const interpName)
+{
+  int interpID = INTERP_INVALID;
+
+  for (int i = 0; i < s_iInterpCount; i++)
+    if (strcasecmp (interpName, s_aszInterpName[i]) == 0) {
+      interpID = i;
+      break;
+    }
+
+    return (interpID);
+}
+
+const char*
+Backprojector::convertInterpIDToName (const int interpID)
+{
+  static const char *interpName = "";
+
+  if (interpID >= 0 && interpID < s_iInterpCount)
+    return (s_aszInterpName[interpID]);
+
+  return (interpName);
+}
+
+const char*
+Backprojector::convertInterpIDToTitle (const int interpID)
+{
+  static const char *interpTitle = "";
+
+  if (interpID >= 0 && interpID < s_iInterpCount)
+    return (s_aszInterpTitle[interpID]);
+
+  return (interpTitle);
+}
+
+
+
+// CLASS IDENTICATION
+//   Backproject
+//
+// PURPOSE
+//   Pure virtual base class for all backprojectors.
+
+Backproject::Backproject (const Projections& proj, ImageFile& im, int interpType, const int interpFactor,
+                          const ReconstructionROI* pROI)
+: proj(proj), im(im), interpType(interpType), m_interpFactor(interpFactor), m_bPostProcessingDone(false)
+{
+  detInc = proj.detInc();
+  nDet = proj.nDet();
+  iDetCenter = (nDet - 1) / 2;  // index refering to L=0 projection
+
+  if (proj.geometry() == Scanner::GEOMETRY_PARALLEL)
+    rotScale = PI / proj.nView(); // scale by number of PI rotations
+  else if (proj.geometry() == Scanner::GEOMETRY_EQUIANGULAR || proj.geometry() == Scanner::GEOMETRY_EQUILINEAR)
+    rotScale =  (2 * PI) / proj.nView(); // scale by number of 2PI rotations
+  else
+    sys_error (ERR_SEVERE, "Invalid geometry type %d [Backproject::Backproject]", proj.geometry());
+
+  v = im.getArray();
+  nx = im.nx();
+  ny = im.ny();
+  im.arrayDataClear();
+
+  xMin = -proj.phmLen() / 2;      // Retangular coords of phantom
+  xMax = xMin + proj.phmLen();
+  yMin = -proj.phmLen() / 2;
+  yMax = yMin + proj.phmLen();
+
+  if (pROI) {
+    if (pROI->m_dXMin > xMin)
+      xMin = pROI->m_dXMin;
+    if (pROI->m_dXMax < xMax)
+      xMax = pROI->m_dXMax;
+    if (pROI->m_dYMin > yMin)
+      yMin = pROI->m_dYMin;
+    if (pROI->m_dYMax < yMax)
+      yMax = pROI->m_dYMax;
+
+    if (xMin > xMax) {
+      double temp = xMin;
+      xMin = xMax;
+      xMax = temp;
+    }
+    if (yMin > yMax) {
+      double temp = yMin;
+      yMin = yMax;
+      yMax = temp;
+    }
+  }
+
+  xInc = (xMax - xMin) / nx;    // size of cells
+  yInc = (yMax - yMin) / ny;
+
+  im.setAxisIncrement (xInc, yInc);
+  im.setAxisExtent (xMin, xMax, yMin, yMax);
+
+  m_dFocalLength = proj.focalLength();
+  m_dSourceDetectorLength = proj.sourceDetectorLength();
+}
+
+Backproject::~Backproject ()
+{}
+
+void
+Backproject::PostProcessing()
+{
+  m_bPostProcessingDone = true;
+}
+
+void
+Backproject::ScaleImageByRotIncrement ()
+{
+  for (int ix = 0; ix < nx; ix++)
+    for (int iy = 0; iy < ny; iy++)
+      v[ix][iy] *= rotScale;
+}
+
+void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, double r, double phi, double L, int iDetPos)
+{
+  sys_error (ERR_WARNING, "r=%f, phi=%f", r, phi);
+  errorIndexOutsideDetector (ix, iy, theta, L, iDetPos);
+}
+
+void Backproject::errorIndexOutsideDetector (int ix, int iy, double theta, double L, int iDetPos)
+{
+#if 1
+  std::ostringstream os;
+  os << "ix=" << ix << ", iy=" << iy << ", theta=" << theta << ", L=" << L << ", detinc=" << detInc << "\n";
+  os << "ndet=" << nDet << ", detInc=" << detInc << ", iDetCenter=" << iDetCenter << "\n";
+  os << "xMin=" << xMin << ", xMax=" << xMax << ", xInc=" << xInc << "\n";
+  os << "yMin=" << yMin << ", yMax=" << yMax << ", yInc=" << yInc << "\n";
+  os << "iDetPos index outside bounds: " << iDetPos << " [backprojector]";;
+
+  sys_error (ERR_WARNING, os.str().c_str());
+#endif
+}
+
+
+// CLASS IDENTICATION
+//   BackprojectTrig
+//
+// PURPOSE
+//   Uses trigometric functions at each point in image for backprojection.
+
+void
+BackprojectTrig::BackprojectView (const double* const filteredProj, const double view_angle)
+{
+  double theta = view_angle;
+
+  CubicPolyInterpolator* pCubicInterp = NULL;
+  if (interpType == Backprojector::INTERP_CUBIC)
+    pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet);
+
+  double x = xMin + xInc / 2;   // Rectang coords of center of pixel
+  for (int ix = 0; ix < nx; x += xInc, ix++) {
+    double y = yMin + yInc / 2;
+    for (int iy = 0; iy < ny; y += yInc, iy++) {
+      double r = sqrt (x * x + y * y);   // distance of cell from center
+      double phi = atan2 (y, x);         // angle of cell from center
+      double L = r * cos (theta - phi);  // position on detector
+
+      if (interpType == Backprojector::INTERP_NEAREST) {
+        int iDetPos = iDetCenter + nearest<int> (L / detInc); // calc'd index in the filter raysum array
+
+        if (iDetPos >= 0 && iDetPos < nDet)
+          v[ix][iy] += rotScale * filteredProj[iDetPos];
+      } else if (interpType == Backprojector::INTERP_LINEAR) {
+        double p = L / detInc;  // position along detector
+        double pFloor = floor (p);
+        int iDetPos = iDetCenter + static_cast<int>(pFloor);
+        double frac = p - pFloor;       // fraction distance from det
+        if (iDetPos >= 0 && iDetPos < nDet - 1)
+          v[ix][iy] += rotScale * ((1-frac) * filteredProj[iDetPos] + frac * filteredProj[iDetPos+1]);
+      } else if (interpType == Backprojector::INTERP_CUBIC) {
+        double p = iDetCenter + (L / detInc);   // position along detector
+        if (p >= 0 && p < nDet)
+          v[ix][iy] += rotScale * pCubicInterp->interpolate (p);
+      }
+    }
+  }
+
+  if (interpType == Backprojector::INTERP_CUBIC)
+    delete pCubicInterp;
+}
+
+
+// CLASS IDENTICATION
+//   BackprojectTable
+//
+// PURPOSE
+//   Precalculates trigometric function value for each point in image for backprojection.
+
+BackprojectTable::BackprojectTable (const Projections& proj, ImageFile& im, int interpType,
+                                    const int interpFactor, const ReconstructionROI* pROI)
+: Backproject (proj, im, interpType, interpFactor, pROI)
+{
+  arrayR.initSetSize (im.nx(), im.ny());
+  arrayPhi.initSetSize (im.nx(), im.ny());
+  r = arrayR.getArray();
+  phi = arrayPhi.getArray();
+
+  double x, y;                  // Rectang coords of center of pixel
+  int ix, iy;
+  for (x = xMin + xInc / 2, ix = 0; ix < nx; x += xInc, ix++)
+    for (y = yMin + yInc / 2, iy = 0; iy < ny; y += yInc, iy++) {
+      r[ix][iy] = sqrt (x * x + y * y);
+      phi[ix][iy] = atan2 (y, x);
+    }
+}
+
+BackprojectTable::~BackprojectTable ()
+{
+}
+
+void
+BackprojectTable::PostProcessing()
+{
+  if (! m_bPostProcessingDone) {
+    ScaleImageByRotIncrement();
+    m_bPostProcessingDone = true;
+  }
+}
+
+void
+BackprojectTable::BackprojectView (const double* const filteredProj, const double view_angle)
+{
+  double theta = view_angle;
+
+  CubicPolyInterpolator* pCubicInterp = NULL;
+  if (interpType == Backprojector::INTERP_CUBIC)
+    pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet);
+
+  for (int ix = 0; ix < nx; ix++) {
+    ImageFileColumn pImCol = v[ix];
+
+    for (int iy = 0; iy < ny; iy++) {
+      double L = r[ix][iy] * cos (theta - phi[ix][iy]);
+
+      if (interpType == Backprojector::INTERP_NEAREST) {
+        int iDetPos = iDetCenter + nearest<int>(L / detInc);    // calc index in the filtered raysum vector
+
+        if (iDetPos >= 0 && iDetPos < nDet)
+          pImCol[iy] += filteredProj[iDetPos];
+      } else if (interpType == Backprojector::INTERP_LINEAR) {
+        double dPos = L / detInc;               // position along detector
+        double dPosFloor = floor (dPos);
+        int iDetPos = iDetCenter + static_cast<int>(dPosFloor);
+        double frac = dPos - dPosFloor; // fraction distance from det
+        if (iDetPos >= 0 && iDetPos < nDet - 1)
+          pImCol[iy] += ((1-frac) * filteredProj[iDetPos] + frac * filteredProj[iDetPos+1]);
+      } else if (interpType == Backprojector::INTERP_CUBIC) {
+        double p = iDetCenter + (L / detInc);   // position along detector
+        if (p >= 0 && p < nDet)
+          pImCol[iy] += pCubicInterp->interpolate (p);
+      }
+    }   // end for y
+  }     // end for x
+
+  if (interpType == Backprojector::INTERP_CUBIC)
+    delete pCubicInterp;
+}
+
+
+// CLASS IDENTICATION
+//   BackprojectDiff
+//
+// PURPOSE
+//   Backprojects by precalculating the change in L position for each x & y step in the image.
+//   Iterates in x & y direction by adding difference in L position
+
+BackprojectDiff::BackprojectDiff (const Projections& proj, ImageFile& im, int interpType,
+                                  const int interpFactor, const ReconstructionROI* pROI)
+:  Backproject (proj, im, interpType, interpFactor, pROI)
+{
+  // calculate center of first pixel v[0][0]
+  double x = xMin + xInc / 2;
+  double y = yMin + yInc / 2;
+  start_r = sqrt (x * x + y * y);
+  start_phi = atan2 (y, x);
+
+  im.arrayDataClear();
+}
+
+BackprojectDiff::~BackprojectDiff ()
+{
+}
+
+void
+BackprojectDiff::PostProcessing()
+{
+  if (! m_bPostProcessingDone) {
+    ScaleImageByRotIncrement();
+    m_bPostProcessingDone = true;
+  }
+}
+
+void
+BackprojectDiff::BackprojectView (const double* const filteredProj, const double view_angle)
+{
+  double theta = view_angle;
+
+  // Distance between detectors for an angle given in units of detectors
+  double det_dx = xInc * cos (theta) / detInc;
+  double det_dy = yInc * sin (theta) / detInc;
+
+  // calculate detPosition for first point in image (ix=0, iy=0)
+  double detPosColStart = iDetCenter + start_r * cos (theta - start_phi) / detInc;
+
+  CubicPolyInterpolator* pCubicInterp = NULL;
+  double* deltaFilteredProj = NULL;
+  if (interpType == Backprojector::INTERP_LINEAR) {
+    // precalculate scaled difference for linear interpolation
+    deltaFilteredProj = new double [nDet];
+    for (int i = 0; i < nDet - 1; i++)
+      deltaFilteredProj[i] = filteredProj[i+1] - filteredProj[i];
+    deltaFilteredProj[nDet - 1] = 0;  // last detector
+  } else if (interpType == Backprojector::INTERP_CUBIC) {
+    pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet);
+  }
+
+  int iLastDet = nDet - 1;
+  for (int ix = 0; ix < nx; ix++, detPosColStart += det_dx) {
+    double curDetPos = detPosColStart;
+    ImageFileColumn pImCol = v[ix];
+
+    for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
+      if (interpType == Backprojector::INTERP_NEAREST) {
+        int iDetPos = nearest<int> (curDetPos); // calc index in the filtered raysum vector
+
+        if (iDetPos >= 0 && iDetPos < nDet)
+          *pImCol++ += filteredProj[iDetPos];
+      } else if (interpType == Backprojector::INTERP_LINEAR) {
+        double detPosFloor = floor (curDetPos);
+        int iDetPos = static_cast<int>(detPosFloor);
+        double frac = curDetPos - detPosFloor;  // fraction distance from det
+        if (iDetPos >= 0 && iDetPos <= iLastDet)
+            *pImCol++ += filteredProj[iDetPos] + (frac * deltaFilteredProj[iDetPos]);
+      } else if (interpType == Backprojector::INTERP_CUBIC) {
+        double p = curDetPos;   // position along detector
+        if (p >= 0 && p < nDet)
+          *pImCol++  += pCubicInterp->interpolate (p);
+      }
+    }   // end for y
+  }     // end for x
+
+  if (interpType == Backprojector::INTERP_LINEAR)
+    delete deltaFilteredProj;
+  else if (interpType == Backprojector::INTERP_CUBIC)
+    delete pCubicInterp;
+}
+
+
+// CLASS IDENTICATION
+//   BackprojectIntDiff
+//
+// PURPOSE
+//   Highly optimized and integer version of BackprojectDiff
+
+void
+BackprojectIntDiff::BackprojectView (const double* const filteredProj, const double view_angle)
+{
+  double theta = view_angle;  // add half PI to view angle to get perpendicular theta angle
+#if SIZEOF_LONG == 4
+  static const int scaleShift = 16;
+#elif SIZEOF_LONG == 8
+  static const int scaleShift = 32;
+#endif
+  static const long scale = (1L << scaleShift);
+  static const long scaleBitmask = scale - 1;
+  static const long halfScale = scale / 2;
+  static const double dInvScale = 1. / scale;
+
+  const long det_dx = nearest<long> (xInc * cos (theta) / detInc * scale);
+  const long det_dy = nearest<long> (yInc * sin (theta) / detInc * scale);
+
+  // calculate L for first point in image (0, 0)
+  long detPosColStart = nearest<long> ((start_r * cos (theta - start_phi) / detInc + iDetCenter) * scale);
+
+  double* deltaFilteredProj = NULL;
+  CubicPolyInterpolator* pCubicInterp = NULL;
+  if (interpType == Backprojector::INTERP_LINEAR) {
+    // precalculate scaled difference for linear interpolation
+    deltaFilteredProj = new double [nDet];
+    for (int i = 0; i < nDet - 1; i++)
+      deltaFilteredProj[i] = (filteredProj[i+1] - filteredProj[i]) * dInvScale;
+    deltaFilteredProj[nDet - 1] = 0;  // last detector
+  } else if (interpType == Backprojector::INTERP_CUBIC) {
+    pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet);
+  }
+
+  int iLastDet = nDet - 1;
+  for (int ix = 0; ix < nx; ix++, detPosColStart += det_dx) {
+    long curDetPos = detPosColStart;
+    ImageFileColumn pImCol = v[ix];
+
+    if (interpType == Backprojector::INTERP_NEAREST) {
+      for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
+        const int iDetPos = (curDetPos + halfScale) >> scaleShift;
+        if (iDetPos >= 0 && iDetPos <= iLastDet)
+          *pImCol++ += filteredProj[iDetPos];
+        else
+          pImCol++;
+
+      } // end for iy
+    } else if (interpType == Backprojector::INTERP_FREQ_PREINTERPOLATION) {
+      for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
+        const int iDetPos = ((curDetPos + halfScale) >> scaleShift) * m_interpFactor;
+        if (iDetPos >= 0 && iDetPos <= iLastDet)
+          *pImCol++ += filteredProj[iDetPos];
+        else
+          pImCol++;
+      } // end for iy
+    } else if (interpType == Backprojector::INTERP_LINEAR) {
+      for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
+        const long iDetPos = curDetPos >> scaleShift;
+        if (iDetPos >= 0 && iDetPos <= iLastDet) {
+          const long detRemainder = curDetPos & scaleBitmask;
+          *pImCol++ += filteredProj[iDetPos] + (detRemainder * deltaFilteredProj[iDetPos]);
+        } else
+          pImCol++;
+      } // end for iy
+    } else if (interpType == Backprojector::INTERP_CUBIC) {
+      for (int iy = 0; iy < ny; iy++, curDetPos += det_dy) {
+        *pImCol++ += pCubicInterp->interpolate (static_cast<double>(curDetPos) / scale);
+      }
+    } // end Cubic
+  } // end for ix
+
+  if (interpType == Backprojector::INTERP_LINEAR)
+    delete deltaFilteredProj;
+  else if (interpType == Backprojector::INTERP_CUBIC)
+    delete pCubicInterp;
+}
+
+
+void
+BackprojectEquiangular::BackprojectView (const double* const filteredProj, const double view_angle)
+{
+  double beta = view_angle;
+
+  CubicPolyInterpolator* pCubicInterp = NULL;
+  if (interpType == Backprojector::INTERP_CUBIC)
+    pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet);
+
+  for (int ix = 0; ix < nx; ix++) {
+    ImageFileColumn pImCol = v[ix];
+
+    for (int iy = 0; iy < ny; iy++) {
+      double dAngleDiff = beta - phi[ix][iy];
+      double rcos_t = r[ix][iy] * cos (dAngleDiff);
+      double rsin_t = r[ix][iy] * sin (dAngleDiff);
+      double dFLPlusSin = m_dFocalLength + rsin_t;
+      double gamma =  atan (rcos_t / dFLPlusSin);
+      double dPos = gamma / detInc;  // position along detector
+      double dL2 = dFLPlusSin * dFLPlusSin + (rcos_t * rcos_t);
+
+      if (interpType == Backprojector::INTERP_NEAREST) {
+        int iDetPos = iDetCenter + nearest<int>(dPos);  // calc index in the filtered raysum vector
+        if (iDetPos >= 0 && iDetPos < nDet)
+          pImCol[iy] += filteredProj[iDetPos] / dL2;
+      } else if (interpType == Backprojector::INTERP_LINEAR) {
+        double dPosFloor = floor (dPos);
+        int iDetPos = iDetCenter + static_cast<int>(dPosFloor);
+        double frac = dPos - dPosFloor; // fraction distance from det
+        if (iDetPos >= 0 && iDetPos < nDet - 1)
+          pImCol[iy] += (filteredProj[iDetPos] + frac * (filteredProj[iDetPos+1] - filteredProj[iDetPos])) / dL2;
+      } else if (interpType == Backprojector::INTERP_CUBIC) {
+        double d = iDetCenter + dPos;           // position along detector
+        if (d >= 0 && d < nDet)
+          pImCol[iy] += pCubicInterp->interpolate (d) / dL2;
+      }
+    }   // end for y
+  }     // end for x
+
+  if (interpType == Backprojector::INTERP_CUBIC)
+    delete pCubicInterp;
+}
+
+void
+BackprojectEquilinear::BackprojectView (const double* const filteredProj, const double view_angle)
+{
+  double beta = view_angle;
+
+  CubicPolyInterpolator* pCubicInterp = NULL;
+  if (interpType == Backprojector::INTERP_CUBIC)
+    pCubicInterp = new CubicPolyInterpolator (filteredProj, nDet);
+
+  for (int ix = 0; ix < nx; ix++) {
+    ImageFileColumn pImCol = v[ix];
+
+    for (int iy = 0; iy < ny; iy++) {
+      double dAngleDiff = beta - phi[ix][iy];
+      double rcos_t = r[ix][iy] * cos (dAngleDiff);
+      double rsin_t = r[ix][iy] * sin (dAngleDiff);
+
+      double dU = (m_dFocalLength + rsin_t) / m_dFocalLength;
+      double dDetPos =  rcos_t / dU;
+      // Scale for imaginary detector that passes through origin of phantom, see Kak-Slaney Figure 3.22.
+      dDetPos *= m_dSourceDetectorLength / m_dFocalLength;
+      double dPos = dDetPos / detInc;  // position along detector array
+
+      if (interpType == Backprojector::INTERP_NEAREST) {
+        int iDetPos = iDetCenter + nearest<int>(dPos);  // calc index in the filtered raysum vector
+        if (iDetPos >= 0 && iDetPos < nDet)
+          pImCol[iy] += (filteredProj[iDetPos] / (dU * dU));
+      } else if (interpType == Backprojector::INTERP_LINEAR) {
+        double dPosFloor = floor (dPos);
+        int iDetPos = iDetCenter + static_cast<int>(dPosFloor);
+        double frac = dPos - dPosFloor; // fraction distance from det
+        if (iDetPos >= 0 && iDetPos < nDet - 1)
+          pImCol[iy] += (filteredProj[iDetPos] + frac * (filteredProj[iDetPos+1] - filteredProj[iDetPos]))
+                           / (dU * dU);
+      } else if (interpType == Backprojector::INTERP_CUBIC) {
+        double d = iDetCenter + dPos;           // position along detector
+        if (d >= 0 && d < nDet)
+          pImCol[iy] += pCubicInterp->interpolate (d) / (dU * dU);
+      }
+    }   // end for y
+  }     // end for x
+
+  if (interpType == Backprojector::INTERP_CUBIC)
+    delete pCubicInterp;
+}
+
diff --git a/libctsim/ctndicom.cpp b/libctsim/ctndicom.cpp
new file mode 100644
index 0000000..29f2f48
--- /dev/null
+++ b/libctsim/ctndicom.cpp
@@ -0,0 +1,474 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:           ctndicomp.cpp
+**  Purpose:      Interface to CTN Dicom classes
+**      Programmer:   Kevin Rosenberg
+**      Date Started: March 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_CTN_DICOM
+
+#include "ctndicom.h"
+#include "imagefile.h"
+#include "projections.h"
+
+
+DicomImporter::DicomImporter (const char* const pszFile)
+  : m_strFilename(pszFile), m_bFail(false), m_iContents(DICOM_CONTENTS_INVALID),
+    m_pImageFile(NULL), m_pProjections(NULL), m_pFile(NULL)
+{
+  unsigned long lOptions = DCM_ORDERLITTLEENDIAN | DCM_FORMATCONVERSION;
+  DCM_Debug (FALSE);
+
+  CONDITION cond = DCM_OpenFile (pszFile, lOptions, &m_pFile);
+  if (cond != DCM_NORMAL) {
+    m_bFail = true;
+    char textbuf [2048];
+    CONDITION cond2 = COND_TopCondition (&cond, textbuf, sizeof(textbuf));
+    cond2 = DCM_NORMAL; // testing
+    if (cond2 != DCM_NORMAL) {
+      m_strFailMessage = "DCM_OpenFile failure: ";
+      m_strFailMessage += m_strFilename;
+    } else
+      m_strFailMessage = textbuf;
+
+    return;
+  }
+
+  unsigned short iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep;
+  DCM_ELEMENT aElemRequired[] = {
+    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows),
+     {reinterpret_cast<char*>(&iNRows)}},
+    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols),
+     {reinterpret_cast<char*>(&iNCols)}},
+    {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated),
+     {reinterpret_cast<char*>(&iBitsAllocated)}},
+    {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored),
+     {reinterpret_cast<char*>(&iBitsStored)}},
+    {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit),
+     {reinterpret_cast<char*>(&iHighBit)}},
+    {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep),
+     {reinterpret_cast<char*>(&iPixRep)}},
+  };
+  int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
+
+  if (DCM_ParseObject (&m_pFile, aElemRequired, nElemRequired, NULL, 0, NULL) == DCM_NORMAL) {
+    loadImage (iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep);
+    return;
+  }
+  U32 lRtnLength;
+  DCM_TAG somatomTag = DCM_MAKETAG(TAG_GROUP_SOMATOM, TAG_MEMBER_SOMATOM_DATA);
+  if (DCM_GetElementSize (&m_pFile, somatomTag, &lRtnLength) == DCM_NORMAL)
+    loadProjections();
+}
+
+void
+DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned short iBitsAllocated,
+                         unsigned short iBitsStored, unsigned short iHighBit, unsigned short iPixRep)
+{
+  U32 lRtnLength;
+  unsigned short iSamplesPerPixel, iPlanarConfig;
+
+  DCM_ELEMENT elemPlanarConfig =
+    {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig),
+     {reinterpret_cast<char*>(&iPlanarConfig)}};
+  DCM_ELEMENT elemSamplesPerPixel =
+    {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1,
+     sizeof(iSamplesPerPixel), {reinterpret_cast<char*>(&iSamplesPerPixel)}};
+
+  if (DCM_ParseObject (&m_pFile, &elemSamplesPerPixel, 1, NULL, 0, NULL) != DCM_NORMAL)
+    iSamplesPerPixel = 1;  // default value
+
+  if (iSamplesPerPixel > 1) {
+    void* ctx = NULL;
+    if (DCM_GetElementValue (&m_pFile, &elemPlanarConfig, &lRtnLength, &ctx) != DCM_NORMAL) {
+      m_bFail = true;
+      m_strFailMessage = "Planar Configuration not specified when iSamplesPerPixel > 1";
+    }
+  }
+
+  char szRescaleSlope[17];
+  char szRescaleIntercept[17];
+  double dRescaleSlope = 1;
+  double dRescaleIntercept = 0;
+  DCM_ELEMENT elemRescaleSlope =
+    {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope),
+     {szRescaleSlope}};
+  DCM_ELEMENT elemRescaleIntercept =
+    {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept),
+     {szRescaleIntercept}};
+  if (DCM_ParseObject (&m_pFile, &elemRescaleSlope, 1, NULL, 0, NULL) == DCM_NORMAL) {
+    if (sscanf (szRescaleSlope, "%lf", &dRescaleSlope) != 1)
+      sys_error (ERR_SEVERE, "Error parsing rescale slope");
+  }
+  if (DCM_ParseObject (&m_pFile, &elemRescaleIntercept, 1, NULL, 0, NULL) == DCM_NORMAL) {
+    if (sscanf (szRescaleIntercept, "%lf", &dRescaleIntercept) != 1)
+      sys_error (ERR_SEVERE, "Error parsing rescale intercept");
+  }
+
+  DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, {NULL}};
+  // Get the actual  pixel data (the only other required element)
+  if (DCM_GetElementSize (&m_pFile, elemPixelData.tag, &lRtnLength) != DCM_NORMAL) {
+    m_bFail = true;
+    m_strFailMessage = "Can't get pixel data size";
+    return;
+  }
+
+  // Check the size of the pixel data to make sure we have the correct amount...
+  unsigned long lRealLength = lRtnLength;
+  unsigned long lCheckLengthInBytes = iNRows * iNCols * iSamplesPerPixel;
+  if (iBitsAllocated == 16)
+    lCheckLengthInBytes *= 2;
+  if (lCheckLengthInBytes > lRealLength) {
+    m_bFail = true;
+    m_strFailMessage = "Too little pixel data supplied";
+    return;
+  }
+  // Now allocate the memory to hold the pixel data and get it from the DICOM file...
+
+  unsigned char* pRawPixels = new unsigned char [lCheckLengthInBytes];
+  elemPixelData.length = lCheckLengthInBytes;
+  elemPixelData.d.ot = pRawPixels;
+
+  void* ctx = NULL;
+  CONDITION cond = DCM_GetElementValue (&m_pFile, &elemPixelData, &lRtnLength, &ctx);
+  if ((cond != DCM_NORMAL) && (cond != DCM_GETINCOMPLETE)) {
+    m_bFail = true;
+    m_strFailMessage = "Can't read pixel data";
+    delete pRawPixels;
+    return;
+  }
+  if ((lCheckLengthInBytes < lRealLength) && (cond != DCM_GETINCOMPLETE)) {
+    m_bFail = true;
+    m_strFailMessage = "Should have gooten incomplete message reading pixel data";
+    delete pRawPixels;
+    return;
+  }
+
+  m_pImageFile = new ImageFile (iNCols, iNRows);
+  ImageFileArray v = m_pImageFile->getArray();
+  double dScale = 1 << iBitsStored;
+  unsigned int iMaskLength = iBitsStored;
+  if (iMaskLength > 8)
+    iMaskLength -= 8;
+  unsigned int iMask = (1 << iMaskLength) - 1;
+  for (int iy = 0; iy < iNRows; iy++) {
+    for (int ix = 0; ix < iNCols; ix++) {
+      if (iBitsAllocated == 8)  {
+        unsigned char cV = pRawPixels[iy * iNRows + ix];
+        v[ix][iy] = (cV & iMask) / dScale;
+      } else if (iBitsAllocated == 16) {
+        unsigned long lBase = (iy * iNRows + ix) * 2;
+        unsigned char cV1 = pRawPixels[lBase];
+        unsigned char cV2 = pRawPixels[lBase+1] & iMask;
+        int iV = cV1 + (cV2 << 8);
+        v[ix][iNRows - 1 - iy] = iV * dRescaleSlope + dRescaleIntercept;
+      }
+    }
+  }
+  m_iContents = DICOM_CONTENTS_IMAGE;
+}
+
+void
+DicomImporter::loadProjections()
+{
+  U32 lRtnLength;
+  void* ctx = NULL;
+
+  unsigned short iNViews, iNDets;
+  DCM_ELEMENT aElemRequired[] = {
+    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNViews),
+     {reinterpret_cast<char*>(&iNViews)}},
+    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNDets),
+     {reinterpret_cast<char*>(&iNDets)}},
+  };
+  int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
+
+  if (DCM_ParseObject (&m_pFile, aElemRequired, nElemRequired, NULL, 0, NULL) != DCM_NORMAL) {
+    m_bFail = true;
+    m_strFailMessage = "Unable to read header for projections";
+    return;
+  }
+
+  DCM_TAG somatomTag = DCM_MAKETAG(TAG_GROUP_SOMATOM, TAG_MEMBER_SOMATOM_DATA);
+  DCM_ELEMENT elemProjections = {somatomTag, DCM_UN, "", 1, 0, {NULL}};
+  if (DCM_GetElementSize (&m_pFile, elemProjections.tag, &lRtnLength) != DCM_NORMAL) {
+    m_bFail = true;
+    m_strFailMessage = "Can't find projection data";
+    return;
+  }
+
+  unsigned char* pRawProjections = new unsigned char [lRtnLength];
+  elemProjections.length = lRtnLength;
+  elemProjections.d.ot = pRawProjections;
+
+  ctx = NULL;
+  CONDITION cond = DCM_GetElementValue (&m_pFile, &elemProjections, &lRtnLength, &ctx);
+  if ((cond != DCM_NORMAL) && (cond != DCM_GETINCOMPLETE)) {
+    m_bFail = true;
+    m_strFailMessage = "Can't read projections data";
+    delete pRawProjections;
+    return;
+  }
+  m_iContents = DICOM_CONTENTS_PROJECTIONS;
+  m_pProjections = new Projections;
+  if (! m_pProjections->initFromSomatomAR_STAR (iNViews, iNDets, pRawProjections, lRtnLength)) {
+    m_bFail = true;
+    m_strFailMessage = "Error converting raw projection data";
+    delete m_pProjections;
+    m_pProjections = NULL;
+  }
+
+  delete pRawProjections;
+}
+
+
+DicomImporter::~DicomImporter()
+{
+  if (m_pFile)
+    DCM_CloseObject (&m_pFile);
+}
+
+
+DicomExporter::DicomExporter (ImageFile* pImageFile)
+: m_pImageFile(pImageFile), m_pObject(NULL)
+{
+  DCM_Debug (FALSE);
+  if (! pImageFile) {
+    m_bFail = true;
+    m_strFailMessage = "Initialized DicomExported with NULL imagefile";
+    return;
+  }
+  m_bFail = ! createDicomObject();
+}
+
+DicomExporter::~DicomExporter ()
+{
+  if (m_pObject)
+    DCM_CloseObject (&m_pObject);
+}
+
+bool
+DicomExporter::writeFile (const char* const pszFilename)
+{
+  if (! m_pObject)
+    return false;
+
+  m_strFilename = pszFilename;
+
+  CONDITION cond = DCM_WriteFile (&m_pObject, DCM_ORDERLITTLEENDIAN, pszFilename);
+  if (cond != DCM_NORMAL) {
+    m_bFail = true;
+    m_strFailMessage = "Error writing DICOM file ";
+    m_strFailMessage += pszFilename;
+    return false;
+  }
+
+  return true;
+}
+
+bool
+DicomExporter::createDicomObject()
+{
+  CONDITION cond = DCM_CreateObject (&m_pObject, 0);
+  if (cond != DCM_NORMAL) {
+    m_bFail = true;
+    m_strFailMessage = "Error creating DICOM object";
+    return false;
+  }
+
+  double dMin, dMax;
+  m_pImageFile->getMinMax (dMin, dMax);
+  double dWidth = dMax - dMin;
+  if (dWidth == 0.)
+    dWidth = 1E-7;
+  double dScale = 65535. / dWidth;
+
+  double dRescaleIntercept = dMin;
+  double dRescaleSlope = 1 / dScale;
+  char szRescaleIntercept[17];
+  char szRescaleSlope[17];
+  snprintf (szRescaleIntercept, sizeof(szRescaleIntercept), "%e", dRescaleIntercept);
+  snprintf (szRescaleSlope, sizeof(szRescaleIntercept), "%e", dRescaleSlope);
+
+  char szCTSimRoot[] = "1.2.826.0.1.3680043.2.284.";
+  char szModality[] = "CT";
+  char szSOPClassUID[65] = "1.2.840.10008.5.4.1.1.2";
+  char szImgPhotometricInterp[] = "MONOCHROME2";
+  char szPixelSpacing[33] = "0\\0";
+  char szRelImageOrientationPatient[100] = "1\\0\\0\\0\\1\\0";
+  char szRelImagePositionPatient[49] = "0\\0\\0";
+  char szAcqKvp[] = "0";
+  char szRelAcquisitionNumber[] = "1";
+  char szRelImageNumber[] = "1";
+  char szIDSOPInstanceUID[65] = "";
+  char szIDManufacturer[] = "CTSim";
+  char szRelPositionRefIndicator[] = "0";
+  char szRelFrameOfReferenceUID[65] = "";
+  char szRelSeriesNumber[] = "1";
+  char szIDAccessionNumber[] = "0";
+  char szRelStudyID[] = "1";
+  char szIDReferringPhysician[] = "NONE";
+  char szIDStudyTime[] = "000000.0";
+  char szIDStudyDate[] = "00000000";
+  char szRelStudyInstanceUID[65] = "";
+  char szPatSex[] = "O";
+  char szPatBirthdate[] = "0000000";
+  char szPatID[] = "NONE";
+  char szPatName[] = "NONE";
+  char szIDImageType[] = "ORIGINAL";
+  char szIDManufacturerModel[65] = "";
+
+  std::ostringstream osPatComments;
+  m_pImageFile->printLabelsBrief (osPatComments);
+  size_t sizePatComments = osPatComments.str().length();
+  char* pszPatComments = new char [sizePatComments+1];
+  strncpy (pszPatComments, osPatComments.str().c_str(), sizePatComments);
+
+  snprintf (szIDSOPInstanceUID, sizeof(szIDSOPInstanceUID), "%s.2.1.6.1", szCTSimRoot);
+  snprintf (szRelStudyInstanceUID, sizeof(szRelStudyInstanceUID), "%s.2.1.6.1.1", szCTSimRoot);
+  snprintf (szRelFrameOfReferenceUID, sizeof(szRelFrameOfReferenceUID), "%s.99", szCTSimRoot);
+#ifdef VERSION
+  snprintf (szIDManufacturerModel, sizeof(szIDManufacturerModel), "VERSION %s", VERSION);
+#endif
+  snprintf (szPixelSpacing, sizeof(szPixelSpacing), "%e\\%e", m_pImageFile->axisIncrementX(), m_pImageFile->axisIncrementY());
+  double minX, maxX, minY, maxY;
+  if (m_pImageFile->getAxisExtent(minX, maxX, minY, maxY)) {
+    minX += m_pImageFile->axisIncrementX() / 2;
+    minY += m_pImageFile->axisIncrementY() / 2;
+    snprintf(szRelImagePositionPatient, sizeof(szRelImagePositionPatient), "%e\\%e\\0", minX, minY);
+  }
+
+  unsigned short iNRows = m_pImageFile->ny();
+  unsigned short iNCols = m_pImageFile->nx();
+  unsigned short iBitsAllocated = 16;
+  unsigned short iBitsStored = 16;
+  unsigned short iHighBit = 15;
+  unsigned short iPixRep = 0;
+  unsigned short iSamplesPerPixel = 1;
+  DCM_ELEMENT aElemRequired[] = {
+    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows),
+     {reinterpret_cast<char*>(&iNRows)}},
+    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols),
+     {reinterpret_cast<char*>(&iNCols)}},
+    {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated),
+     {reinterpret_cast<char*>(&iBitsAllocated)}},
+    {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored),
+     {reinterpret_cast<char*>(&iBitsStored)}},
+    {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit),
+     {reinterpret_cast<char*>(&iHighBit)}},
+    {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep),
+     {reinterpret_cast<char*>(&iPixRep)}},
+    {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel),
+     {reinterpret_cast<char*>(&iSamplesPerPixel)}},
+    {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope),
+     {szRescaleSlope}},
+    {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept),
+     {szRescaleIntercept}},
+    {DCM_IMGPHOTOMETRICINTERP, DCM_CS, "", 1, strlen(szImgPhotometricInterp),
+     {szImgPhotometricInterp}},
+    {DCM_IMGPIXELSPACING, DCM_DS, "", 1, strlen(szPixelSpacing),
+     {szPixelSpacing}},
+    {DCM_RELIMAGEORIENTATIONPATIENT, DCM_DS, "", 1,
+     strlen(szRelImageOrientationPatient), {szRelImageOrientationPatient}},
+    {DCM_RELIMAGEPOSITIONPATIENT, DCM_DS, "", 1,
+     strlen(szRelImagePositionPatient), {szRelImagePositionPatient}},
+    {DCM_ACQKVP, DCM_DS, "", 1, strlen(szAcqKvp), {szAcqKvp}},
+    {DCM_RELACQUISITIONNUMBER, DCM_IS, "", 1, strlen(szRelAcquisitionNumber),
+     {szRelAcquisitionNumber}},
+    {DCM_ACQSLICETHICKNESS, DCM_DS, "", 1, strlen(szRelAcquisitionNumber),
+     {szRelAcquisitionNumber}},
+    {DCM_RELIMAGENUMBER, DCM_IS, "", 1, strlen(szRelImageNumber),
+     {szRelImageNumber}},
+    {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, strlen(szIDSOPInstanceUID),
+     {szIDSOPInstanceUID}},
+    {DCM_IDMANUFACTURER, DCM_LO, "", 1, strlen(szIDManufacturer),
+     {szIDManufacturer}},
+    {DCM_RELPOSITIONREFINDICATOR, DCM_LO, "", 1,
+     strlen(szRelPositionRefIndicator), {szRelPositionRefIndicator}},
+    {DCM_RELFRAMEOFREFERENCEUID, DCM_UI, "", 1,
+     strlen(szRelFrameOfReferenceUID), {szRelFrameOfReferenceUID}},
+    {DCM_RELSERIESNUMBER, DCM_IS, "", 1, strlen(szRelSeriesNumber),
+     {szRelSeriesNumber}},
+    {DCM_RELSERIESINSTANCEUID, DCM_UI, "", 1, strlen(szIDAccessionNumber),
+     {szIDAccessionNumber}},
+    {DCM_IDACCESSIONNUMBER, DCM_SH, "", 1, strlen(szIDAccessionNumber),
+     {szIDAccessionNumber}},
+    {DCM_RELSTUDYID, DCM_SH, "", 1, strlen(szRelStudyID), {szRelStudyID}},
+    {DCM_IDREFERRINGPHYSICIAN, DCM_PN, "", 1, strlen(szIDReferringPhysician),
+     {szIDReferringPhysician}},
+    {DCM_IDSTUDYTIME, DCM_TM, "", 1, strlen(szIDStudyTime), {szIDStudyTime}},
+    {DCM_IDSTUDYDATE, DCM_DA, "", 1, strlen(szIDStudyDate), {szIDStudyDate}},
+    {DCM_RELSTUDYINSTANCEUID, DCM_UI, "", 1, strlen(szRelStudyInstanceUID),
+     {szRelStudyInstanceUID}},
+    {DCM_PATSEX, DCM_CS, "", 1, strlen(szPatSex), {szPatSex}},
+    {DCM_PATBIRTHDATE, DCM_DA, "", 1, strlen(szPatBirthdate), {szPatBirthdate}},
+    {DCM_PATID, DCM_LO, "", 1, strlen(szPatID), {szPatID}},
+    {DCM_PATNAME, DCM_PN, "", 1, strlen(szPatName), {szPatName}},
+    {DCM_IDIMAGETYPE, DCM_CS, "", 1, strlen(szIDImageType), {szIDImageType}},
+    {DCM_IDMODALITY, DCM_CS, "", 1, strlen(szModality), {szModality}},
+    {DCM_IDSOPCLASSUID, DCM_UI, "", 1, strlen(szSOPClassUID), {szSOPClassUID}},
+    {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, strlen(szIDManufacturerModel),
+     {szIDManufacturerModel}},
+    {DCM_PATCOMMENTS, DCM_LT, "", 1, strlen(pszPatComments), {pszPatComments}},
+  };
+  int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
+
+  int iUpdateCount;
+  cond = DCM_ModifyElements (&m_pObject, aElemRequired, nElemRequired, NULL, 0, &iUpdateCount);
+
+  DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, {NULL}};
+
+  unsigned long lRealLength = 2 * m_pImageFile->nx() * m_pImageFile->ny();
+
+  unsigned char* pRawPixels = new unsigned char [lRealLength];
+  elemPixelData.length = lRealLength;
+  elemPixelData.d.ot = pRawPixels;
+
+  ImageFileArray v = m_pImageFile->getArray();
+  for (int iy = 0; iy < iNRows; iy++) {
+    for (int ix = 0; ix < iNCols; ix++) {
+        unsigned long lBase = (iy * iNRows + ix) * 2;
+        unsigned int iValue = nearest<int>(dScale * (v[ix][iNRows - 1 - iy] - dMin));
+        pRawPixels[lBase] = iValue & 0xFF;
+        pRawPixels[lBase+1] = (iValue & 0xFF00) >> 8;
+    }
+  }
+  cond = DCM_ModifyElements (&m_pObject, &elemPixelData, 1, NULL, 0, &iUpdateCount);
+  delete pRawPixels;
+
+  delete pszPatComments;
+
+  if (cond != DCM_NORMAL || iUpdateCount != 1) {
+    m_bFail = true;
+    m_strFailMessage = "Error modifying pixel data";
+    return false;
+  }
+
+  return true;
+}
+
+#endif // HAVE_CTN_DICOM
+
+
diff --git a/libctsim/filter.cpp b/libctsim/filter.cpp
new file mode 100644
index 0000000..86dca12
--- /dev/null
+++ b/libctsim/filter.cpp
@@ -0,0 +1,604 @@
+/*****************************************************************************
+** File IDENTIFICATION
+**
+**     Name:                   filter.cpp
+**     Purpose:                Routines for signal-procesing filters
+**     Progammer:              Kevin Rosenberg
+**     Date Started:           Aug 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+int SignalFilter::N_INTEGRAL=500;  //static member
+
+const int SignalFilter::FILTER_INVALID = -1 ;
+const int SignalFilter::FILTER_ABS_BANDLIMIT = 0;       // filter times |x|
+const int SignalFilter::FILTER_ABS_G_HAMMING = 1;
+const int SignalFilter::FILTER_ABS_HANNING = 2;
+const int SignalFilter::FILTER_ABS_COSINE = 3;
+const int SignalFilter::FILTER_ABS_SINC = 4;
+const int SignalFilter::FILTER_SHEPP = 5;
+const int SignalFilter::FILTER_BANDLIMIT = 6;
+const int SignalFilter::FILTER_SINC = 7;
+const int SignalFilter::FILTER_G_HAMMING = 8;
+const int SignalFilter::FILTER_HANNING = 9;
+const int SignalFilter::FILTER_COSINE = 10;
+const int SignalFilter::FILTER_TRIANGLE = 11;
+
+const int SignalFilter::s_iReconstructFilterCount = 4;
+
+const char* const SignalFilter::s_aszFilterName[] = {
+  "abs_bandlimit",
+  "abs_hamming",
+  "abs_hanning",
+  "abs_cosine",
+  "shepp",
+  "abs_sinc",
+  "bandlimit",
+  "sinc",
+  "hamming",
+  "hanning",
+  "cosine",
+  "triangle"
+};
+
+const char* const SignalFilter::s_aszFilterTitle[] = {
+  "Abs(w) * Bandlimit",
+  "Abs(w) * Hamming",
+  "Abs(w) * Hanning",
+  "Abs(w) * Cosine",
+  "Shepp",
+  "Abs(w) * Sinc",
+  "Bandlimit",
+  "Sinc",
+  "Hamming",
+  "Hanning",
+  "Cosine",
+  "Triangle"
+};
+
+const int SignalFilter::s_iFilterCount = sizeof(s_aszFilterName) / sizeof(const char*);
+
+
+const int SignalFilter::DOMAIN_INVALID = -1;
+const int SignalFilter::DOMAIN_FREQUENCY = 0;
+const int SignalFilter::DOMAIN_SPATIAL = 1;
+
+const char* const SignalFilter::s_aszDomainName[] = {
+  "frequency",
+  "spatial",
+};
+
+const char* const SignalFilter::s_aszDomainTitle[] = {
+  "Frequency",
+  "Spatial",
+};
+
+const int SignalFilter::s_iDomainCount = sizeof(s_aszDomainName) / sizeof(const char*);
+
+
+/* NAME
+*   SignalFilter::SignalFilter     Construct a signal
+*
+* SYNOPSIS
+*   f = SignalFilter (filt_type, bw, filterMin, filterMax, n, param, domain, analytic)
+*   double f            Generated filter vector
+*   int filt_type       Type of filter wanted
+*   double bw           Bandwidth of filter
+*   double filterMin, filterMax Filter limits
+*   int nFilterPoints   Number of points in signal
+*   double param        General input parameter to filters
+*   int domain          FREQUENCY or SPATIAL domain wanted
+*/
+
+SignalFilter::SignalFilter (const char* szFilterName, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const char* szDomainName)
+: m_adFilter(NULL), m_fail(false)
+{
+  m_idFilter = convertFilterNameToID (szFilterName);
+  if (m_idFilter == FILTER_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid Filter name ";
+    m_failMessage += szFilterName;
+    return;
+  }
+  m_idDomain = convertDomainNameToID (szDomainName);
+  if (m_idDomain == DOMAIN_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid domain name ";
+    m_failMessage += szDomainName;
+    return;
+  }
+  init (m_idFilter, dFilterMinimum, dFilterMaximum, nFilterPoints, dBandwidth, dFilterParam, m_idDomain);
+}
+
+SignalFilter::SignalFilter (const int idFilter, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain)
+: m_adFilter(NULL), m_fail(false)
+{
+  init (idFilter, dFilterMinimum, dFilterMaximum, nFilterPoints, dBandwidth, dFilterParam, idDomain);
+}
+
+SignalFilter::SignalFilter (const char* szFilterName, const char* szDomainName, double dBandwidth, double dFilterParam)
+: m_adFilter(NULL), m_fail(false)
+{
+  m_nFilterPoints = 0;
+  m_dBandwidth = dBandwidth;
+  m_dFilterParam = dFilterParam;
+  m_idFilter = convertFilterNameToID (szFilterName);
+  if (m_idFilter == FILTER_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid Filter name ";
+    m_failMessage += szFilterName;
+    return;
+  }
+  m_idDomain = convertDomainNameToID (szDomainName);
+  if (m_idDomain == DOMAIN_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid domain name ";
+    m_failMessage += szDomainName;
+    return;
+  }
+}
+
+void
+SignalFilter::init (const int idFilter, double dFilterMinimum, double dFilterMaximum, int nFilterPoints, double dBandwidth, double dFilterParam, const int idDomain)
+{
+  m_idFilter = idFilter;
+  m_idDomain = idDomain;
+  if (m_idFilter == FILTER_INVALID || m_idDomain == DOMAIN_INVALID) {
+    m_fail = true;
+    return;
+  }
+  if (nFilterPoints < 2) {
+    m_fail = true;
+    m_failMessage = "Number of filter points ";
+    m_failMessage += nFilterPoints;
+    m_failMessage = " less than 2";
+    return;
+  }
+
+  m_nameFilter = convertFilterIDToName (m_idFilter);
+  m_nameDomain = convertDomainIDToName (m_idDomain);
+  m_nFilterPoints = nFilterPoints;
+  m_dFilterParam = dFilterParam;
+  m_dBandwidth = dBandwidth;
+  m_dFilterMin = dFilterMinimum;
+  m_dFilterMax = dFilterMaximum;
+
+  m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1);
+  m_adFilter = new double [m_nFilterPoints];
+
+  if (m_idDomain == DOMAIN_FREQUENCY)
+    createFrequencyFilter (m_adFilter);
+  else if (m_idDomain == DOMAIN_SPATIAL)
+    createSpatialFilter (m_adFilter);
+}
+
+
+SignalFilter::~SignalFilter (void)
+{
+  delete [] m_adFilter;
+}
+
+void
+SignalFilter::createFrequencyFilter (double* adFilter) const
+{
+  double x;
+  int i;
+  for (x = m_dFilterMin, i = 0; i < m_nFilterPoints; x += m_dFilterInc, i++)
+    adFilter[i] = frequencyResponse (x);
+}
+
+
+void
+SignalFilter::createSpatialFilter (double* adFilter) const
+{
+  if (m_idFilter == FILTER_SHEPP) {
+    double a = 2 * m_dBandwidth;
+    double c = - 4. / (a * a);
+    int center = (m_nFilterPoints - 1) / 2;
+    int sidelen = center;
+    m_adFilter[center] = 4. / (a * a);
+
+    for (int i = 1; i <= sidelen; i++ )
+      m_adFilter [center + i] = m_adFilter [center - i] = c / (4 * (i * i) - 1);
+  } else {
+    double x = m_dFilterMin;
+    for (int i = 0; i < m_nFilterPoints; i++, x += m_dFilterInc) {
+      if (haveAnalyticSpatial(m_idFilter))
+        m_adFilter[i] = spatialResponseAnalytic (x);
+      else
+        m_adFilter[i] = spatialResponseCalc (x);
+    }
+  }
+}
+
+int
+SignalFilter::convertFilterNameToID (const char *filterName)
+{
+  int filterID = FILTER_INVALID;
+
+  for (int i = 0; i < s_iFilterCount; i++)
+    if (strcasecmp (filterName, s_aszFilterName[i]) == 0) {
+      filterID = i;
+      break;
+    }
+
+    return (filterID);
+}
+
+const char *
+SignalFilter::convertFilterIDToName (const int filterID)
+{
+  static const char *name = "";
+
+  if (filterID >= 0 && filterID < s_iFilterCount)
+    return (s_aszFilterName [filterID]);
+
+  return (name);
+}
+
+const char *
+SignalFilter::convertFilterIDToTitle (const int filterID)
+{
+  static const char *title = "";
+
+  if (filterID >= 0 && filterID < s_iFilterCount)
+    return (s_aszFilterTitle [filterID]);
+
+  return (title);
+}
+
+int
+SignalFilter::convertDomainNameToID (const char* const domainName)
+{
+  int dID = DOMAIN_INVALID;
+
+  for (int i = 0; i < s_iDomainCount; i++)
+    if (strcasecmp (domainName, s_aszDomainName[i]) == 0) {
+      dID = i;
+      break;
+    }
+
+    return (dID);
+}
+
+const char *
+SignalFilter::convertDomainIDToName (const int domainID)
+{
+  static const char *name = "";
+
+  if (domainID >= 0 && domainID < s_iDomainCount)
+    return (s_aszDomainName [domainID]);
+
+  return (name);
+}
+
+const char *
+SignalFilter::convertDomainIDToTitle (const int domainID)
+{
+  static const char *title = "";
+
+  if (domainID >= 0 && domainID < s_iDomainCount)
+    return (s_aszDomainTitle [domainID]);
+
+  return (title);
+}
+
+
+double
+SignalFilter::response (double x)
+{
+  double response = 0;
+
+  if (m_idDomain == DOMAIN_SPATIAL)
+    response = spatialResponse (m_idFilter, m_dBandwidth, x, m_dFilterParam);
+  else if (m_idDomain == DOMAIN_FREQUENCY)
+    response = frequencyResponse (m_idFilter, m_dBandwidth, x, m_dFilterParam);
+
+  return (response);
+}
+
+
+double
+SignalFilter::spatialResponse (int filterID, double bw, double x, double param)
+{
+  if (haveAnalyticSpatial(filterID))
+    return spatialResponseAnalytic (filterID, bw, x, param);
+  else
+    return spatialResponseCalc (filterID, bw, x, param, N_INTEGRAL);
+}
+
+void
+SignalFilter::copyFilterData (double* pdFilter, const int iStart, const int nPoints) const
+{
+  int iFirst = clamp (iStart, 0, m_nFilterPoints - 1);
+  int iLast = clamp (iFirst + nPoints - 1, 0, m_nFilterPoints - 1);
+
+  for (int i = iFirst; i <= iLast; i++)
+    pdFilter[i - iFirst] = m_adFilter[i];
+}
+
+/* NAME
+*   filter_spatial_response_calc        Calculate filter by discrete inverse fourier
+*                                       transform of filters's frequency
+*                                       response
+*
+* SYNOPSIS
+*   y = filter_spatial_response_calc (filt_type, x, m_bw, param, n)
+*   double y                    Filter's response in spatial domain
+*   int filt_type               Type of filter (definitions in ct.h)
+*   double x                    Spatial position to evaluate filter
+*   double m_bw                 Bandwidth of window
+*   double param                General parameter for various filters
+*   int n                       Number of points to calculate integrations
+*/
+
+double
+SignalFilter::spatialResponseCalc (double x) const
+{
+  return (spatialResponseCalc (m_idFilter, m_dBandwidth, x, m_dFilterParam, N_INTEGRAL));
+}
+
+double
+SignalFilter::spatialResponseCalc (int filterID, double bw, double x, double param, int n)
+{
+  double zmin, zmax;
+
+  if (filterID == FILTER_TRIANGLE) {
+    zmin = 0;
+    zmax = bw;
+  } else {
+    zmin = 0;
+    zmax = bw / 2;
+  }
+  double zinc = (zmax - zmin) / (n - 1);
+
+  double z = zmin;
+  double* q = new double [n];
+  for (int i = 0; i < n; i++, z += zinc)
+    q[i] = frequencyResponse (filterID, bw, z, param) * cos (TWOPI * z * x);
+
+  double y = 2 * integrateSimpson (zmin, zmax, q, n);
+  delete q;
+
+  return (y);
+}
+
+
+/* NAME
+*    filter_frequency_response                  Return filter frequency response
+*
+* SYNOPSIS
+*    h = filter_frequency_response (filt_type, u, m_bw, param)
+*    double h                   Filters frequency response at u
+*    int filt_type              Type of filter
+*    double u                   Frequency to evaluate filter at
+*    double m_bw                        Bandwidth of filter
+*    double param               General input parameter for various filters
+*/
+
+double
+SignalFilter::frequencyResponse (double u) const
+{
+  return frequencyResponse (m_idFilter, m_dBandwidth, u, m_dFilterParam);
+}
+
+
+double
+SignalFilter::frequencyResponse (int filterID, double bw, double u, double param)
+{
+  double q;
+  double au = fabs (u);
+  double abw = fabs (bw);
+
+  switch (filterID) {
+  case FILTER_BANDLIMIT:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0.;
+    else
+      q = 1;
+    break;
+  case FILTER_ABS_BANDLIMIT:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0.;
+    else
+      q = au;
+    break;
+  case FILTER_TRIANGLE:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0;
+    else
+      q = 1 - au / abw;
+    break;
+  case FILTER_COSINE:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0;
+    else
+      q = cos(PI * au / abw);
+    break;
+  case FILTER_ABS_COSINE:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0;
+    else
+      q = au * cos(PI * au / abw);
+    break;
+  case FILTER_SINC:
+    q = abw * sinc (PI * abw * au, 1.);
+    break;
+  case FILTER_ABS_SINC:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0;
+    else
+      q = au * abw * sinc (PI * abw * au, 1.);
+    break;
+  case FILTER_HANNING:
+    param = 0.5;
+    // follow through to G_HAMMING
+  case FILTER_G_HAMMING:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0;
+    else
+      q = param + (1 - param) * cos (TWOPI * au / abw);
+    break;
+  case FILTER_ABS_HANNING:
+    param = 0.5;
+    // follow through to ABS_G_HAMMING
+  case FILTER_ABS_G_HAMMING:
+    if (au >= (abw / 2) + F_EPSILON)
+      q = 0;
+    else
+      q = au * (param + (1 - param) * cos(TWOPI * au / abw));
+    break;
+  default:
+    q = 0;
+    sys_error (ERR_WARNING, "Frequency response for filter %d not implemented [filter_frequency_response]", filterID);
+    break;
+  }
+
+  return (q);
+}
+
+
+
+/* NAME
+*   filter_spatial_response_analytic                    Calculate filter by analytic inverse fourier
+*                               transform of filters's frequency
+*                               response
+*
+* SYNOPSIS
+*   y = filter_spatial_response_analytic (filt_type, x, m_bw, param)
+*   double y                    Filter's response in spatial domain
+*   int filt_type               Type of filter (definitions in ct.h)
+*   double x                    Spatial position to evaluate filter
+*   double m_bw                 Bandwidth of window
+*   double param                General parameter for various filters
+*/
+
+double
+SignalFilter::spatialResponseAnalytic (double x) const
+{
+  return spatialResponseAnalytic (m_idFilter, m_dBandwidth, x, m_dFilterParam);
+}
+
+const bool
+SignalFilter::haveAnalyticSpatial (int filterID)
+{
+  bool haveAnalytic = false;
+
+  switch (filterID) {
+  case FILTER_BANDLIMIT:
+  case FILTER_TRIANGLE:
+  case FILTER_COSINE:
+  case FILTER_G_HAMMING:
+  case FILTER_HANNING:
+  case FILTER_ABS_BANDLIMIT:
+  case FILTER_ABS_COSINE:
+  case FILTER_ABS_G_HAMMING:
+  case FILTER_ABS_HANNING:
+  case FILTER_SHEPP:
+  case FILTER_SINC:
+    haveAnalytic = true;
+    break;
+  default:
+    break;
+  }
+
+  return (haveAnalytic);
+}
+
+double
+SignalFilter::spatialResponseAnalytic (int filterID, double bw, double x, double param)
+{
+  double q, temp;
+  double u = TWOPI * x;
+  double w = bw / 2;
+  double b = PI / bw;
+  double b2 = TWOPI / bw;
+
+  switch (filterID) {
+  case FILTER_BANDLIMIT:
+    q = bw * sinc(u * w, 1.0);
+    break;
+  case FILTER_TRIANGLE:
+    temp = sinc (u * w, 1.0);
+    q = bw * temp * temp;
+    break;
+  case FILTER_COSINE:
+    q = sinc(b-u,w) + sinc(b+u,w);
+    break;
+  case FILTER_HANNING:
+    param = 0.5;
+    // follow through to G_HAMMING
+  case FILTER_G_HAMMING:
+    q = 2 * param * sin(u*w)/u + (1-param) * (sinc(b2-u, w) + sinc(b2+u, w));
+    break;
+  case FILTER_ABS_BANDLIMIT:
+    q = 2 * integral_abscos (u, w);
+    break;
+  case FILTER_ABS_COSINE:
+    q = integral_abscos(b-u,w) + integral_abscos(b+u,w);
+    break;
+  case FILTER_ABS_HANNING:
+    param = 0.5;
+    // follow through to ABS_G_HAMMING
+  case FILTER_ABS_G_HAMMING:
+    q = 2 * param * integral_abscos(u,w) +
+      (1-param)*(integral_abscos(u-b2,w)+integral_abscos(u+b2,w));
+    break;
+  case FILTER_SHEPP:
+    if (fabs (u) < 1E-7)
+      q = 4. / (PI * bw * bw);
+    else
+      q = fabs ((2 / bw) * sin (u * w)) * sinc (u * w, 1.) * sinc (u * w, 1.);
+    break;
+  case FILTER_SINC:
+    if (fabs (x) < bw / 2)
+      q = 1.;
+    else
+      q = 0.;
+    break;
+  case FILTER_ABS_SINC:
+  default:
+    sys_error (ERR_WARNING, "Analytic filter type %d not implemented [filter_spatial_response_analytic]", filterID);
+    q = 0;
+    break;
+  }
+
+  return (q);
+}
+
+
+
+// Functions that are inline in filter.h
+
+
+//  sinc                        Return sin(x)/x function
+//   v = sinc (x, mult)
+// Calculates sin(x * mult) / x;
+
+//  integral_abscos     Returns integral of u*cos(u)
+//
+//   q = integral_abscos (u, w)
+//   double q                   Integral value
+//   double u                   Integration variable
+//   double w                   Upper integration boundary
+// Returns the value of integral of u*cos(u)*dV for V = 0 to w
+
+
+
diff --git a/libctsim/fourier.cpp b/libctsim/fourier.cpp
new file mode 100644
index 0000000..d85bfbe
--- /dev/null
+++ b/libctsim/fourier.cpp
@@ -0,0 +1,179 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          fourier.cpp
+**   Purpose:       Fourier transform functions
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Dec 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+
+
+void
+Fourier::shuffleFourierToNaturalOrder (ImageFile& im)
+{
+  ImageFileArray vReal = im.getArray();
+  ImageFileArray vImag = im.getImaginaryArray();
+  unsigned int ix, iy;
+  unsigned int nx = im.nx();
+  unsigned int ny = im.ny();
+
+  // shuffle each column
+  for (ix = 0; ix < nx; ix++) {
+    Fourier::shuffleFourierToNaturalOrder (vReal[ix], ny);
+    if (im.isComplex())
+      Fourier::shuffleFourierToNaturalOrder (vImag[ix], ny);
+  }
+
+  // shuffle each row
+  float* pRow = new float [nx];
+  for (iy = 0; iy < ny; iy++) {
+    for (ix = 0; ix < nx; ix++)
+      pRow[ix] = vReal[ix][iy];
+    Fourier::shuffleFourierToNaturalOrder (pRow, nx);
+    for (ix = 0; ix < nx; ix++)
+      vReal[ix][iy] = pRow[ix];
+    if (im.isComplex()) {
+      for (ix = 0; ix < nx; ix++)
+        pRow[ix] = vImag[ix][iy];
+      Fourier::shuffleFourierToNaturalOrder (pRow, nx);
+      for (ix = 0; ix < nx; ix++)
+        vImag[ix][iy] = pRow[ix];
+    }
+  }
+  delete pRow;
+}
+
+void
+Fourier::shuffleNaturalToFourierOrder (ImageFile& im)
+{
+  ImageFileArray vReal = im.getArray();
+  ImageFileArray vImag = im.getImaginaryArray();
+  unsigned int ix, iy;
+  unsigned int nx = im.nx();
+  unsigned int ny = im.ny();
+
+  // shuffle each x column
+  for (ix = 0; ix < nx; ix++) {
+    Fourier::shuffleNaturalToFourierOrder (vReal[ix], ny);
+    if (im.isComplex())
+      Fourier::shuffleNaturalToFourierOrder (vImag[ix], ny);
+  }
+
+  // shuffle each y row
+  float* pRow = new float [nx];
+  for (iy = 0; iy < ny; iy++) {
+    for (ix = 0; ix < nx; ix++)
+      pRow[ix] = vReal[ix][iy];
+    Fourier::shuffleNaturalToFourierOrder (pRow, nx);
+    for (ix = 0; ix < nx; ix++)
+      vReal[ix][iy] = pRow[ix];
+    if (im.isComplex()) {
+      for (ix = 0; ix < nx; ix++)
+        pRow[ix] = vImag[ix][iy];
+      Fourier::shuffleNaturalToFourierOrder (pRow, nx);
+      for (ix = 0; ix < nx; ix++)
+        vImag[ix][iy] = pRow[ix];
+    }
+  }
+  delete [] pRow;
+}
+
+#ifdef HAVE_FFTW
+void Fourier::shuffleNaturalToFourierOrder (fftw_complex* pVector, const int n)
+{
+  fftw_complex* pTemp = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * n));
+  int i;
+
+  if (isOdd(n)) { // Odd
+    int iHalfN = (n - 1) / 2;
+
+    pTemp[0][0] = pVector[iHalfN][0];
+    pTemp[0][1] = pVector[iHalfN][1];
+    for (i = 0; i < iHalfN; i++) {
+      pTemp[i + 1][0] = pVector[i + 1 + iHalfN][0];
+      pTemp[i + 1][1] = pVector[i + 1 + iHalfN][1];
+    }
+    for (i = 0; i < iHalfN; i++) {
+      pTemp[i + iHalfN + 1][0] = pVector[i][0];
+      pTemp[i + iHalfN + 1][1] = pVector[i][1];
+    }
+  } else {     // Even
+    int iHalfN = n / 2;
+    pTemp[0][0] = pVector[iHalfN][0];
+    pTemp[0][1] = pVector[iHalfN][1];
+    for (i = 0; i < iHalfN - 1; i++) {
+      pTemp[i + 1][0] = pVector[i + iHalfN + 1][0];
+      pTemp[i + 1][1] = pVector[i + iHalfN + 1][1];
+    }
+    for (i = 0; i < iHalfN; i++) {
+      pTemp[i + iHalfN][0] = pVector[i][0];
+      pTemp[i + iHalfN][1] = pVector[i][1];
+    }
+  }
+
+  for (i = 0; i < n; i++) {
+    pVector[i][0] = pTemp[i][0];
+    pVector[i][1] = pTemp[i][1];
+  }
+  fftw_free(pTemp);
+}
+
+void Fourier::shuffleFourierToNaturalOrder (fftw_complex* pVector, const int n)
+{
+  fftw_complex* pTemp = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * n));
+  int i;
+  if (isOdd(n)) { // Odd
+    int iHalfN = (n - 1) / 2;
+
+    pTemp[iHalfN][0] = pVector[0][0];
+    pTemp[iHalfN][1] = pVector[0][1];
+    for (i = 0; i < iHalfN; i++) {
+      pTemp[i + 1 + iHalfN][0] = pVector[i + 1][0];
+      pTemp[i + 1 + iHalfN][1] = pVector[i + 1][1];
+    }
+    for (i = 0; i < iHalfN; i++) {
+      pTemp[i][0] = pVector[i + iHalfN + 1][0];
+      pTemp[i][1] = pVector[i + iHalfN + 1][1];
+    }
+  } else {     // Even
+    int iHalfN = n / 2;
+    pTemp[iHalfN][0] = pVector[0][0];
+    pTemp[iHalfN][1] = pVector[0][1];
+    for (i = 0; i < iHalfN; i++) {
+      pTemp[i][0] = pVector[i + iHalfN][0];
+      pTemp[i][1] = pVector[i + iHalfN][1];
+    }
+    for (i = 0; i < iHalfN - 1; i++) {
+      pTemp[i + iHalfN + 1][0] = pVector[i+1][0];
+      pTemp[i + iHalfN + 1][1] = pVector[i+1][1];
+    }
+  }
+
+  for (i = 0; i < n; i++) {
+    pVector[i][0] = pTemp[i][0];
+    pVector[i][1] = pTemp[i][1];
+  }
+
+  fftw_free(pTemp);
+}
+#endif
+
diff --git a/libctsim/imagefile.cpp b/libctsim/imagefile.cpp
new file mode 100644
index 0000000..51a8dea
--- /dev/null
+++ b/libctsim/imagefile.cpp
@@ -0,0 +1,1933 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:           imagefile.cpp
+**  Purpose:      Imagefile classes
+**      Programmer:   Kevin Rosenberg
+**      Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#ifdef HAVE_CTN_DICOM
+#include "ctndicom.h"
+#endif
+#include "interpolator.h"
+
+const double ImageFile::s_dRedGrayscaleFactor = 0.299;
+const double ImageFile::s_dGreenGrayscaleFactor = 0.587;
+const double ImageFile::s_dBlueGrayscaleFactor = 0.114;
+
+
+const int ImageFile::EXPORT_FORMAT_INVALID = -1;
+const int ImageFile::EXPORT_FORMAT_TEXT = 0;
+const int ImageFile::EXPORT_FORMAT_PGM = 1;
+const int ImageFile::EXPORT_FORMAT_PGMASCII = 2;
+#ifdef HAVE_PNG
+const int ImageFile::EXPORT_FORMAT_PNG = 3;
+const int ImageFile::EXPORT_FORMAT_PNG16 = 4;
+#endif
+#ifdef HAVE_CTN_DICOM
+const int ImageFile::EXPORT_FORMAT_DICOM = 5;
+#endif
+const int ImageFile::EXPORT_FORMAT_RAW = 6;
+
+const char* ImageFile::s_aszExportFormatName[] =
+{
+  "text",
+  "pgm",
+  "pgmascii",
+#ifdef HAVE_PNG
+  "png",
+  "png16",
+#endif
+#ifdef HAVE_CTN_DICOM
+  "dicom",
+#endif
+};
+
+const char* ImageFile::s_aszExportFormatTitle[] =
+{
+  "Text",
+  "PGM",
+  "PGM ASCII",
+#ifdef HAVE_PNG
+  "PNG",
+  "PNG 16-bit",
+#endif
+#ifdef HAVE_CTN_DICOM
+  "Dicom",
+#endif
+};
+const int ImageFile::s_iExportFormatCount = sizeof(s_aszExportFormatName) / sizeof(const char*);
+
+
+const int ImageFile::IMPORT_FORMAT_INVALID = -1;
+const int ImageFile::IMPORT_FORMAT_PPM = 0;
+#ifdef HAVE_PNG
+const int ImageFile::IMPORT_FORMAT_PNG = 1;
+#endif
+#ifdef HAVE_CTN_DICOM
+const int ImageFile::IMPORT_FORMAT_DICOM = 2;
+#endif
+
+
+const char* ImageFile::s_aszImportFormatName[] =
+{
+  "ppm",
+#ifdef HAVE_PNG
+  "png",
+#endif
+#ifdef HAVE_CTN_DICOM
+  "dicom",
+#endif
+};
+
+const char* ImageFile::s_aszImportFormatTitle[] =
+{
+  "PPM",
+#ifdef HAVE_PNG
+  "PNG",
+#endif
+#ifdef HAVE_CTN_DICOM
+  "Dicom",
+#endif
+};
+const int ImageFile::s_iImportFormatCount = sizeof(s_aszImportFormatName) / sizeof(const char*);
+
+
+
+F32Image::F32Image (int nx, int ny, int dataType)
+: Array2dFile (nx, ny, sizeof(kfloat32), Array2dFile::PIXEL_FLOAT32, dataType)
+{
+}
+
+F32Image::F32Image (void)
+: Array2dFile()
+{
+  setPixelFormat (Array2dFile::PIXEL_FLOAT32);
+  setPixelSize (sizeof(kfloat32));
+  setDataType (Array2dFile::DATA_TYPE_REAL);
+}
+
+F64Image::F64Image (int nx, int ny, int dataType)
+: Array2dFile (nx, ny, sizeof(kfloat64), Array2dFile::PIXEL_FLOAT64, dataType)
+{
+}
+
+F64Image::F64Image (void)
+: Array2dFile ()
+{
+  setPixelFormat (PIXEL_FLOAT64);
+  setPixelSize (sizeof(kfloat64));
+  setDataType (Array2dFile::DATA_TYPE_REAL);
+}
+
+void
+ImageFile::getCenterCoordinates (unsigned int& iXCenter, unsigned int& iYCenter)
+{
+  if (isEven (m_nx))
+    iXCenter = m_nx / 2;
+  else
+    iXCenter = (m_nx - 1) / 2;
+
+  if (isEven (m_ny))
+    iYCenter = m_ny / 2;
+  else
+    iYCenter = (m_ny - 1) / 2;
+}
+
+
+void
+ImageFile::filterResponse (const char* const domainName, double bw, const char* const filterName,
+                           double filt_param, double dInputScale, double dOutputScale)
+{
+  ImageFileArray v = getArray();
+  SignalFilter filter (filterName, domainName, bw, filt_param);
+
+  unsigned int iXCenter, iYCenter;
+  getCenterCoordinates (iXCenter, iYCenter);
+
+  for (unsigned int ix = 0; ix < m_nx; ix++)
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      long lD2 = ((ix - iXCenter) * (ix - iXCenter)) + ((iy - iYCenter) * (iy - iYCenter));
+      double r = ::sqrt (static_cast<double>(lD2)) * dInputScale;
+      v[ix][iy] = filter.response (r) * dOutputScale;
+    }
+}
+
+
+// ImageFile::comparativeStatistics    Calculate comparative stats
+//
+// OUTPUT
+//   d   Normalized root mean squared distance measure
+//   r   Normalized mean absolute distance measure
+//   e   Worst case distance measure
+//
+// REFERENCES
+//  G.T. Herman, Image Reconstruction From Projections, 1980
+
+bool
+ImageFile::comparativeStatistics (const ImageFile& imComp, double& d, double& r, double& e) const
+{
+  if (imComp.nx() != m_nx && imComp.ny() != m_ny) {
+    sys_error (ERR_WARNING, "Image sizes differ [ImageFile::comparativeStatistics]");
+    return false;
+  }
+  ImageFileArrayConst v = getArray();
+  if (v == NULL || m_nx == 0 || m_ny == 0)
+    return false;
+
+  ImageFileArrayConst vComp = imComp.getArray();
+
+  double myMean = 0.;
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      myMean += v[ix][iy];
+    }
+  }
+  myMean /= (m_nx * m_ny);
+
+  double sqErrorSum = 0.;
+  double absErrorSum = 0.;
+  double sqDiffFromMeanSum = 0.;
+  double absValueSum = 0.;
+  for (unsigned int ix2 = 0; ix2 < m_nx; ix2++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      double diff = v[ix2][iy] - vComp[ix2][iy];
+      sqErrorSum += diff * diff;
+      absErrorSum += fabs(diff);
+      double diffFromMean = v[ix2][iy] - myMean;
+      sqDiffFromMeanSum += diffFromMean * diffFromMean;
+      absValueSum += fabs(v[ix2][iy]);
+    }
+  }
+
+  d = ::sqrt (sqErrorSum / sqDiffFromMeanSum);
+  r = absErrorSum / absValueSum;
+
+  int hx = m_nx / 2;
+  int hy = m_ny / 2;
+  double eMax = -1;
+  for (int ix3 = 0; ix3 < hx; ix3++) {
+    for (int iy = 0; iy < hy; iy++) {
+      double avgPixel = 0.25 * (v[2*ix3][2*iy] + v[2*ix3+1][2*iy] + v[2*ix3][2*iy+1] + v[2*ix3+1][2*iy+1]);
+      double avgPixelComp = 0.25 * (vComp[2*ix3][2*iy] + vComp[2*ix3+1][2*iy] + vComp[2*ix3][2*iy+1] + vComp[2*ix3+1][2*iy+1]);
+      double error = fabs (avgPixel - avgPixelComp);
+      if (error > eMax)
+        eMax = error;
+    }
+  }
+
+  e = eMax;
+
+  return true;
+}
+
+
+bool
+ImageFile::printComparativeStatistics (const ImageFile& imComp, std::ostream& os) const
+{
+  double d, r, e;
+
+  if (comparativeStatistics (imComp, d, r, e)) {
+    os << "  Normalized root mean squared distance (d): " << d << std::endl;
+    os << "      Normalized mean absolute distance (r): " << r << std::endl;
+    os << "Worst case distance (2x2 pixel average) (e): " << e << std::endl;
+    return true;
+  }
+  return false;
+}
+
+
+void
+ImageFile::printStatistics (std::ostream& os) const
+{
+  double min, max, mean, mode, median, stddev;
+
+  statistics (min, max, mean, mode, median, stddev);
+  if (isComplex())
+    os << "Real Component Statistics" << std::endl;
+
+  os << "   min: " << min << std::endl;
+  os << "   max: " << max << std::endl;
+  os << "  mean: " << mean << std::endl;
+  os << "  mode: " << mode << std::endl;
+  os << "median: " << median << std::endl;
+  os << "stddev: " << stddev << std::endl;
+
+  if (isComplex()) {
+    statistics (getImaginaryArray(), min, max, mean, mode, median, stddev);
+    os << std::endl << "Imaginary Component Statistics" << std::endl;
+    os << "   min: " << min << std::endl;
+    os << "   max: " << max << std::endl;
+    os << "  mean: " << mean << std::endl;
+    os << "  mode: " << mode << std::endl;
+    os << "median: " << median << std::endl;
+    os << "stddev: " << stddev << std::endl;
+  }
+}
+
+
+void
+ImageFile::statistics (double& min, double& max, double& mean, double& mode, double& median, double& stddev) const
+{
+  ImageFileArrayConst v = getArray();
+  statistics (v, min, max, mean, mode, median, stddev);
+}
+
+
+void
+ImageFile::statistics (ImageFileArrayConst v, double& min, double& max, double& mean, double& mode, double& median, double& stddev) const
+{
+  int nx = m_nx;
+  int ny = m_ny;
+
+  if (v == NULL || nx == 0 || ny == 0)
+    return;
+
+  std::vector<double> vecImage;
+  int iVec = 0;
+  vecImage.resize (nx * ny);
+  for (int ix = 0; ix < nx; ix++) {
+    for (int iy = 0; iy < ny; iy++)
+      vecImage[iVec++] = v[ix][iy];
+  }
+
+  vectorNumericStatistics (vecImage, nx * ny, min, max, mean, mode, median, stddev);
+}
+
+void
+ImageFile::getMinMax (double& min, double& max) const
+{
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArrayConst v = getArray();
+
+  if (v == NULL || nx == 0 || ny == 0)
+    return;
+
+  min = v[0][0];
+  max = v[0][0];
+  for (int ix = 0; ix < nx; ix++) {
+    for (int iy = 0; iy < ny; iy++) {
+      if (v[ix][iy] > max)
+        max = v[ix][iy];
+      if (v[ix][iy] < min)
+        min = v[ix][iy];
+    }
+  }
+}
+
+bool
+ImageFile::convertRealToComplex ()
+{
+  if (dataType() != Array2dFile::DATA_TYPE_REAL)
+    return false;
+
+  if (! reallocRealToComplex())
+    return false;
+
+  ImageFileArray vImag = getImaginaryArray();
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    ImageFileColumn vCol = vImag[ix];
+    for (unsigned int iy = 0; iy < m_ny; iy++)
+      *vCol++ = 0;
+  }
+
+  return true;
+}
+
+bool
+ImageFile::convertComplexToReal ()
+{
+  if (dataType() != Array2dFile::DATA_TYPE_COMPLEX)
+    return false;
+
+  ImageFileArray vReal = getArray();
+  ImageFileArray vImag = getImaginaryArray();
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    ImageFileColumn vRealCol = vReal[ix];
+    ImageFileColumn vImagCol = vImag[ix];
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      CTSimComplex c (*vRealCol, *vImagCol);
+      *vRealCol++ = std::abs (c);
+      vImagCol++;
+    }
+  }
+
+  return reallocComplexToReal();
+}
+
+bool
+ImageFile::subtractImages (const ImageFile& rRHS, ImageFile& result) const
+{
+  if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]");
+    return false;
+  }
+
+  if (isComplex() || (rRHS.isComplex() && ! result.isComplex()))
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArrayConst vRHS = rRHS.getArray();
+  ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      vResult[ix][iy] = vLHS[ix][iy] - vRHS[ix][iy];
+      if (result.isComplex()) {
+        vResultImag[ix][iy] = 0;
+        if (isComplex())
+          vResultImag[ix][iy] += vLHSImag[ix][iy];
+        if (rRHS.isComplex())
+          vResultImag[ix][iy] -= vRHSImag[ix][iy];
+      }
+    }
+  }
+
+  return true;
+}
+
+bool
+ImageFile::addImages (const ImageFile& rRHS, ImageFile& result) const
+{
+  if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]");
+    return false;
+  }
+
+  if (isComplex() || (rRHS.isComplex() && ! result.isComplex()))
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArrayConst vRHS = rRHS.getArray();
+  ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      vResult[ix][iy] = vLHS[ix][iy] + vRHS[ix][iy];
+      if (result.isComplex()) {
+        vResultImag[ix][iy] = 0;
+        if (isComplex())
+          vResultImag[ix][iy] += vLHSImag[ix][iy];
+        if (rRHS.isComplex())
+          vResultImag[ix][iy] += vRHSImag[ix][iy];
+      }
+    }
+  }
+
+  return true;
+}
+
+bool
+ImageFile::multiplyImages (const ImageFile& rRHS, ImageFile& result) const
+{
+  if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]");
+    return false;
+  }
+
+  if (isComplex() || (rRHS.isComplex() && ! result.isComplex()))
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArrayConst vRHS = rRHS.getArray();
+  ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (result.isComplex()) {
+        double dImag = 0;
+        if (isComplex())
+          dImag = vLHSImag[ix][iy];
+        std::complex<double> cLHS (vLHS[ix][iy], dImag);
+        dImag = 0;
+        if (rRHS.isComplex())
+          dImag = vRHSImag[ix][iy];
+        std::complex<double> cRHS (vRHS[ix][iy], dImag);
+        std::complex<double> cResult = cLHS * cRHS;
+        vResult[ix][iy] = cResult.real();
+        vResultImag[ix][iy] = cResult.imag();
+      } else
+        vResult[ix][iy] = vLHS[ix][iy] * vRHS[ix][iy];
+    }
+  }
+
+
+  return true;
+}
+
+bool
+ImageFile::divideImages (const ImageFile& rRHS, ImageFile& result) const
+{
+  if (m_nx != rRHS.nx() || m_ny != rRHS.ny() || m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::subtractImage]");
+    return false;
+  }
+
+  if (isComplex() || (rRHS.isComplex() && ! result.isComplex()))
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArrayConst vRHS = rRHS.getArray();
+  ImageFileArrayConst vRHSImag = rRHS.getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (result.isComplex()) {
+        double dImag = 0;
+        if (isComplex())
+          dImag = vLHSImag[ix][iy];
+        std::complex<double> cLHS (vLHS[ix][iy], dImag);
+        dImag = 0;
+        if (rRHS.isComplex())
+          dImag = vRHSImag[ix][iy];
+        std::complex<double> cRHS (vRHS[ix][iy], dImag);
+        std::complex<double> cResult = cLHS / cRHS;
+        vResult[ix][iy] = cResult.real();
+        vResultImag[ix][iy] = cResult.imag();
+      } else {
+        if (vRHS != 0)
+          vResult[ix][iy] = vLHS[ix][iy] / vRHS[ix][iy];
+        else
+          vResult[ix][iy] = 0;
+      }
+    }
+  }
+
+  return true;
+}
+
+
+bool
+ImageFile::invertPixelValues (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (isComplex() && ! result.isComplex())
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArray vResult = result.getArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    ImageFileColumnConst in = vLHS[ix];
+    ImageFileColumn out = vResult[ix];
+    for (unsigned int iy = 0; iy < m_ny; iy++)
+      *out++ = - *in++;
+  }
+
+  return true;
+}
+
+bool
+ImageFile::sqrt (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (isComplex() && ! result.isComplex())
+    result.convertRealToComplex();
+
+  bool bComplexOutput = result.isComplex();
+  ImageFileArrayConst vLHS = getArray();
+  if (! bComplexOutput)   // check if should convert to complex output
+    for (unsigned int ix = 0; ix < m_nx; ix++)
+      for (unsigned int iy = 0; iy < m_ny; iy++)
+        if (! bComplexOutput && vLHS[ix][iy] < 0) {
+          result.convertRealToComplex();
+          bComplexOutput = true;
+          break;
+        }
+
+        ImageFileArrayConst vLHSImag = getImaginaryArray();
+        ImageFileArray vResult = result.getArray();
+        ImageFileArray vResultImag = result.getImaginaryArray();
+
+        for (unsigned int ix = 0; ix < m_nx; ix++) {
+          for (unsigned int iy = 0; iy < m_ny; iy++) {
+            if (result.isComplex()) {
+              double dImag = 0;
+              if (isComplex())
+                dImag = vLHSImag[ix][iy];
+              std::complex<double> cLHS (vLHS[ix][iy], dImag);
+              std::complex<double> cResult = std::sqrt(cLHS);
+              vResult[ix][iy] = cResult.real();
+              vResultImag[ix][iy] = cResult.imag();
+            } else
+              vResult[ix][iy] = ::sqrt (vLHS[ix][iy]);
+          }
+        }
+
+
+        return true;
+}
+
+bool
+ImageFile::log (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::log]");
+    return false;
+  }
+
+  if (isComplex() && ! result.isComplex())
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (result.isComplex()) {
+        double dImag = 0;
+        if (isComplex())
+          dImag = vLHSImag[ix][iy];
+        std::complex<double> cLHS (vLHS[ix][iy], dImag);
+        std::complex<double> cResult = std::log (cLHS);
+        vResult[ix][iy] = cResult.real();
+        vResultImag[ix][iy] = cResult.imag();
+      } else {
+        if (vLHS[ix][iy] > 0)
+          vResult[ix][iy] = ::log (vLHS[ix][iy]);
+        else
+          vResult[ix][iy] = 0;
+      }
+    }
+  }
+
+
+  return true;
+}
+
+bool
+ImageFile::exp (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (isComplex() && ! result.isComplex())
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (result.isComplex()) {
+        double dImag = 0;
+        if (isComplex())
+          dImag = vLHSImag[ix][iy];
+        std::complex<double> cLHS (vLHS[ix][iy], dImag);
+        std::complex<double> cResult = std::exp (cLHS);
+        vResult[ix][iy] = cResult.real();
+        vResultImag[ix][iy] = cResult.imag();
+      } else
+        vResult[ix][iy] = ::exp (vLHS[ix][iy]);
+    }
+  }
+
+
+  return true;
+}
+
+bool
+ImageFile::scaleImage (ImageFile& result) const
+{
+  unsigned int nx = m_nx;
+  unsigned int ny = m_ny;
+  unsigned int newNX = result.nx();
+  unsigned int newNY = result.ny();
+
+  double dXScale = static_cast<double>(newNX) / static_cast<double>(nx);
+  double dYScale = static_cast<double>(newNY) / static_cast<double>(ny);
+
+  if (isComplex() && ! result.isComplex())
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  BilinearInterpolator<ImageFileValue> realInterp (vReal, nx, ny);
+  BilinearInterpolator<ImageFileValue> imagInterp (vImag, nx, ny);
+
+  for (unsigned int ix = 0; ix < newNX; ix++) {
+    for (unsigned int iy = 0; iy < newNY; iy++) {
+      double dXPos = ix / dXScale;
+      double dYPos = iy / dYScale;
+      vResult[ix][iy] = realInterp.interpolate (dXPos, dYPos);
+      if (result.isComplex()) {
+        if (isComplex()) {
+          vResultImag[ix][iy] = imagInterp.interpolate (dXPos, dYPos);
+        } else {
+          vResultImag[ix][iy] = 0;
+        }
+      }
+    }
+  }
+
+  return true;
+}
+
+#ifdef HAVE_FFTW
+bool
+ImageFile::fft (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  fftw_complex* in = static_cast<fftw_complex*> (fftw_malloc (sizeof(fftw_complex) * m_nx * m_ny));
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+
+  unsigned int ix, iy;
+  unsigned int iArray = 0;
+  for (ix = 0; ix < m_nx; ix++) {
+    for (iy = 0; iy < m_ny; iy++) {
+      in[iArray][0] = vReal[ix][iy];
+      if (isComplex())
+        in[iArray][1] = vImag[ix][iy];
+      else
+        in[iArray][1] = 0;
+      iArray++;
+    }
+  }
+
+  fftw_plan plan = fftw_plan_dft_2d (m_nx, m_ny, in, in, FFTW_FORWARD, FFTW_ESTIMATE);
+  fftw_execute (plan);
+
+  ImageFileArray vRealResult = result.getArray();
+  ImageFileArray vImagResult = result.getImaginaryArray();
+  iArray = 0;
+  unsigned int iScale = m_nx * m_ny;
+  for (ix = 0; ix < m_nx; ix++) {
+    for (iy = 0; iy < m_ny; iy++) {
+      vRealResult[ix][iy] = in[iArray][0] / iScale;
+      vImagResult[ix][iy] = in[iArray][1] / iScale;
+      iArray++;
+    }
+  }
+  fftw_free(in);
+  fftw_destroy_plan (plan);
+
+  Fourier::shuffleFourierToNaturalOrder (result);
+
+  return true;
+}
+
+
+bool
+ImageFile::ifft (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+  ImageFileArray vRealResult = result.getArray();
+  ImageFileArray vImagResult = result.getImaginaryArray();
+  unsigned int ix, iy;
+  for (ix = 0; ix < m_nx; ix++) {
+    for (iy = 0; iy < m_ny; iy++) {
+      vRealResult[ix][iy] = vReal[ix][iy];
+      if (isComplex())
+        vImagResult[ix][iy] = vImag[ix][iy];
+      else
+        vImagResult[ix][iy] = 0;
+    }
+  }
+
+  Fourier::shuffleNaturalToFourierOrder (result);
+
+  fftw_complex* in = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * m_nx * m_ny));
+
+  unsigned int iArray = 0;
+  for (ix = 0; ix < m_nx; ix++) {
+    for (iy = 0; iy < m_ny; iy++) {
+      in[iArray][0] = vRealResult[ix][iy];
+      in[iArray][1] = vImagResult[ix][iy];
+      iArray++;
+    }
+  }
+
+  fftw_plan plan = fftw_plan_dft_2d (m_nx, m_ny, in, in, FFTW_BACKWARD, FFTW_ESTIMATE);
+
+  fftw_execute (plan);
+
+  iArray = 0;
+  for (ix = 0; ix < m_nx; ix++) {
+    for (iy = 0; iy < m_ny; iy++) {
+      vRealResult[ix][iy] = in[iArray][0];
+      vImagResult[ix][iy] = in[iArray][1];
+      iArray++;
+    }
+  }
+  fftw_destroy_plan (plan);
+  fftw_free(in);
+
+  return true;
+}
+
+bool
+ImageFile::fftRows (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+
+  fftw_complex* in = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * m_nx));
+  fftw_plan plan = fftw_plan_dft_1d (m_nx, in, in, FFTW_FORWARD, FFTW_ESTIMATE);
+
+  std::complex<double>* pcRow = new std::complex<double> [m_nx];
+  for (unsigned int iy = 0; iy < m_ny; iy++) {
+    unsigned int ix;
+    for (ix = 0; ix < m_nx; ix++) {
+      in[ix][0] = vReal[ix][iy];
+      if (isComplex())
+        in[ix][1] = vImag[ix][iy];
+      else
+        in[ix][1] = 0;
+    }
+
+    fftw_execute (plan);
+
+    for (ix = 0; ix < m_nx; ix++)
+      pcRow[ix] = std::complex<double>(in[ix][0], in[ix][1]);
+
+    Fourier::shuffleFourierToNaturalOrder (pcRow, m_nx);
+    for (ix = 0; ix < m_nx; ix++) {
+      vReal[ix][iy] = pcRow[ix].real() / m_nx;
+      vImag[ix][iy] = pcRow[ix].imag() / m_nx;
+    }
+  }
+  delete [] pcRow;
+
+  fftw_destroy_plan (plan);
+  fftw_free(in);
+
+  return true;
+}
+
+bool
+ImageFile::ifftRows (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+
+  fftw_complex* in = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * m_nx));
+  fftw_plan plan = fftw_plan_dft_1d (m_nx, in, in, FFTW_BACKWARD, FFTW_ESTIMATE);
+  std::complex<double>* pcRow = new std::complex<double> [m_nx];
+
+  unsigned int ix, iy;
+  // unsigned int iArray = 0;
+  for (iy = 0; iy < m_ny; iy++) {
+    for (ix = 0; ix < m_nx; ix++) {
+      double dImag = 0;
+      if (isComplex())
+        dImag = vImag[ix][iy];
+      pcRow[ix] = std::complex<double> (vReal[ix][iy], dImag);
+    }
+
+    Fourier::shuffleNaturalToFourierOrder (pcRow, m_nx);
+
+    for (ix = 0; ix < m_nx; ix++) {
+      in[ix][0] = pcRow[ix].real();
+      in[ix][1] = pcRow[ix].imag();
+    }
+
+    fftw_execute (plan);
+
+    for (ix = 0; ix < m_nx; ix++) {
+      vReal[ix][iy] = in[ix][0];
+      vImag[ix][iy] = in[ix][1];
+    }
+  }
+  delete [] pcRow;
+
+  fftw_destroy_plan (plan);
+  fftw_free(in);
+
+  return true;
+}
+
+bool
+ImageFile::fftCols (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+
+  fftw_complex* in = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * m_ny));
+  fftw_plan plan = fftw_plan_dft_1d (m_ny, in, in, FFTW_FORWARD, FFTW_ESTIMATE);
+
+  std::complex<double>* pcCol = new std::complex<double> [m_ny];
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    unsigned int iy;
+    for (iy = 0; iy < m_ny; iy++) {
+      in[iy][0] = vReal[ix][iy];
+      if (isComplex())
+        in[iy][1] = vImag[ix][iy];
+      else
+        in[iy][1] = 0;
+    }
+
+    fftw_execute (plan);
+
+    for (iy = 0; iy < m_ny; iy++)
+      pcCol[iy] = std::complex<double>(in[iy][0], in[iy][1]);
+
+    Fourier::shuffleFourierToNaturalOrder (pcCol, m_ny);
+    for (iy = 0; iy < m_ny; iy++) {
+      vReal[ix][iy] = pcCol[iy].real() / m_ny;
+      vImag[ix][iy] = pcCol[iy].imag() / m_ny;
+    }
+  }
+  delete [] pcCol;
+
+  fftw_destroy_plan (plan);
+  fftw_free(in);
+
+  return true;
+}
+
+bool
+ImageFile::ifftCols (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::fftRows]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  ImageFileArrayConst vReal = getArray();
+  ImageFileArrayConst vImag = getImaginaryArray();
+
+  fftw_complex* in = static_cast<fftw_complex*>(fftw_malloc(sizeof(fftw_complex) * m_ny));
+  fftw_plan plan = fftw_plan_dft_1d (m_ny, in, in, FFTW_BACKWARD, FFTW_ESTIMATE);
+  std::complex<double>* pcCol = new std::complex<double> [m_ny];
+
+  unsigned int ix, iy;
+  // unsigned int iArray = 0;
+  for (ix = 0; ix < m_nx; ix++) {
+    for (iy = 0; iy < m_ny; iy++) {
+      double dImag = 0;
+      if (isComplex())
+        dImag = vImag[ix][iy];
+      pcCol[iy] = std::complex<double> (vReal[ix][iy], dImag);
+    }
+
+    Fourier::shuffleNaturalToFourierOrder (pcCol, m_ny);
+
+    for (iy = 0; iy < m_ny; iy++) {
+      in[iy][0] = pcCol[iy].real();
+      in[iy][1] = pcCol[iy].imag();
+    }
+
+    fftw_execute (plan);
+
+    for (iy = 0; iy < m_ny; iy++) {
+      vReal[ix][iy] = in[iy][0];
+      vImag[ix][iy] = in[iy][1];
+    }
+  }
+  delete [] pcCol;
+
+  fftw_destroy_plan (plan);
+  fftw_free(in);
+
+  return true;
+}
+
+#endif // HAVE_FFTW
+
+
+
+bool
+ImageFile::fourier (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (! result.isComplex())
+    if (! result.convertRealToComplex ())
+      return false;
+
+    ImageFileArrayConst vLHS = getArray();
+    ImageFileArrayConst vLHSImag = getImaginaryArray();
+    ImageFileArray vRealResult = result.getArray();
+    ImageFileArray vImagResult = result.getImaginaryArray();
+
+    unsigned int ix, iy;
+
+    // alloc output matrix
+    CTSimComplex** complexOut = new CTSimComplex* [m_nx];
+    for (ix = 0; ix < m_nx; ix++)
+      complexOut[ix] = new CTSimComplex [m_ny];
+
+    // fourier each x column
+    CTSimComplex* pY = new CTSimComplex [m_ny];
+    for (ix = 0; ix < m_nx; ix++) {
+      for (iy = 0; iy < m_ny; iy++) {
+        double dImag = 0;
+        if (isComplex())
+          dImag = vLHSImag[ix][iy];
+        pY[iy] = std::complex<double>(vLHS[ix][iy], dImag);
+      }
+      ProcessSignal::finiteFourierTransform (pY, complexOut[ix], m_ny,  ProcessSignal::FORWARD);
+    }
+    delete [] pY;
+
+    // fourier each y row
+    CTSimComplex* pX = new CTSimComplex [m_nx];
+    CTSimComplex* complexOutRow = new CTSimComplex [m_nx];
+    for (iy = 0; iy < m_ny; iy++) {
+      for (ix = 0; ix < m_nx; ix++)
+        pX[ix] = complexOut[ix][iy];
+      ProcessSignal::finiteFourierTransform (pX, complexOutRow, m_nx, ProcessSignal::FORWARD);
+      for (ix = 0; ix < m_nx; ix++)
+        complexOut[ix][iy] = complexOutRow[ix];
+    }
+    delete [] pX;
+    delete [] complexOutRow;
+
+    for (ix = 0; ix < m_nx; ix++)
+      for (iy = 0; iy < m_ny; iy++) {
+        vRealResult[ix][iy] = complexOut[ix][iy].real();
+        vImagResult[ix][iy] = complexOut[ix][iy].imag();
+      }
+
+      Fourier::shuffleFourierToNaturalOrder (result);
+
+      // delete complexOut matrix
+      for (ix = 0; ix < m_nx; ix++)
+        delete [] complexOut[ix];
+      delete [] complexOut;
+
+      return true;
+}
+
+bool
+ImageFile::inverseFourier (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (result.dataType() == Array2dFile::DATA_TYPE_REAL) {
+    if (! result.convertRealToComplex ())
+      return false;
+  }
+
+  ImageFileArrayConst vLHSReal = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArray vRealResult = result.getArray();
+  ImageFileArray vImagResult = result.getImaginaryArray();
+
+  unsigned int ix, iy;
+  // alloc 2d complex output matrix
+  CTSimComplex** complexOut = new CTSimComplex* [m_nx];
+  for (ix = 0; ix < m_nx; ix++)
+    complexOut[ix] = new CTSimComplex [m_ny];
+
+  // put input image into result
+  for (ix = 0; ix < m_nx; ix++)
+    for (iy = 0; iy < m_ny; iy++) {
+      vRealResult[ix][iy] = vLHSReal[ix][iy];
+      if (isComplex())
+        vImagResult[ix][iy] = vLHSImag[ix][iy];
+      else
+        vImagResult[ix][iy] = 0;
+    }
+
+    Fourier::shuffleNaturalToFourierOrder (result);
+
+    // ifourier each x column
+    CTSimComplex* pCol = new CTSimComplex [m_ny];
+    for (ix = 0; ix < m_nx; ix++) {
+      for (iy = 0; iy < m_ny; iy++) {
+        pCol[iy] = std::complex<double> (vRealResult[ix][iy], vImagResult[ix][iy]);
+      }
+      ProcessSignal::finiteFourierTransform (pCol, complexOut[ix], m_ny,  ProcessSignal::BACKWARD);
+    }
+    delete [] pCol;
+
+    // ifourier each y row
+    CTSimComplex* complexInRow = new CTSimComplex [m_nx];
+    CTSimComplex* complexOutRow = new CTSimComplex [m_nx];
+    for (iy = 0; iy < m_ny; iy++) {
+      for (ix = 0; ix < m_nx; ix++)
+        complexInRow[ix] = complexOut[ix][iy];
+      ProcessSignal::finiteFourierTransform (complexInRow, complexOutRow, m_nx, ProcessSignal::BACKWARD);
+      for (ix = 0; ix < m_nx; ix++)
+        complexOut[ix][iy] = complexOutRow[ix];
+    }
+    delete [] complexInRow;
+    delete [] complexOutRow;
+
+    for (ix = 0; ix < m_nx; ix++)
+      for (iy = 0; iy < m_ny; iy++) {
+        vRealResult[ix][iy] = complexOut[ix][iy].real();
+        vImagResult[ix][iy] = complexOut[ix][iy].imag();
+      }
+
+      // delete complexOut matrix
+      for (ix = 0; ix < m_nx; ix++)
+        delete [] complexOut[ix];
+      delete [] complexOut;
+
+      return true;
+}
+
+
+bool
+ImageFile::magnitude (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  ImageFileArray vReal = getArray();
+  ImageFileArray vImag = getImaginaryArray();
+  ImageFileArray vRealResult = result.getArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++)
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (isComplex())
+        vRealResult[ix][iy] = ::sqrt (vReal[ix][iy] * vReal[ix][iy] + vImag[ix][iy] * vImag[ix][iy]);
+      else
+        vRealResult[ix][iy] = ::fabs(vReal[ix][iy]);
+    }
+
+    if (result.isComplex())
+      result.reallocComplexToReal();
+
+    return true;
+}
+
+bool
+ImageFile::phase (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  ImageFileArray vReal = getArray();
+  ImageFileArray vImag = getImaginaryArray();
+  ImageFileArray vRealResult = result.getArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (isComplex())
+        vRealResult[ix][iy] = ::atan2 (vImag[ix][iy], vReal[ix][iy]);
+      else
+        vRealResult[ix][iy] = 0;
+    }
+  }
+  if (result.isComplex())
+    result.reallocComplexToReal();
+
+  return true;
+}
+
+bool
+ImageFile::real (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  ImageFileArray vReal = getArray();
+  ImageFileArray vRealResult = result.getArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+        vRealResult[ix][iy] = vReal[ix][iy];
+    }
+  }
+
+  if (result.isComplex())
+    result.reallocComplexToReal();
+
+  return true;
+}
+
+bool
+ImageFile::imaginary (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  ImageFileArray vImag = getArray();
+  ImageFileArray vRealResult = result.getArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (isComplex())
+        vRealResult[ix][iy] = vImag[ix][iy];
+      else
+        vRealResult[ix][iy] = 0;
+    }
+  }
+
+  if (result.isComplex())
+      result.reallocComplexToReal();
+
+  return true;
+}
+
+bool
+ImageFile::square (ImageFile& result) const
+{
+  if (m_nx != result.nx() || m_ny != result.ny()) {
+    sys_error (ERR_WARNING, "Difference sizes of images [ImageFile::invertPixelValues]");
+    return false;
+  }
+
+  if (isComplex() && ! result.isComplex())
+    result.convertRealToComplex();
+
+  ImageFileArrayConst vLHS = getArray();
+  ImageFileArrayConst vLHSImag = getImaginaryArray();
+  ImageFileArray vResult = result.getArray();
+  ImageFileArray vResultImag = result.getImaginaryArray();
+
+  for (unsigned int ix = 0; ix < m_nx; ix++) {
+    for (unsigned int iy = 0; iy < m_ny; iy++) {
+      if (result.isComplex()) {
+        double dImag = 0;
+        if (isComplex())
+          dImag = vLHSImag[ix][iy];
+        std::complex<double> cLHS (vLHS[ix][iy], dImag);
+        std::complex<double> cResult = cLHS * cLHS;
+        vResult[ix][iy] = cResult.real();
+        vResultImag[ix][iy] = cResult.imag();
+      } else
+        vResult[ix][iy] = vLHS[ix][iy] * vLHS[ix][iy];
+    }
+  }
+
+  return true;
+}
+
+int
+ImageFile::convertExportFormatNameToID (const char* const formatName)
+{
+  int formatID = EXPORT_FORMAT_INVALID;
+
+  for (int i = 0; i < s_iExportFormatCount; i++)
+    if (strcasecmp (formatName, s_aszExportFormatName[i]) == 0) {
+      formatID = i;
+      break;
+    }
+
+    return (formatID);
+}
+
+const char*
+ImageFile::convertExportFormatIDToName (int formatID)
+{
+  static const char *formatName = "";
+
+  if (formatID >= 0 && formatID < s_iExportFormatCount)
+    return (s_aszExportFormatName[formatID]);
+
+  return (formatName);
+}
+
+const char*
+ImageFile::convertExportFormatIDToTitle (const int formatID)
+{
+  static const char *formatTitle = "";
+
+  if (formatID >= 0 && formatID < s_iExportFormatCount)
+    return (s_aszExportFormatTitle[formatID]);
+
+  return (formatTitle);
+}
+
+int
+ImageFile::convertImportFormatNameToID (const char* const formatName)
+{
+  int formatID = IMPORT_FORMAT_INVALID;
+
+  for (int i = 0; i < s_iImportFormatCount; i++)
+    if (strcasecmp (formatName, s_aszImportFormatName[i]) == 0) {
+      formatID = i;
+      break;
+    }
+
+    return (formatID);
+}
+
+const char*
+ImageFile::convertImportFormatIDToName (int formatID)
+{
+  static const char *formatName = "";
+
+  if (formatID >= 0 && formatID < s_iImportFormatCount)
+    return (s_aszImportFormatName[formatID]);
+
+  return (formatName);
+}
+
+const char*
+ImageFile::convertImportFormatIDToTitle (const int formatID)
+{
+  static const char *formatTitle = "";
+
+  if (formatID >= 0 && formatID < s_iImportFormatCount)
+    return (s_aszImportFormatTitle[formatID]);
+
+  return (formatTitle);
+}
+
+bool
+ImageFile::importImage (const char* const pszFormat, const char* const pszFilename)
+{
+  int iFormatID = convertImportFormatNameToID (pszFormat);
+
+  if (iFormatID == IMPORT_FORMAT_PPM)
+    return readImagePPM (pszFilename);
+#ifdef HAVE_PNG
+  else if (iFormatID == IMPORT_FORMAT_PNG)
+    return readImagePNG (pszFilename);
+#endif
+
+  sys_error (ERR_SEVERE, "Invalid format %s [ImageFile::importImage]", pszFormat);
+  return false;
+}
+
+void
+ImageFile::skipSpacePPM (FILE* fp)
+{
+  int c = fgetc (fp);
+  while (isspace (c) || c == '#') {
+    if (c == '#') {   // comment until end of line
+      c = fgetc(fp);
+      while (c != 13 && c != 10)
+        c = fgetc(fp);
+    }
+    else
+      c = fgetc(fp);
+  }
+
+  ungetc (c, fp);
+}
+
+bool
+ImageFile::readImagePPM (const char* const pszFile)
+{
+  FILE* fp = fopen (pszFile, "r");
+  if ((fp = fopen (pszFile, "r")) == NULL)
+    return false;
+  char cSignature = toupper(fgetc(fp));
+  if (cSignature != 'P') {
+    fclose(fp);
+    return false;
+  }
+  cSignature = fgetc(fp);
+  if (cSignature == '5' || cSignature == '6') { // binary modes
+    fclose(fp);
+    fp = fopen(pszFile, "rb"); // reopen in binary mode
+    fgetc(fp);
+    fgetc(fp);
+  } else if (cSignature != '2' && cSignature != '3') {
+    fclose(fp);
+    return false;
+  }
+
+  int nRows, nCols, iMaxValue;
+  skipSpacePPM (fp);
+  if (fscanf (fp, "%d", &nCols) != 1) {
+    fclose(fp);
+    return false;
+  }
+  skipSpacePPM (fp);
+  if (fscanf (fp, "%d", &nRows) != 1) {
+    fclose(fp);
+    return false;
+  }
+  skipSpacePPM (fp);
+  if (fscanf (fp, "%d", &iMaxValue) != 1) {
+    fclose(fp);
+    return false;
+  }
+  setArraySize (nRows, nCols);
+
+  if (cSignature == '5' || cSignature == '6') { // binary modes
+    int c = fgetc(fp);
+    if (c == 13) {
+      c = fgetc(fp);
+      if (c != 10)  // read msdos 13-10 newline
+        ungetc(c, fp);
+    }
+  } else
+    skipSpacePPM (fp); // ascii may have comments
+
+  bool bMonochromeImage = false;
+  double dMaxValue = iMaxValue;
+  double dMaxValue3 = iMaxValue * 3;
+
+  ImageFileArray v = getArray();
+  for (int iy = nRows - 1; iy >= 0; iy--) {
+    for (int ix = 0; ix < nCols; ix++) {
+      int iGS, iR, iG, iB;
+      double dR, dG, dB;
+      switch (cSignature) {
+      case '2':
+        if (fscanf(fp, "%d ", &iGS) != 1) {
+          fclose(fp);
+          return false;
+        }
+        v[ix][iy] = iGS / dMaxValue;
+        break;
+      case '5':
+        iGS = fgetc(fp);
+        if (iGS == EOF) {
+          fclose(fp);
+          return false;
+        }
+        v[ix][iy] = iGS / dMaxValue;
+        break;
+      case '3':
+        if (fscanf (fp, "%d %d %d ", &iR, &iG, &iB) != 3) {
+          fclose(fp);
+          return false;
+        }
+        if (ix == 0 && iy == 0 && (iR == iG && iG == iB))
+          bMonochromeImage = true;
+        if (bMonochromeImage)
+          v[ix][iy] = (iR + iG + iB) / dMaxValue3;
+        else {
+          dR = iR / dMaxValue;
+          dG = iG / dMaxValue;
+          dB = iB / dMaxValue;
+          v[ix][iy] = colorToGrayscale (dR, dG, dB);
+        }
+        break;
+      case '6':
+        iR = fgetc(fp);
+        iG = fgetc(fp);
+        iB = fgetc(fp);
+
+        if (iB == EOF) {
+          fclose(fp);
+          return false;
+        }
+        if (ix == 0 && iy == 0 && (iR == iG && iG == iB))
+          bMonochromeImage = true;
+
+        if (bMonochromeImage)
+          v[ix][iy] = (iR + iG + iB) / dMaxValue3;
+        else {
+          dR = iR / dMaxValue;
+          dG = iG / dMaxValue;
+          dB = iB / dMaxValue;
+          v[ix][iy] = colorToGrayscale (dR, dG, dB);
+        }
+        break;
+      }
+    }
+  }
+
+  fclose(fp);
+  return true;
+}
+
+#ifdef HAVE_PNG
+bool
+ImageFile::readImagePNG (const char* const pszFile)
+{
+  FILE* fp = fopen(pszFile, "rb");
+  if (!fp)
+    return false;
+  unsigned char header[8];
+  fread (header, 1, 8, fp);
+  if (png_sig_cmp (header, 0, 8)) {
+    fclose (fp);
+    return false;
+  }
+
+  png_structp png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+  if (!png_ptr) {
+    fclose(fp);
+    return false;
+  }
+
+  png_infop info_ptr = png_create_info_struct(png_ptr);
+  if (!info_ptr) {
+    png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
+    fclose(fp);
+    return false;
+  }
+
+  png_infop end_info = png_create_info_struct(png_ptr);
+  if (!end_info) {
+    png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
+    fclose(fp);
+    return false;
+  }
+
+  if (setjmp(png_ptr->jmpbuf)) {
+    png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+    fclose(fp);
+    return false;
+  }
+
+  png_init_io(png_ptr, fp);
+  png_set_sig_bytes(png_ptr, 8);
+  png_read_info(png_ptr, info_ptr);
+
+  int width = png_get_image_width (png_ptr, info_ptr);
+  int height = png_get_image_height (png_ptr, info_ptr);
+  int bit_depth = png_get_bit_depth (png_ptr, info_ptr);
+  int color_type = png_get_color_type (png_ptr, info_ptr);
+
+  if (color_type == PNG_COLOR_TYPE_PALETTE && bit_depth <= 8)
+    png_set_expand(png_ptr);
+
+  if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
+    png_set_expand(png_ptr);
+
+  if (bit_depth < 8)
+    png_set_packing(png_ptr);
+
+  if (color_type & PNG_COLOR_MASK_ALPHA)
+    png_set_strip_alpha(png_ptr);
+
+  if (bit_depth == 16)
+    png_set_swap(png_ptr); // convert to little-endian format
+
+  png_read_update_info(png_ptr, info_ptr); // update with transformations
+  int rowbytes = png_get_rowbytes (png_ptr, info_ptr);
+  bit_depth = png_get_bit_depth (png_ptr, info_ptr);
+  color_type = png_get_color_type (png_ptr, info_ptr);
+
+  png_bytep* row_pointers = new png_bytep [height];
+  int i;
+  for (i = 0; i < height; i++)
+    row_pointers[i] = new unsigned char [rowbytes];
+
+  png_read_image(png_ptr, row_pointers);
+
+  setArraySize (width, height);
+  ImageFileArray v = getArray();
+  for (int iy = 0; iy < height; iy++) {
+    for (int ix = 0; ix < width; ix++) {
+      double dV = 0;
+      if (color_type == PNG_COLOR_TYPE_GRAY) {
+        if (bit_depth == 8)
+          dV = row_pointers[iy][ix] / 255.;
+        else if (bit_depth == 16) {
+          int iBase = ix * 2;
+          dV = (row_pointers[iy][iBase] + (row_pointers[iy][iBase+1] << 8)) / 65536.;
+        } else
+          dV = 0;
+      } else if (color_type == PNG_COLOR_TYPE_RGB) {
+        if (bit_depth == 8) {
+          int iBase = ix * 3;
+          double dR = row_pointers[iy][iBase] / 255.;
+          double dG = row_pointers[iy][iBase+1] / 255.;
+          double dB = row_pointers[iy][iBase+2] / 255.;
+          dV = colorToGrayscale (dR, dG, dB);
+        } else
+          dV = 0;
+      }
+      v[ix][height-iy-1] = dV;
+    }
+  }
+
+  png_read_end(png_ptr, end_info);
+  png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+
+  for (i = 0; i < height; i++)
+    delete row_pointers[i];
+  delete row_pointers;
+
+  fclose (fp);
+  return true;
+}
+#endif
+
+bool
+ImageFile::exportImage (const char* const pszFormat, const char* const pszFilename, int nxcell, int nycell, double densmin, double densmax)
+{
+  int iFormatID = convertExportFormatNameToID (pszFormat);
+
+  if (iFormatID == EXPORT_FORMAT_PGM)
+    return writeImagePGM (pszFilename, nxcell, nycell, densmin, densmax);
+  else if (iFormatID == EXPORT_FORMAT_PGMASCII)
+    return writeImagePGMASCII (pszFilename, nxcell, nycell, densmin, densmax);
+  else if (iFormatID == EXPORT_FORMAT_TEXT)
+    return writeImageText (pszFilename);
+#ifdef HAVE_PNG
+  else if (iFormatID == EXPORT_FORMAT_PNG)
+    return writeImagePNG (pszFilename, 8, nxcell, nycell, densmin, densmax);
+  else if (iFormatID == EXPORT_FORMAT_PNG16)
+    return writeImagePNG (pszFilename, 16, nxcell, nycell, densmin, densmax);
+#endif
+#ifdef HAVE_CTN_DICOM
+  else if (iFormatID == EXPORT_FORMAT_DICOM) {
+    DicomExporter dicomExport (this);
+    bool bSuccess = dicomExport.writeFile (pszFilename);
+    if (! bSuccess)
+      sys_error (ERR_SEVERE, dicomExport.failMessage().c_str());
+    return bSuccess;
+  }
+#endif
+  else if (iFormatID == EXPORT_FORMAT_RAW)
+         return writeImageRaw(pszFilename, nxcell, nycell);
+
+
+  sys_error (ERR_SEVERE, "Invalid format %s [ImageFile::exportImage]", pszFormat);
+  return false;
+}
+
+
+bool
+ImageFile::writeImagePGM (const char* const outfile, int nxcell, int nycell, double densmin, double densmax)
+{
+  FILE *fp;
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArray v = getArray();
+
+  unsigned char* rowp = new unsigned char [nx * nxcell];
+
+  if ((fp = fopen (outfile, "wb")) == NULL)
+    return false;
+
+  fprintf(fp, "P5\n");
+  fprintf(fp, "%d %d\n", nx, ny);
+  fprintf(fp, "255\n");
+
+  for (int irow = ny - 1; irow >= 0; irow--) {
+    for (int icol = 0; icol < nx; icol++) {
+      int pos = icol * nxcell;
+      double dens = (v[icol][irow] - densmin) / (densmax - densmin);
+      dens = clamp (dens, 0., 1.);
+      for (int p = pos; p < pos + nxcell; p++) {
+        rowp[p] = static_cast<unsigned int> (dens * 255.);
+      }
+    }
+    for (int ir = 0; ir < nycell; ir++) {
+      for (int ic = 0; ic < nx * nxcell; ic++)
+        fputc( rowp[ic], fp );
+    }
+  }
+
+  delete rowp;
+  fclose(fp);
+
+  return true;
+}
+
+bool
+ImageFile::writeImagePGMASCII (const char* const outfile, int nxcell, int nycell, double densmin, double densmax)
+{
+  FILE *fp;
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArray v = getArray();
+
+  unsigned char* rowp = new unsigned char [nx * nxcell];
+
+  if ((fp = fopen (outfile, "wb")) == NULL)
+    return false;
+
+  fprintf(fp, "P2\n");
+  fprintf(fp, "%d %d\n", nx, ny);
+  fprintf(fp, "255\n");
+
+  for (int irow = ny - 1; irow >= 0; irow--) {
+    for (int icol = 0; icol < nx; icol++) {
+      int pos = icol * nxcell;
+      double dens = (v[icol][irow] - densmin) / (densmax - densmin);
+      dens = clamp (dens, 0., 1.);
+      for (int p = pos; p < pos + nxcell; p++) {
+        rowp[p] = static_cast<unsigned int> (dens * 255.);
+      }
+    }
+    for (int ir = 0; ir < nycell; ir++) {
+      for (int ic = 0; ic < nx * nxcell; ic++)
+        fprintf(fp, "%d ", rowp[ic]);
+      fprintf(fp, "\n");
+    }
+  }
+
+  delete rowp;
+  fclose(fp);
+
+  return true;
+}
+
+bool
+ImageFile::writeImageText (const char* const outfile)
+{
+  FILE *fp;
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArray v = getArray();
+  ImageFileArray vImag = getImaginaryArray();
+
+  if ((fp = fopen (outfile, "w")) == NULL)
+    return false;
+
+  for (int irow = ny - 1; irow >= 0; irow--) {
+    for (int icol = 0; icol < nx; icol++) {
+      if (isComplex()) {
+        if (vImag[icol][irow] >= 0)
+          fprintf (fp, "%.9g+%.9gi ", v[icol][irow], vImag[icol][irow]);
+        else
+          fprintf (fp, "%.9g-%.9gi ", v[icol][irow], -vImag[icol][irow]);
+      } else
+        fprintf (fp, "%12.8g ", v[icol][irow]);
+    }
+    fprintf(fp, "\n");
+  }
+
+  fclose(fp);
+
+  return true;
+}
+
+
+#ifdef HAVE_PNG
+bool
+ImageFile::writeImagePNG (const char* const outfile, int bitdepth, int nxcell, int nycell, double densmin, double densmax)
+{
+  double max_out_level = (1 << bitdepth) - 1;
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArray v = getArray();
+
+  unsigned char* rowp = new unsigned char [nx * nxcell * (bitdepth / 8)];
+
+  FILE *fp = fopen (outfile, "wb");
+  if (! fp)
+    return false;
+
+  png_structp png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+  if (! png_ptr)
+    return false;
+
+  png_infop info_ptr = png_create_info_struct (png_ptr);
+  if (! info_ptr) {
+    png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
+    fclose (fp);
+    return false;
+  }
+
+  if (setjmp (png_ptr->jmpbuf)) {
+    png_destroy_write_struct (&png_ptr, &info_ptr);
+    fclose (fp);
+    return false;
+  }
+
+  png_init_io(png_ptr, fp);
+
+  png_set_IHDR (png_ptr, info_ptr, nx * nxcell, ny * nycell, bitdepth, PNG_COLOR_TYPE_GRAY, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+
+  png_write_info(png_ptr, info_ptr);
+  for (int irow = ny - 1; irow >= 0; irow--) {
+    png_bytep row_pointer = rowp;
+
+    for (int icol = 0; icol < nx; icol++) {
+      int pos = icol * nxcell;
+      double dens = (v[icol][irow] - densmin) / (densmax - densmin);
+      dens = clamp (dens, 0., 1.);
+      unsigned int outval = static_cast<unsigned int> (dens * max_out_level);
+
+      for (int p = pos; p < pos + nxcell; p++) {
+        if (bitdepth == 8)
+          rowp[p] = outval;
+        else {
+          int rowpos = p * 2;
+          rowp[rowpos+1] = (outval >> 8) & 0xFF;
+          rowp[rowpos] = (outval & 0xFF);
+        }
+      }
+    }
+    for (int ir = 0; ir < nycell; ir++)
+      png_write_rows (png_ptr, &row_pointer, 1);
+  }
+
+  png_write_end (png_ptr, info_ptr);
+  png_destroy_write_struct (&png_ptr, &info_ptr);
+  delete rowp;
+
+  fclose(fp);
+
+  return true;
+}
+#endif
+
+#ifdef HAVE_GD
+#include "gd.h"
+static const int N_GRAYSCALE=256;
+
+bool
+ImageFile::writeImageGIF (const char* const outfile, int nxcell, int nycell, double densmin, double densmax)
+{
+  int gs_indices[N_GRAYSCALE];
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArray v = getArray();
+
+  unsigned char* rowp = new unsigned char [nx * nxcell];
+
+  gdImagePtr gif = gdImageCreate(nx * nxcell, ny * nycell);
+  for (int i = 0; i < N_GRAYSCALE; i++)
+    gs_indices[i] = gdImageColorAllocate(gif, i, i, i);
+
+  int lastrow = ny * nycell - 1;
+  for (int irow = 0; irow < ny; irow++) {
+    int rpos = irow * nycell;
+    for (int ir = rpos; ir < rpos + nycell; ir++) {
+      for (int icol = 0; icol < nx; icol++) {
+        int cpos = icol * nxcell;
+        double dens = (v[icol][irow] - densmin) / (densmax - densmin);
+        dens = clamp(dens, 0., 1.);
+        for (int ic = cpos; ic < cpos + nxcell; ic++) {
+          rowp[ic] = (unsigned int) (dens * (double) (N_GRAYSCALE - 1));
+          gdImageSetPixel(gif, ic, lastrow - ir, gs_indices[rowp[ic]]);
+        }
+      }
+    }
+  }
+
+  FILE *out;
+  if ((out = fopen (outfile,"w")) == NULL) {
+    sys_error(ERR_SEVERE, "Error opening output file %s for writing", outfile);
+    return false;
+  }
+  gdImageGif(gif,out);
+  fclose(out);
+  gdImageDestroy(gif);
+
+  delete rowp;
+
+  return true;
+}
+#endif
+
+bool
+ImageFile::writeImageRaw (const char* const outfile, int nxcell, int nycell)
+{
+  FILE *fp;
+  int nx = m_nx;
+  int ny = m_ny;
+  ImageFileArray v = getArray();
+
+  if ((fp = fopen (outfile, "wb")) == NULL)
+    return false;
+
+  for (int irow = ny - 1; irow >= 0; irow--) {
+    for (int icol = 0; icol < nx; icol++) {
+      float dens = v[icol][irow];
+     fwrite(&dens, sizeof(float), 1, fp);
+    }
+  }
+
+  fclose(fp);
+  return true;
+}
+
+
diff --git a/libctsim/phantom.cpp b/libctsim/phantom.cpp
new file mode 100644
index 0000000..ba4b0e4
--- /dev/null
+++ b/libctsim/phantom.cpp
@@ -0,0 +1,978 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**     Name:                   phm.cpp
+**     Purpose:                Routines for phantom objects
+**     Progammer:              Kevin Rosenberg
+**     Date Started:           Aug 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+const int PhantomElement::POINTS_PER_CIRCLE = 360;
+const double PhantomElement::SCALE_PELEM_EXTENT=0.000;  // increase pelem limits by 0.5%
+//const double PhantomElement::SCALE_PELEM_EXTENT=0.005;  // increase pelem limits by 0.5%
+
+const int Phantom::PHM_INVALID = -1;
+const int Phantom::PHM_HERMAN = 0;
+const int Phantom::PHM_SHEPP_LOGAN = 1;
+const int Phantom::PHM_UNITPULSE = 2;
+
+const char* Phantom::s_aszPhantomName[] =
+{
+  "herman",
+  "shepp-logan",
+  "unit-pulse",
+};
+
+const char* Phantom::s_aszPhantomTitle[] =
+{
+  "Herman Head",
+  "Shepp-Logan",
+  "Unit Pulse",
+};
+
+const int Phantom::s_iPhantomCount = sizeof(s_aszPhantomName) / sizeof(const char*);
+
+
+// CLASS IDENTIFICATION
+//   Phantom
+//
+
+Phantom::Phantom ()
+{
+  init ();
+}
+
+
+Phantom::Phantom (const char* const phmName)
+{
+  init ();
+  createFromPhantom (phmName);
+}
+
+void
+Phantom::init ()
+{
+  m_nPElem = 0;
+  m_xmin = 1E30;
+  m_xmax = -1E30;
+  m_ymin = 1E30;
+  m_ymax = -1E30;
+  m_composition = P_PELEMS;
+  m_fail = false;
+  m_id = PHM_INVALID;
+}
+
+Phantom::~Phantom ()
+{
+  for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) {
+    delete *i;
+  }
+}
+
+
+const char*
+Phantom::convertPhantomIDToName (int phmID)
+{
+  static const char *name = "";
+
+  if (phmID >= 0 && phmID < s_iPhantomCount)
+    return (s_aszPhantomName[phmID]);
+
+  return (name);
+}
+
+const char*
+Phantom::convertPhantomIDToTitle (int phmID)
+{
+  static const char *title = "";
+
+  if (phmID >= 0 && phmID < s_iPhantomCount)
+    return (s_aszPhantomName[phmID]);
+
+  return (title);
+}
+
+int
+Phantom::convertNameToPhantomID (const char* const phmName)
+{
+  int id = PHM_INVALID;
+
+  for (int i = 0; i < s_iPhantomCount; i++)
+    if (strcasecmp (phmName, s_aszPhantomName[i]) == 0) {
+      id = i;
+      break;
+    }
+
+    return (id);
+}
+
+
+bool
+Phantom::createFromPhantom (const char* const phmName)
+{
+  int phmid = convertNameToPhantomID (phmName);
+  if (phmid == PHM_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid phantom name ";
+    m_failMessage += phmName;
+    return false;
+  }
+
+  m_name = phmName;
+  createFromPhantom (phmid);
+  return true;
+}
+
+bool
+Phantom::createFromPhantom (const int phmid)
+{
+  switch (phmid)
+  {
+  case PHM_HERMAN:
+    addStdHerman();
+    break;
+  case PHM_SHEPP_LOGAN:
+    addStdSheppLogan();
+    break;
+  case PHM_UNITPULSE:
+    m_composition = P_UNIT_PULSE;
+    addPElem ("rectangle", 0., 0., 100., 100., 0., 0.);     // outline
+    addPElem ("ellipse", 0., 0., 1., 1., 0., 1.);             // pulse
+    break;
+  default:
+    m_fail = true;
+    m_failMessage = "Illegal phantom id ";
+    m_failMessage += phmid;
+    return false;
+  }
+
+  m_id = phmid;
+
+  return true;
+}
+
+
+/* METHOD IDENTIFICATION
+*   createFromFile          Add PhantomElements from file
+*
+* SYNOPSIS
+*   createFromFile (filename)
+*
+* RETURNS
+*   true if pelem were added
+*   false if an pelem not added
+*/
+
+bool
+Phantom::createFromFile (const char* const fname)
+{
+  bool bGoodFile = true;
+  FILE *fp;
+
+  if ((fp = fopen (fname, "r")) == NULL)
+    return (false);
+
+  m_name = fname;
+
+  while (1) {
+    double cx, cy, u, v, rot, dens;
+    char pelemtype[80];
+
+    int status = fscanf (fp, "%79s %lf %lf %lf %lf %lf %lf", pelemtype, &cx, &cy, &u, &v, &rot, &dens);
+
+    if (status == static_cast<int>(EOF))
+      break;
+    else if (status != 7) {
+      sys_error (ERR_WARNING, "Insufficient fields reading phantom file %s [Phantom::createFromFile]", fname);
+      bGoodFile = false;
+    }
+    addPElem (pelemtype, cx, cy, u, v, rot, dens);
+  }
+
+  fclose (fp);
+
+  return (bGoodFile);
+}
+
+bool
+Phantom::fileWrite (const char* const fname)
+{
+  fstream file (fname, std::ios::out);
+
+  if (! file.fail())
+    printDefinitions (file);
+  return ! file.fail();
+}
+
+/* NAME
+*   addPElem            Add pelem
+*
+* SYNOPSIS
+*   addPElem (type, cx, cy, u, v, rot, atten)
+*   char *type          type of pelem (box, ellipse, etc)
+*   double cx, cy       pelem center
+*   double u,v          pelem size
+*   double rot          rotation angle of pelem (in degrees)
+*   double atten        x-ray attenuation cooefficient
+*/
+
+void
+Phantom::addPElem (const char *type, const double cx, const double cy, const double u, const double v, const double rot, const double atten)
+{
+  PhmElemType pe_type = PhantomElement::convertNameToType (type);
+  if (pe_type == PELEM_INVALID) {
+    sys_error (ERR_WARNING, "Unknown PhantomElement type %s [PhantomElement::PhantomElement]", type);
+    return;
+  }
+
+  PhantomElement *pelem = new PhantomElement (type, cx, cy, u, v, rot, atten);
+  m_listPElem.push_front (pelem);
+
+  // update phantom limits
+  if (m_xmin > pelem->xmin())    m_xmin = pelem->xmin();
+  if (m_xmax < pelem->xmax())    m_xmax = pelem->xmax();
+  if (m_ymin > pelem->ymin())    m_ymin = pelem->ymin();
+  if (m_ymax < pelem->ymax())    m_ymax = pelem->ymax();
+
+  m_nPElem++;
+}
+
+
+/*----------------------------------------------------------------------*/
+/*                      Input-Output Routines                           */
+/*----------------------------------------------------------------------*/
+
+
+/* NAME
+*   print                               Print vertices of Phantom pelems
+*
+* SYNOPSIS
+*   print (phm)
+*/
+
+void
+Phantom::print (std::ostream& os) const
+{
+  os << "Number of PElements: " << m_nPElem << "\n";
+  os << "Limits: xmin=" << m_xmin << ", ymin=" << m_ymin << ", xmax=" << m_xmax << ", ymax=" << m_ymax << "\n";
+
+  for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) {
+    const PhantomElement& rPE = **i;
+    os << "PhantomElement: nPoints=" << rPE.nOutlinePoints();
+    os << ", atten=" << rPE.atten() << " rot=" << convertRadiansToDegrees (rPE.rot()) << "\n";
+    os << "xmin=" << rPE.xmin() << ", ymin=" << rPE.ymin() << ", xmax=" << rPE.xmax() << ", ymax=" << rPE.ymax() << "\n";
+
+    if (false)
+      for (int i = 0; i < rPE.nOutlinePoints(); i++)
+        os << rPE.xOutline()[i] << "," << rPE.yOutline()[i] << "\n";
+  }
+}
+void
+Phantom::print (std::ostringstream& os) const
+{
+  os << "Number of PElements: " << m_nPElem << "\n";
+  os << "Limits: xmin=" << m_xmin << ", ymin=" << m_ymin << ", xmax=" << m_xmax << ", ymax=" << m_ymax << "\n";
+
+  for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) {
+    const PhantomElement& rPE = **i;
+    os << "PhantomElement: nPoints=" << rPE.nOutlinePoints();
+    os << ", atten=" << rPE.atten() << " rot=" << convertRadiansToDegrees (rPE.rot()) << "\n";
+    os << "xmin=" << rPE.xmin() << ", ymin=" << rPE.ymin() << ", xmax=" << rPE.xmax() << ", ymax=" << rPE.ymax() << "\n";
+
+    if (false)
+      for (int i = 0; i < rPE.nOutlinePoints(); i++)
+        os << rPE.xOutline()[i] << "," << rPE.yOutline()[i] << "\n";
+  }
+}
+
+void
+Phantom::printDefinitions (std::ostream& os) const
+{
+  for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) {
+    const PhantomElement& rPE = **i;
+    rPE.printDefinition (os);
+  }
+}
+
+void
+Phantom::printDefinitions (std::ostringstream& os) const
+{
+  for (PElemConstIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++) {
+    const PhantomElement& rPE = **i;
+    rPE.printDefinition (os);
+  }
+}
+
+
+/* NAME
+*   show                Show vector outline of Phantom to user
+*
+* SYNOPSIS
+*   show (pic)
+*/
+
+#ifdef HAVE_SGP
+void
+Phantom::show () const
+{
+  SGPDriver driverSGP ("Phantom Show");
+  SGP sgp (driverSGP);
+
+  show (sgp);
+
+  std::cout << "Press return to continue";
+  cio_kb_getc();
+}
+
+void
+Phantom::show (SGP& sgp) const
+{
+  double wsize = m_xmax - m_xmin;
+  if ((m_ymax - m_ymin) > wsize)
+    wsize = m_ymax - m_ymin;
+  wsize *= 1.01;
+  double halfWindow = wsize / 2;
+
+  double xcent = m_xmin + (m_xmax - m_xmin) / 2;
+  double ycent = m_ymin + (m_ymax - m_ymin) / 2;
+
+  sgp.setWindow (xcent - halfWindow, ycent - halfWindow, xcent + halfWindow, ycent + halfWindow);
+
+  draw (sgp);
+}
+#endif
+
+
+/* NAME
+*   draw                Draw vector outline of Phantom
+*
+* SYNOPSIS
+*   draw ()
+*/
+
+#ifdef HAVE_SGP
+void
+Phantom::draw (SGP& sgp) const
+{
+  for (PElemIterator i = m_listPElem.begin(); i != m_listPElem.end(); i++)
+    sgp.polylineAbs ((*i)->xOutline(), (*i)->yOutline(), (*i)->nOutlinePoints());
+}
+#endif
+
+
+/* NAME
+*   addStdSheppLogan    Make head phantom of Shepp-Logan
+*
+* REFERENCES
+*   S. W. Rowland, "Computer Implementation of Image Reconstruction
+*       Formulas", in "Image Reconstruction from Projections: Implementation
+*       and Applications", edited by G. T. Herman, 1978.
+*/
+
+void
+Phantom::addStdSheppLogan ()
+{
+  addPElem ("ellipse",  0.0000,  0.0000, 0.6900,  0.9200,   0.0,  1.00);
+  addPElem ("ellipse",  0.0000, -0.0184, 0.6624,  0.8740,   0.0, -0.98);
+  addPElem ("ellipse",  0.2200,  0.0000, 0.1100,  0.3100, -18.0, -0.02);
+  addPElem ("ellipse", -0.2200,  0.0000, 0.1600,  0.4100,  18.0, -0.02);
+  addPElem ("ellipse",  0.0000,  0.3500, 0.2100,  0.2500,   0.0,  0.01);
+  addPElem ("ellipse",  0.0000,  0.1000, 0.0460,  0.0460,   0.0,  0.01);
+  addPElem ("ellipse",  0.0000, -0.1000, 0.0460,  0.0460,   0.0,  0.01);
+  addPElem ("ellipse", -0.0800, -0.6050, 0.0460,  0.0230,   0.0,  0.01);
+  addPElem ("ellipse",  0.0000, -0.6050, 0.0230,  0.0230,   0.0,  0.01);
+  addPElem ("ellipse",  0.0600, -0.6050, 0.0230,  0.0230,   0.0,  0.01);
+  addPElem ("ellipse",  0.5538, -0.3858, 0.0330,  0.2060, -18.0,  0.03);
+}
+
+
+/* NAME
+*   addStdHerman                        Standard head phantom of G. T. Herman
+*
+* REFERENCES
+*   G. T. Herman, "Image Reconstructions from Projections:  The Fundementals
+*       of Computed Tomography", 1979.
+*/
+
+void
+Phantom::addStdHerman ()
+{
+  addPElem ("ellipse",  0.000,  1.50,  0.375, 0.3000,  90.00, -0.003);
+  addPElem ("ellipse",  0.675, -0.75,  0.225, 0.1500, 140.00,  0.010);
+  addPElem ("ellipse",  0.750,  1.50,  0.375, 0.2250,  50.00,  0.003);
+  addPElem ("segment",  1.375, -7.50,  1.100, 0.6250,  19.20, -0.204);
+  addPElem ("segment",  1.375, -7.50,  1.100, 4.3200,  19.21,  0.204);
+  addPElem ("segment",  0.000, -2.25,  1.125, 0.3750,   0.00, -0.003);
+  addPElem ("segment",  0.000, -2.25,  1.125, 3.0000,   0.00,  0.003);
+  addPElem ("segment", -1.000,  3.75,  1.000, 0.5000, 135.00, -0.003);
+  addPElem ("segment", -1.000,  3.75,  1.000, 3.0000, 135.00,  0.003);
+  addPElem ("segment",  1.000,  3.75,  1.000, 0.5000, 225.00, -0.003);
+  addPElem ("segment",  1.000,  3.75,  1.000, 3.0000, 225.00,  0.003);
+  addPElem ("triangle", 5.025,  3.75,  1.125, 0.5000, 110.75,  0.206);
+  addPElem ("triangle",-5.025,  3.75,  1.125, 0.9000,-110.75,  0.206);
+  addPElem ("ellipse",  0.000,  0.00,  8.625, 6.4687,  90.00,  0.416);
+  addPElem ("ellipse",  0.000,  0.00,  7.875, 5.7187,  90.00, -0.206);
+}
+
+
+
+/* NAME
+*    convertToImagefile         Make image array from Phantom
+*
+* SYNOPSIS
+*    pic_to_imagefile (pic, im, nsample)
+*    Phantom& pic               Phantom definitions
+*    ImageFile  *im             Computed pixel array
+*    int nsample                Number of samples along each axis for each pixel
+*                               (total samples per pixel = nsample * nsample)
+*/
+
+void
+Phantom::convertToImagefile (ImageFile& im, double dViewRatio, const int in_nsample, const int trace) const
+{
+  convertToImagefile (im, dViewRatio, in_nsample, trace, 0, im.nx(), true);
+}
+
+void
+Phantom::convertToImagefile (ImageFile& im, const double dViewRatio, const int in_nsample, const int trace,
+                             const int colStart, const int colCount, bool bStoreAtColumnPos) const
+{
+  int iStorageOffset = (bStoreAtColumnPos ? colStart : 0);
+  convertToImagefile (im, im.nx(), dViewRatio, in_nsample, trace, colStart, colCount, iStorageOffset);
+}
+
+void
+Phantom::convertToImagefile (ImageFile& im, const int iTotalRasterCols, const double dViewRatio,
+            const int in_nsample, const int trace, const int colStart, const int colCount, int iStorageOffset) const
+{
+  const int nx = im.nx();
+  const int ny = im.ny();
+  if (nx < 2 || ny < 2)
+    return;
+
+  int nsample = in_nsample;
+  if (nsample < 1)
+    nsample = 1;
+
+  double dx = m_xmax - m_xmin;
+  double dy = m_ymax - m_ymin;
+  double xcent = m_xmin + dx / 2;
+  double ycent = m_ymin + dy / 2;
+  double dHalflen = dViewRatio * (getDiameterBoundaryCircle() / SQRT2 / 2);
+
+  double xmin = xcent - dHalflen;
+  double xmax = xcent + dHalflen;
+  double ymin = ycent - dHalflen;
+  double ymax = ycent + dHalflen;
+
+  // Each pixel holds the average of the intensity of the cell with (ix,iy) at the center of the pixel
+  // Set major increments so that the last cell v[nx-1][ny-1] will start at xmax - xinc, ymax - yinc).
+  // Set minor increments so that sample points are centered in cell
+
+  double xinc = (xmax - xmin) / (iTotalRasterCols);
+  double yinc = (ymax - ymin) / ny;
+
+  double kxinc = xinc / nsample;                /* interval between samples */
+  double kyinc = yinc / nsample;
+  double kxofs = kxinc / 2;             /* offset of 1st point */
+  double kyofs = kyinc / 2;
+
+  im.setAxisExtent (xmin, xmax, ymin, ymax);
+  im.setAxisIncrement (xinc, yinc);
+
+  ImageFileArray v = im.getArray();
+
+  for (int ix = 0; ix < colCount; ix++) {
+    int iColStore = ix + iStorageOffset;
+    ImageFileColumn vCol = v[iColStore];
+    for (int iy = 0; iy < ny; iy++)
+      *vCol++ = 0;
+  }
+
+  double x_start = xmin + (colStart * xinc);
+  for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) {
+    const PhantomElement& rPElem = **pelem;
+    double x, y, xi, yi;
+    int ix, iy, kx, ky;
+    for (ix = 0, x = x_start; ix < colCount; ix++, x += xinc) {
+      int iColStore = ix + iStorageOffset;
+      ImageFileColumn vCol = v[iColStore];
+      for (iy = 0, y = ymin; iy < ny; iy++, y += yinc) {
+        double dAtten = 0;
+        for (kx = 0, xi = x + kxofs; kx < nsample; kx++, xi += kxinc) {
+          for (ky = 0, yi = y + kyofs; ky < nsample; ky++, yi += kyinc)
+            if (rPElem.isPointInside (xi, yi, PHM_COORD))
+              dAtten += rPElem.atten();
+        } // for kx
+        *vCol++ += dAtten;
+      } /* for iy */
+    }  /* for ix */
+  }  /* for pelem */
+
+
+  if (nsample > 1) {
+    double factor = 1.0 / static_cast<double>(nsample * nsample);
+
+
+    for (int ix = 0; ix < colCount; ix++) {
+      int iColStore = ix + iStorageOffset;
+      ImageFileColumn vCol = v[iColStore];
+      for (int iy = 0; iy < ny; iy++)
+        *vCol++ *= factor;
+    }
+  }
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+// CLASS IDENTIFICATION
+//
+//      PhantomElement
+//
+// PURPOSE
+//
+////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+PhantomElement::PhantomElement (const char *type, const double cx, const double cy, const double u, const double v, const double rot, const double atten)
+: m_cx(cx), m_cy(cy), m_u(u), m_v(v), m_atten(atten), m_nPoints(0), m_xOutline(0), m_yOutline(0)
+{
+  m_rot = convertDegreesToRadians (rot);   // convert angle to radians
+
+  m_type = convertNameToType (type);
+
+  makeTransformMatrices ();     // calc transform matrices between phantom and normalized phantomelement
+  makeVectorOutline ();         // calculate vector outline of pelem
+
+  m_rectLimits[0] = m_xmin;   m_rectLimits[1] = m_ymin;
+  m_rectLimits[2] = m_xmax;   m_rectLimits[3] = m_ymax;
+}
+
+
+
+PhantomElement::~PhantomElement ()
+{
+  delete m_xOutline;
+  delete m_yOutline;
+}
+
+void
+PhantomElement::printDefinition (std::ostream& os) const
+{
+  os << convertTypeToName (m_type) << " " << m_cx << " " << m_cy << " " << m_u << " "
+    << m_v << " " << convertRadiansToDegrees (m_rot) << " " << m_atten << "\n";
+}
+
+void
+PhantomElement::printDefinition (std::ostringstream& os) const
+{
+  os << convertTypeToName (m_type) << " " << m_cx << " " << m_cy << " " << m_u << " "
+    << m_v << " " << convertRadiansToDegrees (m_rot) << " " << m_atten << "\n";
+}
+
+PhmElemType
+PhantomElement::convertNameToType (const char* const typeName)
+{
+  PhmElemType type = PELEM_INVALID;
+
+  if (strcasecmp (typeName, "rectangle") == 0)
+    type = PELEM_RECTANGLE;
+  else if (strcasecmp (typeName, "triangle") == 0)
+    type = PELEM_TRIANGLE;
+  else if (strcasecmp (typeName, "ellipse") == 0)
+    type = PELEM_ELLIPSE;
+  else if (strcasecmp (typeName, "sector") == 0)
+    type = PELEM_SECTOR;
+  else if (strcasecmp (typeName, "segment") == 0)
+    type = PELEM_SEGMENT;
+
+  return (type);
+}
+
+const char* const
+PhantomElement::convertTypeToName (PhmElemType iType)
+{
+  static const char* pszType = "Unknown";
+
+  if (iType == PELEM_RECTANGLE)
+    pszType = "rectangle";
+  else if (iType == PELEM_TRIANGLE)
+    pszType = "triangle";
+  else if (iType == PELEM_ELLIPSE)
+    pszType = "ellipse";
+  else if (iType == PELEM_SECTOR)
+    pszType = "sector";
+  else if (iType == PELEM_SEGMENT)
+    pszType = "segment";
+
+  return pszType;
+}
+
+
+void
+PhantomElement::makeTransformMatrices ()
+{
+  GRFMTX_2D temp;
+
+  // To map normalized Pelem coords to world Phantom
+  //     scale by (u, v)
+  //     rotate by rot
+  //     translate by (cx, cy)
+
+  scale_mtx2 (m_xformObjToPhm, m_u, m_v);
+  rot_mtx2  (temp, m_rot);
+  mult_mtx2 (m_xformObjToPhm, temp, m_xformObjToPhm);
+  xlat_mtx2 (temp, m_cx, m_cy);
+  mult_mtx2 (m_xformObjToPhm, temp, m_xformObjToPhm);
+
+  // to map world Phantom coodinates to normalized PElem coords
+  //     translate by (-cx, -cy)
+  //     rotate by -rot
+  //     scale by (1/u, 1/v)
+
+  xlat_mtx2 (m_xformPhmToObj, -m_cx, -m_cy);
+  rot_mtx2  (temp, -m_rot);
+  mult_mtx2 (m_xformPhmToObj, temp, m_xformPhmToObj);
+  scale_mtx2 (temp, 1 / m_u, 1 / m_v);
+  mult_mtx2 (m_xformPhmToObj, temp, m_xformPhmToObj);
+}
+
+
+/* NAME
+*   pelem_make_points           INTERNAL routine to calculate point array for an pelem
+*
+* SYNOPSIS
+*   makepelempts (pelem)
+*   PELEM *pelem        pelem whose points we are calculating
+*
+* NOTES
+*   Called by phm_add_pelem()
+*/
+
+void
+PhantomElement::makeVectorOutline ()
+{
+  double radius, theta, start, stop;
+  double xfact, yfact;
+  int cpts;
+
+  m_nPoints = 0;
+  switch (m_type) {
+  case PELEM_RECTANGLE:
+    m_nPoints = 5;
+    m_xOutline = new double [m_nPoints];
+    m_yOutline = new double [m_nPoints];
+    m_xOutline[0] =-m_u;        m_yOutline[0] =-m_v;
+    m_xOutline[1] = m_u;        m_yOutline[1] =-m_v;
+    m_xOutline[2] = m_u;        m_yOutline[2] = m_v;
+    m_xOutline[3] =-m_u;        m_yOutline[3] = m_v;
+    m_xOutline[4] =-m_u;        m_yOutline[4] =-m_v;
+    break;
+  case PELEM_TRIANGLE:
+    m_nPoints = 4;
+    m_xOutline = new double [m_nPoints];
+    m_yOutline = new double [m_nPoints];
+    m_xOutline[0] =-m_u;        m_yOutline[0] = 0.0;
+    m_xOutline[1] = m_u;        m_yOutline[1] = 0.0;
+    m_xOutline[2] = 0.0;        m_yOutline[2] = m_v;
+    m_xOutline[3] =-m_u;        m_yOutline[3] = 0.0;
+    break;
+  case PELEM_ELLIPSE:
+    cpts = numCirclePoints (TWOPI);
+    m_nPoints = cpts;
+    m_xOutline = new double [m_nPoints];
+    m_yOutline = new double [m_nPoints];
+    calcEllipsePoints (m_xOutline, m_yOutline, cpts, m_u, m_v);
+    break;
+  case PELEM_SECTOR:
+    radius = sqrt(m_u * m_u + m_v * m_v);
+    theta = atan(m_u / m_v);            // angle with y-axis
+    start = 3.0 * HALFPI - theta;
+    stop  = 3.0 * HALFPI + theta;
+    cpts = numCirclePoints (stop - start);
+    m_nPoints = 3 + cpts;
+    m_xOutline = new double [m_nPoints];
+    m_yOutline = new double [m_nPoints];
+
+    m_xOutline[0] = 0.0;                m_yOutline[0] = m_v;
+    m_xOutline[1] =-m_u;                m_yOutline[1] = 0.0;
+    calcArcPoints (&m_xOutline[2], &m_yOutline[2], cpts, 0.0, m_v, radius, start, stop);
+    m_xOutline[cpts + 2] = 0.0;
+    m_yOutline[cpts + 2] = m_v;
+    break;
+  case PELEM_SEGMENT:
+    radius = sqrt(m_u * m_u + m_v * m_v);
+    theta = atan (m_u / m_v);           // angle with y-axis
+    start = 3.0 * HALFPI - theta;
+    stop  = 3.0 * HALFPI + theta;
+
+    cpts = numCirclePoints (stop - start);
+    m_nPoints = cpts + 1;
+    m_xOutline = new double [m_nPoints];
+    m_yOutline = new double [m_nPoints];
+
+    calcArcPoints (m_xOutline, m_yOutline, cpts, 0.0, m_v, radius, start, stop);
+    m_xOutline[cpts] = -m_u;
+    m_yOutline[cpts] = 0.0;
+    break;
+  default:
+    sys_error(ERR_WARNING, "Illegal phantom element type %d [makeVectorOutline]", m_type);
+    return;
+  }
+
+  rotate2d (m_xOutline, m_yOutline, m_nPoints, m_rot);
+  xlat2d (m_xOutline, m_yOutline, m_nPoints, m_cx, m_cy);
+
+  minmax_array (m_xOutline, m_nPoints, m_xmin, m_xmax);
+  minmax_array (m_yOutline, m_nPoints, m_ymin, m_ymax);
+
+  // increase pelem extent by SCALE_PELEM_EXTENT to eliminate chance of
+  //   missing actual pelem maximum due to polygonal sampling
+
+  xfact = (m_xmax - m_xmin) * SCALE_PELEM_EXTENT;
+  yfact = (m_ymax - m_ymin) * SCALE_PELEM_EXTENT;
+
+  m_xmin -= xfact;
+  m_ymin -= yfact;
+  m_xmax += xfact;
+  m_ymax += yfact;
+}
+
+
+/* NAME
+*   calc_arc                    Calculate outline of a arc of a circle
+*
+* SYNOPSIS
+*   calc_arc (x, y, xcent, ycent, pts, r, start, stop)
+*   double x[], y[];            Array of points
+*   int pts                     Number of points in array
+*   double xcent, ycent Center of cirlce
+*   double r                    Radius of circle
+*   double start, stop          Beginning & ending angles
+*/
+
+void
+PhantomElement::calcArcPoints (double x[], double y[], const int pts, const double xcent, const double ycent, const double r, const double start, const double stop)
+{
+  if (r <= 0.0)
+    sys_error (ERR_WARNING, "negative or zero radius in calc_arc()");
+
+  double theta = (stop - start) / (pts - 1);    // angle incr. between points
+  double c = cos(theta);
+  double s = sin(theta);
+
+  x[0] = r * cos (start) + xcent;
+  y[0] = r * sin (start) + ycent;
+
+  double xp = x[0] - xcent;
+  double yp = y[0] - ycent;
+  for (int i = 1; i < pts; i++) {
+    double xc = c * xp - s * yp;
+    double yc = s * xp + c * yp;
+    x[i] = xc + xcent;
+    y[i] = yc + ycent;
+    xp = xc;  yp = yc;
+  }
+}
+
+
+// NAME
+//   PhantomElement::calcEllipsePoints    Calculate outline of a ellipse
+//
+// SYNOPSIS
+//   calcEllipsePoints ()
+//
+
+
+void
+PhantomElement::calcEllipsePoints (double x[], double y[], const int pts, const double u, const double v)
+{
+  calcArcPoints (x, y, m_nPoints, 0.0, 0.0, 1.0, 0.0, TWOPI);   // make a unit circle
+  scale2d (x, y, m_nPoints, m_u, m_v);                       // scale to ellipse
+}
+
+
+/* NAME
+*   circle_pts          Calculate number of points to use for circle segment
+*
+* SYNOPSIS
+*   n = circle_pts (theta)
+*   int n               Number of points to use for arc
+*   double theta        Length of arc in radians
+*/
+
+int
+PhantomElement::numCirclePoints (double theta)
+{
+  theta = clamp (theta, 0., TWOPI);
+
+  return static_cast<int> (POINTS_PER_CIRCLE * theta / TWOPI + 1.5);
+}
+
+
+bool
+PhantomElement::clipLineWorldCoords (double& x1, double& y1, double& x2, double &y2) const
+{
+  /* check if ray is outside of pelem extents */
+  double cx1 = x1, cy1 = y1, cx2 = x2, cy2 = y2;
+  if (! clip_rect (cx1, cy1, cx2, cy2, m_rectLimits))
+    return false;
+
+  // convert phantom coordinates to pelem coordinates
+  xform_mtx2 (m_xformPhmToObj, x1, y1);
+  xform_mtx2 (m_xformPhmToObj, x2, y2);
+
+  if (! clipLineNormalizedCoords (x1, y1, x2, y2))
+    return false;
+
+  // convert standard pelem coordinates back to phantom coordinates
+  xform_mtx2 (m_xformObjToPhm, x1, y1);
+  xform_mtx2 (m_xformObjToPhm, x2, y2);
+
+  return true;
+}
+
+
+/* NAME
+*   pelem_clip_line                     Clip pelem against an arbitrary line
+*
+* SYNOPSIS
+*   pelem_clip_line (pelem, x1, y1, x2, y2)
+*   PhantomElement& pelem;              Pelem to be clipped
+*   double *x1, *y1, *x2, *y2   Endpoints of line to be clipped
+*
+* RETURNS
+*   true   if line passes through pelem
+*               (x1, y1, x2, y2 hold coordinates of new line)
+*   false  if line do not pass through pelem
+*               (x1, y1, x2, y2 are undefined)
+*/
+
+bool
+PhantomElement::clipLineNormalizedCoords (double& x1, double& y1, double& x2, double& y2) const
+{
+  bool accept = false;
+
+  switch (m_type) {
+  case PELEM_RECTANGLE:
+    double rect[4];
+    rect[0] = -1.0;  rect[1] = -1.0;
+    rect[2] = 1.0;  rect[3] = 1.0;
+    accept = clip_rect (x1, y1, x2, y2, rect);
+    break;
+  case PELEM_ELLIPSE:
+    accept = clip_circle (x1, y1, x2, y2, 0.0, 0.0, 1.0, 0.0, 0.0);
+    break;
+  case PELEM_TRIANGLE:
+    accept = clip_triangle (x1, y1, x2, y2, 1.0, 1.0, true);
+    break;
+  case PELEM_SEGMENT:
+    accept = clip_segment (x1, y1, x2, y2, m_u, m_v);
+    break;
+  case PELEM_SECTOR:
+    accept = clip_sector (x1, y1, x2, y2, m_u, m_v);
+    break;
+  default:
+    sys_error (ERR_WARNING, "Illegal pelem type %d [pelem_clip_line]", m_type);
+    break;
+  }
+
+  return(accept);
+}
+
+
+// METHOD IDENTIFICATION
+//    PhantomElement::isPointInside             Check if point is inside pelem
+//
+// SYNOPSIS
+//    is_point_inside (pelem, x, y, coord_type)
+//    double x, y               Point to see if lies in pelem
+//    int coord_type            Coordinate type (PELEM_COORD or PHM_COORD)
+//
+// RETURNS
+//    true if point lies within pelem
+//    false if point lies outside of pelem
+
+bool
+PhantomElement::isPointInside (double x, double y, const CoordType coord_type) const
+{
+  if (coord_type == PHM_COORD) {
+    xform_mtx2 (m_xformPhmToObj, x, y);
+  } else if (coord_type != PELEM_COORD) {
+    sys_error(ERR_WARNING, "Illegal coordinate type in pelem_is_point_inside");
+    return (false);
+  }
+
+  switch (m_type) {
+  case PELEM_RECTANGLE:
+    if (x > 1. || x < -1. || y > 1. || y < -1.)
+      return (false);
+    else
+      return (true);
+    break;
+  case PELEM_TRIANGLE:
+    if (y < 0. || y > 1. - x || y > 1. + x)
+      return (false);
+    else
+      return (true);
+    break;
+  case PELEM_ELLIPSE:
+    if (x > 1. || x < -1. || y > 1. || y < -1.)
+      return (false);
+    if (x * x + y * y > 1.)             // check if inside unit circle
+      return (false);
+    else
+      return (true);
+    break;
+
+    // for clipping segments & sectors, must NOT scale by (1/u, 1/v)
+    // because this destroys information about size of arc component
+
+  case PELEM_SEGMENT:
+    if (x > 1. || x < -1. || y > 0.)
+      return (false);           // clip against y > 0
+    x *= m_u;                   // put back u & v scale
+    y *= m_v;
+    if (x * x + (y-m_v) * (y-m_v) > m_u * m_u + m_v * m_v)
+      return (false);           // clip against circle, r = sqrt(@)
+    else
+      return (true);
+    break;
+  case PELEM_SECTOR:
+    if (x > 1. || x < -1. || y > 1.)   // extent
+      return (false);
+    if (y > 1. - x || y > 1. + x)      // triangle
+      return (false);                  // clip against triangle
+    x *= m_u;                  // circle: put back u & v scale
+    y *= m_v;
+    if (x * x + (y-m_v) * (y-m_v) > m_u * m_u + m_v * m_v)
+      return (false);                  // clip against circle
+    else
+      return (true);
+    break;
+  default:
+    sys_error (ERR_WARNING, "Illegal pelem type in pelem_is_point_inside()");
+    break;
+  }
+
+  return (false);
+}
+
+
diff --git a/libctsim/procsignal.cpp b/libctsim/procsignal.cpp
new file mode 100644
index 0000000..dd4d40a
--- /dev/null
+++ b/libctsim/procsignal.cpp
@@ -0,0 +1,881 @@
+/*****************************************************************************
+** File IDENTIFICATION
+**
+**     Name:            procsignal.cpp
+**     Purpose:         Routines for processing signals and projections
+**     Progammer:           Kevin Rosenberg
+**     Date Started:    Aug 1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+#ifdef HAVE_WXWINDOWS
+#include "nographics.h"
+#endif
+
+// FilterMethod ID/Names
+const int ProcessSignal::FILTER_METHOD_INVALID = -1;
+const int ProcessSignal::FILTER_METHOD_CONVOLUTION = 0;
+const int ProcessSignal::FILTER_METHOD_FOURIER = 1;
+const int ProcessSignal::FILTER_METHOD_FOURIER_TABLE = 2;
+const int ProcessSignal::FILTER_METHOD_FFT = 3;
+#if HAVE_FFTW
+const int ProcessSignal::FILTER_METHOD_FFTW = 4;
+const int ProcessSignal::FILTER_METHOD_RFFTW =5 ;
+#endif
+const char* const ProcessSignal::s_aszFilterMethodName[] = {
+  "convolution",
+  "fourier",
+  "fouier-table",
+  "fft",
+#if HAVE_FFTW
+  "fftw",
+  "rfftw",
+#endif
+};
+const char* const ProcessSignal::s_aszFilterMethodTitle[] = {
+  "Convolution",
+  "Fourier",
+  "Fouier Trigometric Table",
+  "FFT",
+#if HAVE_FFTW
+  "FFTW",
+  "Real/Half-Complex FFTW",
+#endif
+};
+const int ProcessSignal::s_iFilterMethodCount = sizeof(s_aszFilterMethodName) / sizeof(const char*);
+
+// FilterGeneration ID/Names
+const int ProcessSignal::FILTER_GENERATION_INVALID = -1;
+const int ProcessSignal::FILTER_GENERATION_DIRECT = 0;
+const int ProcessSignal::FILTER_GENERATION_INVERSE_FOURIER = 1;
+const char* const ProcessSignal::s_aszFilterGenerationName[] = {
+  "direct",
+  "inverse-fourier",
+};
+const char* const ProcessSignal::s_aszFilterGenerationTitle[] = {
+  "Direct",
+  "Inverse Fourier",
+};
+const int ProcessSignal::s_iFilterGenerationCount = sizeof(s_aszFilterGenerationName) / sizeof(const char*);
+
+
+// CLASS IDENTIFICATION
+//   ProcessSignal
+//
+ProcessSignal::ProcessSignal (const char* szFilterName, const char* szFilterMethodName, double dBandwidth,
+                              double dSignalIncrement, int nSignalPoints, double dFilterParam, const char* szDomainName,
+                              const char* szFilterGenerationName, int iZeropad, int iPreinterpolationFactor, int iTraceLevel,
+                              int iGeometry, double dFocalLength, double dSourceDetectorLength, SGP* pSGP)
+                              : m_adFourierCosTable(NULL), m_adFourierSinTable(NULL), m_adFilter(NULL), m_fail(false)
+{
+  m_idFilterMethod = convertFilterMethodNameToID (szFilterMethodName);
+  if (m_idFilterMethod == FILTER_METHOD_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid filter method name ";
+    m_failMessage += szFilterMethodName;
+    return;
+  }
+  m_idFilterGeneration = convertFilterGenerationNameToID (szFilterGenerationName);
+  if (m_idFilterGeneration == FILTER_GENERATION_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid frequency filter name ";
+    m_failMessage += szFilterGenerationName;
+    return;
+  }
+  m_idFilter = SignalFilter::convertFilterNameToID (szFilterName);
+  if (m_idFilter == SignalFilter::FILTER_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid Filter name ";
+    m_failMessage += szFilterName;
+    return;
+  }
+  m_idDomain = SignalFilter::convertDomainNameToID (szDomainName);
+  if (m_idDomain == SignalFilter::DOMAIN_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid domain name ";
+    m_failMessage += szDomainName;
+    return;
+  }
+
+  init (m_idFilter, m_idFilterMethod, dBandwidth, dSignalIncrement, nSignalPoints, dFilterParam, m_idDomain,
+    m_idFilterGeneration, iZeropad, iPreinterpolationFactor, iTraceLevel, iGeometry, dFocalLength,
+    dSourceDetectorLength, pSGP);
+}
+
+
+void
+ProcessSignal::init (const int idFilter, const int idFilterMethod, double dBandwidth, double dSignalIncrement,
+                     int nSignalPoints, double dFilterParam, const int idDomain, const int idFilterGeneration,
+                     const int iZeropad, const int iPreinterpolationFactor, int iTraceLevel, int iGeometry,
+                     double dFocalLength, double dSourceDetectorLength, SGP* pSGP)
+{
+  int i;
+  m_idFilter = idFilter;
+  m_idDomain = idDomain;
+  m_idFilterMethod = idFilterMethod;
+  m_idFilterGeneration = idFilterGeneration;
+  m_idGeometry = iGeometry;
+  m_dFocalLength = dFocalLength;
+  m_dSourceDetectorLength = dSourceDetectorLength;
+
+  if (m_idFilter == SignalFilter::FILTER_INVALID || m_idDomain == SignalFilter::DOMAIN_INVALID || m_idFilterMethod == FILTER_METHOD_INVALID || m_idFilterGeneration == FILTER_GENERATION_INVALID) {
+    m_fail = true;
+    return;
+  }
+  m_traceLevel = iTraceLevel;
+  m_nameFilterMethod = convertFilterMethodIDToName (m_idFilterMethod);
+  m_nameFilterGeneration = convertFilterGenerationIDToName (m_idFilterGeneration);
+  m_dBandwidth = dBandwidth;
+  m_nSignalPoints = nSignalPoints;
+  m_dSignalInc = dSignalIncrement;
+  m_dFilterParam = dFilterParam;
+  m_iZeropad = iZeropad;
+  m_iPreinterpolationFactor = iPreinterpolationFactor;
+
+  // scale signalInc/BW to adjust for imaginary detector through origin of phantom
+  // see Kak-Slaney Fig 3.22, for Collinear diagram
+  if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
+    double dEquilinearScale = m_dSourceDetectorLength / m_dFocalLength;
+    m_dSignalInc /= dEquilinearScale;
+    m_dBandwidth *= dEquilinearScale;
+  }
+
+  if (m_idFilterMethod == FILTER_METHOD_FFT) {
+#if HAVE_FFTW
+    m_idFilterMethod = FILTER_METHOD_RFFTW;
+#else
+    m_fail = true;
+    m_failMessage = "FFT not yet implemented";
+    return;
+#endif
+  }
+
+  bool m_bFrequencyFiltering = true;
+  if (m_idFilterMethod == FILTER_METHOD_CONVOLUTION)
+    m_bFrequencyFiltering = false;
+
+  // Spatial-based filtering
+  if (! m_bFrequencyFiltering) {
+
+    if (m_idFilterGeneration == FILTER_GENERATION_DIRECT) {
+      m_nFilterPoints = 2 * (m_nSignalPoints - 1) + 1;
+      m_dFilterMin = -m_dSignalInc * (m_nSignalPoints - 1);
+      m_dFilterMax = m_dSignalInc * (m_nSignalPoints - 1);
+      m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1);
+      SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, m_nFilterPoints, m_dBandwidth, m_dFilterParam, SignalFilter::DOMAIN_SPATIAL);
+      m_adFilter = new double[ m_nFilterPoints ];
+      filter.copyFilterData (m_adFilter, 0, m_nFilterPoints);
+    } else if (m_idFilterGeneration == FILTER_GENERATION_INVERSE_FOURIER) {
+      m_nFilterPoints = 2 * (m_nSignalPoints - 1) + 1;
+      m_dFilterMin = -1. / (2 * m_dSignalInc);
+      m_dFilterMax = 1. / (2 * m_dSignalInc);
+      m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1);
+      SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, m_nFilterPoints, m_dBandwidth, m_dFilterParam, SignalFilter::DOMAIN_FREQUENCY);
+      m_adFilter = new double[ m_nFilterPoints ];
+      double* adFrequencyFilter = new double [m_nFilterPoints];
+      filter.copyFilterData (adFrequencyFilter, 0, m_nFilterPoints);
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Filter Response: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (adFrequencyFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+      Fourier::shuffleNaturalToFourierOrder (adFrequencyFilter, m_nFilterPoints);
+#ifdef HAVE_SGP
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Filter Response: Fourier Order");
+        dlgEZPlot.getEZPlot()->addCurve (adFrequencyFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+      ProcessSignal::finiteFourierTransform (adFrequencyFilter, m_adFilter, m_nFilterPoints, FORWARD);
+      delete adFrequencyFilter;
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Inverse Fourier Frequency: Fourier Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+      Fourier::shuffleFourierToNaturalOrder (m_adFilter, m_nFilterPoints);
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Inverse Fourier Frequency: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+      for (i = 0; i < m_nFilterPoints; i++) {
+        m_adFilter[i] /= m_dSignalInc;
+      }
+    }
+    if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
+      for (i = 0; i < m_nFilterPoints; i++)
+        m_adFilter[i] *= 0.5;
+    } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
+      for (i = 0; i < m_nFilterPoints; i++) {
+        int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
+        double sinScale = 1 / SignalFilter::sinc (iDetFromZero * m_dSignalInc);
+        double dScale = 0.5 * sinScale * sinScale;
+        m_adFilter[i] *= dScale;
+      }
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Scaled Inverse Fourier Frequency: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+    } // if (geometry)
+  } // if (spatial filtering)
+
+  else if (m_bFrequencyFiltering) {  // Frequency-based filtering
+
+    if (m_idFilterGeneration == FILTER_GENERATION_DIRECT) {
+      // calculate number of filter points with zeropadding
+      m_nFilterPoints = addZeropadFactor (m_nSignalPoints, m_iZeropad);
+      m_nOutputPoints = m_nFilterPoints * m_iPreinterpolationFactor;
+
+      if (isOdd (m_nFilterPoints)) { // Odd
+        m_dFilterMin = -1. / (2 * m_dSignalInc);
+        m_dFilterMax = 1. / (2 * m_dSignalInc);
+        m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (m_nFilterPoints - 1);
+      } else { // Even
+        m_dFilterMin = -1. / (2 * m_dSignalInc);
+        m_dFilterMax = 1. / (2 * m_dSignalInc);
+        m_dFilterInc = (m_dFilterMax - m_dFilterMin) / m_nFilterPoints;
+        m_dFilterMax -= m_dFilterInc;
+      }
+
+      SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, m_nFilterPoints, m_dBandwidth,
+        m_dFilterParam, SignalFilter::DOMAIN_FREQUENCY);
+      m_adFilter = new double [m_nFilterPoints];
+      filter.copyFilterData (m_adFilter, 0, m_nFilterPoints);
+
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Frequency Filter: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+
+      // This works fairly well. I'm not sure why since scaling for geometries is done on
+      // frequency filter rather than spatial filter as it should be.
+      // It gives values slightly off than freq/inverse filtering
+      if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
+        for (i = 0; i < m_nFilterPoints; i++)
+          m_adFilter[i] *= 0.5;
+      } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
+        for (i = 0; i < m_nFilterPoints; i++) {
+          int iDetFromZero = i - ((m_nFilterPoints - 1) / 2);
+          double sinScale = 1 / SignalFilter::sinc (iDetFromZero * m_dSignalInc);
+          double dScale = 0.5 * sinScale * sinScale;
+          m_adFilter[i] *= dScale;
+        }
+      }
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Filter Geometry Scaled: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+      Fourier::shuffleNaturalToFourierOrder (m_adFilter, m_nFilterPoints);
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Filter Geometry Scaled: Fourier Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+
+      // FILTERING:  FREQUENCY - INVERSE FOURIER
+
+    } else if (m_idFilterGeneration == FILTER_GENERATION_INVERSE_FOURIER) {
+      // calculate number of filter points with zeropadding
+      int nSpatialPoints = 2 * (m_nSignalPoints - 1) + 1;
+      m_dFilterMin = -m_dSignalInc * (m_nSignalPoints - 1);
+      m_dFilterMax = m_dSignalInc * (m_nSignalPoints - 1);
+      m_dFilterInc = (m_dFilterMax - m_dFilterMin) / (nSpatialPoints - 1);
+      m_nFilterPoints = nSpatialPoints;
+      if (m_iZeropad > 0) {
+        double logBase2 = log(nSpatialPoints) / log(2);
+        int nextPowerOf2 = static_cast<int>(floor(logBase2));
+        if (logBase2 != floor(logBase2))
+          nextPowerOf2++;
+        nextPowerOf2 += (m_iZeropad - 1);
+        m_nFilterPoints = 1 << nextPowerOf2;
+      }
+      m_nOutputPoints = m_nFilterPoints * m_iPreinterpolationFactor;
+#if defined(DEBUG) || defined(_DEBUG)
+      if (m_traceLevel >= Trace::TRACE_CONSOLE)
+        sys_error (ERR_TRACE, "nFilterPoints = %d", m_nFilterPoints);
+#endif
+      double* adSpatialFilter = new double [m_nFilterPoints];
+      SignalFilter filter (m_idFilter, m_dFilterMin, m_dFilterMax, nSpatialPoints, m_dBandwidth,
+        m_dFilterParam, SignalFilter::DOMAIN_SPATIAL);
+      filter.copyFilterData (adSpatialFilter, 0, nSpatialPoints);
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;;
+        dlgEZPlot.getEZPlot()->ezset ("title Spatial Filter: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (adSpatialFilter, nSpatialPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+
+      if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
+        for (i = 0; i < nSpatialPoints; i++)
+          adSpatialFilter[i] *= 0.5;
+      } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
+        for (i = 0; i < nSpatialPoints; i++) {
+          int iDetFromZero = i - ((nSpatialPoints - 1) / 2);
+          double sinScale = sin (iDetFromZero * m_dSignalInc);
+          if (fabs(sinScale) < 1E-7)
+            sinScale = 1;
+          else
+            sinScale = (iDetFromZero * m_dSignalInc) / sinScale;
+          double dScale = 0.5 * sinScale * sinScale;
+          adSpatialFilter[i] *= dScale;
+        }
+      }
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;;
+        dlgEZPlot.getEZPlot()->ezset ("title Scaled Spatial Filter: Natural Order");
+        dlgEZPlot.getEZPlot()->addCurve (adSpatialFilter, nSpatialPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+      for (i = nSpatialPoints; i < m_nFilterPoints; i++)
+        adSpatialFilter[i] = 0;
+
+      m_adFilter = new double [m_nFilterPoints];
+      std::complex<double>* acInverseFilter = new std::complex<double> [m_nFilterPoints];
+      finiteFourierTransform (adSpatialFilter, acInverseFilter, m_nFilterPoints, BACKWARD);
+      delete adSpatialFilter;
+      for (i = 0; i < m_nFilterPoints; i++)
+        m_adFilter[i] = std::abs (acInverseFilter[i]) * m_dSignalInc;
+      delete acInverseFilter;
+#if defined(HAVE_WXWINDOWS) && (defined(DEBUG) || defined(_DEBUG))
+      if (g_bRunningWXWindows && m_traceLevel > 0) {
+        EZPlotDialog dlgEZPlot;
+        dlgEZPlot.getEZPlot()->ezset ("title Fourier Scaled Spatial Filter: Fourier Order");
+        dlgEZPlot.getEZPlot()->addCurve (m_adFilter, m_nFilterPoints);
+        dlgEZPlot.ShowModal();
+      }
+#endif
+    }
+  }
+
+  // precalculate sin and cosine tables for fourier transform
+  if (m_idFilterMethod == FILTER_METHOD_FOURIER_TABLE) {
+    int nFourier = imax (m_nFilterPoints,m_nOutputPoints) * imax (m_nFilterPoints, m_nOutputPoints) + 1;
+    double angleIncrement = (2. * PI) / m_nFilterPoints;
+    m_adFourierCosTable = new double[ nFourier ];
+    m_adFourierSinTable = new double[ nFourier ];
+    double angle = 0;
+    for (i = 0; i < nFourier; i++) {
+      m_adFourierCosTable[i] = cos (angle);
+      m_adFourierSinTable[i] = sin (angle);
+      angle += angleIncrement;
+    }
+  }
+
+#if HAVE_FFTW
+  if (m_idFilterMethod == FILTER_METHOD_FFTW || m_idFilterMethod == FILTER_METHOD_RFFTW) {
+    for (i = 0; i < m_nFilterPoints; i++)  //fftw uses unnormalized fft
+      m_adFilter[i] /= m_nFilterPoints;
+  }
+
+  if (m_idFilterMethod == FILTER_METHOD_RFFTW) {
+    m_adRealFftInput = static_cast<double*>(fftw_malloc (sizeof(double) * m_nFilterPoints));
+    m_adRealFftOutput = static_cast<double*>(fftw_malloc (sizeof(double) * m_nFilterPoints));
+    m_realPlanForward = fftw_plan_r2r_1d (m_nFilterPoints, m_adRealFftInput, m_adRealFftOutput, FFTW_R2HC, FFTW_ESTIMATE);
+    m_adRealFftSignal = static_cast<double*>(fftw_malloc (sizeof(double) *  m_nOutputPoints));
+    m_adRealFftBackwardOutput = static_cast<double*>(fftw_malloc (sizeof(double) * m_nOutputPoints));
+    m_realPlanBackward = fftw_plan_r2r_1d (m_nOutputPoints, m_adRealFftSignal, m_adRealFftBackwardOutput, FFTW_HC2R, FFTW_ESTIMATE);
+    for (i = 0; i < m_nFilterPoints; i++)
+      m_adRealFftInput[i] = 0;
+  } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
+    m_adComplexFftInput = static_cast<fftw_complex*>(fftw_malloc (sizeof(fftw_complex) * m_nFilterPoints));
+    m_adComplexFftOutput = static_cast<fftw_complex*>(fftw_malloc (sizeof(fftw_complex) * m_nFilterPoints));
+    m_complexPlanForward = fftw_plan_dft_1d (m_nFilterPoints, m_adComplexFftInput, m_adComplexFftOutput, FFTW_FORWARD,  FFTW_ESTIMATE);
+    m_adComplexFftSignal = static_cast<fftw_complex*>(fftw_malloc (sizeof(fftw_complex) * m_nOutputPoints));
+    m_adComplexFftBackwardOutput = static_cast<fftw_complex*>(fftw_malloc (sizeof(fftw_complex) * m_nOutputPoints));
+    m_complexPlanBackward = fftw_plan_dft_1d (m_nOutputPoints, m_adComplexFftSignal, m_adComplexFftBackwardOutput, FFTW_BACKWARD,  FFTW_ESTIMATE);
+
+    for (i = 0; i < m_nFilterPoints; i++)
+      m_adComplexFftInput[i][0] = m_adComplexFftInput[i][1] = 0;
+    for (i = 0; i < m_nOutputPoints; i++)
+      m_adComplexFftSignal[i][0] = m_adComplexFftSignal[i][1] = 0;
+  }
+#endif
+
+}
+
+ProcessSignal::~ProcessSignal (void)
+{
+  delete [] m_adFourierSinTable;
+  delete [] m_adFourierCosTable;
+  delete [] m_adFilter;
+
+#if HAVE_FFTW
+  if (m_idFilterMethod == FILTER_METHOD_FFTW) {
+    fftw_destroy_plan(m_complexPlanForward);
+    fftw_destroy_plan(m_complexPlanBackward);
+    fftw_free (m_adComplexFftInput);
+    fftw_free (m_adComplexFftOutput);
+    fftw_free (m_adComplexFftSignal);
+    fftw_free (m_adComplexFftBackwardOutput);
+  }
+  if (m_idFilterMethod == FILTER_METHOD_RFFTW) {
+    fftw_destroy_plan(m_realPlanForward);
+    fftw_destroy_plan(m_realPlanBackward);
+    fftw_free (m_adRealFftInput);
+    fftw_free (m_adRealFftOutput);
+    fftw_free (m_adRealFftSignal);
+    fftw_free (m_adRealFftBackwardOutput);
+  }
+#endif
+}
+
+int
+ProcessSignal::convertFilterMethodNameToID (const char* const filterMethodName)
+{
+  int fmID = FILTER_METHOD_INVALID;
+
+  for (int i = 0; i < s_iFilterMethodCount; i++)
+    if (strcasecmp (filterMethodName, s_aszFilterMethodName[i]) == 0) {
+      fmID = i;
+      break;
+    }
+
+    return (fmID);
+}
+
+const char *
+ProcessSignal::convertFilterMethodIDToName (const int fmID)
+{
+  static const char *name = "";
+
+  if (fmID >= 0 && fmID < s_iFilterMethodCount)
+    return (s_aszFilterMethodName [fmID]);
+
+  return (name);
+}
+
+const char *
+ProcessSignal::convertFilterMethodIDToTitle (const int fmID)
+{
+  static const char *title = "";
+
+  if (fmID >= 0 && fmID < s_iFilterMethodCount)
+    return (s_aszFilterMethodTitle [fmID]);
+
+  return (title);
+}
+
+
+int
+ProcessSignal::convertFilterGenerationNameToID (const char* const fgName)
+{
+  int fgID = FILTER_GENERATION_INVALID;
+
+  for (int i = 0; i < s_iFilterGenerationCount; i++)
+    if (strcasecmp (fgName, s_aszFilterGenerationName[i]) == 0) {
+      fgID = i;
+      break;
+    }
+
+    return (fgID);
+}
+
+const char *
+ProcessSignal::convertFilterGenerationIDToName (const int fgID)
+{
+  static const char *name = "";
+
+  if (fgID >= 0 && fgID < s_iFilterGenerationCount)
+    return (s_aszFilterGenerationName [fgID]);
+
+  return (name);
+}
+
+const char *
+ProcessSignal::convertFilterGenerationIDToTitle (const int fgID)
+{
+  static const char *name = "";
+
+  if (fgID >= 0 && fgID < s_iFilterGenerationCount)
+    return (s_aszFilterGenerationTitle [fgID]);
+
+  return (name);
+}
+
+void
+ProcessSignal::filterSignal (const float constInput[], double output[]) const
+{
+  double* input = new double [m_nSignalPoints];
+  int i;
+  for (i = 0; i < m_nSignalPoints; i++)
+    input[i] = constInput[i];
+
+  if (m_idGeometry == Scanner::GEOMETRY_EQUILINEAR) {
+    for (int i = 0; i < m_nSignalPoints; i++) {
+      int iDetFromCenter = i - (m_nSignalPoints / 2);
+      input[i] *= m_dFocalLength / sqrt (m_dFocalLength * m_dFocalLength + iDetFromCenter * iDetFromCenter * m_dSignalInc * m_dSignalInc);
+    }
+  } else if (m_idGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
+    for (int i = 0; i < m_nSignalPoints; i++) {
+      int iDetFromCenter = i - (m_nSignalPoints / 2);
+      input[i] *= m_dFocalLength * cos (iDetFromCenter * m_dSignalInc);
+    }
+  }
+  if (m_idFilterMethod == FILTER_METHOD_CONVOLUTION) {
+    for (i = 0; i < m_nSignalPoints; i++)
+      output[i] = convolve (input, m_dSignalInc, i, m_nSignalPoints);
+  } else if (m_idFilterMethod == FILTER_METHOD_FOURIER) {
+    double* inputSignal = new double [m_nFilterPoints];
+    for (i = 0; i < m_nSignalPoints; i++)
+      inputSignal[i] = input[i];
+    for (i = m_nSignalPoints; i < m_nFilterPoints; i++)
+      inputSignal[i] = 0;  // zeropad
+    std::complex<double>* fftSignal = new std::complex<double> [m_nFilterPoints];
+    finiteFourierTransform (inputSignal, fftSignal, m_nFilterPoints, FORWARD);
+    delete inputSignal;
+    for (i = 0; i < m_nFilterPoints; i++)
+      fftSignal[i] *= m_adFilter[i];
+    double* inverseFourier = new double [m_nFilterPoints];
+    finiteFourierTransform (fftSignal, inverseFourier, m_nFilterPoints, BACKWARD);
+    delete fftSignal;
+    for (i = 0; i < m_nSignalPoints; i++)
+      output[i] = inverseFourier[i];
+    delete inverseFourier;
+  } else if (m_idFilterMethod == FILTER_METHOD_FOURIER_TABLE) {
+    double* inputSignal = new double [m_nFilterPoints];
+    for (i = 0; i < m_nSignalPoints; i++)
+      inputSignal[i] = input[i];
+    for (i = m_nSignalPoints; i < m_nFilterPoints; i++)
+      inputSignal[i] = 0;  // zeropad
+    std::complex<double>* fftSignal = new std::complex<double> [m_nFilterPoints];
+    finiteFourierTransform (inputSignal, fftSignal, FORWARD);
+    delete inputSignal;
+    for (i = 0; i < m_nFilterPoints; i++)
+      fftSignal[i] *= m_adFilter[i];
+    double* inverseFourier = new double [m_nFilterPoints];
+    finiteFourierTransform (fftSignal, inverseFourier, BACKWARD);
+    delete fftSignal;
+    for (i = 0; i < m_nSignalPoints; i++)
+      output[i] = inverseFourier[i];
+    delete inverseFourier;
+  }
+#if HAVE_FFTW
+  else if (m_idFilterMethod == FILTER_METHOD_RFFTW) {
+    for (i = 0; i < m_nSignalPoints; i++)
+      m_adRealFftInput[i] = input[i];
+
+    fftw_execute (m_realPlanForward);
+    for (i = 0; i < m_nFilterPoints; i++)
+      m_adRealFftSignal[i] = m_adFilter[i] * m_adRealFftOutput[i];
+    for (i = m_nFilterPoints; i < m_nOutputPoints; i++)
+             m_adRealFftSignal[i] = 0;
+
+    fftw_execute (m_realPlanBackward);
+    for (i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++)
+      output[i] = m_adRealFftBackwardOutput[i];
+  } else if (m_idFilterMethod == FILTER_METHOD_FFTW) {
+    for (i = 0; i < m_nSignalPoints; i++)
+      m_adComplexFftInput[i][0] = input[i];
+
+    fftw_execute (m_complexPlanForward);
+    for (i = 0; i < m_nFilterPoints; i++) {
+      m_adComplexFftSignal[i][0] = m_adFilter[i] * m_adComplexFftOutput[i][0];
+      m_adComplexFftSignal[i][1] = m_adFilter[i] * m_adComplexFftOutput[i][1];
+    }
+    fftw_execute (m_complexPlanBackward);
+    for (i = 0; i < m_nSignalPoints * m_iPreinterpolationFactor; i++)
+      output[i] = m_adComplexFftBackwardOutput[i][0];
+  }
+#endif
+  delete input;
+}
+
+
+/* NAME
+*    convolve                   Discrete convolution of two functions
+*
+* SYNOPSIS
+*    r = convolve (f1, f2, dx, n, np, func_type)
+*    double r                   Convolved result
+*    double f1[], f2[]          Functions to be convolved
+*    double dx                  Difference between successive x values
+*    int n                      Array index to center convolution about
+*    int np                     Number of points in f1 array
+*    int func_type              EVEN or ODD or EVEN_AND_ODD function f2
+*
+* NOTES
+*    f1 is the projection data, its indices range from 0 to np - 1.
+*    The index for f2, the filter, ranges from -(np-1) to (np-1).
+*    There are 3 ways to handle the negative vertices of f2:
+*       1. If we know f2 is an EVEN function, then f2[-n] = f2[n].
+*          All filters used in reconstruction are even.
+*      2. If we know f2 is an ODD function, then f2[-n] = -f2[n]
+*      3. If f2 is both ODD AND EVEN, then we must store the value of f2
+*          for negative indices.  Since f2 must range from -(np-1) to (np-1),
+*          if we add (np - 1) to f2's array index, then f2's index will
+*          range from 0 to 2 * (np - 1), and the origin, x = 0, will be
+*          stored at f2[np-1].
+*/
+
+double
+ProcessSignal::convolve (const double func[], const double dx, const int n, const int np) const
+{
+  double sum = 0.0;
+
+#if UNOPTIMIZED_CONVOLUTION
+  for (int i = 0; i < np; i++)
+    sum += func[i] * m_adFilter[n - i + (np - 1)];
+#else
+  double* f2 = m_adFilter + n + (np - 1);
+  for (int i = 0; i < np; i++)
+    sum += *func++ * *f2--;
+#endif
+
+  return (sum * dx);
+}
+
+
+double
+ProcessSignal::convolve (const float func[], const double dx, const int n, const int np) const
+{
+  double sum = 0.0;
+
+#if UNOPTIMIZED_CONVOLUTION
+  for (int i = 0; i < np; i++)
+    sum += func[i] * m_adFilter[n - i + (np - 1)];
+#else
+  double* f2 = m_adFilter + n + (np - 1);
+  for (int i = 0; i < np; i++)
+    sum += *func++ * *f2--;
+#endif
+
+  return (sum * dx);
+}
+
+
+void
+ProcessSignal::finiteFourierTransform (const double input[], double output[], const int n, int direction)
+{
+  std::complex<double>* complexOutput = new std::complex<double> [n];
+
+  finiteFourierTransform (input, complexOutput, n, direction);
+  for (int i = 0; i < n; i++)
+    output[i] = complexOutput[i].real();
+  delete [] complexOutput;
+}
+
+void
+ProcessSignal::finiteFourierTransform (const double input[], std::complex<double> output[], const int n, int direction)
+{
+  if (direction < 0)
+    direction = -1;
+  else
+    direction = 1;
+
+  double angleIncrement = direction * 2 * PI / n;
+  for (int i = 0; i < n; i++) {
+    double sumReal = 0;
+    double sumImag = 0;
+    for (int j = 0; j < n; j++) {
+      double angle = i * j * angleIncrement;
+      sumReal += input[j] * cos(angle);
+      sumImag += input[j] * sin(angle);
+    }
+    if (direction < 0) {
+      sumReal /= n;
+      sumImag /= n;
+    }
+    output[i] = std::complex<double> (sumReal, sumImag);
+  }
+}
+
+
+void
+ProcessSignal::finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], const int n, int direction)
+{
+  if (direction < 0)
+    direction = -1;
+  else
+    direction = 1;
+
+  double angleIncrement = direction * 2 * PI / n;
+  for (int i = 0; i < n; i++) {
+    std::complex<double> sum (0,0);
+    for (int j = 0; j < n; j++) {
+      double angle = i * j * angleIncrement;
+      std::complex<double> exponentTerm (cos(angle), sin(angle));
+      sum += input[j] * exponentTerm;
+    }
+    if (direction < 0) {
+      sum /= n;
+    }
+    output[i] = sum;
+  }
+}
+
+void
+ProcessSignal::finiteFourierTransform (const std::complex<double> input[], double output[], const int n, int direction)
+{
+  if (direction < 0)
+    direction = -1;
+  else
+    direction = 1;
+
+  double angleIncrement = direction * 2 * PI / n;
+  for (int i = 0; i < n; i++) {
+    double sumReal = 0;
+    for (int j = 0; j < n; j++) {
+      double angle = i * j * angleIncrement;
+      sumReal += input[j].real() * cos(angle) - input[j].imag() * sin(angle);
+    }
+    if (direction < 0) {
+      sumReal /= n;
+    }
+    output[i] = sumReal;
+  }
+}
+
+// Table-based routines
+
+void
+ProcessSignal::finiteFourierTransform (const double input[], std::complex<double> output[], int direction) const
+{
+  if (direction < 0)
+    direction = -1;
+  else
+    direction = 1;
+
+  for (int i = 0; i < m_nFilterPoints; i++) {
+    double sumReal = 0, sumImag = 0;
+    for (int j = 0; j < m_nFilterPoints; j++) {
+      int tableIndex = i * j;
+      if (direction > 0) {
+        sumReal += input[j] * m_adFourierCosTable[tableIndex];
+        sumImag += input[j] * m_adFourierSinTable[tableIndex];
+      } else {
+        sumReal += input[j] * m_adFourierCosTable[tableIndex];
+        sumImag -= input[j] * m_adFourierSinTable[tableIndex];
+      }
+    }
+    if (direction < 0) {
+      sumReal /= m_nFilterPoints;
+      sumImag /= m_nFilterPoints;
+    }
+    output[i] = std::complex<double> (sumReal, sumImag);
+  }
+}
+
+// (a+bi) * (c + di) = (ac - bd) + (ad + bc)i
+void
+ProcessSignal::finiteFourierTransform (const std::complex<double> input[], std::complex<double> output[], int direction) const
+{
+  if (direction < 0)
+    direction = -1;
+  else
+    direction = 1;
+
+  for (int i = 0; i < m_nFilterPoints; i++) {
+    double sumReal = 0, sumImag = 0;
+    for (int j = 0; j < m_nFilterPoints; j++) {
+      int tableIndex = i * j;
+      if (direction > 0) {
+        sumReal += input[j].real() * m_adFourierCosTable[tableIndex]
+          - input[j].imag() * m_adFourierSinTable[tableIndex];
+        sumImag += input[j].real() * m_adFourierSinTable[tableIndex]
+          + input[j].imag() * m_adFourierCosTable[tableIndex];
+      } else {
+        sumReal += input[j].real() * m_adFourierCosTable[tableIndex]
+          - input[j].imag() * -m_adFourierSinTable[tableIndex];
+        sumImag += input[j].real() * -m_adFourierSinTable[tableIndex]
+          + input[j].imag() * m_adFourierCosTable[tableIndex];
+      }
+    }
+    if (direction < 0) {
+      sumReal /= m_nFilterPoints;
+      sumImag /= m_nFilterPoints;
+    }
+    output[i] = std::complex<double> (sumReal, sumImag);
+  }
+}
+
+void
+ProcessSignal::finiteFourierTransform (const std::complex<double> input[], double output[], int direction) const
+{
+  if (direction < 0)
+    direction = -1;
+  else
+    direction = 1;
+
+  for (int i = 0; i < m_nFilterPoints; i++) {
+    double sumReal = 0;
+    for (int j = 0; j < m_nFilterPoints; j++) {
+      int tableIndex = i * j;
+      if (direction > 0) {
+        sumReal += input[j].real() * m_adFourierCosTable[tableIndex]
+          - input[j].imag() * m_adFourierSinTable[tableIndex];
+      } else {
+        sumReal += input[j].real() * m_adFourierCosTable[tableIndex]
+          - input[j].imag() * -m_adFourierSinTable[tableIndex];
+      }
+    }
+    if (direction < 0) {
+      sumReal /= m_nFilterPoints;
+    }
+    output[i] = sumReal;
+  }
+}
+
+
+int
+ProcessSignal::addZeropadFactor (int n, int iZeropad)
+{
+  if (iZeropad > 0) {
+    double dLogBase2 = log(n) / log(2);
+    int iLogBase2 = static_cast<int>(floor (dLogBase2));
+    int iPaddedN = 1 << (iLogBase2 + iZeropad);
+#ifdef DEBUG
+    sys_error (ERR_TRACE, "Zeropadding %d to %d", n, iPaddedN);
+#endif
+    return iPaddedN;
+  }
+
+  return n;
+}
diff --git a/libctsim/projections.cpp b/libctsim/projections.cpp
new file mode 100644
index 0000000..5a07950
--- /dev/null
+++ b/libctsim/projections.cpp
@@ -0,0 +1,1469 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:         projections.cpp         Projection data classes
+**   Programmer:   Kevin Rosenberg
+**   Date Started: Aug 84
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include <ctime>
+#include "interpolator.h"
+
+const kuint16 Projections::m_signature = ('P'*256 + 'J');
+
+const int Projections::POLAR_INTERP_INVALID = -1;
+const int Projections::POLAR_INTERP_NEAREST = 0;
+const int Projections::POLAR_INTERP_BILINEAR = 1;
+const int Projections::POLAR_INTERP_BICUBIC = 2;
+
+const char* const Projections::s_aszInterpName[] =
+{
+  "nearest",
+  "bilinear",
+//  {"bicubic"},
+};
+
+const char* const Projections::s_aszInterpTitle[] =
+{
+  "Nearest",
+  "Bilinear",
+//  {"Bicubic"},
+};
+
+const int Projections::s_iInterpCount = sizeof(s_aszInterpName) / sizeof(char*);
+
+
+
+/* NAME
+*    Projections                Constructor for projections matrix storage
+*
+* SYNOPSIS
+*    proj = projections_create (filename, nView, nDet)
+*    Projections& proj          Allocated projections structure & matrix
+*    int nView                  Number of rotated view
+*    int nDet                   Number of detectors
+*
+*/
+
+Projections::Projections (const Scanner& scanner)
+: m_projData(0)
+{
+  initFromScanner (scanner);
+}
+
+
+Projections::Projections (const int nView, const int nDet)
+: m_projData(0)
+{
+  init (nView, nDet);
+}
+
+Projections::Projections (void)
+: m_projData(0)
+{
+  init (0, 0);
+}
+
+Projections::~Projections (void)
+{
+  deleteProjData();
+}
+
+int
+Projections::convertInterpNameToID (const char* const interpName)
+{
+  int interpID = POLAR_INTERP_INVALID;
+
+  for (int i = 0; i < s_iInterpCount; i++)
+    if (strcasecmp (interpName, s_aszInterpName[i]) == 0) {
+      interpID = i;
+      break;
+    }
+
+    return (interpID);
+}
+
+const char*
+Projections::convertInterpIDToName (const int interpID)
+{
+  static const char *interpName = "";
+
+  if (interpID >= 0 && interpID < s_iInterpCount)
+    return (s_aszInterpName[interpID]);
+
+  return (interpName);
+}
+
+const char*
+Projections::convertInterpIDToTitle (const int interpID)
+{
+  static const char *interpTitle = "";
+
+  if (interpID >= 0 && interpID < s_iInterpCount)
+    return (s_aszInterpTitle[interpID]);
+
+  return (interpTitle);
+}
+
+
+
+void
+Projections::init (const int nView, const int nDet)
+{
+  m_label.setLabelType (Array2dFileLabel::L_HISTORY);
+  m_nView = nView;
+  m_nDet = nDet;
+  newProjData ();
+
+  time_t t = time (NULL);
+  tm* lt = localtime (&t);
+  m_year = lt->tm_year;
+  m_month = lt->tm_mon;
+  m_day = lt->tm_mday;
+  m_hour = lt->tm_hour;
+  m_minute = lt->tm_min;
+  m_second = lt->tm_sec;
+}
+
+void
+Projections::initFromScanner (const Scanner& scanner)
+{
+  m_label.setLabelType (Array2dFileLabel::L_HISTORY);
+  deleteProjData();
+  init (scanner.nView(), scanner.nDet());
+
+  m_rotInc = scanner.rotInc();
+  m_detInc = scanner.detInc();
+  m_detStart =  scanner.detStart();
+  m_geometry = scanner.geometry();
+  m_dFocalLength = scanner.focalLength();
+  m_dSourceDetectorLength = scanner.sourceDetectorLength();
+  m_dViewDiameter = scanner.viewDiameter();
+  m_rotStart = scanner.offsetView()*scanner.rotInc();
+  m_dFanBeamAngle = scanner.fanBeamAngle();
+}
+
+void
+Projections::setNView (int nView)  // used by MPI to reduce # of views
+{
+  deleteProjData();
+  init (nView, m_nDet);
+}
+
+//  Helical 180 Linear Interpolation.
+//  This member function takes a set of helical scan projections and
+//  performs a linear interpolation between pairs of complementary rays
+//  to produce a single projection data set approximating what would be
+//  measured at a single axial plane.
+//  Complementary rays are rays which traverse the same path through the
+//  phantom in opposite directions.
+//
+//  For parallel beam geometry, a ray with a given gantry angle beta and a
+//  detector iDet will have a complementary ray at beta + pi and nDet-iDet
+//
+//  For equiangular or equilinear beam geometry the complementary ray to
+//  gantry angle beta and fan-beam angle gamma is at
+//  beta-hat = beta +2*gamma + pi, and gamma-hat =  -gamma.
+//  Note that beta-hat - beta depends on gamma and is not constant.
+//
+//  The algorithm used here is from Crawford and King, Med. Phys. 17(6)
+//  1990 p967; what they called method "C", CSH-HH.  It uses interpolation only
+//  between pairs of complementary rays on either side of an image plane.
+//  Input data must sample gantry angles from zero to
+//  (2*pi + 2* fan-beam-angle).  The data set produced contains gantry
+//  angles from 0 to Pi+fan-beam-angle.  This is a "halfscan" data set,
+//  which still contains redundant data, and can be used with a half scan
+//  reconstruction to produce an image.
+//  In this particular implementation a lower triangle from (beta,gamma) =
+//  (0,-fanAngle/2)->(2*fanAngle,-fanAngle/2)->(0,fanAngle/2) contains
+//  zeros, but is actually redundant with data contained in the region
+//  (pi+fanAngle,-fanAngle/2)->(pi+fanAngle, fanAngle/2) ->(pi-fanAngle,
+//  fanAngle/2).
+//
+int
+Projections::Helical180LI(int interpolation_view)
+{
+   if (m_geometry == Scanner::GEOMETRY_INVALID)
+   {
+       std::cerr << "Invalid geometry " << m_geometry << std::endl;
+       return (2);
+   }
+   else if (m_geometry == Scanner::GEOMETRY_PARALLEL)
+   {
+       std::cerr << "Helical 180LI not yet implemented for PARALLEL geometry"
+                   << std::endl;
+       return (2);
+   }
+   else if (m_geometry == Scanner::GEOMETRY_EQUILINEAR)
+   {
+       std::cerr << "Helical 180LI not yet implemented for EQUILINEAR geometry"
+                   << std::endl;
+       return (2);
+   }
+   else if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR)
+   {
+           return Helical180LI_Equiangular(interpolation_view);
+   }
+   else
+   {
+       std::cerr << "Invalid geometry  in projection data file" << m_geometry
+                   << std::endl;
+       return (2);
+   }
+}
+int
+Projections::Helical180LI_Equiangular(int interpView)
+{
+   double dbeta = m_rotInc;
+   double dgamma =  m_detInc;
+   double fanAngle = m_dFanBeamAngle;
+   int offsetView=0;
+
+   // is there enough data in the data set?  Should have 2(Pi+fanAngle)
+   // coverage minimum
+   if ( m_nView <  static_cast<int>((2*( PI + fanAngle ) ) / dbeta) -1 ){
+       std::cerr   << "Data set does not include 360 +2*FanBeamAngle views"
+                   << std::endl;
+       return (1);
+   }
+
+   if (interpView < 0)   // use default position at PI+fanAngle
+   {
+       interpView = static_cast<int> ((PI+fanAngle)/dbeta);
+   }
+   else
+   {
+       // check if there is PI+fanAngle data on either side of the
+       // of the specified image plane
+       if ( interpView*dbeta < PI+fanAngle ||
+            interpView*dbeta + PI + fanAngle > m_nView*dbeta)
+       {
+           std::cerr << "There isn't PI+fanAngle of data on either side of the requested interpolation view" << std::endl;
+           return(1);
+       }
+       offsetView = interpView - static_cast<int>((PI+fanAngle)/dbeta);
+
+   }
+   int last_interp_view = static_cast<int> ((PI+fanAngle)/dbeta);
+
+
+// make a new array for data...
+   class DetectorArray ** newdetarray = new DetectorArray * [last_interp_view+1];
+   for ( int i=0 ; i <= last_interp_view ; i++ ){
+       newdetarray[i] = new DetectorArray (m_nDet);
+       newdetarray[i]->setViewAngle((i+offsetView)*dbeta);
+       DetectorValue* newdetval = (newdetarray[i])->detValues();
+       // and initialize the data to zero
+       for (int j=0; j < m_nDet; j++)
+           newdetval[j] = 0.;
+   }
+
+   int last_acq_view = 2*last_interp_view;
+   for ( int iView = 0 ; iView <= last_acq_view; iView++) {
+       double beta = iView * dbeta;
+
+       for ( int iDet = 0; iDet < m_nDet; iDet++) {
+           double gamma = (iDet -(m_nDet-1)/2)* dgamma ;
+           int newiView, newiDet;
+           if (beta < PI+fanAngle) { //if (PI +fanAngle - beta > dbeta )
+               //newbeta = beta;
+               //newgamma = gamma;
+               newiDet = iDet;
+               newiView = iView;
+           }
+           else // (beta > PI+fanAngle)
+           {
+               //newbeta = beta +2*gamma - 180;
+               //newgamma = -gamma;
+               newiDet = -iDet + (m_nDet -1);
+               // newiView = nearest<int>((beta + 2*gamma - PI)/dbeta);
+               //newiView = static_cast<int>(( (iView*dbeta) + 2*(iDet-(m_nDet-1)/2)*dgamma - PI)/dbeta);
+               newiView = nearest<int>(( (iView*dbeta) + 2*(iDet-(m_nDet-1)/2)*dgamma - PI)/dbeta);
+           }
+
+#ifdef DEBUG
+//std::cout << beta << " "<< gamma << " " << newbeta << " " << newgamma <<"    " << iView-offsetView << " " << iDet << " " << newiView << " " << newiDet << std::endl;
+//std::cout << iView-offsetView << " " << iDet << " " << newiView << " " << newiDet << std::endl;
+#endif
+
+           if (   ( beta > fanAngle - 2*gamma)
+               && ( beta < 2*PI + fanAngle -2*gamma)  )
+          {  // not in region  1 or 8
+               DetectorValue* detval = (m_projData[iView+offsetView])->detValues();
+               DetectorValue* newdetval = (newdetarray[newiView])->detValues();
+               if (   beta > fanAngle - 2*gamma
+                   && beta <= 2*fanAngle ) {  // in region 2
+                   newdetval[newiDet] +=
+                       (beta +2*gamma - fanAngle)/(PI+2*gamma)
+                               * detval[iDet];
+               } else if ( beta > 2*fanAngle
+                          && beta <= PI - 2*gamma) {  // in region 3
+                   newdetval[newiDet] +=
+                       (beta +2*gamma - fanAngle)/(PI+2*gamma)
+                               * detval[iDet];
+               }
+               else if (   beta > PI -2*gamma
+                        && beta <= PI + fanAngle ) {  // in region 4
+                   newdetval[newiDet] +=
+                       (beta +2*gamma - fanAngle)/(PI+2*gamma)
+                               * detval[iDet];
+               }
+               else if (   beta > PI + fanAngle
+                        && beta <= PI +2*fanAngle -2*gamma) { // in region 5
+                   newdetval[newiDet] +=
+                       (2*PI - beta - 2*gamma + fanAngle)/(PI-2*gamma)
+                               *detval[iDet];
+               }
+               else if (   beta > PI +2*fanAngle -2*gamma
+                        && beta <= 2*PI) {  // in region 6
+                   newdetval[newiDet] +=
+                       (2*PI - beta - 2*gamma + fanAngle)/(PI-2*gamma)
+                       *detval[iDet];
+               }
+               else if (   beta > 2*PI
+                        && beta <= 2*PI + fanAngle -2*gamma){ // in region 7
+                   newdetval[newiDet] +=
+                       (2*PI - beta -2*gamma + fanAngle)/(PI-2*gamma)
+                       *detval[iDet];
+               }
+               else
+               {
+                   ; // outside region of interest
+               }
+           }
+       }
+   }
+   deleteProjData();
+   m_projData = newdetarray;
+   m_nView = last_interp_view+1;
+
+   return (0);
+}
+// HalfScanFeather:
+// A HalfScan Projection Data Set  for equiangular geometry,
+// covering gantry angles from 0 to  pi+fanBeamAngle
+// and fan angle gamma from -fanBeamAngle/2 to fanBeamAngle/2
+// contains redundant information.  If one copy of this data is left as
+// zero, (as in the Helical180LI routine above) overweighting is avoided,
+// but the discontinuity in the data introduces ringing in the image.
+// This routine makes a copy of the data and applies a weighting to avoid
+// over-representation, as given in Appendix C of Crawford and King, Med
+// Phys 17 1990, p967.
+int
+Projections::HalfScanFeather(void)
+{
+   double dbeta = m_rotInc;
+   double dgamma =  m_detInc;
+   double fanAngle = m_dFanBeamAngle;
+
+// is there enough data?
+   if ( m_nView !=  static_cast<int>(( PI+fanAngle ) / dbeta) +1 ){
+       std::cerr   << "Data set does seem have enough data to be a halfscan data set"  << std::endl;
+       return (1);
+   }
+   if (m_geometry == Scanner::GEOMETRY_INVALID) {
+       std::cerr << "Invalid geometry " << m_geometry << std::endl;
+       return (2);
+   }
+
+   if (m_geometry == Scanner::GEOMETRY_PARALLEL) {
+       std::cerr << "HalfScanFeather not yet implemented for PARALLEL geometry"<< std::endl;
+       return (2);
+   }
+
+   for ( int iView2 = 0 ; iView2 < m_nView; iView2++) {
+       double beta2 = iView2 * dbeta;
+       for ( int iDet2 = 0; iDet2 < m_nDet; iDet2++) {
+           double gamma2 = (iDet2 -(m_nDet-1)/2)* dgamma ;
+           if ( ( beta2 >= PI  - 2*gamma2) ) {  // in redundant data region
+               int iView1, iDet1;
+               iDet1 =  (m_nDet -1) - iDet2;
+               //iView1 = nearest<int>((beta2 + 2*gamma2 - PI)/dbeta);
+               iView1 = nearest<int>(( (iView2*dbeta)
+                               + 2*(iDet2-(m_nDet-1)/2)*dgamma - PI)/dbeta);
+
+
+               DetectorValue* detval2 = (m_projData[iView2])->detValues();
+               DetectorValue* detval1 = (m_projData[iView1])->detValues();
+
+               detval1[iDet1] = detval2[iDet2] ;
+
+               double x, w1,w2,beta1, gamma1;
+               beta1= iView1*dbeta;
+               gamma1 = -gamma2;
+               if ( beta1 <= (fanAngle - 2*gamma1) )
+                   x = beta1 / ( fanAngle - 2*gamma1);
+               else if ( (fanAngle  - 2*gamma1 <= beta1 ) && beta1 <= PI - 2*gamma1)
+                   x = 1;
+               else if ( (PI - 2*gamma1 <= beta1 ) && ( beta1 <=PI + fanAngle) )
+                   x = (PI +fanAngle - beta1)/(fanAngle + 2*gamma1);
+               else {
+                   std::cerr << "Shouldn't be here!"<< std::endl;
+                   return(4);
+               }
+               w1 = (3*x - 2*x*x)*x;
+               w2 = 1-w1;
+               detval1[iDet1] *= w1;
+               detval2[iDet2] *= w2;
+
+           }
+       }
+   }
+   // heuristic scaling, why this factor?
+   double scalefactor = m_nView * m_rotInc / PI;
+   for ( int iView = 0 ; iView < m_nView; iView++) {
+       DetectorValue* detval = (m_projData[iView])->detValues();
+       for ( int iDet = 0; iDet < m_nDet; iDet++) {
+           detval[iDet] *= scalefactor;
+       }
+   }
+
+   return (0);
+}
+
+// NAME
+// newProjData
+
+void
+Projections::newProjData (void)
+{
+  if (m_projData)
+    sys_error(ERR_WARNING, "m_projData != NULL [newProjData]");
+
+  if (m_nView > 0 && m_nDet) {
+    m_projData = new DetectorArray* [m_nView];
+
+    for (int i = 0; i < m_nView; i++)
+      m_projData[i] = new DetectorArray (m_nDet);
+  }
+}
+
+
+/* NAME
+*   projections_free                    Free memory allocated to projections
+*
+* SYNOPSIS
+*   projections_free(proj)
+*   Projections& proj                           Projectionss to be deallocated
+*/
+
+void
+Projections::deleteProjData (void)
+{
+  if (m_projData != NULL) {
+    for (int i = 0; i < m_nView; i++)
+      delete m_projData[i];
+
+    delete m_projData;
+    m_projData = NULL;
+  }
+}
+
+
+/* NAME
+*    Projections::headerWwrite         Write data header for projections file
+*
+*/
+
+bool
+Projections::headerWrite (fnetorderstream& fs)
+{
+  kuint16 _hsize = m_headerSize;
+  kuint16 _signature = m_signature;
+  kuint32 _nView = m_nView;
+  kuint32 _nDet = m_nDet;
+  kuint32 _geom = m_geometry;
+  kuint16 _remarksize = m_remark.length();
+  kuint16 _year = m_year;
+  kuint16 _month = m_month;
+  kuint16 _day = m_day;
+  kuint16 _hour = m_hour;
+  kuint16 _minute = m_minute;
+  kuint16 _second = m_second;
+
+  kfloat64 _calcTime = m_calcTime;
+  kfloat64 _rotStart = m_rotStart;
+  kfloat64 _rotInc = m_rotInc;
+  kfloat64 _detStart = m_detStart;
+  kfloat64 _detInc = m_detInc;
+  kfloat64 _viewDiameter = m_dViewDiameter;
+  kfloat64 _focalLength = m_dFocalLength;
+  kfloat64 _sourceDetectorLength = m_dSourceDetectorLength;
+  kfloat64 _fanBeamAngle = m_dFanBeamAngle;
+
+  fs.seekp(0);
+  if (! fs)
+    return false;
+
+  fs.writeInt16 (_hsize);
+  fs.writeInt16 (_signature);
+  fs.writeInt32 (_nView);
+  fs.writeInt32 (_nDet);
+  fs.writeInt32 (_geom);
+  fs.writeFloat64 (_calcTime);
+  fs.writeFloat64 (_rotStart);
+  fs.writeFloat64 (_rotInc);
+  fs.writeFloat64 (_detStart);
+  fs.writeFloat64 (_detInc);
+  fs.writeFloat64 (_viewDiameter);
+  fs.writeFloat64 (_focalLength);
+  fs.writeFloat64 (_sourceDetectorLength);
+  fs.writeFloat64 (_fanBeamAngle);
+  fs.writeInt16 (_year);
+  fs.writeInt16 (_month);
+  fs.writeInt16 (_day);
+  fs.writeInt16 (_hour);
+  fs.writeInt16 (_minute);
+  fs.writeInt16 (_second);
+  fs.writeInt16 (_remarksize);
+  fs.write (m_remark.c_str(), _remarksize);
+
+  m_headerSize = fs.tellp();
+  _hsize = m_headerSize;
+  fs.seekp(0);
+  fs.writeInt16 (_hsize);
+  if (! fs)
+    return false;
+
+  return true;
+}
+
+/* NAME
+*    projections_read_header         Read data header for projections file
+*
+*/
+bool
+Projections::headerRead (fnetorderstream& fs)
+{
+  kuint16 _hsize, _signature, _year, _month, _day, _hour, _minute, _second, _remarksize = 0;
+  kuint32 _nView, _nDet, _geom;
+  kfloat64 _calcTime, _rotStart, _rotInc, _detStart, _detInc, _focalLength, _sourceDetectorLength, _viewDiameter, _fanBeamAngle;
+
+  fs.seekg(0);
+  if (! fs)
+    return false;
+
+  fs.readInt16 (_hsize);
+  fs.readInt16 (_signature);
+  fs.readInt32 (_nView);
+  fs.readInt32 (_nDet);
+  fs.readInt32 (_geom);
+  fs.readFloat64 (_calcTime);
+  fs.readFloat64 (_rotStart);
+  fs.readFloat64 (_rotInc);
+  fs.readFloat64 (_detStart);
+  fs.readFloat64 (_detInc);
+  fs.readFloat64 (_viewDiameter);
+  fs.readFloat64 (_focalLength);
+  fs.readFloat64 (_sourceDetectorLength);
+  fs.readFloat64 (_fanBeamAngle);
+  fs.readInt16 (_year);
+  fs.readInt16 (_month);
+  fs.readInt16 (_day);
+  fs.readInt16 (_hour);
+  fs.readInt16 (_minute);
+  fs.readInt16 (_second);
+  fs.readInt16 (_remarksize);
+
+  if (! fs) {
+    sys_error (ERR_SEVERE, "Error reading header information , _remarksize=%d [projections_read_header]", _remarksize);
+    return false;
+  }
+
+  if (_signature != m_signature) {
+    sys_error (ERR_SEVERE, "File %s does not have a valid projection file signature", m_filename.c_str());
+    return false;
+  }
+
+  char* pszRemarkStorage = new char [_remarksize+1];
+  fs.read (pszRemarkStorage, _remarksize);
+  if (! fs) {
+    sys_error (ERR_SEVERE, "Error reading remark, _remarksize = %d", _remarksize);
+    return false;
+  }
+  pszRemarkStorage[_remarksize] = 0;
+  m_remark = pszRemarkStorage;
+  delete pszRemarkStorage;
+
+  off_t _hsizeread = fs.tellg();
+  if (!fs || _hsizeread != _hsize) {
+    sys_error (ERR_WARNING, "File header size read %ld != file header size stored %ld [read_projections_header]\n_remarksize=%ld", (long int) _hsizeread, _hsize, _remarksize);
+    return false;
+  }
+
+  m_headerSize = _hsize;
+  m_nView = _nView;
+  m_nDet = _nDet;
+  m_geometry = _geom;
+  m_calcTime = _calcTime;
+  m_rotStart = _rotStart;
+  m_rotInc = _rotInc;
+  m_detStart = _detStart;
+  m_detInc = _detInc;
+  m_dFocalLength = _focalLength;
+  m_dSourceDetectorLength = _sourceDetectorLength;
+  m_dViewDiameter = _viewDiameter;
+  m_dFanBeamAngle = _fanBeamAngle;
+  m_year = _year;
+  m_month = _month;
+  m_day = _day;
+  m_hour = _hour;
+  m_minute = _minute;
+  m_second = _second;
+
+  m_label.setLabelType (Array2dFileLabel::L_HISTORY);
+  m_label.setLabelString (m_remark);
+  m_label.setCalcTime (m_calcTime);
+  m_label.setDateTime (m_year, m_month, m_day, m_hour, m_minute, m_second);
+
+  return true;
+}
+
+bool
+Projections::read (const std::string& filename)
+{
+  return read (filename.c_str());
+}
+
+
+bool
+Projections::read (const char* filename)
+{
+  m_filename = filename;
+#ifdef MSVC
+  frnetorderstream fileRead (m_filename.c_str(), std::ios::in | std::ios::binary);
+#else
+  frnetorderstream fileRead (m_filename.c_str(), std::ios::in | std::ios::binary); // | std::ios::nocreate);
+#endif
+
+  if (fileRead.fail())
+    return false;
+
+  if (! headerRead (fileRead))
+    return false;
+
+  deleteProjData ();
+  newProjData();
+
+  for (int i = 0; i < m_nView; i++) {
+    if (! detarrayRead (fileRead, *m_projData[i], i))
+      break;
+  }
+
+  fileRead.close();
+  return true;
+}
+
+
+bool
+Projections::copyViewData (const std::string& filename, std::ostream& os, int startView, int endView)
+{
+  return copyViewData (filename.c_str(), os, startView, endView);
+}
+
+bool
+Projections::copyViewData (const char* const filename, std::ostream& os, int startView, int endView)
+{
+  frnetorderstream is (filename, std::ios::in | std::ios::binary);
+  kuint16 sizeHeader, signature;
+  kuint32 _nView, _nDet;
+
+  is.seekg (0);
+  if (is.fail()) {
+    sys_error (ERR_SEVERE, "Unable to read projection file %s", filename);
+    return false;
+  }
+
+  is.readInt16 (sizeHeader);
+  is.readInt16 (signature);
+  is.readInt32 (_nView);
+  is.readInt32 (_nDet);
+  int nView = _nView;
+  int nDet = _nDet;
+
+  if (signature != m_signature) {
+    sys_error (ERR_SEVERE, "Illegal signature in projection file %s", filename);
+    return false;
+  }
+
+  if (startView < 0)
+    startView = 0;
+  if (startView > nView - 1)
+    startView = nView;
+  if (endView < 0 || endView > nView - 1)
+    endView = nView - 1;
+
+  if (startView > endView) { // swap if start > end
+    int tempView = endView;
+    endView = startView;
+    startView = tempView;
+  }
+
+  int sizeView = 8 /* view_angle */ + 4 /* nDet */ + (4 * nDet);
+  unsigned char* pViewData = new unsigned char [sizeView];
+
+  for (int i = startView; i <= endView; i++) {
+    is.seekg (sizeHeader + i * sizeView);
+    is.read (reinterpret_cast<char*>(pViewData), sizeView);
+    os.write (reinterpret_cast<char*>(pViewData), sizeView);
+    if (is.fail() || os.fail())
+      break;
+  }
+
+  delete pViewData;
+  if (is.fail())
+    sys_error (ERR_SEVERE, "Error reading projection file");
+  if (os.fail())
+    sys_error (ERR_SEVERE, "Error writing projection file");
+
+  return (! (is.fail() | os.fail()));
+}
+
+bool
+Projections::copyHeader (const std::string& filename, std::ostream& os)
+{
+  return copyHeader (filename.c_str(), os);
+}
+
+bool
+Projections::copyHeader (const char* const filename, std::ostream& os)
+{
+  frnetorderstream is (filename, std::ios::in | std::ios::binary);
+  kuint16 sizeHeader, signature;
+  is.readInt16 (sizeHeader);
+  is.readInt16 (signature);
+  is.seekg (0);
+  if (signature != m_signature) {
+    sys_error (ERR_SEVERE, "Illegal signature in projection file %s", filename);
+    return false;
+  }
+
+  unsigned char* pHdrData = new unsigned char [sizeHeader];
+  is.read (reinterpret_cast<char*>(pHdrData), sizeHeader);
+  if (is.fail()) {
+    sys_error (ERR_SEVERE, "Error reading header");
+    return false;
+  }
+
+  os.write (reinterpret_cast<char*>(pHdrData), sizeHeader);
+  if (os.fail()) {
+    sys_error (ERR_SEVERE, "Error writing header");
+    return false;
+  }
+
+  return true;
+}
+
+bool
+Projections::write (const std::string& filename)
+{
+  return write (filename.c_str());
+}
+
+bool
+Projections::write (const char* filename)
+{
+  frnetorderstream fs (filename, std::ios::out | std::ios::binary | std::ios::trunc | std::ios::ate);
+  m_filename = filename;
+  if (! fs) {
+    sys_error (ERR_SEVERE, "Error opening file %s for output [projections_create]", filename);
+    return false;
+  }
+
+  if (! headerWrite (fs))
+    return false;
+
+  if (m_projData != NULL) {
+    for (int i = 0; i < m_nView; i++) {
+      if (! detarrayWrite (fs, *m_projData[i], i))
+        break;
+    }
+  }
+  if (! fs)
+    return false;
+
+  fs.close();
+
+  return true;
+}
+
+/* NAME
+*   detarrayRead                Read a Detector Array structure from the disk
+*
+* SYNOPSIS
+*   detarrayRead (proj, darray, view_num)
+*   DETARRAY *darray            Detector array storage location to be filled
+*   int      view_num           View number to read
+*/
+
+bool
+Projections::detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int iview)
+{
+  const int detval_bytes = darray.nDet() * sizeof(kfloat32);
+  const int detheader_bytes = sizeof(kfloat64) /* view_angle */ + sizeof(kint32) /* nDet */;
+  const int view_bytes = detheader_bytes + detval_bytes;
+  const off_t start_data = m_headerSize + (iview * view_bytes);
+  DetectorValue* detval_ptr = darray.detValues();
+  kfloat64 view_angle;
+  kuint32 nDet;
+
+  fs.seekg (start_data);
+
+  fs.readFloat64 (view_angle);
+  fs.readInt32 (nDet);
+  darray.setViewAngle (view_angle);
+  //  darray.setNDet ( nDet);
+
+  for (unsigned int i = 0; i < nDet; i++) {
+    kfloat32 detval;
+    fs.readFloat32 (detval);
+    detval_ptr[i] = detval;
+  }
+  if (! fs)
+    return false;
+
+  return true;
+}
+
+
+/* NAME
+*   detarrayWrite                       Write detector array data to the disk
+*
+* SYNOPSIS
+*   detarrayWrite (darray, view_num)
+*   DETARRAY *darray                    Detector array data to be written
+*   int      view_num                   View number to write
+*
+* DESCRIPTION
+*       This routine writes the detarray data from the disk sequentially to
+*    the file that was opened with open_projections().  Data is written in
+*    binary format.
+*/
+
+bool
+Projections::detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int iview)
+{
+  const int detval_bytes = darray.nDet() * sizeof(float);
+  const int detheader_bytes = sizeof(kfloat64) /* view_angle */ + sizeof(kint32) /* nDet */;
+  const int view_bytes = detheader_bytes + detval_bytes;
+  const off_t start_data = m_headerSize + (iview * view_bytes);
+  const DetectorValue* const detval_ptr = darray.detValues();
+  kfloat64 view_angle = darray.viewAngle();
+  kuint32 nDet = darray.nDet();
+
+  fs.seekp (start_data);
+  if (! fs) {
+    sys_error (ERR_SEVERE, "Error seeking detectory array [detarrayWrite]");
+    return false;
+  }
+
+  fs.writeFloat64 (view_angle);
+  fs.writeInt32 (nDet);
+
+  for (unsigned int i = 0; i < nDet; i++) {
+    kfloat32 detval = detval_ptr[i];
+    fs.writeFloat32 (detval);
+  }
+
+  if (! fs)
+    return (false);
+
+  return true;
+}
+
+/* NAME
+*   printProjectionData                 Print projections data
+*
+* SYNOPSIS
+*   printProjectionData ()
+*/
+
+void
+Projections::printProjectionData ()
+{
+  printProjectionData (0, nView() - 1);
+}
+
+void
+Projections::printProjectionData (int startView, int endView)
+{
+  printf("Projections Data\n\n");
+  printf("Description: %s\n", m_remark.c_str());
+  printf("Geometry: %s\n", Scanner::convertGeometryIDToName (m_geometry));
+  printf("nView       = %8d             nDet = %8d\n", m_nView, m_nDet);
+  printf("focalLength = %8.4f   ViewDiameter = %8.4f\n", m_dFocalLength, m_dViewDiameter);
+  printf("fanBeamAngle= %8.4f SourceDetector = %8.4f\n", convertRadiansToDegrees(m_dFanBeamAngle), m_dSourceDetectorLength);
+  printf("rotStart    = %8.4f         rotInc = %8.4f\n", m_rotStart, m_rotInc);
+  printf("detStart    = %8.4f         detInc = %8.4f\n", m_detStart, m_detInc);
+  if (m_projData != NULL) {
+    if (startView < 0)
+      startView = 0;
+    if (endView < 0)
+      endView = m_nView - 1;
+    if (startView > m_nView - 1)
+      startView = m_nView - 1;
+    if (endView > m_nView - 1)
+      endView = m_nView - 1;
+    for (int ir = startView; ir <= endView - 1; ir++) {
+      printf("View %d: angle %f\n", ir, m_projData[ir]->viewAngle());
+      DetectorValue* detval = m_projData[ir]->detValues();
+      for (int id = 0; id < m_projData[ir]->nDet(); id++)
+        printf("%8.4f  ", detval[id]);
+      printf("\n");
+    }
+  }
+}
+
+void
+Projections::printScanInfo (std::ostringstream& os) const
+{
+  os << "Number of detectors: " << m_nDet << "\n";
+  os << "Number of views: " << m_nView<< "\n";
+  os << "Description: " << m_remark.c_str()<< "\n";
+  os << "Geometry: " << Scanner::convertGeometryIDToName (m_geometry)<< "\n";
+  os << "Focal Length: " << m_dFocalLength<< "\n";
+  os << "Source Detector Length: " << m_dSourceDetectorLength << "\n";
+  os << "View Diameter: " << m_dViewDiameter<< "\n";
+  os << "Fan Beam Angle: " << convertRadiansToDegrees(m_dFanBeamAngle) << "\n";
+  os << "detStart: " << m_detStart<< "\n";
+  os << "detInc: " << m_detInc<< "\n";
+  os << "rotStart: " << m_rotStart<< "\n";
+  os << "rotInc: " << m_rotInc<< "\n";
+}
+
+
+bool
+Projections::convertPolar (ImageFile& rIF, int iInterpolationID)
+{
+  unsigned int nx = rIF.nx();
+  unsigned int ny = rIF.ny();
+  ImageFileArray v = rIF.getArray();
+  ImageFileArray vImag = rIF.getImaginaryArray();
+
+  if (! v || nx == 0 || ny == 0)
+    return false;
+
+  Projections* pProj = this;
+  if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR)
+    pProj = interpolateToParallel();
+
+  Array2d<double> adView (nx, ny);
+  Array2d<double> adDet (nx, ny);
+  double** ppdView = adView.getArray();
+  double** ppdDet = adDet.getArray();
+
+  std::complex<double>** ppcDetValue = new std::complex<double>* [pProj->m_nView];
+  int iView;
+  for (iView = 0; iView < pProj->m_nView; iView++) {
+    ppcDetValue[iView] = new std::complex<double> [pProj->m_nDet];
+    DetectorValue* detval = pProj->getDetectorArray (iView).detValues();
+    for (int iDet = 0; iDet < pProj->m_nDet; iDet++)
+      ppcDetValue[iView][iDet] = std::complex<double>(detval[iDet], 0);
+  }
+
+  pProj->calcArrayPolarCoordinates (nx, ny, ppdView, ppdDet, pProj->m_nDet, 1., pProj->m_detInc);
+
+  pProj->interpolatePolar (v, vImag, nx, ny, ppcDetValue, ppdView, ppdDet, pProj->m_nView, pProj->m_nDet,
+    pProj->m_nDet, iInterpolationID);
+
+  for (iView = 0; iView < pProj->m_nView; iView++)
+    delete [] ppcDetValue[iView];
+  delete [] ppcDetValue;
+
+  if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR)
+    delete pProj;
+
+  return true;
+}
+
+
+bool
+Projections::convertFFTPolar (ImageFile& rIF, int iInterpolationID, int iZeropad)
+{
+#ifndef HAVE_FFTW
+  rIF.arrayDataClear();
+  return false;
+#else
+  unsigned int nx = rIF.nx();
+  unsigned int ny = rIF.ny();
+  ImageFileArray v = rIF.getArray();
+  if (! rIF.isComplex())
+    rIF.convertRealToComplex();
+  ImageFileArray vImag = rIF.getImaginaryArray();
+
+  if (! v || nx == 0 || ny == 0)
+    return false;
+
+  Projections* pProj = this;
+  if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR)
+    pProj = interpolateToParallel();
+
+  int iInterpDet = static_cast<int>(static_cast<double>(sqrt(nx*nx+ny*ny)));
+  int iNumInterpDetWithZeros = ProcessSignal::addZeropadFactor (iInterpDet, iZeropad);
+  double dProjScale = iInterpDet / (pProj->viewDiameter() * 0.05);
+  double dZeropadRatio = static_cast<double>(iNumInterpDetWithZeros) / static_cast<double>(iInterpDet);
+
+  fftw_complex* pcIn = static_cast<fftw_complex*> (fftw_malloc (sizeof(fftw_complex) * iNumInterpDetWithZeros));
+  fftw_plan plan = fftw_plan_dft_1d (iNumInterpDetWithZeros, pcIn, pcIn, FFTW_FORWARD, FFTW_ESTIMATE);
+
+  std::complex<double>** ppcDetValue = new std::complex<double>* [pProj->m_nView];
+  //double dInterpScale = (pProj->m_nDet-1) / static_cast<double>(iInterpDet-1);
+  double dInterpScale = pProj->m_nDet / static_cast<double>(iInterpDet);
+
+  double dFFTScale = 1. / static_cast<double>(iInterpDet * iInterpDet);
+  int iMidPoint = iInterpDet / 2;
+  double dMidPoint = static_cast<double>(iInterpDet) / 2.;
+  int iZerosAdded = iNumInterpDetWithZeros - iInterpDet;
+
+  // For each view, interpolate, shift to center at origin, and FFT
+  for (int iView = 0; iView < m_nView; iView++) {
+    DetectorValue* detval = pProj->getDetectorArray(iView).detValues();
+    LinearInterpolator<DetectorValue> projInterp (detval, pProj->m_nDet);
+    for (int iDet = 0; iDet < iInterpDet; iDet++) {
+      double dInterpPos = (m_nDet / 2.) + (iDet - dMidPoint) * dInterpScale;
+      pcIn[iDet][0] = projInterp.interpolate (dInterpPos) * dProjScale;
+      pcIn[iDet][1] = 0;
+    }
+
+    Fourier::shuffleFourierToNaturalOrder (pcIn, iInterpDet);
+    if (iZerosAdded > 0) {
+      for (int iDet1 = iInterpDet -1; iDet1 >= iMidPoint; iDet1--) {
+        pcIn[iDet1+iZerosAdded][0] = pcIn[iDet1][0];
+        pcIn[iDet1+iZerosAdded][1] = pcIn[iDet1][1];
+      }
+      for (int iDet2 = iMidPoint; iDet2 < iMidPoint + iZerosAdded; iDet2++)
+        pcIn[iDet2][0] = pcIn[iDet2][1] = 0;
+    }
+
+    fftw_execute (plan);
+
+    ppcDetValue[iView] = new std::complex<double> [iNumInterpDetWithZeros];
+    for (int iD = 0; iD < iNumInterpDetWithZeros; iD++) {
+      ppcDetValue[iView][iD] = std::complex<double> (pcIn[iD][0] * dFFTScale, pcIn[iD][1] * dFFTScale);
+    }
+
+    Fourier::shuffleFourierToNaturalOrder (ppcDetValue[iView], iNumInterpDetWithZeros);
+  }
+  fftw_free(pcIn) ;
+
+  fftw_destroy_plan (plan);
+
+  Array2d<double> adView (nx, ny);
+  Array2d<double> adDet (nx, ny);
+  double** ppdView = adView.getArray();
+  double** ppdDet = adDet.getArray();
+  pProj->calcArrayPolarCoordinates (nx, ny, ppdView, ppdDet, iNumInterpDetWithZeros, dZeropadRatio,
+    pProj->m_detInc * dInterpScale);
+
+  pProj->interpolatePolar (v, vImag, nx, ny, ppcDetValue, ppdView, ppdDet, pProj->m_nView, pProj->m_nDet,
+    iNumInterpDetWithZeros, iInterpolationID);
+
+  if (m_geometry == Scanner::GEOMETRY_EQUIANGULAR || m_geometry == Scanner::GEOMETRY_EQUILINEAR)
+    delete pProj;
+
+  for (int i = 0; i < m_nView; i++)
+    delete [] ppcDetValue[i];
+  delete [] ppcDetValue;
+
+  return true;
+#endif
+}
+
+
+void
+Projections::calcArrayPolarCoordinates (unsigned int nx, unsigned int ny, double** ppdView, double** ppdDet,
+                                        int iNumDetWithZeros, double dZeropadRatio, double dDetInc)
+{
+  double dLength = viewDiameter();
+  double xMin = -dLength / 2;
+  double xMax = xMin + dLength;
+  double yMin = -dLength / 2;
+  double yMax = yMin + dLength;
+  double xCent = (xMin + xMax) / 2;
+  double yCent = (yMin + yMax) / 2;
+
+  xMin = (xMin - xCent) * dZeropadRatio + xCent;
+  xMax = (xMax - xCent) * dZeropadRatio + xCent;
+  yMin = (yMin - yCent) * dZeropadRatio + yCent;
+  yMax = (yMax - yCent) * dZeropadRatio + yCent;
+
+  double xInc = (xMax - xMin) / nx;     // size of cells
+  double yInc = (yMax - yMin) / ny;
+
+  double dDetCenter = (iNumDetWithZeros - 1) / 2.;      // index refering to L=0 projection
+  // +1 is correct for frequency data, ndet-1 is correct for projections
+  //  if (isEven (iNumDetWithZeros))
+  //    dDetCenter = (iNumDetWithZeros + 0) / 2;
+
+  // Calculates polar coordinates (view#, det#) for each point on phantom grid
+  double x = xMin + xInc / 2;   // Rectang coords of center of pixel
+  for (unsigned int ix = 0; ix < nx; x += xInc, ix++) {
+    double y = yMin + yInc / 2;
+    for (unsigned int iy = 0; iy < ny; y += yInc, iy++) {
+      double r = ::sqrt (x * x + y * y);
+      double phi = atan2 (y, x);
+
+      if (phi <= -m_rotInc / 2)
+        phi += TWOPI;
+      if (phi >= PI - (m_rotInc / 2)) {
+        phi -= PI;
+        r = -r;
+      }
+
+      ppdView[ix][iy] = (phi - m_rotStart) / m_rotInc;
+      ppdDet[ix][iy] = (r / dDetInc) + dDetCenter;
+    }
+  }
+}
+
+void
+Projections::interpolatePolar (ImageFileArray& v, ImageFileArray& vImag,
+     unsigned int nx, unsigned int ny, std::complex<double>** ppcDetValue, double** ppdView,
+     double** ppdDet, unsigned int nView, unsigned int nDet, unsigned int nDetWithZeros, int iInterpolationID)
+{
+  typedef std::complex<double> complexValue;
+
+  BilinearPolarInterpolator<complexValue>* pBilinear = NULL;
+  BicubicPolyInterpolator<complexValue>* pBicubic = NULL;
+  if (iInterpolationID == POLAR_INTERP_BILINEAR)
+    pBilinear = new BilinearPolarInterpolator<complexValue> (ppcDetValue, nView, nDetWithZeros);
+  else if (iInterpolationID == POLAR_INTERP_BICUBIC)
+    pBicubic = new BicubicPolyInterpolator<complexValue> (ppcDetValue, nView, nDetWithZeros);
+
+  for (unsigned int ix = 0; ix < ny; ix++) {
+    for (unsigned int iy = 0; iy < ny; iy++) {
+      if (iInterpolationID == POLAR_INTERP_NEAREST) {
+        unsigned int iView = nearest<int> (ppdView[ix][iy]);
+        unsigned int iDet = nearest<int> (ppdDet[ix][iy]);
+        if (iView == nView)
+          iView = 0;
+        if (iDet >= 0 && iDet < nDetWithZeros && iView >= 0 && iView < nView) {
+          v[ix][iy] = ppcDetValue[iView][iDet].real();
+          if (vImag)
+            vImag[ix][iy] = ppcDetValue[iView][iDet].imag();
+        } else {
+          v[ix][iy] = 0;
+          if (vImag)
+            vImag[ix][iy] = 0;
+        }
+
+      } else if (iInterpolationID == POLAR_INTERP_BILINEAR) {
+        std::complex<double> vInterp = pBilinear->interpolate (ppdView[ix][iy], ppdDet[ix][iy]);
+        v[ix][iy] = vInterp.real();
+        if (vImag)
+          vImag[ix][iy] = vInterp.imag();
+      } else if (iInterpolationID == POLAR_INTERP_BICUBIC) {
+        std::complex<double> vInterp = pBicubic->interpolate (ppdView[ix][iy], ppdDet[ix][iy]);
+        v[ix][iy] = vInterp.real();
+        if (vImag)
+          vImag[ix][iy] = vInterp.imag();
+      }
+    }
+  }
+}
+
+bool
+Projections::initFromSomatomAR_STAR (int iNViews, int iNDets, unsigned char* pData, unsigned long lDataLength)
+{
+  init (iNViews, iNDets);
+  m_geometry = Scanner::GEOMETRY_EQUIANGULAR;
+  m_dFocalLength = 510;
+  m_dSourceDetectorLength = 890;
+  m_detInc = convertDegreesToRadians (3.06976 / 60);
+  m_dFanBeamAngle = iNDets * m_detInc;
+  m_detStart = -(m_dFanBeamAngle / 2);
+  m_rotInc = TWOPI / static_cast<double>(iNViews);
+  m_rotStart = 0;
+  m_dViewDiameter = sin (m_dFanBeamAngle / 2) * m_dFocalLength * 2;
+
+  if (! ((iNViews == 750 && lDataLength == 1560000L) || (iNViews == 950 && lDataLength == 1976000L)
+                || (iNViews == 1500 && lDataLength == 3120000)))
+    return false;
+
+  double dCenter = (iNDets - 1.) / 2.; // change from (Nm+1)/2 because of 0 vs. 1 indexing
+  double* pdCosScale = new double [iNDets];
+  for (int i = 0; i < iNDets; i++)
+    pdCosScale[i] = 1. / cos ((i - dCenter) * m_detInc);
+
+  long lDataPos = 0;
+  for (int iv = 0; iv < iNViews; iv++) {
+    unsigned char* pArgBase = pData + lDataPos;
+    unsigned char* p = pArgBase+0; SwapBytes4IfLittleEndian (p);
+    // long lProjNumber = *reinterpret_cast<long*>(p);
+
+    p = pArgBase+20;  SwapBytes4IfLittleEndian (p);
+    long lEscale = *reinterpret_cast<long*>(p);
+
+    p = pArgBase+28;  SwapBytes4IfLittleEndian (p);
+    // long lTime = *reinterpret_cast<long*>(p);
+
+    p = pArgBase + 4; SwapBytes4IfLittleEndian (p);
+    double dAlpha = *reinterpret_cast<float*>(p) + HALFPI;
+
+    p = pArgBase+12; SwapBytes4IfLittleEndian (p);
+    // double dAlign = *reinterpret_cast<float*>(p);
+
+    p = pArgBase + 16; SwapBytes4IfLittleEndian (p);
+    // double dMaxValue = *reinterpret_cast<float*>(p);
+
+    DetectorArray& detArray = getDetectorArray (iv);
+    detArray.setViewAngle (dAlpha);
+    DetectorValue* detval = detArray.detValues();
+
+    double dViewScale = 1. / (2294.4871 * ::pow (2.0, -lEscale));
+    lDataPos += 32;
+    for (int id = 0; id < iNDets; id++) {
+      int iV = pData[lDataPos+1] + (pData[lDataPos] << 8);
+      if (iV > 32767)   // two's complement signed conversion
+        iV = iV - 65536;
+      detval[id] = iV * dViewScale * pdCosScale[id];
+      lDataPos += 2;
+    }
+#if 1
+    for (int k = iNDets - 2; k >= 0; k--)
+      detval[k+1] = detval[k];
+    detval[0] = 0;
+#endif
+  }
+
+  delete pdCosScale;
+  return true;
+}
+
+Projections*
+Projections::interpolateToParallel () const
+{
+  if (m_geometry == Scanner::GEOMETRY_PARALLEL)
+    return const_cast<Projections*>(this);
+
+  int nDet = m_nDet;
+  int nView = m_nView;
+  Projections* pProjNew = new Projections (nView, nDet);
+  pProjNew->m_geometry = Scanner::GEOMETRY_PARALLEL;
+  pProjNew->m_dFocalLength = m_dFocalLength;
+  pProjNew->m_dSourceDetectorLength = m_dSourceDetectorLength;
+  pProjNew->m_dViewDiameter = m_dViewDiameter;
+  pProjNew->m_dFanBeamAngle = m_dFanBeamAngle;
+  pProjNew->m_calcTime  = 0;
+  pProjNew->m_remark = m_remark;
+  pProjNew->m_remark += "; Interpolate to Parallel";
+  pProjNew->m_label.setLabelType (Array2dFileLabel::L_HISTORY);
+  pProjNew->m_label.setLabelString (pProjNew->m_remark);
+  pProjNew->m_label.setCalcTime (pProjNew->m_calcTime);
+  pProjNew->m_label.setDateTime (pProjNew->m_year, pProjNew->m_month, pProjNew->m_day, pProjNew->m_hour, pProjNew->m_minute, pProjNew->m_second);
+
+  pProjNew->m_rotStart = 0;
+#ifdef CONVERT_PARALLEL_PI
+  pProjNew->m_rotInc = PI / nView;;
+#else
+  pProjNew->m_rotInc = TWOPI / nView;
+#endif
+  pProjNew->m_detStart = -m_dViewDiameter / 2;
+  pProjNew->m_detInc = m_dViewDiameter / nDet;
+  if (isEven (nDet)) // even
+    pProjNew->m_detInc = m_dViewDiameter / (nDet - 1);
+
+  ParallelRaysums parallel (this, ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI);
+
+  double* pdThetaValuesForT = new double [pProjNew->nView()];
+  double* pdRaysumsForT = new double [pProjNew->nView()];
+
+  // interpolate to evenly spaced theta (views)
+  double dDetPos = pProjNew->m_detStart;
+  for (int iD = 0; iD < pProjNew->nDet(); iD++, dDetPos += pProjNew->m_detInc) {
+      parallel.getThetaAndRaysumsForT (iD, pdThetaValuesForT, pdRaysumsForT);
+
+    double dViewAngle = m_rotStart;
+    int iLastFloor = -1;
+    LinearInterpolator<double> interp (pdThetaValuesForT, pdRaysumsForT, pProjNew->nView(), false);
+    for (int iV = 0; iV < pProjNew->nView(); iV++, dViewAngle += pProjNew->m_rotInc) {
+      DetectorValue* detValues = pProjNew->getDetectorArray (iV).detValues();
+      detValues[iD] = interp.interpolate (dViewAngle, &iLastFloor);
+    }
+  }
+  delete pdThetaValuesForT;
+  delete pdRaysumsForT;
+
+  // interpolate to evenly space t (detectors)
+  double* pdOriginalDetPositions = new double [pProjNew->nDet()];
+  parallel.getDetPositions (pdOriginalDetPositions);
+
+  double* pdDetValueCopy = new double [pProjNew->nDet()];
+  double dViewAngle = m_rotStart;
+  for (int iV = 0; iV < pProjNew->nView(); iV++, dViewAngle += pProjNew->m_rotInc) {
+    DetectorArray& detArray = pProjNew->getDetectorArray (iV);
+    DetectorValue* detValues = detArray.detValues();
+    detArray.setViewAngle (dViewAngle);
+
+    for (int i = 0; i < pProjNew->nDet(); i++)
+      pdDetValueCopy[i] =   detValues[i];
+
+    double dDetPos = pProjNew->m_detStart;
+    int iLastFloor = -1;
+    LinearInterpolator<double> interp (pdOriginalDetPositions, pdDetValueCopy, pProjNew->nDet(), false);
+    for (int iD = 0; iD < pProjNew->nDet(); iD++, dDetPos += pProjNew->m_detInc)
+      detValues[iD] = interp.interpolate (dDetPos, &iLastFloor);
+  }
+  delete pdDetValueCopy;
+  delete pdOriginalDetPositions;
+
+  return pProjNew;
+}
+
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Class ParallelRaysums
+//
+// Used for converting divergent beam raysums into Parallel raysums
+//
+///////////////////////////////////////////////////////////////////////////////
+
+ParallelRaysums::ParallelRaysums (const Projections* pProjections, int iThetaRange)
+: m_pCoordinates(NULL), m_iNumCoordinates(0), m_iNumView(pProjections->nView()), m_iNumDet(pProjections->nDet()),
+  m_iThetaRange (iThetaRange)
+{
+  int iGeometry = pProjections->geometry();
+  double dDetInc = pProjections->detInc();
+  double dDetStart = pProjections->detStart();
+  double dFocalLength = pProjections->focalLength();
+
+  m_iNumCoordinates =  m_iNumView * m_iNumDet;
+  m_pCoordinates = new ParallelRaysumCoordinate [m_iNumCoordinates];
+  m_vecpCoordinates.reserve (m_iNumCoordinates);
+  for (int i = 0; i < m_iNumCoordinates; i++)
+    m_vecpCoordinates[i] = m_pCoordinates + i;
+
+  int iCoordinate = 0;
+  for (int iV = 0; iV < m_iNumView; iV++) {
+    double dViewAngle = pProjections->getDetectorArray(iV).viewAngle();
+    const DetectorValue* detValues = pProjections->getDetectorArray(iV).detValues();
+
+    double dDetPos = dDetStart;
+    for (int iD = 0; iD < m_iNumDet; iD++) {
+      ParallelRaysumCoordinate* pC = m_vecpCoordinates[iCoordinate++];
+
+      if (iGeometry == Scanner::GEOMETRY_PARALLEL) {
+        pC->m_dTheta = dViewAngle;
+        pC->m_dT = dDetPos;
+      } else if (iGeometry == Scanner::GEOMETRY_EQUILINEAR) {
+        double dFanAngle = atan (dDetPos / pProjections->sourceDetectorLength());
+        pC->m_dTheta = dViewAngle + dFanAngle;
+        pC->m_dT = dFocalLength * sin(dFanAngle);
+
+      } else if (iGeometry == Scanner::GEOMETRY_EQUIANGULAR) {
+        // fan angle is same as dDetPos
+        pC->m_dTheta = dViewAngle + dDetPos;
+        pC->m_dT = dFocalLength * sin (dDetPos);
+      }
+      if (m_iThetaRange != THETA_RANGE_UNCONSTRAINED) {
+        pC->m_dTheta = normalizeAngle (pC->m_dTheta);
+        if (m_iThetaRange == THETA_RANGE_FOLD_TO_PI && pC->m_dTheta >= PI) {
+          pC->m_dTheta -= PI;
+          pC->m_dT = -pC->m_dT;
+        }
+      }
+      pC->m_dRaysum = detValues[iD];
+      dDetPos += dDetInc;
+    }
+  }
+}
+
+ParallelRaysums::~ParallelRaysums()
+{
+  delete m_pCoordinates;
+}
+
+ParallelRaysums::CoordinateContainer&
+ParallelRaysums::getSortedByTheta()
+{
+  if (m_vecpSortedByTheta.size() == 0) {
+    m_vecpSortedByTheta.resize (m_iNumCoordinates);
+    for (int i = 0; i < m_iNumCoordinates; i++)
+      m_vecpSortedByTheta[i] = m_vecpCoordinates[i];
+    std::sort (m_vecpSortedByTheta.begin(), m_vecpSortedByTheta.end(), ParallelRaysumCoordinate::compareByTheta);
+  }
+
+  return m_vecpSortedByTheta;
+}
+
+ParallelRaysums::CoordinateContainer&
+ParallelRaysums::getSortedByT()
+{
+  if (m_vecpSortedByT.size() == 0) {
+    m_vecpSortedByT.resize (m_iNumCoordinates);
+    for (int i = 0; i < m_iNumCoordinates; i++)
+      m_vecpSortedByT[i] = m_vecpCoordinates[i];
+    std::sort (m_vecpSortedByT.begin(), m_vecpSortedByT.end(), ParallelRaysumCoordinate::compareByT);
+  }
+
+  return m_vecpSortedByT;
+}
+
+
+void
+ParallelRaysums::getLimits (double* dMinT, double* dMaxT, double* dMinTheta, double* dMaxTheta) const
+{
+  if (m_iNumCoordinates <= 0)
+    return;
+
+  *dMinT = *dMaxT = m_vecpCoordinates[0]->m_dT;
+  *dMinTheta = *dMaxTheta = m_vecpCoordinates[0]->m_dTheta;
+
+  for (int i = 0; i < m_iNumCoordinates; i++) {
+    double dT = m_vecpCoordinates[i]->m_dT;
+    double dTheta = m_vecpCoordinates[i]->m_dTheta;
+
+    if (dT < *dMinT)
+      *dMinT = dT;
+    else if (dT > *dMaxT)
+      *dMaxT = dT;
+
+    if (dTheta < *dMinTheta)
+      *dMinTheta = dTheta;
+    else if (dTheta > *dMaxTheta)
+      *dMaxTheta = dTheta;
+  }
+}
+
+void
+ParallelRaysums::getThetaAndRaysumsForT (int iTheta, double* pTheta, double* pRaysum)
+{
+  const CoordinateContainer& coordsT = getSortedByT();
+
+  int iBase = iTheta * m_iNumView;
+  for (int i = 0; i < m_iNumView; i++) {
+    int iPos = iBase + i;
+    pTheta[i] = coordsT[iPos]->m_dTheta;
+    pRaysum[i] = coordsT[iPos]->m_dRaysum;
+  }
+}
+
+void
+ParallelRaysums::getDetPositions (double* pdDetPos)
+{
+  const CoordinateContainer& coordsT = getSortedByT();
+
+  int iPos = 0;
+  for (int i = 0; i < m_iNumDet; i++) {
+    pdDetPos[i] = coordsT[iPos]->m_dT;
+    iPos += m_iNumView;
+  }
+}
diff --git a/libctsim/reconstruct.cpp b/libctsim/reconstruct.cpp
new file mode 100644
index 0000000..a0d7416
--- /dev/null
+++ b/libctsim/reconstruct.cpp
@@ -0,0 +1,240 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:         reconstruct.cpp         Reconstruction class
+**   Programmer:   Kevin Rosenberg
+**   Date Started: Aug 84
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+
+/* NAME
+ *   Reconstructor::Reconstructor      Reconstruct Image from Projections
+ *
+ * SYNOPSIS
+ *   im = proj.reconstruct (im, filt_type, filt_param, interp_type)
+ *   IMAGE *im                  Output image
+ *   int filt_type              Type of convolution filter to use
+ *   double filt_param          Filter specific parameter
+ *                              Currently, used only with Hamming filters
+ *   int interp_type            Type of interpolation method to use
+ *
+ * ALGORITHM
+ *
+ *      Calculate one-dimensional filter in spatial domain
+ *      Allocate & clear (zero) the 2d output image array
+ *      For each projection view
+ *          Convolve raysum array with filter
+ *          Backproject raysums and add (summate) to image array
+ *      end
+ */
+
+
+Reconstructor::Reconstructor (const Projections& rProj, ImageFile& rIF, const char* const filterName,
+                              double filt_param, const char* const filterMethodName, const int zeropad,
+                              const char* filterGenerationName, const char* const interpName,
+                              int interpFactor, const char* const backprojectName, const int iTrace,
+                              ReconstructionROI* pROI, bool bRebinToParallel, SGP* pSGP)
+  : m_rOriginalProj(rProj),
+    m_pProj(bRebinToParallel ? m_rOriginalProj.interpolateToParallel() : &m_rOriginalProj),
+    m_rImagefile(rIF), m_pProcessSignal(0), m_pBackprojector(0),
+    m_iTrace(iTrace), m_bRebinToParallel(bRebinToParallel), m_bFail(false), m_adPlotXAxis(0)
+{
+  m_nFilteredProjections = m_pProj->nDet() * interpFactor;
+
+#ifdef HAVE_BSPLINE_INTERP
+  int spline_order = 0, zoom_factor = 0;
+  if (interp_type == I_BSPLINE) {
+    zoom_factor = interpFactor;
+    spline_order = 3;
+    zoom_factor = 3;
+    m_nFilteredProjections = (m_nDet - 1) * (zoom_factor + 1) + 1;
+  }
+#endif
+
+  double filterBW = 1. / m_pProj->detInc();
+  m_pProcessSignal = new ProcessSignal (filterName, filterMethodName, filterBW, m_pProj->detInc(),
+    m_pProj->nDet(), filt_param, "spatial", filterGenerationName, zeropad, interpFactor, iTrace,
+    m_pProj->geometry(), m_pProj->focalLength(), m_pProj->sourceDetectorLength(), pSGP);
+
+  if (m_pProcessSignal->fail()) {
+    m_bFail = true;
+    m_strFailMessage = "Error creating ProcessSignal: ";
+    m_strFailMessage += m_pProcessSignal->failMessage();
+    delete m_pProcessSignal; m_pProcessSignal = NULL;
+    return;
+  }
+
+  m_pBackprojector = new Backprojector (*m_pProj, m_rImagefile, backprojectName, interpName, interpFactor, pROI);
+  if (m_pBackprojector->fail()) {
+    m_bFail = true;
+    m_strFailMessage = "Error creating backprojector: ";
+    m_strFailMessage += m_pBackprojector->failMessage();
+    delete m_pBackprojector; m_pBackprojector = NULL;
+    delete m_pProcessSignal; m_pProcessSignal = NULL;
+    return;
+  }
+
+#ifdef HAVE_SGP
+  m_adPlotXAxis = new double [m_pProj->nDet()];
+  double x = - ((m_pProj->nDet() - 1) / 2) * m_pProj->detInc();
+  double xInc = m_pProj->detInc();
+
+  for (int i = 0; i < m_pProj->nDet(); i++, x += xInc)
+    m_adPlotXAxis[i] = x;
+#endif
+}
+
+Reconstructor::~Reconstructor ()
+{
+  if (m_bRebinToParallel)
+    delete m_pProj;
+
+  delete m_pBackprojector;
+  delete m_pProcessSignal;
+  delete m_adPlotXAxis;
+}
+
+
+void
+Reconstructor::plotFilter (SGP* pSGP)
+{
+#ifdef HAVE_SGP
+  int nVecFilter = m_pProcessSignal->getNFilterPoints();
+  double* adPlotXAxis = new double [nVecFilter];
+
+  if (nVecFilter > 0 && pSGP)  {
+    double f = m_pProcessSignal->getFilterMin();
+    double filterInc = m_pProcessSignal->getFilterIncrement();
+    for (int i = 0; i < nVecFilter; i++, f += filterInc)
+      adPlotXAxis[i] = f;
+
+    if (m_pProcessSignal->getFilter()) {
+      EZPlot ezplot;
+
+      ezplot.ezset ("title Filter Response");
+      ezplot.addCurve (adPlotXAxis, m_pProcessSignal->getFilter(), nVecFilter);
+      ezplot.plot (pSGP);
+    }
+  }
+  delete adPlotXAxis;
+#endif
+}
+
+
+void
+Reconstructor::reconstructAllViews ()
+{
+  reconstructView (0, m_pProj->nView());
+  postProcessing();
+}
+
+void
+Reconstructor::postProcessing()
+{
+  m_pBackprojector->PostProcessing();
+}
+
+
+void
+Reconstructor::reconstructView (int iStartView, int iViewCount, SGP* pSGP, bool bBackprojectView, double dGraphWidth)
+{
+  double* adFilteredProj = new double [m_nFilteredProjections];   // filtered projections
+
+  if (iViewCount <= 0)
+    iViewCount = m_pProj->nView() - iStartView;
+
+  for (int iView = iStartView; iView < (iStartView + iViewCount); iView++)  {
+    if (m_iTrace == Trace::TRACE_CONSOLE)
+                std::cout <<"Reconstructing view " << iView << " (last = " << m_pProj->nView() - 1 << ")\n";
+
+    const DetectorArray& rDetArray = m_pProj->getDetectorArray (iView);
+    const DetectorValue* detval = rDetArray.detValues();
+
+    m_pProcessSignal->filterSignal (detval, adFilteredProj);
+
+#ifdef HAVE_BSPLINE_INTERP
+    if (interp_type == I_BSPLINE)
+        bspline (m_pProj->nDet(), zoom_factor, spline_order, adFilteredProj, adFilteredProj);
+
+#ifdef HAVE_SGP
+    if (trace >= Trace::TRACE_PLOT && interp_type == I_BSPLINE && pSGP) {
+        bspline (m_pProj->nDet(), zoom_factor, spline_order, adFilteredProj, adFilteredProj);
+      ezplot_1d (adFilteredProj, m_nFilteredProjections);
+    }
+#endif
+#endif
+
+        if (bBackprojectView)
+      m_pBackprojector->BackprojectView (adFilteredProj, rDetArray.viewAngle());
+
+#ifdef HAVE_SGP
+    if (m_iTrace >= Trace::TRACE_PLOT && pSGP) {
+      EZPlot ezplotProj;
+
+      std::ostringstream osXLength;
+      osXLength << "xlength " << dGraphWidth;
+
+      ezplotProj.ezset ("clear");
+      ezplotProj.ezset ("title Raw Projection");
+      ezplotProj.ezset ("xticks major 5");
+      ezplotProj.ezset ("yticks major 5");
+      ezplotProj.ezset ("xlabel ");
+      ezplotProj.ezset ("ylabel ");
+      ezplotProj.ezset ("yporigin 0.55");
+      ezplotProj.ezset ("ylength 0.45");
+      ezplotProj.ezset (osXLength.str().c_str());
+      ezplotProj.ezset ("box.");
+      ezplotProj.ezset ("grid.");
+#if 0  // workaround c++ optimizer bug, now disabled by using /O1 in code
+      double* pdDetval = new double [m_pProj->nDet()];
+      for (unsigned int id = 0; id < m_pProj->nDet(); id++) {
+        pdDetval[id] = detval[id];
+      }
+      ezplotProj.addCurve (m_adPlotXAxis, pdDetval, m_pProj->nDet());
+      delete pdDetval;
+#else
+      ezplotProj.addCurve (m_adPlotXAxis, detval, m_pProj->nDet());
+#endif
+      pSGP->setTextPointSize (9);
+      ezplotProj.plot (pSGP);
+
+      ezplotProj.ezset ("clear");
+      ezplotProj.ezset ("title Filtered Projection");
+      ezplotProj.ezset ("xticks major 5");
+      ezplotProj.ezset ("xlabel ");
+      ezplotProj.ezset ("ylabel ");
+      ezplotProj.ezset ("yticks major 5");
+      ezplotProj.ezset ("yporigin 0.10");
+      ezplotProj.ezset ("ylength 0.45");
+      ezplotProj.ezset (osXLength.str().c_str());
+      ezplotProj.ezset ("box");
+      ezplotProj.ezset ("grid");
+      ezplotProj.addCurve (m_adPlotXAxis, adFilteredProj,  m_nFilteredProjections);
+      pSGP->setTextPointSize (9);
+      ezplotProj.plot (pSGP);
+
+}
+#endif  //HAVE_SGP
+  }
+
+  delete adFilteredProj;
+}
+
diff --git a/libctsim/scanner.cpp b/libctsim/scanner.cpp
new file mode 100644
index 0000000..ce43bfc
--- /dev/null
+++ b/libctsim/scanner.cpp
@@ -0,0 +1,657 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          scanner.cpp
+**   Purpose:       Classes for CT scanner
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  1984
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+
+const int Scanner::GEOMETRY_INVALID = -1;
+const int Scanner::GEOMETRY_PARALLEL = 0;
+const int Scanner::GEOMETRY_EQUIANGULAR = 1;
+const int Scanner::GEOMETRY_EQUILINEAR = 2;
+const int Scanner::GEOMETRY_LINOGRAM = 3;
+
+const char* const Scanner::s_aszGeometryName[] =
+{
+  "parallel",
+  "equiangular",
+  "equilinear",
+  "linogram",
+};
+
+const char* const Scanner::s_aszGeometryTitle[] =
+{
+  "Parallel",
+  "Equiangular",
+  "Equilinear",
+  "Linogram",
+};
+
+const int Scanner::s_iGeometryCount = sizeof(s_aszGeometryName) / sizeof(const char*);
+
+
+// NAME
+//   DetectorArray       Construct a DetectorArray
+
+DetectorArray::DetectorArray (const int nDet)
+{
+  m_nDet = nDet;
+  m_detValues = new DetectorValue [m_nDet];
+}
+
+
+// NAME
+//   ~DetectorArray             Free memory allocated to a detector array
+
+DetectorArray::~DetectorArray (void)
+{
+  delete [] m_detValues;
+}
+
+
+
+/* NAME
+*   Scanner::Scanner            Construct a user specified detector structure
+*
+* SYNOPSIS
+*   Scanner (phm, nDet, nView, nSample)
+*   Phantom& phm                PHANTOM that we are making detector for
+*   int geomety                Geometry of detector
+*   int nDet                    Number of detector along detector array
+*   int nView                   Number of rotated views
+*   int nSample         Number of rays per detector
+*/
+
+Scanner::Scanner (const Phantom& phm, const char* const geometryName,
+                  int nDet, int nView, int offsetView,
+                                  int nSample, const double rot_anglen,
+                  const double dFocalLengthRatio,
+                                  const double dCenterDetectorRatio,
+                  const double dViewRatio, const double dScanRatio)
+{
+  m_fail = false;
+  m_idGeometry = convertGeometryNameToID (geometryName);
+  if (m_idGeometry == GEOMETRY_INVALID) {
+    m_fail = true;
+    m_failMessage = "Invalid geometry name ";
+    m_failMessage += geometryName;
+    return;
+  }
+
+  if (nView < 1 || nDet < 1) {
+    m_fail = true;
+    m_failMessage = "nView & nDet must be greater than 0";
+    return;
+  }
+  if (nSample < 1)
+    m_nSample = 1;
+
+  m_nDet     = nDet;
+  m_nView    = nView;
+  m_iOffsetView = offsetView;
+  m_nSample  = nSample;
+  m_dFocalLengthRatio = dFocalLengthRatio;
+  m_dCenterDetectorRatio = dCenterDetectorRatio;
+  m_dViewRatio = dViewRatio;
+  m_dScanRatio = dScanRatio;
+
+  m_dViewDiameter = phm.getDiameterBoundaryCircle() * m_dViewRatio;
+  m_dFocalLength = (m_dViewDiameter / 2) * m_dFocalLengthRatio;
+  m_dCenterDetectorLength = (m_dViewDiameter / 2) * m_dCenterDetectorRatio;
+  m_dSourceDetectorLength = m_dFocalLength + m_dCenterDetectorLength;
+  m_dScanDiameter = m_dViewDiameter * m_dScanRatio;
+
+  m_dXCenter = phm.xmin() + (phm.xmax() - phm.xmin()) / 2;
+  m_dYCenter = phm.ymin() + (phm.ymax() - phm.ymin()) / 2;
+  m_rotLen  = rot_anglen;
+  m_rotInc  = m_rotLen / m_nView;
+  if (m_idGeometry == GEOMETRY_PARALLEL) {
+    m_dFanBeamAngle = 0;
+    m_detLen   = m_dScanDiameter;
+    m_detStart = -m_detLen / 2;
+    m_detInc  = m_detLen / m_nDet;
+    double dDetectorArrayEndOffset = 0;
+    // For even number of detectors, make detInc slightly larger so that center lies
+    // at nDet/2. Also, extend detector array by one detInc so that all of the phantom is scanned
+    if (isEven (m_nDet)) { // Adjust for Even number of detectors
+      m_detInc = m_detLen / (m_nDet - 1); // center detector = (nDet/2)
+      dDetectorArrayEndOffset = m_detInc;
+    }
+
+    double dHalfDetLen = m_detLen / 2;
+    m_initPos.xs1 = m_dXCenter - dHalfDetLen;
+    m_initPos.ys1 = m_dYCenter + m_dFocalLength;
+    m_initPos.xs2 = m_dXCenter + dHalfDetLen + dDetectorArrayEndOffset;
+    m_initPos.ys2 = m_dYCenter + m_dFocalLength;
+    m_initPos.xd1 = m_dXCenter - dHalfDetLen;
+    m_initPos.yd1 = m_dYCenter - m_dCenterDetectorLength;
+    m_initPos.xd2 = m_dXCenter + dHalfDetLen + dDetectorArrayEndOffset;
+    m_initPos.yd2 = m_dYCenter - m_dCenterDetectorLength;
+    m_initPos.angle = m_iOffsetView * m_rotInc;
+    m_detLen += dDetectorArrayEndOffset;
+  } else if (m_idGeometry == GEOMETRY_EQUILINEAR) {
+  if (m_dScanDiameter / 2 >= m_dFocalLength) {
+      m_fail = true;
+      m_failMessage = "Invalid geometry: Focal length must be larger than scan length";
+      return;
+    }
+
+    const double dAngle = asin ((m_dScanDiameter / 2) / m_dFocalLength);
+    const double dHalfDetLen = m_dSourceDetectorLength * tan (dAngle);
+
+    m_detLen = dHalfDetLen * 2;
+    m_detStart = -dHalfDetLen;
+    m_detInc  = m_detLen / m_nDet;
+    double dDetectorArrayEndOffset = 0;
+    if (isEven (m_nDet)) { // Adjust for Even number of detectors
+      m_detInc = m_detLen / (m_nDet - 1); // center detector = (nDet/2)
+      dDetectorArrayEndOffset = m_detInc;
+      m_detLen += dDetectorArrayEndOffset;
+    }
+
+    m_dFanBeamAngle = dAngle * 2;
+    m_initPos.xs1 = m_dXCenter;
+    m_initPos.ys1 = m_dYCenter + m_dFocalLength;
+    m_initPos.xs2 = m_dXCenter;
+    m_initPos.ys2 = m_dYCenter + m_dFocalLength;
+    m_initPos.xd1 = m_dXCenter - dHalfDetLen;
+    m_initPos.yd1 = m_dYCenter - m_dCenterDetectorLength;
+    m_initPos.xd2 = m_dXCenter + dHalfDetLen + dDetectorArrayEndOffset;
+    m_initPos.yd2 = m_dYCenter - m_dCenterDetectorLength;
+    m_initPos.angle = m_iOffsetView * m_rotInc;
+  } else if (m_idGeometry == GEOMETRY_EQUIANGULAR) {
+    if (m_dScanDiameter / 2 > m_dFocalLength) {
+      m_fail = true;
+      m_failMessage = "Invalid geometry: Focal length must be larger than scan length";
+      return;
+    }
+    const double dAngle = asin ((m_dScanDiameter / 2) / m_dFocalLength);
+
+    m_detLen = 2 * dAngle;
+    m_detStart = -dAngle;
+    m_detInc = m_detLen / m_nDet;
+    double dDetectorArrayEndOffset = 0;
+    if (isEven (m_nDet)) { // Adjust for Even number of detectors
+      m_detInc = m_detLen / (m_nDet - 1); // center detector = (nDet/2)
+      dDetectorArrayEndOffset = m_detInc;
+    }
+    // adjust for center-detector length
+    double dA1 = acos ((m_dScanDiameter / 2) / m_dCenterDetectorLength);
+    double dAngularScale = 2 * (HALFPI + dAngle - dA1) / m_detLen;
+
+    m_dAngularDetLen = dAngularScale * (m_detLen + dDetectorArrayEndOffset);
+    m_dAngularDetIncrement = dAngularScale * m_detInc;
+    m_initPos.dAngularDet = -m_dAngularDetLen / 2;
+
+    m_dFanBeamAngle = dAngle * 2;
+    m_initPos.angle = m_iOffsetView * m_rotInc;
+    m_initPos.xs1 = m_dXCenter;
+    m_initPos.ys1 = m_dYCenter + m_dFocalLength;;
+    m_initPos.xs2 = m_dXCenter;
+    m_initPos.ys2 = m_dYCenter + m_dFocalLength;
+    m_detLen += dDetectorArrayEndOffset;
+  }
+
+  // Calculate incrementatal rotation matrix
+  GRFMTX_2D temp;
+  xlat_mtx2 (m_rotmtxIncrement, -m_dXCenter, -m_dYCenter);
+  rot_mtx2 (temp, m_rotInc);
+  mult_mtx2 (m_rotmtxIncrement, temp, m_rotmtxIncrement);
+  xlat_mtx2 (temp, m_dXCenter, m_dYCenter);
+  mult_mtx2 (m_rotmtxIncrement, temp, m_rotmtxIncrement);
+
+}
+
+Scanner::~Scanner (void)
+{
+}
+
+
+const char*
+Scanner::convertGeometryIDToName (const int geomID)
+{
+  const char *name = "";
+
+  if (geomID >= 0 && geomID < s_iGeometryCount)
+    return (s_aszGeometryName[geomID]);
+
+  return (name);
+}
+
+const char*
+Scanner::convertGeometryIDToTitle (const int geomID)
+{
+  const char *title = "";
+
+  if (geomID >= 0 && geomID < s_iGeometryCount)
+    return (s_aszGeometryName[geomID]);
+
+  return (title);
+}
+
+int
+Scanner::convertGeometryNameToID (const char* const geomName)
+{
+  int id = GEOMETRY_INVALID;
+
+  for (int i = 0; i < s_iGeometryCount; i++)
+    if (strcasecmp (geomName, s_aszGeometryName[i]) == 0) {
+      id = i;
+      break;
+    }
+
+    return (id);
+}
+
+
+/* NAME
+*   collectProjections          Calculate projections for a Phantom
+*
+* SYNOPSIS
+*   collectProjections (proj, phm, start_view, nView, bStoreViewPos, trace)
+*   Projectrions& proj      Projection storage
+*   Phantom& phm             Phantom for which we collect projections
+*   bool bStoreViewPos      TRUE then storage proj at normal view position
+*   int trace                Trace level
+*/
+
+
+void
+Scanner::collectProjections (Projections& proj, const Phantom& phm, const int trace, SGP* pSGP)
+{
+  collectProjections (proj, phm, m_startView, proj.nView(), m_iOffsetView, true, trace, pSGP);
+}
+
+void
+Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView,
+                             const int iNumViews, const int iOffsetView,  bool bStoreAtViewPosition,
+                             const int trace, SGP* pSGP)
+{
+  int iStorageOffset = (bStoreAtViewPosition ? iStartView : 0);
+  collectProjections (proj, phm, iStartView, iNumViews, iOffsetView, iStorageOffset, trace, pSGP);
+}
+
+void
+Scanner::collectProjections (Projections& proj, const Phantom& phm, const int iStartView,
+                             const int iNumViews, const int iOffsetView, int iStorageOffset,
+                             const int trace, SGP* pSGP)
+{
+  m_trace = trace;
+  double start_angle = (iStartView + iOffsetView) * proj.rotInc();
+
+  // Calculate initial rotation matrix
+  GRFMTX_2D rotmtx_initial, temp;
+  xlat_mtx2 (rotmtx_initial, -m_dXCenter, -m_dYCenter);
+  rot_mtx2 (temp, start_angle);
+  mult_mtx2 (rotmtx_initial, temp, rotmtx_initial);
+  xlat_mtx2 (temp, m_dXCenter, m_dYCenter);
+  mult_mtx2 (rotmtx_initial, temp, rotmtx_initial);
+
+  double xd1=0, yd1=0, xd2=0, yd2=0;
+  if (m_idGeometry != GEOMETRY_EQUIANGULAR) {
+    xd1 = m_initPos.xd1;
+    yd1 = m_initPos.yd1;
+    xd2 = m_initPos.xd2;
+    yd2 = m_initPos.yd2;
+    xform_mtx2 (rotmtx_initial, xd1, yd1);      // rotate detector endpoints
+    xform_mtx2 (rotmtx_initial, xd2, yd2);      // to initial view_angle
+  }
+
+  double xs1 = m_initPos.xs1;
+  double ys1 = m_initPos.ys1;
+  double xs2 = m_initPos.xs2;
+  double ys2 = m_initPos.ys2;
+  xform_mtx2 (rotmtx_initial, xs1, ys1);      // rotate source endpoints to
+  xform_mtx2 (rotmtx_initial, xs2, ys2);      // initial view angle
+
+  int iView;
+  double viewAngle;
+  for (iView = 0, viewAngle = start_angle;  iView < iNumViews; iView++, viewAngle += proj.rotInc()) {
+    int iStoragePosition = iView + iStorageOffset;
+
+    DetectorArray& detArray = proj.getDetectorArray( iStoragePosition );
+
+#ifdef HAVE_SGP
+    if (pSGP && m_trace >= Trace::TRACE_PHANTOM) {
+      m_pSGP = pSGP;
+      double dWindowSize = dmax (m_detLen, m_dSourceDetectorLength) * 2;
+      double dHalfWindowSize = dWindowSize / 2;
+      m_dXMinWin = m_dXCenter - dHalfWindowSize;
+      m_dXMaxWin = m_dXCenter + dHalfWindowSize;
+      m_dYMinWin = m_dYCenter - dHalfWindowSize;
+      m_dYMaxWin = m_dYCenter + dHalfWindowSize;
+
+      m_pSGP->setWindow (m_dXMinWin, m_dYMinWin, m_dXMaxWin, m_dYMaxWin);
+      m_pSGP->setRasterOp (RO_COPY);
+
+      m_pSGP->setColor (C_RED);
+      m_pSGP->moveAbs (0., 0.);
+      m_pSGP->drawCircle (m_dViewDiameter / 2);
+
+      m_pSGP->moveAbs (0., 0.);
+      m_pSGP->setColor (C_GREEN);
+      m_pSGP->drawCircle (m_dFocalLength);
+      m_pSGP->setColor (C_BLUE);
+      m_pSGP->setTextPointSize (9);
+      phm.draw (*m_pSGP);
+      m_dTextHeight = m_pSGP->getCharHeight ();
+
+      traceShowParam ("Phantom:",       "%s", PROJECTION_TRACE_ROW_PHANT_ID, C_BLACK, phm.name().c_str());
+      traceShowParam ("Geometry:", "%s", PROJECTION_TRACE_ROW_GEOMETRY, C_BLUE, convertGeometryIDToName(m_idGeometry));
+      traceShowParam ("Focal Length Ratio:", "%.2f", PROJECTION_TRACE_ROW_FOCAL_LENGTH, C_BLUE, m_dFocalLengthRatio);
+      //      traceShowParam ("Field Of View Ratio:", "%.2f", PROJECTION_TRACE_ROW_FIELD_OF_VIEW, C_BLUE, m_dFieldOfViewRatio);
+      traceShowParam ("Num Detectors:", "%d", PROJECTION_TRACE_ROW_NDET, C_BLUE, proj.nDet());
+      traceShowParam ("Num Views:", "%d", PROJECTION_TRACE_ROW_NVIEW, C_BLUE, proj.nView());
+      traceShowParam ("Samples / Ray:", "%d", PROJECTION_TRACE_ROW_SAMPLES, C_BLUE, m_nSample);
+
+      m_pSGP->setMarker (SGP::MARKER_BDIAMOND);
+    }
+#endif
+
+#ifdef HAVE_SGP
+    if (m_pSGP && m_trace >= Trace::TRACE_PHANTOM) {
+      m_pSGP->setColor (C_BLACK);
+      m_pSGP->setPenWidth (2);
+      if (m_idGeometry == GEOMETRY_PARALLEL) {
+        m_pSGP->moveAbs (xs1, ys1);
+        m_pSGP->lineAbs (xs2, ys2);
+        m_pSGP->moveAbs (xd1, yd1);
+        m_pSGP->lineAbs (xd2, yd2);
+      } else if (m_idGeometry == GEOMETRY_EQUILINEAR) {
+        m_pSGP->setPenWidth (4);
+        m_pSGP->moveAbs (xs1, ys1);
+        m_pSGP->lineAbs (xs2, ys2);
+        m_pSGP->setPenWidth (2);
+        m_pSGP->moveAbs (xd1, yd1);
+        m_pSGP->lineAbs (xd2, yd2);
+      } else if (m_idGeometry == GEOMETRY_EQUIANGULAR) {
+        m_pSGP->setPenWidth (4);
+        m_pSGP->moveAbs (xs1, ys1);
+        m_pSGP->lineAbs (xs2, ys2);
+        m_pSGP->setPenWidth (2);
+        m_pSGP->moveAbs (0., 0.);
+        m_pSGP->drawArc (m_dCenterDetectorLength, viewAngle + 3 * HALFPI - (m_dAngularDetLen/2), viewAngle + 3 * HALFPI + (m_dAngularDetLen/2));
+      }
+      m_pSGP->setPenWidth (1);
+    }
+    if (m_trace > Trace::TRACE_CONSOLE)
+      traceShowParam ("Current View:", "%d (%.0f%%)", PROJECTION_TRACE_ROW_CURR_VIEW, C_RED, iView + iStartView, (iView + iStartView) / static_cast<double>(m_nView) * 100.);
+#endif
+    if (m_trace == Trace::TRACE_CONSOLE)
+      std::cout << "Current View: " << iView+iStartView << std::endl;
+
+    projectSingleView (phm, detArray, xd1, yd1, xd2, yd2, xs1, ys1, xs2, ys2, viewAngle + 3 * HALFPI);
+    detArray.setViewAngle (viewAngle);
+
+#ifdef HAVE_SGP
+    if (m_pSGP && m_trace >= Trace::TRACE_PHANTOM) {
+      //        rs_plot (detArray, xd1, yd1, dXCenter, dYCenter, theta);
+    }
+#endif
+    xform_mtx2 (m_rotmtxIncrement, xs1, ys1);
+    xform_mtx2 (m_rotmtxIncrement, xs2, ys2);
+    if (m_idGeometry != GEOMETRY_EQUIANGULAR) {
+      xform_mtx2 (m_rotmtxIncrement, xd1, yd1);  // rotate detector endpoints
+      xform_mtx2 (m_rotmtxIncrement, xd2, yd2);
+    }
+  } /* for each iView */
+}
+
+
+/* NAME
+*    rayview                    Calculate raysums for a view at any angle
+*
+* SYNOPSIS
+*    rayview (phm, detArray, xd1, nSample, yd1, xd2, yd2, xs1, ys1, xs2, ys2)
+*    Phantom& phm               Phantom to scan
+*    DETARRAY *detArray         Storage of values for detector array
+*    Scanner& det               Scanner parameters
+*    double xd1, yd1, xd2, yd2  Beginning & ending detector positions
+*    double xs1, ys1, xs2, ys2  Beginning & ending source positions
+*
+* RAY POSITIONING
+*         For each detector, have there are a variable number of rays traced.
+*     The source of each ray is the center of the source x-ray cell. The
+*     detector positions are equally spaced within the cell
+*
+*         The increments between rays are calculated so that the cells start
+*     at the beginning of a detector cell and they end on the endpoint
+*     of the cell.  Thus, the last cell starts at (xd2-ddx),(yd2-ddy).
+*         The exception to this is if there is only one ray per detector.
+*     In that case, the detector position is the center of the detector cell.
+*/
+
+void
+Scanner::projectSingleView (const Phantom& phm, DetectorArray& detArray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const double dDetAngle)
+{
+
+  double sdx = (xs2 - xs1) / detArray.nDet();  // change in coords
+  double sdy = (ys2 - ys1) / detArray.nDet();  // between source
+  double xs_maj = xs1 + (sdx / 2);      // put ray source in center of cell
+  double ys_maj = ys1 + (sdy / 2);
+
+  double ddx=0, ddy=0, ddx2=0, ddy2=0, ddx2_ofs=0, ddy2_ofs=0, xd_maj=0, yd_maj=0;
+  double dAngleInc=0, dAngleSampleInc=0, dAngleSampleOffset=0, dAngleMajor=0;
+  if (m_idGeometry == GEOMETRY_EQUIANGULAR) {
+    dAngleInc = m_dAngularDetIncrement;
+    dAngleSampleInc = dAngleInc / m_nSample;
+    dAngleSampleOffset = dAngleSampleInc / 2;
+    dAngleMajor = dDetAngle - (m_dAngularDetLen/2) + dAngleSampleOffset;
+  } else {
+    ddx = (xd2 - xd1) / detArray.nDet();  // change in coords
+    ddy = (yd2 - yd1) / detArray.nDet();  // between detectors
+    ddx2 = ddx / m_nSample;     // Incr. between rays with detector cell
+    ddy2 = ddy / m_nSample;  // Doesn't include detector endpoints
+    ddx2_ofs = ddx2 / 2;    // offset of 1st ray from start of detector cell
+    ddy2_ofs = ddy2 / 2;
+
+    xd_maj = xd1 + ddx2_ofs;       // Incr. between detector cells
+    yd_maj = yd1 + ddy2_ofs;
+  }
+
+  DetectorValue* detval = detArray.detValues();
+
+  if (phm.getComposition() == P_UNIT_PULSE) {  // put unit pulse in center of view
+    for (int d = 0; d < detArray.nDet(); d++)
+        detval[d] = 0;
+    detval[ detArray.nDet() / 2 ] = 1;
+  } else {
+    for (int d = 0; d < detArray.nDet(); d++) {
+      double xs = xs_maj;
+      double ys = ys_maj;
+      double xd=0, yd=0, dAngle=0;
+      if (m_idGeometry == GEOMETRY_EQUIANGULAR) {
+        dAngle = dAngleMajor;
+      } else {
+        xd = xd_maj;
+        yd = yd_maj;
+      }
+      double sum = 0.0;
+      for (unsigned int i = 0; i < m_nSample; i++) {
+        if (m_idGeometry == GEOMETRY_EQUIANGULAR) {
+          xd = m_dCenterDetectorLength * cos (dAngle);
+          yd = m_dCenterDetectorLength * sin (dAngle);
+        }
+
+#ifdef HAVE_SGP
+        if (m_pSGP && m_trace >= Trace::TRACE_PROJECTIONS) {
+          m_pSGP->setColor (C_YELLOW);
+          m_pSGP->setRasterOp (RO_AND);
+          m_pSGP->moveAbs (xs, ys);
+          m_pSGP->lineAbs (xd, yd);
+        }
+#endif
+
+        sum += projectSingleLine (phm, xd, yd, xs, ys);
+
+#ifdef HAVE_SGP
+        //      if (m_trace >= Trace::TRACE_CLIPPING) {
+        //        traceShowParam ("Attenuation:", "%s", PROJECTION_TRACE_ROW_ATTEN, C_LTMAGENTA, "        ");
+        //        traceShowParam ("Attenuation:", "%.3f", PROJECTION_TRACE_ROW_ATTEN, C_LTMAGENTA, sum);
+        //      }
+#endif
+        if (m_idGeometry == GEOMETRY_EQUIANGULAR)
+          dAngle += dAngleSampleInc;
+        else {
+          xd += ddx2;
+          yd += ddy2;
+        }
+      } // for each sample in detector
+
+      detval[d] = sum / m_nSample;
+      xs_maj += sdx;
+      ys_maj += sdy;
+      if (m_idGeometry == GEOMETRY_EQUIANGULAR)
+        dAngleMajor += dAngleInc;
+      else {
+        xd_maj += ddx;
+        yd_maj += ddy;
+      }
+    } /* for each detector */
+  } /* if not unit pulse */
+}
+
+
+void
+Scanner::traceShowParam (const char *szLabel, const char *fmt, int row, int color, ...)
+{
+  va_list arg;
+  va_start(arg, color);
+#ifdef HAVE_SGP
+  traceShowParamRasterOp (RO_COPY, szLabel, fmt, row, color, arg);
+#else
+  traceShowParamRasterOp (0, szLabel, fmt, row, color, arg);
+#endif
+  va_end(arg);
+}
+
+void
+Scanner::traceShowParamXOR (const char *szLabel, const char *fmt, int row, int color, ...)
+{
+  va_list arg;
+  va_start(arg, color);
+#ifdef HAVE_SGP
+  traceShowParamRasterOp (RO_XOR, szLabel, fmt, row, color, arg);
+#else
+  traceShowParamRasterOp (0, szLabel, fmt, row, color, arg);
+#endif
+  va_end(arg);
+}
+
+void
+Scanner::traceShowParamRasterOp (int iRasterOp, const char *szLabel, const char *fmt, int row, int color, va_list args)
+{
+  char szValue[256];
+
+  vsnprintf (szValue, sizeof(szValue), fmt, args);
+
+#ifdef HAVE_SGP
+  if (m_pSGP) {
+    m_pSGP->setRasterOp (iRasterOp);
+    m_pSGP->setTextColor (color, -1);
+    double dValueOffset = (m_dXMaxWin - m_dXMinWin) / 4;
+    if (row < 4) {
+      double dYPos = m_dYMaxWin - (row * m_dTextHeight);
+      double dXPos = m_dXMinWin;
+      m_pSGP->moveAbs (dXPos, dYPos);
+      m_pSGP->drawText (szLabel);
+      m_pSGP->moveAbs (dXPos + dValueOffset, dYPos);
+      m_pSGP->drawText (szValue);
+    } else {
+      row -= 4;
+      double dYPos = m_dYMaxWin - (row * m_dTextHeight);
+      double dXPos = m_dXMinWin + (m_dXMaxWin - m_dXMinWin) * 0.5;
+      m_pSGP->moveAbs (dXPos, dYPos);
+      m_pSGP->drawText (szLabel);
+      m_pSGP->moveAbs (dXPos + dValueOffset, dYPos);
+      m_pSGP->drawText (szValue);
+    }
+  } else
+#endif
+  {
+    cio_put_str (szLabel);
+    cio_put_str (szValue);
+    cio_put_str ("\n");
+  }
+}
+
+
+
+/* NAME
+*    projectSingleLine                  INTERNAL: Calculates raysum along a line for a Phantom
+*
+* SYNOPSIS
+*    rsum = phm_ray_attenuation (phm, x1, y1, x2, y2)
+*    double rsum                Ray sum of Phantom along given line
+*    Phantom& phm;              Phantom from which to calculate raysum
+*    double *x1, *y1, *x2, y2   Endpoints of ray path (in Phantom coords)
+*/
+
+double
+Scanner::projectSingleLine (const Phantom& phm, const double x1, const double y1, const double x2, const double y2)
+{
+  // check ray against each pelem in Phantom
+  double rsum = 0.0;
+  for (PElemConstIterator i = phm.listPElem().begin(); i != phm.listPElem().end(); i++)
+    rsum += projectLineAgainstPElem (**i, x1, y1, x2, y2);
+
+  return (rsum);
+}
+
+
+/* NAME
+*   pelem_ray_attenuation               Calculate raysum of an pelem along one line
+*
+* SYNOPSIS
+*   rsum = pelem_ray_attenuation (pelem, x1, y1, x2, y2)
+*   double rsum         Computed raysum
+*   PhantomElement& pelem               Pelem to scan
+*   double x1, y1, x2, y2       Endpoints of raysum line
+*/
+
+double
+Scanner::projectLineAgainstPElem (const PhantomElement& pelem, double x1, double y1, double x2, double y2)
+{
+  if (! pelem.clipLineWorldCoords (x1, y1, x2, y2)) {
+    if (m_trace == Trace::TRACE_CLIPPING)
+      cio_tone (1000., 0.05);
+    return (0.0);
+  }
+
+#ifdef HAVE_SGP
+  if (m_pSGP && m_trace == Trace::TRACE_CLIPPING) {
+    m_pSGP->setRasterOp (RO_XOR);
+    m_pSGP->moveAbs (x1, y1);
+    m_pSGP->lineAbs (x2, y2);
+    cio_tone (8000., 0.05);
+    m_pSGP->moveAbs (x1, y1);
+    m_pSGP->lineAbs (x2, y2);
+    m_pSGP->setRasterOp (RO_SET);
+  }
+#endif
+
+  double len = lineLength (x1, y1, x2, y2);
+  return (len * pelem.atten());
+}
+
diff --git a/libctsim/trace.cpp b/libctsim/trace.cpp
new file mode 100644
index 0000000..7d7df10
--- /dev/null
+++ b/libctsim/trace.cpp
@@ -0,0 +1,99 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:         trace.cpp        Class for trace
+**   Programmer:   Kevin Rosenberg
+**   Date Started: June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+const int Trace::TRACE_INVALID = -1;
+const int Trace::TRACE_NONE = 0;
+const int Trace::TRACE_CONSOLE = 1;
+const int Trace::TRACE_PHANTOM = 2;
+const int Trace::TRACE_PROJECTIONS = 3;
+const int Trace::TRACE_PLOT = 4;
+const int Trace::TRACE_CLIPPING = 5;
+
+const int Trace::BIT_CONSOLE = 0x0001;
+const int Trace::BIT_PHANTOM = 0x0002;
+const int Trace::BIT_PROJECTIONS = 0x0004;
+const int Trace::BIT_PLOT = 0x0008;
+const int Trace::BIT_CLIPPING = 0x0010;
+
+const char* Trace::s_aszTraceName[] =
+{
+  "none",
+  "console",
+  "phantom",
+  "proj",
+  "plot",
+  "clipping",
+};
+
+const char* Trace::s_aszTraceTitle[] =
+{
+  "None",
+  "Console",
+  "Phantom",
+  "Projections",
+  "Plot",
+  "Clipping",
+};
+
+const int Trace::s_iTraceCount = sizeof(s_aszTraceName) / sizeof(const char*);
+
+
+const char*
+Trace::convertTraceIDToName (const int idTrace)
+{
+  const char *name = "";
+
+  if (idTrace >= 0 && idTrace < s_iTraceCount)
+      return (s_aszTraceName[idTrace]);
+
+  return (name);
+}
+
+const char*
+Trace::convertTraceIDToTitle (const int idTrace)
+{
+  const char *title = "";
+
+  if (idTrace >= 0 && idTrace < s_iTraceCount)
+      return (s_aszTraceName[idTrace]);
+
+  return (title);
+}
+
+int
+Trace::convertTraceNameToID (const char* const traceName)
+{
+  int id = Trace::TRACE_INVALID;
+
+  for (int i = 0; i < s_iTraceCount; i++)
+      if (strcasecmp (traceName, s_aszTraceName[i]) == 0) {
+          id = i;
+          break;
+      }
+
+  return (id);
+}
+
diff --git a/libctsupport/Makefile b/libctsupport/Makefile
new file mode 100644
index 0000000..a61e3dc
--- /dev/null
+++ b/libctsupport/Makefile
@@ -0,0 +1,449 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# libctsupport/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = libctsupport
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libctsupport_a_AR = $(AR) $(ARFLAGS)
+libctsupport_a_LIBADD =
+am_libctsupport_a_OBJECTS = strfuncs.$(OBJEXT) syserror.$(OBJEXT) \
+	fnetorderstream.$(OBJEXT) consoleio.$(OBJEXT) \
+	mathfuncs.$(OBJEXT) xform.$(OBJEXT) clip.$(OBJEXT) \
+	plotfile.$(OBJEXT) hashtable.$(OBJEXT) interpolator.$(OBJEXT) \
+	globalvars.$(OBJEXT)
+libctsupport_a_OBJECTS = $(am_libctsupport_a_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(libctsupport_a_SOURCES)
+DIST_SOURCES = $(libctsupport_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+noinst_LIBRARIES = libctsupport.a
+INCLUDES =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+libctsupport_a_SOURCES = strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp plotfile.cpp hashtable.cpp interpolator.cpp globalvars.cpp
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  libctsupport/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  libctsupport/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libctsupport.a: $(libctsupport_a_OBJECTS) $(libctsupport_a_DEPENDENCIES) 
+	-rm -f libctsupport.a
+	$(libctsupport_a_AR) libctsupport.a $(libctsupport_a_OBJECTS) $(libctsupport_a_LIBADD)
+	$(RANLIB) libctsupport.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/clip.Po
+include ./$(DEPDIR)/consoleio.Po
+include ./$(DEPDIR)/fnetorderstream.Po
+include ./$(DEPDIR)/globalvars.Po
+include ./$(DEPDIR)/hashtable.Po
+include ./$(DEPDIR)/interpolator.Po
+include ./$(DEPDIR)/mathfuncs.Po
+include ./$(DEPDIR)/plotfile.Po
+include ./$(DEPDIR)/strfuncs.Po
+include ./$(DEPDIR)/syserror.Po
+include ./$(DEPDIR)/xform.Po
+
+.cpp.o:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libctsupport/Makefile.am b/libctsupport/Makefile.am
new file mode 100644
index 0000000..6ea6620
--- /dev/null
+++ b/libctsupport/Makefile.am
@@ -0,0 +1,7 @@
+noinst_LIBRARIES = libctsupport.a
+INCLUDES=@my_includes@
+libctsupport_a_SOURCES= strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp plotfile.cpp hashtable.cpp interpolator.cpp globalvars.cpp
+EXTRA_DIST=Makefile.nt
+
+
+
diff --git a/libctsupport/Makefile.in b/libctsupport/Makefile.in
new file mode 100644
index 0000000..151b20d
--- /dev/null
+++ b/libctsupport/Makefile.in
@@ -0,0 +1,471 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = libctsupport
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+AR = ar
+ARFLAGS = cru
+libctsupport_a_AR = $(AR) $(ARFLAGS)
+libctsupport_a_LIBADD =
+am_libctsupport_a_OBJECTS = strfuncs.$(OBJEXT) syserror.$(OBJEXT) \
+	fnetorderstream.$(OBJEXT) consoleio.$(OBJEXT) \
+	mathfuncs.$(OBJEXT) xform.$(OBJEXT) clip.$(OBJEXT) \
+	plotfile.$(OBJEXT) hashtable.$(OBJEXT) interpolator.$(OBJEXT) \
+	globalvars.$(OBJEXT)
+libctsupport_a_OBJECTS = $(am_libctsupport_a_OBJECTS)
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(libctsupport_a_SOURCES)
+DIST_SOURCES = $(libctsupport_a_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+noinst_LIBRARIES = libctsupport.a
+INCLUDES = @my_includes@
+libctsupport_a_SOURCES = strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp plotfile.cpp hashtable.cpp interpolator.cpp globalvars.cpp
+EXTRA_DIST = Makefile.nt
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libctsupport/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu libctsupport/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+clean-noinstLIBRARIES:
+	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+libctsupport.a: $(libctsupport_a_OBJECTS) $(libctsupport_a_DEPENDENCIES) 
+	-rm -f libctsupport.a
+	$(libctsupport_a_AR) libctsupport.a $(libctsupport_a_OBJECTS) $(libctsupport_a_LIBADD)
+	$(RANLIB) libctsupport.a
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/clip.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/consoleio.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fnetorderstream.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/globalvars.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hashtable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/interpolator.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mathfuncs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/plotfile.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/strfuncs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/syserror.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/xform.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+	clean-noinstLIBRARIES ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libctsupport/Makefile.nt b/libctsupport/Makefile.nt
new file mode 100644
index 0000000..f85864e
--- /dev/null
+++ b/libctsupport/Makefile.nt
@@ -0,0 +1,32 @@
+# Makefile for libk
+
+!include <ntwin32.mak>
+
+CC=cl
+LD=link
+CFLAGS=-O -nologo -I..\include -DENDIAN_HIGH=0 -DENDIAN_LOW=1
+LDFLAGS=
+O=.obj
+
+# variables
+OBJ1 = kbasename$(O) allocnum$(O) fexist$(O) iclip$(O) sysalloc$(O) syserror$(O) sysfopen$(O) sysfree$(O) s_head$(O) s_lower$(O) s_rmtail$(O) s_save$(O) timedate$(O) netorder$(O)
+
+all:  libk.lib
+
+.obj: .c
+	$(CC) -c $(cvarsdll) $(CFLAGS) $*.c
+
+
+libk.lib: $(OBJ1)
+        echo something to del > libk.lib
+        del libk.lib
+        lib /out:libk.lib $(OBJ1)
+
+
+clean:
+        echo dummy > a.obj
+        echo dummy > a.exe
+        echo dummy > a.lib
+	del *.obj
+	del *.exe
+	del *.lib
diff --git a/libctsupport/clip.cpp b/libctsupport/clip.cpp
new file mode 100644
index 0000000..646241e
--- /dev/null
+++ b/libctsupport/clip.cpp
@@ -0,0 +1,395 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:         clip.c
+**   Purpose:      Line clipping routines
+**   Programmer:   Kevin Rosenberg
+**   Date Started: 1984
+**
+** OVERVIEW
+**      Routines to clip lines against objects
+**      All routines get the endpoints of the line, and
+**      the SNARK size of the object (u,v)
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ctsupport.h"
+
+
+/* NAME
+ *    clip_segment              Clip against a segment of a circle
+ *
+ * SYNOPSIS
+ *    clip_segment (x1, y1, x2, y2, u, v)
+ *    double& x1,*y1,*x2,*y2    Endpoints of line
+ *    double u,v                Dimensions of segment
+ */
+
+bool
+clip_segment (double& x1, double& y1, double& x2, double& y2, const double u, const double v)
+{
+  double xc1 = x1 * u;
+  double yc1 = y1 * v;
+  double xc2 = x2 * u;
+  double yc2 = y2 * v;
+
+  if (yc1 > 0. && yc2 > 0.)     // reject lines above y-axis
+    return false;
+
+  double radius = sqrt (u * u + v * v);
+
+  if (clip_circle (xc1, yc1, xc2, yc2, 0.0, v, radius, 0.0, 0.0) == false)
+    return false;
+
+  if (yc1 > 0. && yc2 > 0.)     // trivial reject above y-axis
+    return false;
+
+  // clip above x-axis
+  if (yc1 > 0.) {
+    xc1 = xc1 + (xc2-xc1)*(0.0-yc1)/(yc2-yc1);
+    yc1 = 0.0;
+  } else if (yc2 > 0.) {
+    xc2 = xc1 + (xc2-xc1)*(0.0-yc1)/(yc2-yc1);
+    yc2 = 0.0;
+  }
+
+  x1 = xc1 / u;
+  y1 = yc1 / v;
+  x2 = xc2 / u;
+  y2 = yc2 / v;
+
+  return true;
+}
+
+
+/* NAME
+ *    clip_sector               Clip a line against a sector of a circle
+ *
+ * SYNOPSIS
+ *    clip_sector (x1, y1, x2, y2, u, v)
+ *    double& x1,*y1,*x2,*y2    Endpoints of line
+ *    double u,v                Size of sector
+ */
+
+bool
+clip_sector (double& x1, double& y1, double& x2, double& y2, const double u, const double v)
+{
+  double xc1 = x1 * u;
+  double yc1 = y1 * v;
+  double xc2 = x2 * u;
+  double yc2 = y2 * v;
+
+  double radius = sqrt (u * u + v * v);
+
+  if (clip_circle (xc1, yc1, xc2, yc2, 0.0, v, radius, 0.0, 0.0) == false)
+    return false;
+
+  if (clip_triangle (xc1, yc1, xc2, yc2, u, v, false) == false)
+    return false;
+
+  x1 = xc1 / u;
+  y1 = yc1 / v;
+  x2 = xc2 / u;
+  y2 = yc2 / v;
+
+  return true;
+}
+
+
+/* NAME
+ *    clip_circle               Clip a line against a circle
+ *
+ * SYNOPSIS
+ *    clip_circle (x1,y1,x2,y2,cx,cy,radius,t1,t2)
+ *    double& x1,*y1,*x2,*y2    Endpoints of line to be clipped
+ *    double cx,cy              Center of circle
+ *    double radius             Radius of circle
+ *    double t1,t2              Starting & stopping angles of clipping
+ */
+
+bool
+clip_circle (double& x1, double& y1, double& x2, double& y2, const double cx, const double cy, const double radius, double t1, double t2)
+{
+  double xc1 = x1;
+  double yc1 = y1;
+  double xc2 = x2;
+  double yc2 = y2;
+  double ccx = cx;
+  double ccy = cy;
+
+  double xtrans = -xc1;                 // move (x1,y1) to origin
+  double ytrans = -yc1;
+
+  xc1 += xtrans;
+  yc1 += ytrans;
+  xc2 += xtrans;
+  yc2 += ytrans;
+  ccx += xtrans;
+  ccy += ytrans;
+
+  double theta = -atan2 (yc2, xc2);     // rotate line to lie on x-axis
+  GRFMTX_2D rotmtx;
+  rot_mtx2 (rotmtx, theta);     // xc1,yc1 is at origin, no need to rot
+  xform_mtx2 (rotmtx, xc2, yc2);
+  xform_mtx2 (rotmtx, ccx, ccy);
+  t1 += theta;                  // rotate start and stop angles
+  t2 += theta;
+  t1 = normalizeAngle (t1);
+  t2 = normalizeAngle (t2);
+
+  if (xc2 < -D_EPSILON || fabs(yc2) > F_EPSILON) {
+    sys_error (ERR_SEVERE, "Internal error in clip_circle\n x1=%6.2f, y1=%6.2f, x2=%6.2f, y2=%6.2f, xc2=%6.2f, yc2=%6.2f, theta=%6.2f", x1, y1, x2, y2, xc2, yc2, theta);
+    return false;
+  }
+
+  if (fabs(ccy) > radius)               /* check if can reject */
+    return false;
+
+  double temp = sqrt (radius * radius - ccy * ccy);
+  double xcmin = ccx - temp;
+  double xcmax = ccx + temp;
+
+  if (fabs(t2 - t1) < D_EPSILON) {
+    if (xc1 < xcmin)
+      xc1 = xcmin;
+    if (xc2 > xcmax)
+      xc2 = xcmax;
+  } else if (t1 < t2) {
+    if (t1 < PI && t2 > PI)
+      if (xc1 < xcmin)
+        xc1 = xcmin;
+  } else if (t1 > t2) {
+    if (t1 < PI)
+      if (xc1 < xcmin)
+        xc1 = xcmin;
+    if (xc2 > xcmax)
+      xc2 = xcmax;
+  }
+
+  rot_mtx2 (rotmtx, -theta);
+  xform_mtx2 (rotmtx, xc1, yc1);
+  xform_mtx2 (rotmtx, xc2, yc2);
+  xc1 += -xtrans;
+  yc1 += -ytrans;
+  xc2 += -xtrans;
+  yc2 += -ytrans;
+
+  x1 = xc1;
+  y1 = yc1;
+  x2 = xc2;
+  y2 = yc2;
+
+  return true;
+}
+
+
+/* NAME
+ *    clip_triangle             Clip a line against a triangle
+ *
+ * SYNOPSIS
+ *    clip_triangle (x1, y1, x2, y2, u, v, clip_xaxis)
+ *    double& x1, *y1, *x2, *y2 Endpoints of line
+ *    double u, v               Size of 1/2 base len & height
+ *    int clip_xaxis            Boolean flag whether to clip against x axis
+ *                              (Use true for all triangles)
+ *                              (false if used internally by sector clipping routine)
+ *
+ * DESCRIPTION
+ *              x
+ *             /|\              Note that vertices of triangle are
+ *            / | \                 (-u, 0)
+ *           /  |  \                (u, 0)
+ *          /   |   \               (0, v)
+ *         /    | v  \
+ *        /     |     \
+ *       +------+------+
+ *            (0,0)  u
+ *
+ * NOTES
+ *   1) Inside of this routine, values of (u,v) are assumed to be (1,1)
+ *
+ *   2) Derivation of clipping equations:
+ *      Using parametric equations for the line
+ *          xv = x1 + t * (x2 - x1)
+ *          yv = y1 + t * (y2 - y1)
+ *      so,
+ *          t  = (xv - x1) / (x2 - x1)
+ *          yv = y1 + (xv - x1) * (y2 - y1) / (x2 - x1)
+ *          yv = y1 + (xv - x1) * dy / dx
+ *
+ *      Now, find the intersections with the following clipping boundries:
+ *          yv = v - (v/u) * xv         (yv = mx + b)
+ *          yv = v + (v/u) * xv         (m = v/u, b = v);
+ */
+
+static int tcode (const double x, const double y, const double m, const double b, const int clip_xaxis);
+
+bool
+clip_triangle (double& x1, double& y1, double& x2, double& y2, const double u, const double v, const int clip_xaxis)
+{
+  double m = v / u;      // slope of triangle lines
+  double b = v;          // y-intercept of triangle lines
+
+  int c1 = tcode (x1, y1, m, b, clip_xaxis);
+  int c2 = tcode (x2, y2, m, b, clip_xaxis);
+
+#if 0
+  printf ("x1:%6.2f  y1:%6.2f  code1:%2d  x2:%6.2f  y2:%6.2f code2:%2d\n", x1, y1, c1, x2, y2, c2);
+#endif
+  while ( c1 || c2 ) {
+    if ( c1 & c2 ) {
+      return false;                     // trivial reject
+    }
+    int c = c1;
+    if (c1 == 0)
+      c = c2;
+
+    double x = 0, y = 0;
+    if (c & 1) {                        // below
+      x = x1 + (x2-x1)*(0.0-y1)/(y2-y1);
+      y = 0.0;
+    } else if (c & 2) {                 // right
+      double dx, dy;
+      dx = x2 - x1;
+      dy = y2 - y1;
+      if (fabs(dx) > D_EPSILON)
+        x = (-y1 + b + x1 * dy/dx) / (m + dy/dx);
+      else
+        x = x1;
+      y = -m * x + b;
+    } else if (c & 4) {                 /* left */
+      double dx, dy;
+      dx = x2 - x1;
+      dy = y2 - y1;
+      if (fabs(dx) > D_EPSILON) {
+        x = (y1 - b - x1 * dy/dx);
+        x /= (m - dy/dx);
+      } else
+        x = x1;
+      y = m * x + b;
+    }
+
+    if (c == c1) {
+      x1=x; y1=y; c1=tcode (x1,y1,m,b,clip_xaxis);
+    } else {
+      x2=x; y2=y; c2=tcode (x2,y2,m,b,clip_xaxis);
+    }
+#if 0
+    printf ("x1:%6.2f  y1:%6.2f  code1:%2d  x2:%6.2f  y2:%6.2f code2:%2d\n", x1, y1, c1, x2, y2, c2);
+#endif
+  }
+
+  return true;          /* we have clipped the line, and it is good */
+}
+
+
+/* compute region code */
+static int
+tcode (const double x, const double y, const double m, const double b, const int clip_xaxis)
+{
+  int c = 0;
+
+  if (clip_xaxis && y < 0.)     // below triange
+    c = 1;
+
+  if (y > -m * x + b + D_EPSILON)               // right of triangle
+    c += 2;
+  if (y > m * x + b + D_EPSILON)                // left of triangle
+    c += 4;
+
+  return (c);
+}
+
+
+/* NAME
+ *    clip_rect                 Clip a line against a rectangle
+ *
+ * SYNOPSIS
+ *    clip_rect (x1, y1, x2, y2, rect)
+ *    double& x1, *y1, *x2, *y2 Endpoints of line
+ *    double rect[4]            Rectangle to clip against
+ *                              ordered xmin, ymin, xmax, ymax
+ */
+
+static int rectcode (double x, double y, const double rect[4]);
+
+bool
+clip_rect (double& x1, double& y1, double& x2, double& y2, const double rect[4])
+{
+  double x = 0, y = 0;
+
+  int c1 = rectcode (x1, y1, rect);
+  int c2 = rectcode (x2, y2, rect);
+
+  while (c1 || c2) {
+    if (c1 & c2)
+      return false;                     // trivial reject
+    int c = c1;
+    if (c1 == 0)
+      c = c2;
+    if (c & 1) {                        // left
+      y = y1 + (y2-y1)*(rect[0]-x1)/(x2-x1);
+      x = rect[0];
+    } else if (c & 2) {                 // right
+      y = y1 + (y2-y1)*(rect[2]-x1)/(x2-x1);
+      x = rect[2];
+    } else if (c & 4) {                 // bottom
+      x = x1 + (x2-x1)*(rect[1]-y1)/(y2-y1);
+      y = rect[1];
+    } else if (c & 8) {                 // top
+      x = x1 + (x2-x1)*(rect[3]-y1)/(y2-y1);
+      y = rect[3];
+    }
+
+    if (c == c1) {
+      x1=x; y1=y; c1=rectcode(x1,y1,rect);
+    } else {
+      x2=x; y2=y; c2=rectcode(x2,y2,rect);
+    }
+  }
+  return true;          // we have clipped the line, and it is good
+}
+
+
+/* NAME
+ *   rectcode                   INTERNAL routine to return position of
+ *                              point relative to a rectangle
+ *
+ * SYNOPSIS
+ *    c = rectcode (x, y, rect)
+ *    int c                     Position of point relative to the window
+ *    double x, y               Point to test against window
+ *    double rect[4]            Coordinates of rectangle extent
+ *                              Ordered [xmin, ymin, xmax, ymax]
+ */
+
+static int
+rectcode (double x, double y, const double rect[4])
+{
+  int c = 0;
+
+  if (x < rect[0])
+    c = 1;
+  else if (x > rect[2])
+    c = 2;
+  if (y < rect[1])
+    c += 4;
+  else if (y > rect[3])
+    c += 8;
+  return (c);
+}
diff --git a/libctsupport/consoleio.cpp b/libctsupport/consoleio.cpp
new file mode 100644
index 0000000..c78d66f
--- /dev/null
+++ b/libctsupport/consoleio.cpp
@@ -0,0 +1,177 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <stdio.h>
+#include <string.h>
+#include "ctsupport.h"
+
+
+/* NAME
+ *   cio_put_c                          Put a character on screen
+ *
+ * SYNOPSIS
+ *   cio_put_c (c)
+ *   char c                             Character to write
+ *
+ * NOTES
+ *   Color of character is determined by the global variable, crtv.text_attr.
+ *
+ * SIDE EFFECTS
+ *   Cursor is advanced by one.  If necessary, the cursor will wrap around
+ *   and maybe the screen will scroll
+ */
+
+void
+cio_put_c (int c)
+{
+    fputc(c, stdout);
+}
+
+
+
+/* NAME
+ *    cio_put_cc                        Put a char on screen count times
+ *
+ * SYNOPSIS
+ *    cio_put_cc (c, count)
+ *    char c                            Character to write
+ *    int count                         Number of characters to write
+ */
+
+void
+cio_put_cc (int c, int count)
+{
+    for (int i = 0; i < count; i++)
+        cio_put_c (c);
+}
+
+
+void
+cio_put_str (const char *str)
+{
+    fputs (str, stdout);
+}
+
+
+
+/* NAME
+ *   kb_getc                    Get a character from the keyboard
+ *
+ * SYNOPSIS
+ *   key = kb_getc()
+ *
+ * DESCRIPTION
+ *      1. This routine returns an EXTENTED ASCII code,
+ *         the extended codes have a low byte of 0 and a distinctive
+ *         high byte, such as 0x2D00 and 0x3200
+ *      2. This routine waits until a key has been typed
+ *      2. The keystroke will not be echoed.
+ */
+
+unsigned int cio_kb_getc(void)
+{
+    return fgetc(stdin);
+}
+
+void
+cio_kb_ungetc (unsigned int c)
+{
+    ungetc(c, stdin);
+}
+
+/* NAME
+ *    kb_gets                           Get a string from the keyboard
+ *
+ * SYNOPSIS
+ *    str = kb_gets (str, maxlen)
+ *    char *str                         Space to store input string
+ *    int maxlen                        Maximum number of characters to read
+ *                                      (Not including EOS)
+ * NOTES
+ *    Backspace - erases character to the right
+ *    Escape    - erases to beginning of line
+ *    Return    - ends string (no not cause a linefeed)
+ */
+
+char *
+cio_kb_gets (char *str, int maxlen)
+{
+    return fgets(str, maxlen, stdin);
+}
+
+/* NAME
+ *   kb_waitc                   Wait for a character from the keyboard
+ *
+ * SYNOPSIS
+ *   key = kb_waitc (astr, estr, beep)
+ *   int key                    Keystroke entered
+ *   char *astr                 String of valid ascii characters
+ *   bool beep                  If TRUE, beep when user hits invalid key
+ *
+ */
+
+
+unsigned int
+cio_kb_waitc (const char *astr, int beep_on_error)
+{
+  unsigned int c;
+  do {
+    c = cio_kb_getc ();
+    if (strchr (astr, c) != NULL)
+        break;
+    if (beep_on_error)
+      cio_beep();
+  } while (1);
+
+  return (c);
+}
+
+
+/* NAME
+ *    beep                              sound a beep to user
+ *
+ * SYNOPSIS
+ *    beep()
+ */
+
+void cio_beep (void)
+{
+        cio_tone (2000.0, 0.3);
+}
+
+/* NAME
+ *    tone              play a frequency sound for some duration
+ *
+ * SYNOPSIS
+ *    tone (freq, length)
+ *    double freq       frequency to play in Hertz
+ *    double length     duration to play note in seconds
+ */
+
+void
+cio_tone (double freq, double length)
+{
+#if 1
+  fprintf(stdout, "\007");
+#else
+  cio_spkr_freq (freq);         /* Set frequency of tone */
+  cio_spkr_on ();                       /* Turn on speaker */
+  pause (length);                       /* Pause for length seconds */
+  cio_spkr_off ();                      /* Turn off speaker */
+#endif
+}
diff --git a/libctsupport/fnetorderstream.cpp b/libctsupport/fnetorderstream.cpp
new file mode 100644
index 0000000..2a71919
--- /dev/null
+++ b/libctsupport/fnetorderstream.cpp
@@ -0,0 +1,198 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include "ctsupport.h"
+#include "fnetorderstream.h"
+
+
+void
+ConvertNetworkOrder (void* buffer, size_t bytes)
+{
+#ifndef WORDS_BIGENDIAN
+    if (bytes < 2)
+        return;
+
+    char* start = static_cast<char*>(buffer);
+    char* end = start + bytes - 1;   // last byte
+    size_t nSwap = bytes / 2;
+
+    while (nSwap-- > 0) {
+        unsigned char c = *start;
+        *start++ = *end;
+        *end-- = c;
+    }
+#endif
+}
+
+void
+ConvertReverseNetworkOrder (void* buffer, size_t bytes)
+{
+#ifdef WORDS_BIGENDIAN
+    if (bytes < 2)
+        return;
+
+    char* start = static_cast<char*>(buffer);
+    char* end = start + bytes - 1;  // last byte
+    size_t nSwap = bytes / 2;
+
+    while (nSwap-- > 0) {
+        unsigned char c = *start;
+        *start++ = *end;
+        *end-- = c;
+    }
+#endif
+}
+
+void
+fnetorderstream::writeInt16 (kuint16 n) {
+#ifndef WORDS_BIGENDIAN
+  SwapBytes2 (&n);
+#endif
+  write (reinterpret_cast<const char*>(&n), 2);
+}
+
+void
+fnetorderstream::writeInt32 (kuint32 n) {
+#ifndef WORDS_BIGENDIAN
+  SwapBytes4(&n);
+#endif
+  write (reinterpret_cast<const char*>(&n), 4);
+}
+
+void
+fnetorderstream::writeFloat32 (kfloat32 n) {
+#ifndef WORDS_BIGENDIAN
+  SwapBytes4 (&n);
+#endif
+  write (reinterpret_cast<const char*>(&n), 4);
+}
+
+void
+fnetorderstream::writeFloat64 (kfloat64 n) {
+#ifndef WORDS_BIGENDIAN
+  SwapBytes8 (&n);
+#endif
+  write (reinterpret_cast<const char*>(&n), 8);
+}
+
+void
+fnetorderstream::readInt16 (kuint16& n) {
+  read (reinterpret_cast<char*>(&n), 2);
+#ifndef WORDS_BIGENDIAN
+  SwapBytes2 (&n);
+#endif
+}
+
+void
+fnetorderstream::readInt32 (kuint32& n) {
+  read (reinterpret_cast<char*>(&n), 4);
+#ifndef WORDS_BIGENDIAN
+  SwapBytes4 (&n);
+#endif
+}
+
+void
+fnetorderstream::readFloat32 (kfloat32& n) {
+  read (reinterpret_cast<char*>(&n), 4);
+#ifndef WORDS_BIGENDIAN
+  SwapBytes4 (&n);
+#endif
+}
+
+void
+fnetorderstream::readFloat64 (kfloat64& n) {
+  read (reinterpret_cast<char*>(&n), 8);
+#ifndef WORDS_BIGENDIAN
+  SwapBytes8 (&n);
+#endif
+}
+
+
+
+void
+frnetorderstream::writeInt16 (kuint16 n) {
+#ifdef WORDS_BIGENDIAN
+  SwapBytes2 (&n);
+#endif
+  write (reinterpret_cast<char*>(&n), 2);
+}
+
+void
+frnetorderstream::writeInt32 (kuint32 n) {
+#ifdef WORDS_BIGENDIAN
+  SwapBytes4(&n);
+#endif
+  write (reinterpret_cast<char*>(&n), 4);
+}
+
+void
+frnetorderstream::writeFloat32 (kfloat32 n) {
+#ifdef WORDS_BIGENDIAN
+  SwapBytes4 (&n);
+#endif
+  write (reinterpret_cast<char*>(&n), 4);
+}
+
+void
+frnetorderstream::writeFloat64 (kfloat64 n) {
+#ifdef WORDS_BIGENDIAN
+  SwapBytes8 (&n);
+#endif
+  write (reinterpret_cast<char*>(&n), 8);
+}
+
+void
+frnetorderstream::readInt16 (kuint16& n) {
+  read (reinterpret_cast<char*>(&n), 2);
+#ifdef WORDS_BIGENDIAN
+  SwapBytes2 (&n);
+#endif
+}
+
+void
+frnetorderstream::readInt32 (kuint32& n) {
+  read (reinterpret_cast<char*>(&n), 4);
+#ifdef WORDS_BIGENDIAN
+  SwapBytes4 (&n);
+#endif
+}
+
+void
+frnetorderstream::readFloat32 (kfloat32& n) {
+  read (reinterpret_cast<char*>(&n), 4);
+#ifdef WORDS_BIGENDIAN
+  SwapBytes4 (&n);
+#endif
+}
+
+void
+frnetorderstream::readFloat64 (kfloat64& n) {
+  read (reinterpret_cast<char*>(&n), 8);
+#ifdef WORDS_BIGENDIAN
+  SwapBytes8 (&n);
+#endif
+}
+
diff --git a/libctsupport/globalvars.cpp b/libctsupport/globalvars.cpp
new file mode 100644
index 0000000..71d97a3
--- /dev/null
+++ b/libctsupport/globalvars.cpp
@@ -0,0 +1,36 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         globalvars.cpp
+**      Purpose:      Global variables
+**      Programmer:   Kevin Rosenberg
+**      Date Started: Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+#ifdef HAVE_WXWINDOWS
+
+#include "../src/ctsim.h"
+
+bool g_bRunningWXWindows = false;
+CTSimApp* theApp = NULL;
+
+#endif
+
diff --git a/libctsupport/hashtable.cpp b/libctsupport/hashtable.cpp
new file mode 100644
index 0000000..1cd51cf
--- /dev/null
+++ b/libctsupport/hashtable.cpp
@@ -0,0 +1,139 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Hash Table Class
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include <math.h>
+#include <stdio.h>
+#include <ctype.h>
+#include "ctsupport.h"
+#include "pol.h"
+
+
+KeywordCodeEntry::KeywordCodeEntry (const char* const pszKeyword, int iCode)
+    : m_iCode (iCode), m_pNext(NULL)
+{
+   int nLength = strlen (pszKeyword);
+   char* pszCopy = new char [ nLength + 1];
+   for (int i = 0; i < nLength; i++)
+     pszCopy[i] = tolower (pszKeyword[i]);
+   pszCopy[nLength] = 0;
+
+   m_strKeyword = pszCopy;
+
+   delete pszCopy;
+}
+
+
+bool
+KeywordCodeEntry::matchesKeyword (const char* const pszCompare) const
+{
+    int nLength = strlen (pszCompare);
+    char* pszCopy = new char [ nLength + 1];
+    for (int i = 0; i < nLength; i++)
+      pszCopy[i] = tolower (pszCompare[i]);
+    pszCopy[nLength] = 0;
+
+    bool bMatch = false;
+    if (m_strKeyword.compare (pszCompare) == 0)
+      bMatch = true;
+
+    delete pszCopy;
+
+    return bMatch;
+}
+
+
+// inittable (table)
+//    clear symbol table
+
+void
+KeywordCodeHashTable::initTable ()
+{
+        int i;
+
+        for (i = 0; i < HASHSIZE; i++)
+            m_hashTable[i] = NULL;
+}
+
+// freetable (table)
+//      free all memory allocated to table, then clear table
+
+void
+KeywordCodeHashTable::freeTable ()
+{
+        int i;
+        KeywordCodeEntry *p, *np;
+
+        for (i = 0; i < HASHSIZE; i++) {
+            np = m_hashTable [i];
+            while (np != NULL) {
+                    p = np->getNext();
+                    delete np;
+                    np = p;
+      }
+        }
+        initTable ();
+}
+
+
+// form hash value of string s
+int
+KeywordCodeHashTable::hash (const char* s)
+{
+        int hashval = 0;
+
+  while (*s != EOS) {
+            hashval += tolower(*s);
+      s++;
+  }
+
+        return (hashval % HASHSIZE);
+}
+
+
+/* Look for s in hash table */
+KeywordCodeEntry *
+KeywordCodeHashTable::lookup (const char* const pszLookup)
+{
+    KeywordCodeEntry *found = NULL;
+    for (KeywordCodeEntry* np = m_hashTable[ hash( pszLookup ) ]; np != NULL; np = np->getNext())
+            if (np->matchesKeyword (pszLookup)) {
+              found = np;               // found it
+              break;
+        }
+
+  return (found);
+}
+
+void
+KeywordCodeHashTable::installKeywordCode (const char* const pszKeyword, int iCode)
+{
+    KeywordCodeEntry *np = lookup (pszKeyword);
+
+    if (np == NULL) {       // not found
+            np = new KeywordCodeEntry (pszKeyword, iCode);
+            int hashval = hash (np->getKeyword());
+        np->setNext (m_hashTable[ hashval ]);
+            m_hashTable[hashval] = np;
+    } else                                      // already defined
+            np->setCode (iCode);
+}
diff --git a/libctsupport/interpolator.cpp b/libctsupport/interpolator.cpp
new file mode 100644
index 0000000..a9d7c7b
--- /dev/null
+++ b/libctsupport/interpolator.cpp
@@ -0,0 +1,137 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#include "ctsupport.h"
+#include "interpolator.h"
+
+
+CubicPolyInterpolator::CubicPolyInterpolator (const double* const y, const int n)
+  : m_pdY(y), m_n(n)
+{
+  if (m_n < 2)
+    sys_error (ERR_SEVERE, "Too few points (%d) in CubicPolyInterpolator", m_n);
+}
+
+CubicPolyInterpolator::~CubicPolyInterpolator ()
+{
+}
+
+
+double
+CubicPolyInterpolator::interpolate (double x)
+{
+  int lo = static_cast<int>(floor(x)) - 1;
+  int hi = lo + 3;
+
+  if (lo < -1) {
+#ifdef DEBUG
+    sys_error (ERR_WARNING, "x=%f, out of range [CubicPolyInterpolator]", x);
+#endif
+    return (0);
+  } else if (lo == -1)  // linear interpolate at between x = 0 & 1
+    return m_pdY[0] + x * (m_pdY[1] - m_pdY[0]);
+
+  if (hi > m_n) {
+#ifdef DEBUG
+    sys_error (ERR_WARNING, "x=%f, out of range [CubicPolyInterpolator]", x);
+#endif
+    return (0);
+  } else if (hi == m_n) {// linear interpolate between x = (n-2) and (n-1)
+    double frac = x - (lo + 1);
+    return m_pdY[m_n - 2] + frac * (m_pdY[m_n - 1] - m_pdY[m_n - 2]);
+  }
+
+  // Lagrange formula for N=4 (cubic)
+
+  double xd_0 = x - lo;
+  double xd_1 = x - (lo + 1);
+  double xd_2 = x - (lo + 2);
+  double xd_3 = x - (lo + 3);
+
+  static double oneSixth = (1. / 6.);
+
+  double y = xd_1 * xd_2 * xd_3 * -oneSixth * m_pdY[lo];
+  y += xd_0 * xd_2 * xd_3 * 0.5 * m_pdY[lo+1];
+  y += xd_0 * xd_1 * xd_3 * -0.5 * m_pdY[lo+2];
+  y += xd_0 * xd_1 * xd_2 * oneSixth * m_pdY[lo+3];
+
+  return (y);
+}
+
+
+
+CubicSplineInterpolator::CubicSplineInterpolator (const double* const y, const int n)
+  : m_pdY(y), m_n(n)
+{
+  // Precalculate 2nd derivative of y and put in m_pdY2
+  // Calculated by solving set of simultaneous CubicSpline spline equations
+  // Only n-2 CubicSpline spline equations, but able to make two more
+  // equations by setting second derivative to 0 at ends
+
+  m_pdY2 = new double [n];
+  m_pdY2[0] = 0;   // second deriviative = 0 at beginning and end
+  m_pdY2[n-1] = 0;
+
+  double* temp = new double [n - 1];
+  temp[0] = 0;
+  int i;
+  for (i = 1; i < n - 1; i++) {
+    double t = 2 + (0.5 * m_pdY2[i-1]);
+    temp[i] = y[i+1] + y[i-1] - y[i] - y[i];
+    temp[i] = (3 * temp[i] - 0.5 * temp[i-1]) / t;
+    m_pdY2[i] = -0.5 / t;
+  }
+
+  for (i = n - 2; i >= 0; i--)
+    m_pdY2[i] = temp[i] + m_pdY2[i] * m_pdY2[i + 1];
+
+  delete temp;
+}
+
+CubicSplineInterpolator::~CubicSplineInterpolator ()
+{
+  delete m_pdY2;
+}
+
+
+double
+CubicSplineInterpolator::interpolate (double x)
+{
+  const static double oneSixth = (1. / 6.);
+  int lo = static_cast<int>(floor(x));
+  int hi = lo + 1;
+
+  if (lo < 0 || hi >= m_n) {
+#ifdef DEBUG
+    sys_error (ERR_SEVERE, "x out of bounds [CubicSplineInterpolator::interpolate]");
+#endif
+    return (0);
+  }
+
+  double loFr = hi - x;
+  double hiFr = 1 - loFr;
+  double y = loFr * m_pdY[lo] + hiFr * m_pdY[hi];
+  y += oneSixth * ((loFr*loFr*loFr - loFr) * m_pdY2[lo] + (hiFr*hiFr*hiFr - hiFr) * m_pdY2[hi]);
+
+  return y;
+}
+
+
+
+
diff --git a/libctsupport/mathfuncs.cpp b/libctsupport/mathfuncs.cpp
new file mode 100644
index 0000000..443d969
--- /dev/null
+++ b/libctsupport/mathfuncs.cpp
@@ -0,0 +1,137 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ctsupport.h"
+
+
+/* NAME
+*    integrateSimpson         Integrate array of data by Simpson's rule
+*
+* SYNOPSIS
+*    double integrateSimpson (xmin, xmax, y, np)
+*    double xmin, xmax          Extent of integration
+*    double y[]         Function values to be integrated
+*    int np                     number of data points
+*                               (must be an odd number and at least 3)
+*
+* RETURNS
+*    integrand of function
+*/
+
+double
+integrateSimpson (const double xmin, const double xmax, const double *y, const int np)
+{
+  if (np < 2)
+    return (0.);
+  else if (np == 2)
+    return ((xmax - xmin) * (y[0] + y[1]) / 2);
+
+  double area = 0;
+  int nDiv = (np - 1) / 2;  // number of divisions
+  double width = (xmax - xmin) / (double) (np - 1);     // width of cells
+
+  for (int i = 1; i <= nDiv; i++) {
+    int xr = 2 * i;
+    int xl = xr - 2;       // 2 * (i - 1) == 2 * i - 2 == xr - 2
+    int xm = xr - 1;       // (xl+xr)/2 == (xr+xr-2)/2 == (2*xr-2)/2 = xr-1
+
+    area += (width / 3.0) * (y[xl] + 4.0 * y[xm] + y[xr]);
+  }
+
+  if ((np & 1) == 0)            /* do last trapazoid */
+    area += width * (y[np-2] + y[np-1]) / 2;
+
+  return (area);
+}
+
+
+/* NAME
+*    normalizeAngle       Normalize angle to 0 to 2 * PI range
+*
+* SYNOPSIS
+*    t = normalizeAngle (theta)
+*    double t          Normalized angle
+*    double theta     Input angle
+*/
+
+double
+normalizeAngle (double theta)
+{
+  while (theta < 0.)
+    theta += TWOPI;
+  while (theta >= TWOPI)
+    theta -= TWOPI;
+
+  return (theta);
+}
+
+
+void
+vectorNumericStatistics (std::vector<double> vec, const int nPoints, double& min, double& max, double& mean, double& mode, double& median, double& stddev)
+{
+  if (nPoints <= 0)
+    return;
+
+  mean = 0;
+  min = vec[0];
+  max = vec[0];
+  int i;
+  for (i = 0; i < nPoints; i++) {
+    double v = vec[i];
+    if (v > max)
+      max = v;
+    if (v < min)
+      min = v;
+    mean += v;
+  }
+  mean /= nPoints;
+
+  static const int nbin = 1024;
+  int hist[ nbin ] = {0};
+  double spread = max - min;
+  mode = 0;
+  stddev = 0;
+  for (i = 0; i < nPoints; i++) {
+    double v = vec[i];
+    int b = static_cast<int>((((v - min) / spread) * (nbin - 1)) + 0.5);
+    hist[b]++;
+    double diff = (v - mean);
+    stddev += diff * diff;
+  }
+  stddev = sqrt (stddev / nPoints);
+
+  int max_binindex = 0;
+  int max_bin = -1;
+  for (int ibin = 0; ibin < nbin; ibin++) {
+    if (hist[ibin] > max_bin) {
+      max_bin = hist[ibin];
+      max_binindex = ibin;
+    }
+  }
+
+  mode = (max_binindex * spread / (nbin - 1)) + min;
+
+  std::sort(vec.begin(), vec.end());
+
+  if (nPoints % 2)  // Odd
+    median = vec[((nPoints - 1) / 2)];
+  else        // Even
+    median = (vec[ (nPoints / 2) - 1 ] + vec[ nPoints / 2 ]) / 2;
+}
+
+
diff --git a/libctsupport/msvc.cpp b/libctsupport/msvc.cpp
new file mode 100644
index 0000000..fd6f319
--- /dev/null
+++ b/libctsupport/msvc.cpp
@@ -0,0 +1,26 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+// Work around bug in VC6
+//#ifdef MSVC
+//const  fpos_t std::_Fpz = 0;
+//#endif
+
+
diff --git a/libctsupport/plotfile.cpp b/libctsupport/plotfile.cpp
new file mode 100644
index 0000000..c25dab8
--- /dev/null
+++ b/libctsupport/plotfile.cpp
@@ -0,0 +1,393 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**      Name:         plotfile.cpp
+**      Purpose:      plotfile class
+**      Programmer:   Kevin Rosenberg
+**      Date Started: Dec 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include <ctime>
+
+
+///////////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//
+//     Name: PlotFile
+//     Purpose: Plot File storage
+///////////////////////////////////////////////////////////////////////////
+
+
+PlotFile::PlotFile (int nCurves, int nRecords)
+{
+  initHeaders ();
+  setCurveSize (nCurves, nRecords);
+}
+
+PlotFile::PlotFile ()
+{
+  initHeaders ();
+}
+
+PlotFile::~PlotFile ()
+{
+}
+
+void
+PlotFile::initHeaders ()
+{
+  m_iNumColumns = 0;
+  m_iNumRecords = 0;
+  time_t currentTime = time (NULL);
+  m_strDate = ctime (&currentTime);
+  m_vecStrDescriptions.clear();
+  m_vecStrEzsetCommands.clear();
+}
+
+void
+PlotFile::setCurveSize (int nCols, int nRecords, bool bScatterPlot)
+{
+  m_iNumColumns = nCols;
+  m_iNumRecords = nRecords;
+  m_bScatterPlot = bScatterPlot;
+  m_vecCurves.clear();
+  m_vecCurves.reserve (m_iNumColumns * m_iNumRecords);
+}
+
+// Storage format
+//   a Column's records are stored sequentially. It begins at iCol * m_iNumRecords
+bool
+PlotFile::addColumn (int iCol, const double* const pdColData)
+{
+  if (iCol < 0 || iCol >= m_iNumColumns) {
+    sys_error (ERR_SEVERE, "Illegal column number %d [PlotFile::addColumn]", iCol);
+    return (false);
+  }
+
+  for (int iRec = 0; iRec < m_iNumRecords; iRec++) {
+    m_vecCurves[ iRec + (iCol * m_iNumRecords) ] = pdColData [iRec];
+#if 0
+    sys_error (ERR_TRACE, "Storing m_vecCurves[%d] = %f",
+               iRec + (iCol * m_iNumRecords),
+               pdColData [iRec]);
+#endif
+  }
+  return true;
+}
+
+bool
+PlotFile::addColumn (int iCol, const float* const pdColData)
+{
+  if (iCol < 0 || iCol >= m_iNumColumns) {
+    sys_error (ERR_SEVERE, "Illegal column number %d [PlotFile::addColumn]", iCol);
+    return (false);
+  }
+
+  for (int iRec = 0; iRec < m_iNumRecords; iRec++)
+    m_vecCurves[ iRec + (iCol * m_iNumRecords) ] = pdColData [iRec];
+
+  return true;
+}
+
+void
+PlotFile::getColumn (int iCol, double* pdColData) const
+{
+  if (iCol < 0 || iCol >= m_iNumColumns) {
+    sys_error (ERR_SEVERE, "Illegal column number %d [PlotFile::addColumn]", iCol);
+    return;
+  }
+
+  for (int iRec = 0; iRec < m_iNumRecords; iRec++)
+    pdColData[iRec] = m_vecCurves[ iRec + (iCol * m_iNumRecords) ];
+
+}
+
+bool
+PlotFile::getMinMax (int iStartingCol, double& dMin, double& dMax) const
+{
+  if (iStartingCol >= m_iNumColumns) {
+    sys_error (ERR_WARNING, "iStartingCol >= iNumColumns");
+    return false;
+  }
+
+  int iOffset = iStartingCol * m_iNumRecords;
+  dMin = m_vecCurves[ 0 + iOffset ];
+  dMax = dMin;
+
+  for (int iCol = iStartingCol; iCol < m_iNumColumns; iCol++) {
+    int iOffset = iCol * m_iNumRecords;
+    for (int iRec = 0; iRec < m_iNumRecords; iRec++) {
+      double dVal = m_vecCurves[ iRec + iOffset ];
+      if (dVal < dMin)
+        dMin = dVal;
+      else if (dVal > dMax)
+        dMax = dVal;
+    }
+  }
+
+  //  sys_error (ERR_TRACE, "dMin=%f, dMax=%f", dMin, dMax);
+  return true;
+}
+
+bool
+PlotFile::statistics (int iStartingCol, double& min, double& max, double& mean, double& mode, double& median, double &stddev) const
+{
+  if (iStartingCol >= m_iNumColumns) {
+    sys_error (ERR_WARNING, "iStartingCol >= iNumColumns");
+    return false;
+  }
+
+  int iNPoints = (m_iNumColumns - iStartingCol) * m_iNumRecords;
+  std::vector<double> vec;
+  vec.resize (iNPoints);
+
+  int iVec = 0;
+  for (int iCol = iStartingCol; iCol < m_iNumColumns; iCol++) {
+    int iOffset = iCol * m_iNumRecords;
+    for (int iRec = 0; iRec < m_iNumRecords; iRec++)
+      vec[iVec++] = m_vecCurves[ iRec + iOffset ];
+  }
+
+  vectorNumericStatistics (vec, iNPoints, min, max, mean, mode, median, stddev);
+
+  return true;
+}
+
+bool
+PlotFile::fileWrite (const char* const filename)
+{
+  m_strFilename = filename;
+
+  fstream fs (m_strFilename.c_str(), std::ios::out | std::ios::trunc);
+  if (fs.fail()) {
+    sys_error (ERR_WARNING, "Error opening file %s for writing [fileCreate]", m_strFilename.c_str());
+    return false;
+  }
+
+  if (! headerWrite(fs) || ! columnsWrite (fs))
+    return false;
+
+  return true;
+}
+
+bool
+PlotFile::fileRead (const char* const filename)
+{
+  m_strFilename = filename;
+
+#ifdef MSVC
+  fstream fs (m_strFilename.c_str(), std::ios::in);
+#else
+  fstream fs (m_strFilename.c_str(), std::ios::in); // | std::ios::nocreate);
+#endif
+
+  if (fs.fail()) {
+    sys_error (ERR_WARNING, "Unable to open file %s [fileRead]", m_strFilename.c_str());
+    return false;
+  }
+
+  if (! headerRead(fs))
+    return false;
+
+  setCurveSize (m_iNumColumns, m_iNumRecords);
+
+  if (! columnsRead(fs))
+    return false;;
+
+  return true;
+}
+
+bool
+PlotFile::headerRead (std::iostream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to read header with file closed [headerRead]");
+    return false;
+  }
+
+  initHeaders();
+  fs.seekg (0);
+  bool bFinishedHeaders = false;
+
+  fs >> m_iNumColumns;
+  fs >> m_iNumRecords;
+
+  if (fs.fail() || m_iNumColumns == 0 || m_iNumRecords == 0)
+    return false;
+
+  while (! bFinishedHeaders && ! fs.eof() && ! fs.fail()) {
+    char line[1024];
+    fs.getline (line, sizeof(line));
+    int iSP = 0;
+    while (line[iSP] == ' ')
+      iSP++;
+    if (line[iSP] == '\n' || ! line[iSP])
+      ;
+    else if (line[iSP] == '#') {
+      iSP++;
+      while (line[iSP] == ' ')
+        iSP++;
+      if (line[iSP] == '\n' || ! line[iSP])
+        ;
+      else
+        addDescription (&line[iSP]);
+    } else if (strstr (&line[iSP], "<datapoints>") != NULL) {
+         bFinishedHeaders = true;
+    } else
+      addEzsetCommand (&line[iSP]);
+  }
+
+  return ! fs.fail();
+}
+
+
+bool
+PlotFile::headerWrite (std::iostream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to write header with ! fs");
+    return false;
+  }
+
+  fs.seekp (0);
+  fs << m_iNumColumns << " " << m_iNumRecords << "\n";
+
+  unsigned int i;
+  for (i = 0; i < m_vecStrEzsetCommands.size(); i++)
+      fs << m_vecStrEzsetCommands[i] << "\n";
+
+  for (i = 0; i < m_vecStrDescriptions.size(); i++)
+      fs << "# " << m_vecStrDescriptions[i] << "\n";
+
+  if (! m_strDate.empty())
+    fs << "# Date: " << m_strDate << "\n";
+
+  return ! fs.fail();
+}
+
+
+bool
+PlotFile::columnsWrite (std::iostream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to columnWrite with !fs");
+    return false;
+  }
+
+  fs << "<datapoints>\n";
+
+  int iStride = m_iNumRecords;
+  for (int iRec = 0; iRec < m_iNumRecords; iRec++) {
+    for (int iCol = 0; iCol < m_iNumColumns; iCol++)
+      fs << m_vecCurves [iRec + (iCol * iStride)] << " ";
+    fs << "\n";
+  }
+
+  fs << "</datapoints>\n";
+
+  fs << "</plotfile>\n";
+
+  return ! fs.fail();
+}
+
+
+bool
+PlotFile::columnsRead (std::iostream& fs)
+{
+  if (! fs) {
+    sys_error (ERR_WARNING, "Tried to arrayDataRead with ! fs");
+    return false;
+  }
+
+  if (m_iNumColumns == 0 || m_iNumRecords == 0) {
+    sys_error (ERR_WARNING, "Called PlotFile::columnsRead with 0 columns or records");
+    return false;
+  }
+
+  bool bTerminateEarly = false;
+  for (int iRec = 0; iRec < m_iNumRecords; iRec++) {
+    for (int iCol = 0; iCol < m_iNumColumns; iCol++) {
+      if (fs.eof()) {
+        bTerminateEarly = true;
+        break;
+      }
+      if (fs.fail())
+        break;
+      double d;
+      fs >> d;
+      m_vecCurves[ iRec + (iCol * m_iNumRecords) ] = d;
+    }
+  }
+
+  return ! (bTerminateEarly || fs.fail());
+}
+
+
+void
+PlotFile::printHeaders (std::ostream& os) const
+{
+  os << "EZSet Commands\n";
+  for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++)
+    os << m_vecStrEzsetCommands[iEZ] << "\n";
+
+  os << "Descriptions\n";
+  for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++)
+    os << m_vecStrDescriptions[iDesc] << "\n";
+}
+
+void
+PlotFile::printHeaders (std::ostringstream& os) const
+{
+  os << "EZSet Commands\n";
+  for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++)
+    os << m_vecStrEzsetCommands[iEZ] << "\n";
+
+  os << "Descriptions\n";
+  for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++)
+    os << m_vecStrDescriptions[iDesc] << "\n";
+}
+
+void
+PlotFile::printHeadersBrief (std::ostream& os) const
+{
+  os << "EZSet Commands\n";
+  for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++)
+    os << m_vecStrEzsetCommands[iEZ] << "; ";
+  if (m_vecStrEzsetCommands.size() > 0)
+    os << "\n";
+
+  os << "Descriptions\n";
+  for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++)
+    os << m_vecStrDescriptions[iDesc] << "\n";
+}
+
+void
+PlotFile::printHeadersBrief (std::ostringstream& os) const
+{
+  os << "EZSet Commands\n";
+  for (unsigned int iEZ = 0; iEZ < m_vecStrEzsetCommands.size(); iEZ++)
+    os << m_vecStrEzsetCommands[iEZ] << "; ";
+  if (m_vecStrEzsetCommands.size() > 0)
+    os << "\n";
+
+  os << "Descriptions\n";
+  for (unsigned int iDesc = 0; iDesc < m_vecStrDescriptions.size(); iDesc++)
+    os << m_vecStrDescriptions[iDesc] << "\n";
+}
diff --git a/libctsupport/strfuncs.cpp b/libctsupport/strfuncs.cpp
new file mode 100644
index 0000000..600adb4
--- /dev/null
+++ b/libctsupport/strfuncs.cpp
@@ -0,0 +1,166 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <ctype.h>
+#include "ctsupport.h"
+
+
+/* NAME
+ *      str_skip_head                   Skip leading characters of string
+ *
+ * SYNOPSIS
+ *      shortened = str_skip_head (str, charlist)
+ *  OUT shortened                       Start of shortened string
+ *  IN  char *str                       String to have beginning skipped
+ *  IN  char *charlist                  List of characters to skip over
+ *
+ * NOTES
+ *          This routine returns the position in a string (str) of the
+ *      first character that is not in an specified string of characters
+ *      (charlist).
+ */
+
+
+char*
+str_skip_head (const char* str, const char* const charlist)
+{
+  const char* p = str;
+
+  while (*p && (strchr (charlist, *p) != NULL))
+    p++;
+
+  return (const_cast<char*>(p));
+}
+
+char*
+str_skip_head (const char* str, char* charlist)
+{
+  const char* p = str;
+
+  while (*p && (strchr (charlist, *p) != NULL))
+    p++;
+
+  return (const_cast<char*>(p));
+}
+
+
+/* NAME
+ *      str_lower                       Convert a string to lower case
+ *
+ * SYNOPSIS
+ *      str  = str_lower (str)
+ *      char *str                       String to be converted
+ */
+
+char *
+str_lower (char *s)
+{
+    char *p = s;
+
+    while (*p) {                        /* while (*p != EOS) */
+        *p = tolower(*p);
+        ++p;
+    }
+
+    return (s);
+}
+
+/* NAME
+ *      str_rm_tail                     Remove characters from end of string
+ *
+ * SYNOPSIS
+ *      str = str_rm_tail (str, charlist)
+ *      char *str                       String to have end removed
+k *     char *charlist                  List of characters to remove from string
+ *
+ */
+
+
+char *
+str_rm_tail (char *str, const char* const charlist)
+{
+  int i;
+
+  for (i = strlen(str) - 1; i >= 0; i--)
+    if (strchr (charlist, str[i]) != NULL)
+      str[i] = EOS;
+    else
+      break;            /* found non-specified char, all done */
+
+  return (str);
+}
+
+/* NAME
+ *      str_wrm_tail                    Remove white space from end of string
+ *
+ * SYNOPSIS
+ *      str = str_wrm_tail (str)
+ *      char *str                       String to have white space removed
+ *
+ */
+
+char *
+str_wrm_tail (char *str)
+{
+  return (str_rm_tail(str, "\b\t\n\r"));
+}
+
+/* NAME
+ *      str_upper                       Convert a string to upper case
+ *
+ * SYNOPSIS
+ *      str  = str_upper (str)
+ *      char *str                       String to be converted
+ */
+
+char *
+str_upper (char *s)
+{
+  char *p = s;
+
+  while (*p) {                  /* while (*s != EOS) */
+    *p = toupper(*p);
+    p++;
+  }
+
+  return (s);
+}
+
+
+#ifdef TEST
+int
+main (void)
+{
+  string str, clist;
+  char *skip;
+
+  printf ("Test program for str_skip_head\n");
+  printf ("\n");
+  printf ("Enter string that will have its head skipped -- ");
+  gets (str);
+  printf ("Enter list of characters to be skipped -- ");
+  gets (clist);
+  printf ("\n");
+
+  skip = str_skip_head (str, clist);
+
+  printf ("Shortened string = '%s'\n", skip);
+}
+#endif
+
+
diff --git a/libctsupport/syserror.cpp b/libctsupport/syserror.cpp
new file mode 100644
index 0000000..31c9d4e
--- /dev/null
+++ b/libctsupport/syserror.cpp
@@ -0,0 +1,190 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <iostream>
+#include <exception>
+#include <stdexcept>
+#include <stdarg.h>
+#include <ctype.h>
+#include <string>
+#include "ct.h"
+
+#ifdef HAVE_WXWINDOWS
+#include "../src/ctsim.h"
+#include <wx/log.h>
+#endif
+
+/* NAME
+*   sys_error                   System error handler
+*
+* SYNOPSIS
+*   sys_error (severity, msg, args . . .)
+*   int severity                Severity of error
+*   char *msg                   Error message
+*   args                        Argument list, direct transfer to printf stack
+*/
+
+static int s_reportErrorLevel = ERR_TRACE;      // Set error reporting level
+
+
+void sys_error (int severity, const char *msg, ...)
+{
+  va_list arg;
+
+  va_start(arg, msg);
+
+  std::string strOutput;
+  sys_verror (strOutput, severity, msg, arg);
+
+#ifdef HAVE_WXWINDOWS
+  if (g_bRunningWXWindows) {
+    if (theApp) {
+      wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+      wxString msg (wxConvCurrent->cMB2WX(strOutput.c_str()));
+      if (msg.length() > 0) {
+        msg += wxChar('\n');
+        eventLog.SetString( msg );
+        wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event, thread safe
+      }
+    } else {
+      wxMutexGuiEnter();
+      wxLog::OnLog (wxLOG_Message, wxConvCurrent->cMB2WX(strOutput.c_str()), time(NULL));
+      wxMutexGuiLeave();
+    }
+  }
+  else
+    std::cout << strOutput << "\n";
+#else
+    std::cout << strOutput << "\n";
+#endif
+
+  va_end(arg);
+}
+
+static unsigned long s_nErrorCount = 0;
+unsigned long int g_lSysErrorMaxCount = 2000;
+
+
+void sys_verror (std::string& strOutput, int severity, const char *msg, va_list arg)
+{
+  if (severity < s_reportErrorLevel)
+    return;     // ignore error if less than reporting level
+
+  std::ostringstream os;
+
+  if (severity > ERR_TRACE)
+    s_nErrorCount++;
+
+  if (severity != ERR_FATAL) {
+    if (s_nErrorCount > g_lSysErrorMaxCount)
+      return;
+    else if (s_nErrorCount == g_lSysErrorMaxCount) {
+      os << "*****************************************************************\n";
+      os << "***   M A X I M U M   E R R O R   C O U N T   R E A C H E D   ***\n";
+      os << "***                                                           ***\n";
+      os << "***           No further errors will be reported              ***\n";
+      os << "*****************************************************************\n";
+      strOutput = os.str();
+      return;
+    }
+  }
+
+  switch (severity) {
+  case ERR_FATAL:
+    os << "FATAL ERROR: ";
+    break;
+  case ERR_SEVERE:
+    os << "SEVERE ERROR: ";
+    break;
+  case ERR_WARNING:
+    os << "WARNING ERROR: ";
+    break;
+  case ERR_TRACE:
+    os << "Trace: ";
+    break;
+  default:
+    os << "Illegal error severity #" << severity << ": ";
+  }
+
+  char errStr[2000];
+
+#if HAVE_VSNPRINTF
+  vsnprintf (errStr, sizeof(errStr), msg, arg);
+#elif HAVE_VSPRINTF
+  vsprintf (errStr, msg, arg);
+#else
+  strncpy (errStr, sizeof(errStr), "Error message not available on this platform.");
+#endif
+
+  os << errStr;
+  strOutput = os.str();
+
+  if (severity == ERR_FATAL) {
+    std::cerr << strOutput << "\n";
+    throw std::runtime_error (strOutput);
+  }
+
+#if INTERACTIVE_ERROR_DISPLAY
+  std::cout << "A - Abort  C - Continue  W - Turn off warnings? ";
+  //  fflush(stderr);
+  do
+  {
+    int c = cio_kb_waitc("AaBbCcWw", TRUE);       /* get code from keyboard */
+    c = tolower (c);
+    fputc (c, stderr);
+    fputc (NEWLINE, stderr);
+
+    if (c == 'a')
+      exit (1);
+    else if (c == 'c')
+      return;
+    else if (c == 'w')
+    {
+      sys_error_level (ERR_SEVERE);     /* report severe & fatal errors */
+      break;
+    }
+  } while (TRUE);
+#endif
+}
+
+
+/* NAME
+*   sys_error_level                     Set error reporting level
+*
+* SYNOPSIS
+*   sys_error_level (severity)
+*   int severity                Report all error as serious as severity and beyond
+*
+* DESCRIPTION
+*   Causes the system to ignore all error below the level of severity
+*   For example, if severity == ERR_SEVERE, then report severe & fatal
+*   error and ignore warnings
+*/
+
+void
+sys_error_level (int severity)
+{
+  if (severity == ERR_FATAL ||
+    severity == ERR_SEVERE ||
+    severity == ERR_WARNING ||
+    severity == ERR_TRACE)
+    s_reportErrorLevel = severity;
+  else
+    s_reportErrorLevel = ERR_WARNING;
+}
+
diff --git a/libctsupport/xform.cpp b/libctsupport/xform.cpp
new file mode 100644
index 0000000..cf35c4c
--- /dev/null
+++ b/libctsupport/xform.cpp
@@ -0,0 +1,148 @@
+/*****************************************************************************
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ctsupport.h"
+
+
+/* NAME
+ *   rotate2d           Rotates an array of 2 dimensional vectors
+ *
+ * SYNOPSIS
+ *   rotate2d (x, y, n, angle)
+ *   double x[], y[]    Array of points
+ *   int n              Number of points in array
+ *   double angle       Rotation angle (counter-clockwise)
+ */
+
+void
+rotate2d (double x[], double y[], int n, double angle)
+{
+  double cos_theta = cos (angle);
+  double sin_theta = sin (angle);
+
+  for (int i = 0; i < n; i++) {
+    double xrot = x[i] * cos_theta - y[i] * sin_theta;
+    double yrot = x[i] * sin_theta + y[i] * cos_theta;
+    x[i] = xrot;
+    y[i] = yrot;
+  }
+}
+
+
+/* NAME
+ *   xlat2d                     Translates an array of 2 dimensional vectors
+ *
+ * SYNOPSIS
+ *   xlat2d (x, y, n, xoffset, yoffset)
+ *   double x[], y[]            Array of points
+ *   int n                      Number of points in array
+ *   double xoffset, yoffset    Offset to translate points by
+ */
+
+void
+xlat2d (double x[], double y[], int n, double xoffset, double yoffset)
+{
+  for (int i = 0; i < n; i++) {
+    x[i] += xoffset;
+    y[i] += yoffset;
+  }
+}
+
+
+/* NAME
+ *   scale2d                    Scale an array of 2 dimensional vectors
+ *
+ * SYNOPSIS
+ *   scale2d (x, y, n, xoffset, yoffset)
+ *   double x[], y[]            Array of points
+ *   int n                      Number of points in array
+ *   double xfact, yfact        x & y scaling factors
+ */
+
+void
+scale2d (double x[], double y[], int n, double xfact, double yfact)
+{
+  for (int i = 0; i < n; i++) {
+    x[i] *= xfact;
+    y[i] *= yfact;
+  }
+}
+
+
+void
+indent_mtx2 (GRFMTX_2D m)
+{
+  m[0][0] = 1.0;  m[0][1] = 0.0;  m[0][2] = 0.0;
+  m[1][0] = 0.0;  m[1][1] = 1.0;  m[1][2] = 0.0;
+  m[2][0] = 0.0;  m[2][1] = 0.0;  m[2][2] = 1.0;
+}
+
+void
+xlat_mtx2 (GRFMTX_2D m, const double x, const double y)
+{
+  indent_mtx2 (m);
+  m[2][0] = x;
+  m[2][1] = y;
+}
+
+void
+scale_mtx2 (GRFMTX_2D m, const double sx, const double sy)
+{
+  indent_mtx2 (m);
+  m[0][0] = sx;
+  m[1][1] = sy;
+}
+
+void
+rot_mtx2 (GRFMTX_2D m, const double theta)
+{
+  double c = cos(theta);
+  double s = sin(theta);
+
+  indent_mtx2 (m);
+  m[0][0] =  c;  m[0][1] = s;
+  m[1][0] = -s;  m[1][1] = c;
+}
+
+void
+mult_mtx2 (const GRFMTX_2D m1, const GRFMTX_2D m2, GRFMTX_2D result)
+{
+  GRFMTX_2D temp;
+
+  for (int row = 0; row < 3; row++) {
+    for (int col = 0; col < 3; col++) {
+      temp[row][col] = 0;
+      for (int calc = 0; calc < 3; calc++)
+            temp[row][col] += m1[row][calc] * m2[calc][col];
+    }
+  }
+
+  for (int r = 0; r < 3; r++)
+    for (int col = 0; col < 3; col++)
+      result[r][col] = temp[r][col];
+}
+
+void
+xform_mtx2 (const GRFMTX_2D m, double& x, double& y)
+{
+  double xt = x * m[0][0] + y * m[1][0] + m[2][0];
+  double yt = x * m[0][1] + y * m[1][1] + m[2][1];
+
+  x = xt;
+  y = yt;
+}
diff --git a/man/Makefile b/man/Makefile
new file mode 100644
index 0000000..07e4521
--- /dev/null
+++ b/man/Makefile
@@ -0,0 +1,392 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# man/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+subdir = man
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+man_MANS = pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 ifinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1 linogram.1
+EXTRA_DIST = $(man_MANS) 
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  man/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  man/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+install-man1: $(man1_MANS) $(man_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+	  else file=$$i; fi; \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+	for dir in "$(DESTDIR)$(man1dir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man: install-man1
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am uninstall-man
+
+uninstall-man: uninstall-man1
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-man1 install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-info-am uninstall-man uninstall-man1
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/man/Makefile.am b/man/Makefile.am
new file mode 100644
index 0000000..e2e11de
--- /dev/null
+++ b/man/Makefile.am
@@ -0,0 +1,2 @@
+man_MANS=pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1 linogram.1
+EXTRA_DIST = $(man_MANS) 
diff --git a/man/Makefile.in b/man/Makefile.in
new file mode 100644
index 0000000..7a135eb
--- /dev/null
+++ b/man/Makefile.in
@@ -0,0 +1,436 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = man
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+man_MANS = pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1 linogram.1
+EXTRA_DIST = $(man_MANS) 
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu man/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-man1: $(man_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | while read p; do \
+	  if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; echo "$$p"; \
+	done | \
+	sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+	sed 'N;N;s,\n, ,g' | { \
+	list=; while read file base inst; do \
+	  if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+	    echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	    $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+	  fi; \
+	done; \
+	for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+	while read files; do \
+	  test -z "$$files" || { \
+	    echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+	    $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+	done; }
+
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list=''; test -n "$(man1dir)" || exit 0; \
+	files=`{ for i in $$list; do echo "$$i"; done; \
+	l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \
+	  sed -n '/\.1[a-z]*$$/p'; \
+	} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+	      -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+	test -z "$$files" || { \
+	  echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \
+	  cd "$(DESTDIR)$(man1dir)" && rm -f $$files; }
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@list='$(MANS)'; if test -n "$$list"; then \
+	  list=`for p in $$list; do \
+	    if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+	    if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+	  if test -n "$$list" && \
+	    grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+	    echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
+	    grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+	    echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+	    echo "       typically \`make maintainer-clean' will remove them" >&2; \
+	    exit 1; \
+	  else :; fi; \
+	else :; fi
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS)
+installdirs:
+	for dir in "$(DESTDIR)$(man1dir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+	distclean-generic distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-man1 install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-man uninstall-man1
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/man/ctsim.1 b/man/ctsim.1
new file mode 100644
index 0000000..706d507
--- /dev/null
+++ b/man/ctsim.1
@@ -0,0 +1,31 @@
+.\"  -*- nroff -*-
+.\"
+.\" Author: Kevin Rosenberg <kevin at ctsim.org>
+.\"
+.\" $Id: ctsim.1,v 1.4 2002/05/03 10:45:52 kevin Exp $
+.Dd May 2, 2002
+.Dt ctsim 1
+.Os
+.Sh NAME
+.Nm ctsim
+.Nd A Graphical Computed Tomography Simulator
+.Sh SYNOPSIS
+.Nm ctsim files-to-open... [OPTIONS]
+.Sh DESCRIPTION
+.Pp 
+.Nm 
+is a graphical user interface to the various components of the CTSim package. The home for CTSim is http://www.ctsim.org.
+.Sh OPTIONS
+.Bl -tag -width Ds
+.It Fl Fl version
+Display version
+.It Fl Fl help
+Print a terse help message
+.El
+.Sh AUTHORS
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.Sh HISTORY
+CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.Sh SEE ALSO
+ifinfo (1), if1 (1), if2 (1), ifexport (1), phm2pj (1), phm2if (1), pj2if (1), pjinfo (1), pjrec (1)
diff --git a/man/ctsim.texi b/man/ctsim.texi
new file mode 100644
index 0000000..f024f08
--- /dev/null
+++ b/man/ctsim.texi
@@ -0,0 +1,74 @@
+input texinfo   @c -*-texinfo-*-
+ at c %**start of header
+ at setfilename ctsim.info
+ at settitle CTSim Manual
+ at c %**end of header
+
+ at setchapternewpage odd
+
+ at ifinfo
+Reference Manual for CTSim
+
+Copyright (c) 2000 Kevin Rosenberg
+ at end ifinfo
+
+ at titlepage
+ at sp 10
+ at comment The title is printed in a large font.
+ at center @titlefont{CTSim Manual}
+
+ at c The following two commands start the copyright page.
+ at page
+ at vskip 0pt plus 1filll
+Copyright @copyright{} 2000 Kevin Rosenberg
+ at end titlepage
+
+ at node    Top,       Computed Tomography Overview, (dir),    (dir)
+ at comment node-name, next,          previous, up
+
+ at menu
+* Computed Tomography Overview::    The first chapter 
+* Algorithms:: Algorithms used by this program
+* Concept Index::    This index has two entries.
+ at end menu
+
+ at node    Computed Tomography Overview, Algorithms, Top,      Top
+ at comment node-name,     next,          previous, up
+ at chapter Computed Tomography Overview
+ at cindex Overview
+
+ at section Overview
+Computed Tomography is a process to reconstruction internal images of
+an object by taking projection data through that object.
+
+ at cindex Another sample index entry
+
+Here is a numbered list.
+
+ at enumerate
+ at item
+This is the first item.
+
+ at item
+This is the second item.
+ at end enumerate
+
+The @code{makeinfo} and @code{texinfo-format-buffer}
+commands transform a Texinfo file such as this into
+an Info file; and @TeX{} typesets it for a printed
+manual.
+
+ at node  Algorithms , Concept Index , Computed Tomography Overview , Top
+
+ at section Theory
+This is great.
+
+ at node    Concept Index,    ,  Algorithms , Top
+ at comment node-name,    next,  previous,      up
+ at unnumbered Concept Index
+
+ at printindex cp
+
+ at contents
+ at bye
+
diff --git a/man/ctsimtext.1 b/man/ctsimtext.1
new file mode 100644
index 0000000..fb99efb
--- /dev/null
+++ b/man/ctsimtext.1
@@ -0,0 +1,25 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "ctsimtext" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+ctsimtext \- A Text\-Based Computed Tomography Simulator
+.SH "SYNOPSIS"
+.B ctsimtext [processing\-command processing\-options]]
+.SH "DESCRIPTION"
+\fIctsimtext\fP is a text user interface to the various components of
+the CTSim package. The home for CTSim is http://www.ctsim.org.
+.SH "OPTIONS"
+\fIctsimtext\fP accepts the following options
+.TP 12
+.B \-\-version      Display version
+.TP 12
+.B \-\-help         Print a terse help message
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+ctsim (1), if1 (1), if2 (1), ifexport (1), ifinfo (1), linogram (1),
+phm2helix (1), phm2if (1), phm2pj (1), pj2if (1), pjHinterp (1),
+pjinfo (1), pjrec (1)
diff --git a/man/if1.1 b/man/if1.1
new file mode 100644
index 0000000..a2d12a0
--- /dev/null
+++ b/man/if1.1
@@ -0,0 +1,57 @@
+.\" -*- NROFF -*-
+.\" 
+.\" if1.1
+.\" 
+.\" Author: Kevin Rosenberg <kevin at ctsim.org>
+.\" 
+.\" $Id: if1.1,v 1.5 2002/05/03 10:45:52 kevin Exp $
+.\" 
+.TH "if1" "1" "" "Kevin M. Rosenberg" "Engineering"
+.SH "NAME"
+if1 \- Single IF (Image File) Transformation
+.SH "SYNOPSIS"
+.B if1 iffile outfile [OPTIONS]
+.SH "DESCRIPTION "
+\fIif1\fP transforms a single IF file.
+.SH "OPTIONS"
+\fIif1\fP accepts the following options:
+.TP 16 
+.B \-\-invert
+Inverts (negates) the image.
+.TP 16
+.B \-\-log
+Natural logrithm of image.
+.TP 16
+.B \-\-exp
+Natural exponential of image.
+.TP 16
+.B \-\-debug
+Set debug mode.
+.TP 16
+.B \-\-verbose
+Set verbose mode.
+.TP 16
+.B \-\-version
+Print version.
+.TP 16
+.B \-\-help
+Print terse help summary.
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if2 (1)
+.BR ifexport (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+.BR pjrec (1)
diff --git a/man/if2.1 b/man/if2.1
new file mode 100644
index 0000000..5706680
--- /dev/null
+++ b/man/if2.1
@@ -0,0 +1,60 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "if2" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+if2 \- binary operations between two image (IF) files.
+.SH "SYNOPSIS"
+.B if2 infile1 infile2  outfile [OPTIONS]
+.SH "DESCRIPTION "
+\fIif2\fP 
+performs binary functions on two input IF image files.
+.SH "OPTIONS"
+\fIif2\fP
+accepts the following options:
+.TP 16
+.B \-\-add
+Add infile1 and infile2.
+.TP 16
+.B \-\-sub
+Subtract infile2 from infile1.
+.TP 16 
+.B \-\-mul 
+Multiply images.
+.TP 16
+.B \-\-comp 
+Compare images.
+.TP 16
+.B \-\-column\-plot \fIn\fP
+Plot column.
+.TP 16
+.B \-\-row\-plot \fIn\fP
+Plot row.
+.TP 16
+.B \-\-verbose
+Verbose mode.
+.TP 16 
+.B \-\-version
+Print version.
+.TP 16 
+.B \-\-help
+Print terse help summary
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR ifexport (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+.BR pjrec (1)
+
diff --git a/man/ifexport.1 b/man/ifexport.1
new file mode 100644
index 0000000..5ee81ac
--- /dev/null
+++ b/man/ifexport.1
@@ -0,0 +1,55 @@
+.\"  -*- nroff -*-
+.\"
+.\" ifexport.1
+.\"
+.\" Author: Kevin Rosenberg <kevin at ctsim.org>
+.\"
+.\" $Id: ifexport.1,v 1.5 2002/05/03 10:28:17 kevin Exp $
+.Dd April 19, 2000
+.Dt IFEXPORT 1
+.Os
+.Sh NAME
+.Nm ifexport
+.Nd IF (Image File) to Image
+.Sh SYNOPSIS
+.Nm ifexport iffile outfile [OPTIONS]
+.Sh DESCRIPTION 
+.Pp
+.Nm 
+converts an 2D IF file to a viewable image file. 
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl Fl format Ar format-name
+Choose output image format
+.It Fl Fl center Ar center-mode
+Choose center of window (default is mode)
+.It Fl Fl auto Ar auto-mode
+Set automatic window mode (default is full)
+.It Fl Fl scaling Ar multiple
+Set scaling factor for output image (default is 1)
+.It Fl Fl min Ar minimum
+Set minimum intensity of window (overrides \-\-auto)
+.It Fl Fl max Ar maximum
+Set maximum intensity of window (overrides \-\-auto)
+.It Fl Fl stats
+Print image statistics
+.It Fl Fl labels
+Print IF labels
+.It Fl Fl debug
+Set debug mode
+.It Fl Fl verbose
+Set verbose mode
+.It Fl Fl version
+Print version
+.It Fl Fl help
+Print terse help summary
+.El
+.Sh AUTHORS
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.Sh HISTORY
+CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In 1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.Sh SEE ALSO
+ctsim (1), ctsimtext (1), if1 (1), if2 (1), ifinfo (1), linogram (1),
+phm2helix (1), phm2if (1), phm2pj (1), pj2if (1), pjHinterp (1),
+pjinfo (1), pjrec (1)
diff --git a/man/ifinfo.1 b/man/ifinfo.1
new file mode 100644
index 0000000..8c78e0b
--- /dev/null
+++ b/man/ifinfo.1
@@ -0,0 +1,44 @@
+.\"  -*- nroff -*-
+.\"
+.\" Author: Kevin Rosenberg <kevin at ctsim.org>
+.\"
+.\" $Id: ifinfo.1,v 1.4 2002/05/03 10:28:17 kevin Exp $
+.Dd April 19, 2000
+.Dt IFINFO 1
+.Os
+.Sh NAME
+.Nm ifinfo
+.Nd Print IF (Image File) Information
+.Sh SYNOPSIS
+.Nm ifinfo iffile [OPTIONS]
+.Sh DESCRIPTION 
+.Pp
+.Nm 
+prints information about an IF file
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl Fl labels
+Print history labels (default)
+.It Fl Fl stats
+Print image statistics (default) 
+.It Fl Fl no-labels
+Do not print history labels
+.It Fl Fl no-stats
+Do not print image statistics
+.It Fl Fl debug
+Set debug mode
+.It Fl Fl verbose
+Set verbose mode
+.It Fl Fl version
+Print version
+.It Fl Fl help
+Print terse help summary
+.El
+.Sh AUTHORS
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.Sh HISTORY
+CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.Sh SEE ALSO
+ctsim (1), if1 (1), if2 (1), ifexport (1), phm2pj (1), phm2if (1), pj2if (1), pjinfo (1), pjrec (1)
diff --git a/man/linogram.1 b/man/linogram.1
new file mode 100644
index 0000000..e8fad97
--- /dev/null
+++ b/man/linogram.1
@@ -0,0 +1,35 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "linogram" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+linogram \- Linogram gribddisplay for CTSIM
+.SH "SYNOPSIS"
+.B linogram [OPTIONS]
+.SH "DESCRIPTION"
+\fIlinogram\fP displays the grid used in linogram\-based scanning for 
+the CTSim package. 
+.SH "OPTIONS"
+\fIlinogram\fP accepts the following options
+.TP 12
+.B \-\-version      Display version
+.TP 12
+.B \-\-help         Print a terse help message
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifinfo (1)
+.BR ifexport (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+.BR pjrec (1)
diff --git a/man/phm2helix.1 b/man/phm2helix.1
new file mode 100644
index 0000000..31b4be5
--- /dev/null
+++ b/man/phm2helix.1
@@ -0,0 +1,115 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "phm2helix" "1" "" "Kevin Rosenberg and Ian Kay" "Engineering"
+.SH "NAME"
+phm2helix \- calculate projections through a time varying phantom object.
+.SH "SYNOPSIS"
+.B phm2helix outfile ndet nview phmprog [OPTIONS]
+.SH "DESCRIPTION "
+\fIphm2pj\fP calculates projections through a time varying phantom
+object.
+.SH "OPTIONS"
+.TP 16
+.B \-\-outfile          
+Name of output file for projections
+.TP 16
+.B \-\-ndet             
+Number of detectors
+.TP 16
+.B \-\-nview            
+Number of rotated views
+.TP 16
+.B \-\-phmfile
+Temporary phantom file name
+.RS
+.TP 16
+.B herman        
+Herman head phantom
+.TP 16
+.B herman\-b      
+Herman head phantom (Bordered)
+.TP 16
+.B shepp\-logan   
+Shepp\-Logan head phantom
+.TP 16
+.B shepp\-logan\-b 
+Shepp\-Logan head phantom (Bordered)
+.TP 16
+.B  unitpulse     
+Unit pulse phantom
+.RE
+.TP 16
+.B \-\-phmfile \fIname\fP 
+Get Phantom from phantom file 
+.TP 16
+.B \-\-desc           
+Description of raysum
+.TP 16
+.B \-\-nray           
+Number of rays per detector (default = 1)
+.TP 16
+.B \-\-rotangle       
+Degrees to rotate view through (multiple of PI) (default = 1)
+.TP 16
+.B \-\-geometry       
+Geometry of scanning
+.RS
+.TP 16
+.B parallel
+Parallel scan beams (default)
+.TP 16
+.B equilinear
+Equilinear divergent scan beams
+.TP 16
+.B equiangular   
+Equiangular divergent scan beams
+.RE
+.TP 16
+.B \-\-focal\-length   
+Focal length ratio (ratio to radius of phantom) (default = 1)
+.TP 16
+.B \-\-field\-of\-view  
+Field of view (ratio to diameter of phantom square) (default = 1)
+.TP 16
+.B \-\-trace          
+Trace level to use, one of:
+.RS 
+.TP 
+.B none 
+No tracing (default)
+.TP 16
+.B console 
+Trace text level
+.RE
+.TP 16
+.B \-\-verbose        
+Verbose mode
+.TP 16
+.B \-\-debug          
+Debug mode
+.TP 16
+.B \-\-version        
+Print version
+.TP 16
+.B \-\-help           
+Print a terse help message
+.SH "AUTHORS"
+Ian Kay, Ph.D.
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifexport (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+.BR pjrec (1)
diff --git a/man/phm2if.1 b/man/phm2if.1
new file mode 100644
index 0000000..db3aeef
--- /dev/null
+++ b/man/phm2if.1
@@ -0,0 +1,61 @@
+.\"  -*- nroff -*-
+.\"
+.\" phm2if.1
+.\"
+.\" Author: Kevin Rosenberg <kevin at ctsim.org>
+.\"
+.\" $Id: phm2if.1,v 1.5 2002/05/03 10:28:17 kevin Exp $
+.\"
+.Dd April 19, 2000
+.Dt PHM2IF 1
+.Os
+.Sh NAME
+.Nm phm2if
+.Nd Generate Phantom (generate phantom for computed tomography simulator)
+.Sh SYNOPSIS
+.Nm phm2if outfile nx ny [--phantom phantom-name] [--picfile filename] [OPTIONS]
+.Sh DESCRIPTION 
+.Nm
+generates phantom images for comparisons to reconstructions for CTsim.
+.Pp
+.Nm
+is configured to use a variety of options for phantom generation.
+.Pp
+The options are as follows:
+.Bl -tag -width Ds
+.It Fl Fl phantom Ar predefined-phantom-name
+Selects a predefined phantom name
+.It Fl Fl picfile Ar picfile
+Reads a picture file that defines a phantom
+.It Fl Fl filter Ar filter-name
+Generate a phantom image from a filter
+.It Fl Fl filter-param Ar x
+Set alpha level for Hamming filter
+.It Fl Fl filter-bw Ar bw
+Filter bandwidth (default is 1)
+.It Fl Fl filter-domain Ar domain
+Set domain to "spatial" or "freq"
+.It Fl Fl nsample Ar n
+Use n samples per X & Y direction for each pixel
+.It Fl Fl trace Ar level
+Set trace level (default is none)
+.It Fl Fl desc Ar description
+Save description in image file
+.It Fl Fl verbose
+Turn on verbose mode
+.It Fl Fl debug
+Turn on debug mode
+.It Fl Fl version
+Print version
+.It Fl Fl help
+Print terse help summary
+.El
+.Sh AUTHORS
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.Sh HISTORY
+CTSim was begun in 1983 using MS-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.Sh SEE ALSO
+ctsim (1), ctsimtext (1), if1 (1), if2 (1), ifinfo (1), linogram (1),
+phm2helix (1), phm2pj (1), pj2if (1), pjHinterp (1), pjinfo (1),
+pjrec (1)
diff --git a/man/phm2pj.1 b/man/phm2pj.1
new file mode 100644
index 0000000..2e38fb7
--- /dev/null
+++ b/man/phm2pj.1
@@ -0,0 +1,116 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "phm2pj" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+phm2pj \- calculate projections through a phantom object.
+
+.SH "SYNOPSIS"
+.B phm2pj outfile ndet nview [\-\-phantom phantom\-name] [\-\-phmfile filename] [OPTIONS]
+.SH "DESCRIPTION "
+\fIphm2pj\fP calculates projections through a phantom object, either a
+predefined \-\-phantom or a \-\-phmfile.
+.SH "OPTIONS"
+.TP 16
+.B \-\-outfile          
+Name of output file for projections
+.TP 16
+.B \-\-ndet             
+Number of detectors
+
+.TP 16
+.B \-\-nview            
+Number of rotated views
+
+.TP 16
+.B \-\-phantom        
+Predefined phantom to use for projection: can be one of 
+.RS
+.TP 16
+.B herman        
+Herman head phantom
+.TP 16
+.B herman\-b      
+Herman head phantom (Bordered)
+.TP 16
+.B shepp\-logan   
+Shepp\-Logan head phantom
+.TP 16
+.B shepp\-logan\-b 
+Shepp\-Logan head phantom (Bordered)
+.TP 16
+.B  unitpulse     
+Unit pulse phantom
+.RE
+.TP 16
+.B \-\-phmfile \fIname\fP 
+Get Phantom from phantom file 
+.TP 16
+.B \-\-desc           
+Description of raysum
+.TP 16
+.B \-\-nray           
+Number of rays per detector (default = 1)
+.TP 16
+.B \-\-rotangle       
+Degrees to rotate view through (multiple of PI) (default = 1)
+.TP 16
+.B \-\-geometry       
+Geometry of scanning
+.RS
+.TP 16
+.B parallel
+Parallel scan beams (default)
+.TP 16
+.B equilinear
+Equilinear divergent scan beams
+.TP 16
+.B equiangular   
+Equiangular divergent scan beams
+.RE
+.TP 16
+.B \-\-focal\-length   
+Focal length ratio (ratio to radius of phantom) (default = 1)
+.TP 16
+.B \-\-field\-of\-view  
+Field of view (ratio to diameter of phantom square) (default = 1)
+.TP 16
+.B \-\-trace          
+Trace level to use, one of:
+.RS 
+.TP 
+.B none 
+No tracing (default)
+.TP 16
+.B console 
+Trace text level
+.RE
+.TP 16
+.B \-\-verbose        
+Verbose mode
+.TP 16
+.B \-\-debug          
+Debug mode
+.TP 16
+.B \-\-version        
+Print version
+.TP 16
+.B \-\-help           
+Print a terse help message
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+.BR pjrec (1)
diff --git a/man/pj2if.1 b/man/pj2if.1
new file mode 100644
index 0000000..7ccec1f
--- /dev/null
+++ b/man/pj2if.1
@@ -0,0 +1,42 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "PJ2IF" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+pj2if \- convert a projecttion file into an image (IF) file
+.SH "SYNOPSIS"
+.B pj2if in\-proj\-file out\-if\-file [OPTIONS]
+.SH "DESCRIPTION "
+\fIpj2if\fP converts \fIin\-proj\-file\fP, a file of projection data, into 
+image (IF) file \fIout\-if\-file\fP, 
+which can be further processed for viewing with \fIif2img\fP.
+.SH "OPTIONS"
+.TP 
+.B \-\-verbose   
+Verbose mode
+.TP 
+.B \-\-dump      
+Dump all scan data
+.TP 
+.B \-\-version   
+Print version
+.TP 
+.B \-\-help      
+Print a terse help message
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+.BR pjrec (1)
diff --git a/man/pjHinterp.1 b/man/pjHinterp.1
new file mode 100644
index 0000000..b55302e
--- /dev/null
+++ b/man/pjHinterp.1
@@ -0,0 +1,57 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "pjHinterp" "1" "" "Kevin Rosenberg and Ian Kay" "Engineering"
+.SH "NAME"
+pjHinterp \- interpolate helical data in projection space.
+.SH "SYNOPSIS"
+.B pjHinterp projfile interpfile [OPTIONS]
+.SH "DESCRIPTION "
+\fIpjHinterp\fP interpolates the helical data in projfile
+and writes the results in interpfile.
+.SH "OPTIONS"
+.TP 16
+.B \-\-field\-of\-view  
+Field of view (ratio to diameter of phantom square) (default = 1)
+.TP 16
+.B \-\-trace          
+Trace level to use, one of:
+.RS 
+.TP 
+.B none 
+No tracing (default)
+.TP 16
+.B console 
+Trace text level
+.RE
+.TP 16
+.B \-\-verbose        
+Verbose mode
+.TP 16
+.B \-\-debug          
+Debug mode
+.TP 16
+.B \-\-version        
+Print version
+.TP 16
+.B \-\-help           
+Print a terse help message
+
+.SH "AUTHORS"
+Ian Kay, Ph.D.
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjinfo (1)
+.BR pjrec (1)
diff --git a/man/pjinfo.1 b/man/pjinfo.1
new file mode 100644
index 0000000..fe40067
--- /dev/null
+++ b/man/pjinfo.1
@@ -0,0 +1,37 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "pjinfo" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+pjinfo \- projection file information
+.SH "SYNOPSIS"
+.B pjinfo proj\-file [OPTIONS]
+.SH "DESCRIPTION"
+Displays information about a projection file.
+.SH "OPTIONS"
+.TP 
+.B \-\-dump      
+Dump all scan data
+.TP 
+.B \-\-version   
+Print version
+.TP 
+.B \-\-help      
+Print a terse help message
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjrec (1)
diff --git a/man/pjrec.1 b/man/pjrec.1
new file mode 100644
index 0000000..bf6d3a9
--- /dev/null
+++ b/man/pjrec.1
@@ -0,0 +1,159 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "pjrec" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+pjrec \- reconstruction from projections
+.SH "SYNOPSIS"
+.B pjrec projection\-file image\-file nx\-image ny\-image [OPTIONS]
+.SH "DESCRIPTION"
+\fIpjrec\fP takes projection data from \fIraysum\-file\P and produces an
+(IF) image file \fIimage\-file\fP, of size \fInx\-image\fP by
+\fIny\-image\fP pixels, containing the reconstructed image.  
+.SH "OPTIONS"
+\fIpjrec\fP accepts the following options, which control the
+reconstruction algorithm:
+.TP 12
+.B \-\-interp        
+Interpolation method during backprojection
+.RS
+.TP 
+.B nearest     
+Nearest neighbor interpolation
+.TP 
+.B linear      
+Linear interpolation
+.RE
+.TP 12
+.B \-\-preinterpolate  
+Preinterpolation factor (default = 1).  Used only with frequency\-based 
+filtering
+.TP 12
+.B \-\-filter       
+Filter name
+.RS
+.TP 15
+.B abs_bandlimit 
+Abs * Bandlimiting (default)
+.TP 15
+.B abs_sinc      
+Abs * Sinc
+.TP 15
+.B abs_cosine    
+Abs * Cosine
+.TP 15
+.B abs_hamming   
+Abs * Hamming
+.TP 15
+.B shepp         
+Shepp\-Logan
+.TP 15
+.B bandlimit     
+Bandlimiting
+.TP 15
+.B sinc          
+Sinc
+.TP 15
+.B cosine        
+Cosine
+.TP 15
+.B triangle      
+Triangle
+.TP 15
+.B hamming       
+Hamming
+.RE
+.TP 12
+.B \-\-filter\-method  
+Filter method before backprojections
+.RS
+.TP 15
+.B convolution      
+Spatial filtering (default)
+.TP 15
+.B fourier          
+Frequency filtering with discete fourier
+.TP 15
+.B fourier_table    
+Frequency filtering with table lookup fourier
+.TP 15
+.B fft              
+Fast Fourier Transform
+.RE
+.TP 12
+.B \-\-zeropad n   
+Set zeropad level (default = 0).  set n to number of powers to two to pad
+.TP 12
+.B \-\-filter\-generation  
+Filter Generation mode
+.RS
+.TP 12
+.B direct       
+Use direct filter in spatial or frequency domain (default)
+.TP 12
+.B inverse_fourier  
+Use inverse fourier transform of inverse filter
+.RE
+.TP 12
+.B \-\-backproj    
+Backprojection Method
+.RS
+.TP 
+.B trig        
+Trigometric functions at every point
+.TP 
+.B table       
+Trigometric functions with precalculated table
+.TP 
+.B diff        
+Difference method
+.TP 
+.B diff2       
+Optimized difference method (default)
+.TP 
+.B idiff2      
+Optimized difference method with integer math
+.TP 
+.B idiff3      
+Highly\-optimized difference method with integer math
+.RE
+.TP 12
+.B \-\-filter\-param 
+Alpha level for Hamming filter
+.TP 12
+.B \-\-trace        
+Set tracing to level:
+.RS
+.TP 12
+.B none        
+No tracing (default)
+.TP 12
+.B console     
+Text level tracing
+.RE
+.TP 12
+.B \-\-verbose      Turn on verbose mode
+.TP 12
+.B \-\-debug        Turn on debug mode
+.TP 12
+.B \-\-version      Print version
+.TP 12
+.B \-\-help         Print a terse help message
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin at ctsim.org>
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+.SH "SEE ALSO"
+.BR ctsim (1)
+.BR ctsimtext (1)
+.BR if1 (1)
+.BR if2 (1)
+.BR ifinfo (1)
+.BR linogram (1)
+.BR phm2helix (1)
+.BR phm2if (1)
+.BR phm2pj (1)
+.BR pj2if (1)
+.BR pjHinterp (1)
+.BR pjinfo (1)
+
diff --git a/missing b/missing
new file mode 100755
index 0000000..28055d2
--- /dev/null
+++ b/missing
@@ -0,0 +1,376 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2009-04-28.21; # UTC
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
+# 2008, 2009 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# 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, 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/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case $1 in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
+\`g' are ignored when checking the name.
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# normalize program name to check for.
+program=`echo "$1" | sed '
+  s/^gnu-//; t
+  s/^gnu//; t
+  s/^g//; t'`
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).  This is about non-GNU programs, so use $1 not
+# $program.
+case $1 in
+  lex*|yacc*)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar*)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case $program in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case $f in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te*)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison*|yacc*)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f y.tab.h; then
+	echo >y.tab.h
+    fi
+    if test ! -f y.tab.c; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex*|flex*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if test $# -ne 1; then
+        eval LASTARG="\${$#}"
+	case $LASTARG in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if test -f "$SRCFILE"; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if test ! -f lex.yy.c; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit $?
+    fi
+    ;;
+
+  makeinfo*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '
+	/^@setfilename/{
+	  s/.* \([^ ]*\) *$/\1/
+	  p
+	  q
+	}' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar*)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case $firstarg in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case $firstarg in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/mkinstalldirs b/mkinstalldirs
new file mode 100755
index 0000000..4191a45
--- /dev/null
+++ b/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+nl='
+'
+IFS=" ""	$nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake at gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
+  shift
+  IFS=$oIFS
+
+  for d
+  do
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
+
+    pathcomp=$pathcomp/
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/msvc/copy-binaries.bat b/msvc/copy-binaries.bat
new file mode 100755
index 0000000..b52e29b
--- /dev/null
+++ b/msvc/copy-binaries.bat
@@ -0,0 +1,6 @@
+ at echo off
+
+mkdir c:\ctsim\bin
+copy ctsim\Release\ctsim.exe c:\ctsim\bin
+copy ctsimtext\Release\ctsimtext.exe c:\ctsim\bin
+
diff --git a/msvc/ctsim.dsw b/msvc/ctsim.dsw
new file mode 100644
index 0000000..d126b68
--- /dev/null
+++ b/msvc/ctsim.dsw
@@ -0,0 +1,194 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "FFTW2st"="..\..\fftw-2.1.3\Win32\FFTW2st\FFTW2st.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "RFFTW2st"="..\..\fftw-2.1.3\Win32\RFFTW2st\RFFTW2st.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "ctn_lib"=..\..\ctn\winctn\ctn_lib\ctn_lib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "ctsim"=.\ctsim\ctsim.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name libctsim
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ctsimtext"=.\ctsimtext\ctsimtext.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name libctsim
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "jpeg"=..\..\wx2\src\jpeg\JpegVC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "libctsim"=.\libctsim\libctsim.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+    Begin Project Dependency
+    Project_Dep_Name png
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name tiff
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name wxvc
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name xpm
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name zlib
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name FFTW2st
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name jpeg
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name RFFTW2st
+    End Project Dependency
+    Begin Project Dependency
+    Project_Dep_Name ctn_lib
+    End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "png"=..\..\wx2\src\png\PngVC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "tiff"=..\..\wx2\src\tiff\TiffVC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "wxvc"=..\..\wx2\src\wxvc.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "xpm"=..\..\wx2\src\xpm\XpmVC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "zlib"=..\..\wx2\src\zlib\ZlibVC.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/msvc/ctsim/ctsim.dsp b/msvc/ctsim/ctsim.dsp
new file mode 100644
index 0000000..bcc38a9
--- /dev/null
+++ b/msvc/ctsim/ctsim.dsp
@@ -0,0 +1,314 @@
+# Microsoft Developer Studio Project File - Name="ctsim" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=ctsim - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "ctsim.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "ctsim.mak" CFG="ctsim - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "ctsim - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "ctsim - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "ctsim - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\getopt" /I "..\..\include" /I "\wx2\include" /I "\wx2\src\png" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\src\zlib" /I "\ctn\include" /D "NDEBUG" /D VERSION=\"3.5.5\" /D "_WINDOWS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D "WIN32" /D "HAVE_CTN_DICOM" /D CTSIMVERSION=\"3.5.5\" /YX /FD /D _WI"NDOWS,_MBCS,HAVE_STR [...]
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /i "\wx2\include" /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 ctn_lib.lib winmm.lib wx.lib png.lib tiff.lib jpeg.lib xpm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib comctl32.lib rpcrt4.lib fftw2st.lib rfftw2st.lib opengl32.lib wsock32.lib htmlhelp.lib /nologo /subsystem:windows /machine:I386 /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Release" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Release" /libpath:"\fftw-2.1.3\Win32\RFF [...]
+
+!ELSEIF  "$(CFG)" == "ctsim - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\getopt" /I "..\..\include" /I "\wx2\include" /I "\wx2\src\png" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\src\zlib" /I "\ctn\include" /D "_DEBUG" /D "DEBUG" /D "__WXDEBUG__" /D WXDEBUG=1 /D "_MBCS" /D WINVER=0x0400 /D "STRICT" /D VERSION=3.5.5 /D "_WINDOWS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D "WI [...]
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "\wx2\include" /i "\wx2\contrib\include" /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 wsock32.lib comctl32.lib winmm.lib rpcrt4.lib wxd.lib xpmd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib opengl32.lib fftw2st.lib rfftw2st.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib htmlhelp.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /pdbtype:sept /libpath:"\fftw-2.1.3\win32\ff [...]
+
+!ENDIF 
+
+# Begin Target
+
+# Name "ctsim - Win32 Release"
+# Name "ctsim - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\src\backgroundmgr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\backgroundsupr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\ctsim.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dialogs.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dlgezplot.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dlgprojections.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dlgreconstruct.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\docs.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\getopt\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\getopt\getopt1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\graph3dview.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\threadproj.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\threadraster.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\threadrecon.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\tips.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\views.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\src\backgroundmgr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\backgroundsupr.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\src\ctsim-map.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\ctsim.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dialogs.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dlgezplot.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dlgprojections.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\dlgreconstruct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\threadraster.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\threadrecon.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\tips.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\src\views.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\wx\msw\blank.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\bullseye.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\ctsim.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\error.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\hand.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\info.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\logo.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\magnif1.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\noentry.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\pbrush.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\pencil.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\pntleft.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\pntright.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\query.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\question.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\roller.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\size.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\tip.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\warning.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\msw\watch1.cur
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\html\msw\wbook.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\html\msw\wfolder.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\html\msw\whelp.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\html\msw\whlproot.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\wx\html\msw\wpage.ico
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/msvc/ctsim/ctsim.plg b/msvc/ctsim/ctsim.plg
new file mode 100644
index 0000000..392cc83
--- /dev/null
+++ b/msvc/ctsim/ctsim.plg
@@ -0,0 +1,42 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: ctsim - Win32 Release--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP37A.tmp" with contents
+[
+ctn_lib.lib winmm.lib wx.lib png.lib tiff.lib jpeg.lib xpm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib comctl32.lib rpcrt4.lib fftw2st.lib rfftw2st.lib opengl32.lib wsock32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"\wx2\lib" /libpath:"\ctn\winctn\ctn_lib\Release" /libpath:"\fftw-2.1.3\W [...]
+.\Release\backgroundmgr.obj
+.\Release\backgroundsupr.obj
+.\Release\ctsim.obj
+.\Release\dialogs.obj
+.\Release\dlgezplot.obj
+.\Release\dlgprojections.obj
+.\Release\dlgreconstruct.obj
+.\Release\docs.obj
+.\Release\getopt.obj
+.\Release\getopt1.obj
+.\Release\graph3dview.obj
+.\Release\threadproj.obj
+.\Release\threadraster.obj
+.\Release\threadrecon.obj
+.\Release\tips.obj
+.\Release\views.obj
+.\Release\ctsim.res
+\ctsim\msvc\libctsim\Release\libctsim.lib
+]
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP37A.tmp"
+<h3>Output Window</h3>
+Linking...
+LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF
+
+
+
+<h3>Results</h3>
+ctsim.exe - 0 error(s), 1 warning(s)
+</pre>
+</body>
+</html>
diff --git a/msvc/ctsim/ctsim.rc b/msvc/ctsim/ctsim.rc
new file mode 100644
index 0000000..0d62ea8
--- /dev/null
+++ b/msvc/ctsim/ctsim.rc
@@ -0,0 +1,3 @@
+ICON_APP		ICON "logo.ico"
+
+#include "wx/msw/wx.rc"
diff --git a/msvc/ctsim/ctsim.vcproj b/msvc/ctsim/ctsim.vcproj
new file mode 100755
index 0000000..f813b1b
--- /dev/null
+++ b/msvc/ctsim/ctsim.vcproj
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="ctsim"
+	SccProjectName=""
+	SccLocalPath="">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\getopt,..\..\include,\wx2\include,\wx2\src\png,\fftw-2.1.3\fftw,\fftw-2.1.3\rfftw,\wx2\src\zlib,\ctn\include,\wx2\lib\msw"
+				PreprocessorDefinitions="NDEBUG,VERSION=\"4.0.2\",_WINDOWS,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WIN95__,__WIN32__,WIN32,HAVE_CTN_DICOM,CTSIMVERSION=\"4.0.2\""
+				StringPooling="TRUE"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="TRUE"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Release/ctsim.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="ctn_lib.lib winmm.lib wxmsw.lib png.lib tiff.lib jpeg.lib zlib.lib odbc32.lib odbccp32.lib comctl32.lib rpcrt4.lib fftw2st.lib rfftw2st.lib opengl32.lib wsock32.lib htmlhelp.lib"
+				OutputFile=".\Release/ctsim.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="\wx2\lib,\ctn\winctn\ctn_lib\Release,\fftw-2.1.3\Win32\FFTW2st\Release,\fftw-2.1.3\Win32\RFFTW2st\Release"
+				ProgramDatabaseFile=".\Release/ctsim.pdb"
+				SubSystem="2"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/ctsim.tlb"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"
+				AdditionalIncludeDirectories="\wx2\include"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\getopt,..\..\include,\wx2\include,\wx2\src\png,\fftw-2.1.3\fftw,\fftw-2.1.3\rfftw,\wx2\src\zlib,\ctn\include,\wx2\lib\mswd"
+				PreprocessorDefinitions="_DEBUG,DEBUG,__WXDEBUG__,WXDEBUG=1,WINVER=0x0400,STRICT,VERSION=3.5.5,_WINDOWS,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WIN95__,__WIN32__,WIN32,HAVE_CTN_DICOM,CTSIMVERSION=\"4.0.1\",VERSION=\"4.0.1\""
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Debug/ctsim.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/MACHINE:I386"
+				AdditionalDependencies="wsock32.lib comctl32.lib winmm.lib rpcrt4.lib wxmswd.lib pngd.lib zlibd.lib jpegd.lib tiffd.lib opengl32.lib fftw2st.lib rfftw2st.lib odbc32.lib odbccp32.lib ctn_lib.lib htmlhelp.lib"
+				OutputFile=".\Debug/ctsim.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="\fftw-2.1.3\win32\fftw2st\Debug,\fftw-2.1.3\win32\rfftw2st\Debug,\wx2\lib,\ctn\winctn\ctn_lib\Debug"
+				IgnoreDefaultLibraryNames="libcd.lib,libcid.lib,msvcrtd.lib"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/ctsim.pdb"
+				SubSystem="2"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/ctsim.tlb"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"
+				AdditionalIncludeDirectories="\wx2\include;\wx2\contrib\include"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+	</Configurations>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\..\src\backgroundmgr.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\backgroundsupr.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\ctsim.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\dialogs.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\dlgezplot.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\dlgprojections.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\dlgreconstruct.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\docs.cpp">
+			</File>
+			<File
+				RelativePath="..\..\getopt\getopt.c">
+			</File>
+			<File
+				RelativePath="..\..\getopt\getopt1.c">
+			</File>
+			<File
+				RelativePath="..\..\src\graph3dview.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\threadproj.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\threadraster.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\threadrecon.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\tips.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\views.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\..\src\backgroundmgr.h">
+			</File>
+			<File
+				RelativePath="..\..\src\backgroundsupr.h">
+			</File>
+			<File
+				RelativePath="..\..\src\ctsim-map.h">
+			</File>
+			<File
+				RelativePath="..\..\src\ctsim.h">
+			</File>
+			<File
+				RelativePath="..\..\src\dialogs.h">
+			</File>
+			<File
+				RelativePath="..\..\src\dlgezplot.h">
+			</File>
+			<File
+				RelativePath="..\..\src\dlgprojections.h">
+			</File>
+			<File
+				RelativePath="..\..\src\dlgreconstruct.h">
+			</File>
+			<File
+				RelativePath="..\..\src\graph3dview.h">
+			</File>
+			<File
+				RelativePath="..\..\src\threadraster.h">
+			</File>
+			<File
+				RelativePath="..\..\src\threadrecon.h">
+			</File>
+			<File
+				RelativePath="..\..\src\tips.h">
+			</File>
+			<File
+				RelativePath="..\..\src\views.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath=".\wx\msw\blank.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\bullseye.cur">
+			</File>
+			<File
+				RelativePath=".\ctsim.rc">
+			</File>
+			<File
+				RelativePath=".\wx\msw\error.ico">
+			</File>
+			<File
+				RelativePath=".\wx\msw\hand.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\info.ico">
+			</File>
+			<File
+				RelativePath=".\logo.ico">
+			</File>
+			<File
+				RelativePath=".\wx\msw\magnif1.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\noentry.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\pbrush.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\pencil.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\pntleft.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\pntright.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\query.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\question.ico">
+			</File>
+			<File
+				RelativePath=".\wx\msw\roller.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\size.cur">
+			</File>
+			<File
+				RelativePath=".\wx\msw\tip.ico">
+			</File>
+			<File
+				RelativePath=".\wx\msw\warning.ico">
+			</File>
+			<File
+				RelativePath=".\wx\msw\watch1.cur">
+			</File>
+			<File
+				RelativePath=".\wx\html\msw\wbook.ico">
+			</File>
+			<File
+				RelativePath=".\wx\html\msw\wfolder.ico">
+			</File>
+			<File
+				RelativePath=".\wx\html\msw\whelp.ico">
+			</File>
+			<File
+				RelativePath=".\wx\html\msw\whlproot.ico">
+			</File>
+			<File
+				RelativePath=".\wx\html\msw\wpage.ico">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/msvc/ctsim/logo.ico b/msvc/ctsim/logo.ico
new file mode 100644
index 0000000..d5e6f73
Binary files /dev/null and b/msvc/ctsim/logo.ico differ
diff --git a/msvc/ctsimtext/ctsimtext.dsp b/msvc/ctsimtext/ctsimtext.dsp
new file mode 100644
index 0000000..e0002f5
--- /dev/null
+++ b/msvc/ctsimtext/ctsimtext.dsp
@@ -0,0 +1,167 @@
+# Microsoft Developer Studio Project File - Name="ctsimtext" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=ctsimtext - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "ctsimtext.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "ctsimtext.mak" CFG="ctsimtext - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "ctsimtext - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ctsimtext - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "ctsimtext - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /D "_CONSOLE" /D "NOMAIN" /D "__WIN95__" /D "__WIN32__" /D "_WINDOWS" /D "__WXMSW__" /D "MSVC" /D "NDEBUG" /D VERSION=\"3.5.5\" /D "WIN32" /D "HAVE_CTN_DICOM" /YX /FD /D _WI"NDOWS,_MBCS,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WI [...]
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 wx.lib zlib.lib tiff.lib jpeg.lib png.lib libctsim.lib fftw2st.lib rfftw2st.lib wsock32.lib comctl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib /nologo /subsystem:console /machine:I386 /libpath:"..\libctsim\Release" /libpath:"\fftw-2.1.3\Win32\RFFTW2st\Release" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Release" /libpath:"\wx2\\" /libpath:"\wx2\lib" /libpath:"\ctn\winct [...]
+
+!ELSEIF  "$(CFG)" == "ctsimtext - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /D "_CONSOLE" /D "NOMAIN" /D "_DEBUG" /D "DEBUG" /D "_WINDOWS" /D "__WXDEBUG__" /D WXDEBUG=1 /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINV [...]
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /i "\wx2\include" /i "\wx2\contrib\include" /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 wxd.lib libctsim.lib zlibd.lib tiffd.lib jpegd.lib pngd.lib fftw2st.lib rfftw2st.lib wsock32.lib comctl32.lib winmm.lib rpcrt4.lib xpmd.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ctn_lib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\libctsim\Debug" /libpath:"\fftw-2.1.3\Win32\RFFTW2st\Debug" /libpath:"\fftw-2.1.3\Win32\FFTW2st\Debug" /libpath [...]
+# SUBTRACT LINK32 /nodefaultlib
+
+!ENDIF 
+
+# Begin Target
+
+# Name "ctsimtext - Win32 Release"
+# Name "ctsimtext - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\tools\ctsimtext.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\getopt\getopt.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\getopt\getopt1.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\if1.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\if2.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\ifexport.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\ifinfo.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\nographics.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\phm2helix.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\phm2if.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\phm2pj.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\pj2if.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\pjHinterp.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\pjinfo.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\tools\pjrec.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\getopt\getopt.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\ctsimtext.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/msvc/ctsimtext/ctsimtext.rc b/msvc/ctsimtext/ctsimtext.rc
new file mode 100644
index 0000000..9e147ce
--- /dev/null
+++ b/msvc/ctsimtext/ctsimtext.rc
@@ -0,0 +1 @@
+ICON_APP		ICON "logo.ico"
diff --git a/msvc/ctsimtext/ctsimtext.vcproj b/msvc/ctsimtext/ctsimtext.vcproj
new file mode 100755
index 0000000..8012683
--- /dev/null
+++ b/msvc/ctsimtext/ctsimtext.vcproj
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="ctsimtext"
+	SccProjectName=""
+	SccLocalPath="">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include,..\..\getopt,\fftw-2.1.3\fftw,\fftw-2.1.3\rfftw,\wx2\include,\wx2\src\png,\wx2\src\zlib,\wx2\src\tiff,\wx2\src\xpm,\wx2\lib\mswd"
+				PreprocessorDefinitions="_CONSOLE,NOMAIN,_DEBUG,DEBUG,_WINDOWS,__WXDEBUG__,WXDEBUG=1,HAVE_STRING_H,HAVE_GETOPT_H,MSVC,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,__WXMSW__,__WIN95__,__WIN32__,WINVER=0x0400,STRICT,VERSION=\"4.0.2\",WIN32,HAVE_CTN_DICOM"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Debug/ctsimtext.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/MACHINE:I386"
+				AdditionalDependencies="wxmswd.lib libctsim.lib zlibd.lib tiffd.lib jpegd.lib pngd.lib fftw2st.lib rfftw2st.lib wsock32.lib comctl32.lib winmm.lib rpcrt4.lib odbc32.lib odbccp32.lib ctn_lib.lib"
+				OutputFile=".\Debug/ctsimtext.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="..\libctsim\Debug,\fftw-2.1.3\Win32\RFFTW2st\Debug,\fftw-2.1.3\Win32\FFTW2st\Debug,\fftw-2.1.3\fftw2st\Debug,\fftw-2.1.3\rfftw2st\Release,\wx2\lib,\ctn\winctn\ctn_lib\Debug"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/ctsimtext.pdb"
+				SubSystem="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Debug/ctsimtext.tlb"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"
+				AdditionalIncludeDirectories="\wx2\include;\wx2\contrib\include"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include,..\..\getopt,\fftw-2.1.3\fftw,\fftw-2.1.3\rfftw,\wx2\include,\wx2\src\png,\wx2\src\zlib,\wx2\src\tiff,\wx2\lib\msw"
+				PreprocessorDefinitions="_CONSOLE,NOMAIN,__WIN95__,__WIN32__,_WINDOWS,__WXMSW__,MSVC,NDEBUG,VERSION=\"4.0.2\",WIN32,HAVE_CTN_DICOM,HAVE_GETOPT_H,HAVE_STRING_H"
+				StringPooling="TRUE"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="TRUE"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Release/ctsimtext.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalOptions="/MACHINE:I386"
+				AdditionalDependencies="wxmsw.lib zlib.lib tiff.lib jpeg.lib png.lib libctsim.lib fftw2st.lib rfftw2st.lib wsock32.lib comctl32.lib odbc32.lib odbccp32.lib ctn_lib.lib"
+				OutputFile=".\Release/ctsimtext.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				AdditionalLibraryDirectories="..\libctsim\Release,\fftw-2.1.3\Win32\RFFTW2st\Release,\fftw-2.1.3\Win32\FFTW2st\Release,\wx2\,\wx2\lib,\ctn\winctn\ctn_lib\Release"
+				ProgramDatabaseFile=".\Release/ctsimtext.pdb"
+				SubSystem="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Release/ctsimtext.tlb"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+		</Configuration>
+	</Configurations>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\..\tools\ctsimtext.cpp">
+			</File>
+			<File
+				RelativePath="..\..\getopt\getopt.c">
+			</File>
+			<File
+				RelativePath="..\..\getopt\getopt1.c">
+			</File>
+			<File
+				RelativePath="..\..\tools\if1.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\if2.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\ifexport.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\ifinfo.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\nographics.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\phm2helix.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\phm2if.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\phm2pj.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\pj2if.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\pjHinterp.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\pjinfo.cpp">
+			</File>
+			<File
+				RelativePath="..\..\tools\pjrec.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\..\getopt\getopt.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+			<File
+				RelativePath=".\ctsimtext.rc">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/msvc/ctsimtext/logo.ico b/msvc/ctsimtext/logo.ico
new file mode 100644
index 0000000..d5e6f73
Binary files /dev/null and b/msvc/ctsimtext/logo.ico differ
diff --git a/msvc/libctsim/libctsim.dsp b/msvc/libctsim/libctsim.dsp
new file mode 100644
index 0000000..8f7a90c
--- /dev/null
+++ b/msvc/libctsim/libctsim.dsp
@@ -0,0 +1,324 @@
+# Microsoft Developer Studio Project File - Name="libctsim" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=libctsim - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE 
+!MESSAGE NMAKE /f "libctsim.mak".
+!MESSAGE 
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE 
+!MESSAGE NMAKE /f "libctsim.mak" CFG="libctsim - Win32 Debug"
+!MESSAGE 
+!MESSAGE Possible choices for configuration are:
+!MESSAGE 
+!MESSAGE "libctsim - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "libctsim - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE 
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF  "$(CFG)" == "libctsim - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /I "\ctn\include" /D "_LIB" /D "__WIN95__" /D "__WIN32__" /D "_WINDOWS" /D "__WXMSW__" /D "MSVC" /D "NDEBUG" /D VERSION=\"3.5.5\" /D "WIN32" /D "HAVE_CTN_DICOM" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D WINVER=0x04 [...]
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF  "$(CFG)" == "libctsim - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /G6 /MTd /W3 /Gm /Gi /GR /GX /ZI /Od /I "..\..\include" /I "..\..\getopt" /I "\fftw-2.1.3\fftw" /I "\fftw-2.1.3\rfftw" /I "\wx2\include" /I "\wx2\src\png" /I "\wx2\src\zlib" /I "\wx2\src\tiff" /I "\wx2\src\xpm" /I "\ctn\include" /D "_LIB" /D "_DEBUG" /D "DEBUG" /D "_WINDOWS" /D "__WXDEBUG__" /D WXDEBUG=1 /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" / [...]
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF 
+
+# Begin Target
+
+# Name "libctsim - Win32 Release"
+# Name "libctsim - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\libctsim\array2dfile.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\backprojectors.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\clip.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\consoleio.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\ctndicom.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctgraphics\ezplot.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctgraphics\ezset.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctgraphics\ezsupport.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\filter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\fnetorderstream.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\fourier.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\globalvars.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\hashtable.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\imagefile.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\interpolator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\mathfuncs.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\msvc.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\phantom.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\plotfile.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctgraphics\pol.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\procsignal.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\projections.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\reconstruct.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\scanner.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctgraphics\sgp.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\strfuncs.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\syserror.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsim\trace.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctgraphics\transformmatrix.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\libctsupport\xform.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\include\array2d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\array2dfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\backprojectors.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\ct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\ctglobals.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\ctndicom.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\ctsupport.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\ezplot.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\filter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\fnetorderstream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\fourier.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\hashtable.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\imagefile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\interpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\mpiworld.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\msvc_compat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\nographics.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\phantom.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\plotfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\pol.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\procsignal.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\projections.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\reconstruct.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\scanner.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\sgp.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\timer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\trace.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\transformmatrix.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/msvc/libctsim/libctsim.vcproj b/msvc/libctsim/libctsim.vcproj
new file mode 100755
index 0000000..0320046
--- /dev/null
+++ b/msvc/libctsim/libctsim.vcproj
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding = "Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.00"
+	Name="libctsim"
+	SccProjectName=""
+	SccLocalPath="">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="4"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include,..\..\getopt,\fftw-2.1.3\fftw,\fftw-2.1.3\rfftw,\wx2\include,\wx2\src\png,\wx2\src\zlib,\wx2\src\tiff,\wx2\src\xpm,\ctn\include,/wx2/lib/mswd"
+				PreprocessorDefinitions="_LIB;_DEBUG;DEBUG;_WINDOWS;__WXDEBUG__;WXDEBUG=1;HAVE_STRING_H;HAVE_GETOPT_H;MSVC;HAVE_FFTW;HAVE_PNG;HAVE_SGP;HAVE_WXWINDOWS;__WXMSW__;__WIN95__;__WIN32__;WINVER=0x0400;STRICT;VERSION=\"4.0.2\";WIN32;HAVE_CTN_DICOM"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Debug/libctsim.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile=".\Debug\libctsim.lib"
+				SuppressStartupBanner="TRUE"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="4"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="2"
+				EnableIntrinsicFunctions="TRUE"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="TRUE"
+				OptimizeForProcessor="2"
+				AdditionalIncludeDirectories="..\..\include,..\..\getopt,\fftw-2.1.3\fftw,\fftw-2.1.3\rfftw,\wx2\include,\wx2\src\png,\wx2\src\zlib,\wx2\src\tiff,\wx2\lib\msw,\ctn\include"
+				PreprocessorDefinitions="_LIB,__WIN95__,__WIN32__,_WINDOWS,__WXMSW__,MSVC,NDEBUG,VERSION=\"4.0.2\",WIN32,HAVE_CTN_DICOM,HAVE_STRING_H,HAVE_GETOPT_H,HAVE_FFTW,HAVE_PNG,HAVE_SGP,HAVE_WXWINDOWS,WINVER=0x0400,STRICT"
+				StringPooling="TRUE"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="TRUE"
+				RuntimeTypeInfo="TRUE"
+				UsePrecompiledHeader="2"
+				PrecompiledHeaderFile=".\Release/libctsim.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile=".\Release\libctsim.lib"
+				SuppressStartupBanner="TRUE"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\..\libctsim\array2dfile.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\backprojectors.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\clip.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\consoleio.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\ctndicom.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctgraphics\ezplot.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctgraphics\ezset.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctgraphics\ezsupport.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\filter.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\fnetorderstream.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\fourier.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\globalvars.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\hashtable.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\imagefile.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\interpolator.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\mathfuncs.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\msvc.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\phantom.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\plotfile.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctgraphics\pol.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\procsignal.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\projections.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\reconstruct.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\scanner.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctgraphics\sgp.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\strfuncs.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\syserror.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsim\trace.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctgraphics\transformmatrix.cpp">
+			</File>
+			<File
+				RelativePath="..\..\libctsupport\xform.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\..\include\array2d.h">
+			</File>
+			<File
+				RelativePath="..\..\include\array2dfile.h">
+			</File>
+			<File
+				RelativePath="..\..\include\backprojectors.h">
+			</File>
+			<File
+				RelativePath="..\..\include\ct.h">
+			</File>
+			<File
+				RelativePath="..\..\include\ctglobals.h">
+			</File>
+			<File
+				RelativePath="..\..\include\ctndicom.h">
+			</File>
+			<File
+				RelativePath="..\..\include\ctsupport.h">
+			</File>
+			<File
+				RelativePath="..\..\include\ezplot.h">
+			</File>
+			<File
+				RelativePath="..\..\include\filter.h">
+			</File>
+			<File
+				RelativePath="..\..\include\fnetorderstream.h">
+			</File>
+			<File
+				RelativePath="..\..\include\fourier.h">
+			</File>
+			<File
+				RelativePath="..\..\include\hashtable.h">
+			</File>
+			<File
+				RelativePath="..\..\include\imagefile.h">
+			</File>
+			<File
+				RelativePath="..\..\include\interpolator.h">
+			</File>
+			<File
+				RelativePath="..\..\include\mpiworld.h">
+			</File>
+			<File
+				RelativePath="..\..\include\msvc_compat.h">
+			</File>
+			<File
+				RelativePath="..\..\include\nographics.h">
+			</File>
+			<File
+				RelativePath="..\..\include\phantom.h">
+			</File>
+			<File
+				RelativePath="..\..\include\plotfile.h">
+			</File>
+			<File
+				RelativePath="..\..\include\pol.h">
+			</File>
+			<File
+				RelativePath="..\..\include\procsignal.h">
+			</File>
+			<File
+				RelativePath="..\..\include\projections.h">
+			</File>
+			<File
+				RelativePath="..\..\include\reconstruct.h">
+			</File>
+			<File
+				RelativePath="..\..\include\scanner.h">
+			</File>
+			<File
+				RelativePath="..\..\include\sgp.h">
+			</File>
+			<File
+				RelativePath="..\..\include\timer.h">
+			</File>
+			<File
+				RelativePath="..\..\include\trace.h">
+			</File>
+			<File
+				RelativePath="..\..\include\transformmatrix.h">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/rpm/ctsim.spec b/rpm/ctsim.spec
new file mode 100644
index 0000000..19f26ea
--- /dev/null
+++ b/rpm/ctsim.spec
@@ -0,0 +1,50 @@
+# Version of CTSim
+%define version 3.5.0
+
+Summary: CTSim - Open-Source Computed Tomography Simulator
+Name: ctsim
+Version: %{version}
+Release: 1
+Packager: Kevin Rosenberg <kevin at rosenberg.net>
+Source: ftp.ctsim.org:/pub/ctsim/ctsim-%{version}.tar.gz
+Copyright: GPL
+Group: Applications/Scientific
+
+%description
+CTSim is a Computed Tomography Simulator.
+
+%prep
+%setup 
+
+%build
+CFLAGS="$RPM_OPT_FLAGS" \
+	./configure --prefix=/usr --enable-static --without-lam
+make
+
+%install
+strip src/ctsim
+strip tools/ctsimtext
+install -s -m 755 -o 0 -g 0 src/ctsim /usr/bin/ctsim
+install -s -m 755 -o 0 -g 0 tools/ctsimtext /usr/bin/ctsimtext
+install -m 755 -o 0 -g 0 tools/sample-ctsim.sh /usr/bin/sample-ctsim.sh
+mkdir -p /usr/share/ctsim
+install -m 755 -o 0 -g 0 doc/ctsim.htb /usr/share/ctsim/ctsim.htb
+ln -sf ctsimtext /usr/bin/if1
+ln -sf ctsimtext /usr/bin/if2
+ln -sf ctsimtext /usr/bin/ifexport
+ln -sf ctsimtext /usr/bin/ifinfo
+ln -sf ctsimtext /usr/bin/phm2if
+ln -sf ctsimtext /usr/bin/phm2pj
+ln -sf ctsimtext /usr/bin/pj2if
+ln -sf ctsimtext /usr/bin/pjinfo
+ln -sf ctsimtext /usr/bin/pjrec
+
+%files
+%doc NEWS README COPYING ChangeLog INSTALL
+
+/usr/bin/ctsim
+/usr/bin/ctsimtext
+/usr/share/ctsim/ctsim.htb
+/usr/share/ctsim/sample-ctsim.sh
+
+
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..4ba69c1
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,484 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# src/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+bin_PROGRAMS = ctsim$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_ctsim_OBJECTS = ctsim.$(OBJEXT) docs.$(OBJEXT) views.$(OBJEXT) \
+	dialogs.$(OBJEXT) dlgprojections.$(OBJEXT) \
+	dlgreconstruct.$(OBJEXT) graph3dview.$(OBJEXT) tips.$(OBJEXT) \
+	threadrecon.$(OBJEXT) backgroundmgr.$(OBJEXT) \
+	backgroundsupr.$(OBJEXT) threadproj.$(OBJEXT) \
+	threadraster.$(OBJEXT) dlgezplot.$(OBJEXT)
+ctsim_OBJECTS = $(am_ctsim_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(ctsim_SOURCES)
+DIST_SOURCES = $(ctsim_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+INCLUDES =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+ctsim_SOURCES = ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h \
+views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp \
+dlgreconstruct.h  graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm \
+splash.xpm tips.cpp tips.h threadrecon.cpp threadrecon.h backgroundmgr.cpp \
+backgroundmgr.h backgroundsupr.cpp backgroundsupr.h threadproj.cpp \
+threadproj.h threadraster.cpp threadraster.h dlgezplot.cpp dlgezplot.h
+
+ctsim_DEPENDENCIES = ../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h
+ctsim_LDADD = -L../libctgraphics -L../libctsupport -L../libctsim  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ctsim$(EXEEXT): $(ctsim_OBJECTS) $(ctsim_DEPENDENCIES) 
+	@rm -f ctsim$(EXEEXT)
+	$(CXXLINK) $(ctsim_LDFLAGS) $(ctsim_OBJECTS) $(ctsim_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/backgroundmgr.Po
+include ./$(DEPDIR)/backgroundsupr.Po
+include ./$(DEPDIR)/ctsim.Po
+include ./$(DEPDIR)/dialogs.Po
+include ./$(DEPDIR)/dlgezplot.Po
+include ./$(DEPDIR)/dlgprojections.Po
+include ./$(DEPDIR)/dlgreconstruct.Po
+include ./$(DEPDIR)/docs.Po
+include ./$(DEPDIR)/graph3dview.Po
+include ./$(DEPDIR)/threadproj.Po
+include ./$(DEPDIR)/threadraster.Po
+include ./$(DEPDIR)/threadrecon.Po
+include ./$(DEPDIR)/tips.Po
+include ./$(DEPDIR)/views.Po
+
+.cpp.o:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-exec install-exec-am \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..3b1bf0e
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,13 @@
+INCLUDES=@my_includes@
+
+bin_PROGRAMS=ctsim
+
+ctsim_SOURCES=ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h \
+views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp \
+dlgreconstruct.h  graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm \
+splash.xpm tips.cpp tips.h threadrecon.cpp threadrecon.h backgroundmgr.cpp \
+backgroundmgr.h backgroundsupr.cpp backgroundsupr.h threadproj.cpp \
+threadproj.h threadraster.cpp threadraster.h dlgezplot.cpp dlgezplot.h
+
+ctsim_DEPENDENCIES=../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h
+ctsim_LDADD=-L../libctgraphics -L../libctsupport -L../libctsim @ctlibs@
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..248d2a1
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,519 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = ctsim$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_ctsim_OBJECTS = ctsim.$(OBJEXT) docs.$(OBJEXT) views.$(OBJEXT) \
+	dialogs.$(OBJEXT) dlgprojections.$(OBJEXT) \
+	dlgreconstruct.$(OBJEXT) graph3dview.$(OBJEXT) tips.$(OBJEXT) \
+	threadrecon.$(OBJEXT) backgroundmgr.$(OBJEXT) \
+	backgroundsupr.$(OBJEXT) threadproj.$(OBJEXT) \
+	threadraster.$(OBJEXT) dlgezplot.$(OBJEXT)
+ctsim_OBJECTS = $(am_ctsim_OBJECTS)
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(ctsim_SOURCES)
+DIST_SOURCES = $(ctsim_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+INCLUDES = @my_includes@
+ctsim_SOURCES = ctsim.cpp docs.cpp views.cpp dialogs.cpp ctsim.h docs.h \
+views.h dialogs.h dlgprojections.cpp dlgprojections.h dlgreconstruct.cpp \
+dlgreconstruct.h  graph3dview.cpp graph3dview.h ctsim-map.h ctsim.xpm \
+splash.xpm tips.cpp tips.h threadrecon.cpp threadrecon.h backgroundmgr.cpp \
+backgroundmgr.h backgroundsupr.cpp backgroundsupr.h threadproj.cpp \
+threadproj.h threadraster.cpp threadraster.h dlgezplot.cpp dlgezplot.h
+
+ctsim_DEPENDENCIES = ../libctgraphics/libctgraphics.a ../libctsupport/libctsupport.a ../libctsim/libctsim.a ../include/ct.h
+ctsim_LDADD = -L../libctgraphics -L../libctsupport -L../libctsim @ctlibs@
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ctsim$(EXEEXT): $(ctsim_OBJECTS) $(ctsim_DEPENDENCIES) 
+	@rm -f ctsim$(EXEEXT)
+	$(CXXLINK) $(ctsim_OBJECTS) $(ctsim_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/backgroundmgr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/backgroundsupr.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctsim.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dialogs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dlgezplot.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dlgprojections.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/dlgreconstruct.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/docs.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/graph3dview.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/threadproj.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/threadraster.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/threadrecon.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tips.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/views.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/backgroundmgr.cpp b/src/backgroundmgr.cpp
new file mode 100644
index 0000000..f40cc91
--- /dev/null
+++ b/src/backgroundmgr.cpp
@@ -0,0 +1,264 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          backgroundmgr.cpp
+**   Purpose:       Background manager class
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "backgroundsupr.h"
+#include "backgroundmgr.h"
+
+#ifdef HAVE_WXTHREADS
+
+int BackgroundManager::s_iNextButtonID = 0;
+
+IMPLEMENT_DYNAMIC_CLASS(BackgroundManager, wxMiniFrame)
+BEGIN_EVENT_TABLE(BackgroundManager, wxMiniFrame)
+EVT_MENU(BackgroundSupervisor::MSG_BACKGROUND_SUPERVISOR_ADD, BackgroundManager::OnAddTask)
+EVT_MENU(BackgroundSupervisor::MSG_BACKGROUND_SUPERVISOR_REMOVE, BackgroundManager::OnRemoveTask)
+EVT_MENU(BackgroundSupervisor::MSG_BACKGROUND_SUPERVISOR_UNIT_TICK, BackgroundManager::OnUnitTick)
+EVT_CLOSE(BackgroundManager::OnCloseWindow)
+EVT_COMMAND_RANGE(0, 30000, wxEVT_COMMAND_BUTTON_CLICKED, BackgroundManager::OnCancelButton)
+END_EVENT_TABLE()
+
+
+BackgroundManager::BackgroundManager ()
+  : wxMiniFrame (theApp->getMainFrame(), -1, _T("Background Tasks"), wxPoint(0,0), wxSize(210, 50))
+{
+  m_iNumTasks = 0;
+  m_pCanvas = new BackgroundManagerCanvas (this);
+  theApp->setIconForFrame (this);
+
+  m_sizeGauge.Set (70, 20);
+  m_sizeLabel.Set (140, 20);
+  m_sizeBorder.Set (4, 4);
+  m_sizeCellSpacing.Set (3, 3);
+  m_sizeButton.Set (70, 20);
+
+  m_sizeCell.Set (m_sizeGauge.x + m_sizeLabel.x + m_sizeCellSpacing.x + m_sizeButton.x, 25);
+
+  theApp->getMainFrame()->SetFocus();
+  Show(false);
+}
+
+
+BackgroundManager::~BackgroundManager()
+{
+}
+
+void
+BackgroundManager::OnCloseWindow (wxCloseEvent& event)
+{
+  if (theApp->getMainFrame()->getShuttingDown())
+    wxMiniFrame::OnCloseWindow (event);
+  else
+    event.Veto();
+}
+
+void
+BackgroundManager::OnUnitTick (wxCommandEvent& event)
+{
+  int iUnits = event.GetInt();
+
+  BackgroundSupervisor* pSupervisor = reinterpret_cast<BackgroundSupervisor*>(event.GetClientData());
+  if (pSupervisor == NULL) {
+    sys_error (ERR_SEVERE, "Received NULL task [BackgroundManager::OnUnitTick]");
+    return;
+  }
+
+  BackgroundManagerTask* pTask = lookupTask (pSupervisor);
+  if (pTask == NULL) {
+          sys_error (ERR_SEVERE, "Error looking up task [BackgroundManager::OnUnitTick]");
+          return;
+  }
+  pTask->gauge()->SetValue (iUnits);
+}
+
+void
+BackgroundManager::OnAddTask (wxCommandEvent& event)
+{
+  int iNumUnits = event.GetInt();
+  const char* const pszTaskName = event.GetString().mb_str(wxConvUTF8);
+  BackgroundSupervisor* pSupervisor = reinterpret_cast<BackgroundSupervisor*>(event.GetClientData());
+  if (pSupervisor == NULL) {
+    sys_error (ERR_SEVERE, "Received NULL supervisor [BackgroundManager::OnAddTask]");
+    return;
+  }
+
+  wxCriticalSectionLocker locker (m_criticalSection);
+
+  int iNumTasks = m_vecpTasks.size();
+  std::vector<bool> vecPositionUsed (iNumTasks);  //vector of used table positions
+  for (int iP = 0; iP < iNumTasks; iP++)
+    vecPositionUsed[iP] = false;
+
+  for (TaskContainer::iterator iT = m_vecpTasks.begin(); iT != m_vecpTasks.end(); iT++) {
+    int iPosUsed = (*iT)->position();
+    if (iPosUsed < iNumTasks)
+      vecPositionUsed[iPosUsed] = true;
+  }
+
+  int iFirstUnusedPos = iNumTasks;  // default is just past current number of tasks
+  for (int i = 0; i < iNumTasks; i++)
+    if (! vecPositionUsed[i]) {
+      iFirstUnusedPos = i;
+      break;
+    }
+
+  wxPoint posGauge (m_sizeBorder.x, m_sizeBorder.y + iFirstUnusedPos * m_sizeCell.y);
+  wxPoint posLabel (m_sizeBorder.x + m_sizeGauge.x, m_sizeBorder.y + iFirstUnusedPos * m_sizeCell.y);
+  wxPoint posButton (m_sizeBorder.x + m_sizeGauge.x + m_sizeLabel.x, m_sizeBorder.y + iFirstUnusedPos * m_sizeCell.y);
+  wxGauge* pGauge = new wxGauge (m_pCanvas, -1, iNumUnits, posGauge, m_sizeGauge);
+  wxStaticText* pLabel = new wxStaticText (m_pCanvas, -1, wxConvUTF8.cMB2WX(pszTaskName), posLabel, m_sizeLabel);
+  wxButton* pButton = new wxButton (m_pCanvas, s_iNextButtonID, _T("Cancel"), posButton, m_sizeButton, wxBU_LEFT);
+
+  BackgroundManagerTask* pTask = new BackgroundManagerTask (pSupervisor, pszTaskName,
+    iFirstUnusedPos, pGauge, pLabel, pButton, s_iNextButtonID);
+
+  m_vecpTasks.push_back (pTask);
+  m_iNumTasks++;
+  s_iNextButtonID++;
+
+  resizeWindow();
+  if (m_iNumTasks == 1) {
+    m_pCanvas->SetFocus();
+    Show(true);
+  }
+}
+
+void
+BackgroundManager::OnRemoveTask (wxCommandEvent& event)
+{
+  BackgroundSupervisor* pSupervisor = reinterpret_cast<BackgroundSupervisor*>(event.GetClientData());
+  if (pSupervisor == NULL) {
+    sys_error (ERR_SEVERE, "Received NULL task [BackgroundManager::OnRemoveTask]");
+    return;
+  }
+
+  wxCriticalSectionLocker locker (m_criticalSection);
+
+  bool bFound = false;
+  for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) {
+    if ((*iTask)->supervisor() == pSupervisor) {
+          delete (*iTask)->gauge();
+            delete (*iTask)->label();
+            delete (*iTask)->button();
+      delete *iTask;
+      m_vecpTasks.erase (iTask);
+      m_iNumTasks--;
+            bFound = true;
+      break;
+    }
+  }
+  if (! bFound)  {
+          sys_error (ERR_SEVERE, "Unable to find supervisor [BackgroundManager::OnRemoveTask]");
+    return;
+  }
+  pSupervisor->ackRemoveBackgroundManager();
+  resizeWindow();
+  if (m_iNumTasks <= 0) {
+    m_pCanvas->SetFocus();
+    Show(false);
+  }
+}
+
+void
+BackgroundManager::OnCancelButton (wxCommandEvent& event)
+{
+  BackgroundManagerTask* pTask = lookupTask (event.GetId());
+  if (! pTask) {
+    sys_error (ERR_SEVERE, "Unable to lookup task for button");
+    return;
+  }
+
+  pTask->supervisor()->onCancel();
+}
+
+BackgroundManagerTask*
+BackgroundManager::lookupTask (BackgroundSupervisor* pSupervisor)
+{
+  BackgroundManagerTask* pTask = NULL;
+
+  wxCriticalSectionLocker locker (m_criticalSection);
+  for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) {
+    if ((*iTask)->supervisor() == pSupervisor) {
+      pTask = *iTask;
+      break;
+    }
+  }
+
+  return pTask;
+}
+
+BackgroundManagerTask*
+BackgroundManager::lookupTask (int iButtonID)
+{
+  BackgroundManagerTask* pTask = NULL;
+
+  wxCriticalSectionLocker locker (m_criticalSection);
+  for (TaskContainer::iterator iTask = m_vecpTasks.begin(); iTask != m_vecpTasks.end(); iTask++) {
+    if ((*iTask)->buttonID() == iButtonID) {
+      pTask = *iTask;
+      break;
+    }
+  }
+
+  return pTask;
+}
+
+void
+BackgroundManager::resizeWindow()
+{
+  int iHighestPosition = -1;
+
+  wxCriticalSectionLocker lock (m_criticalSection);
+  for (TaskContainer::iterator i = m_vecpTasks.begin(); i != m_vecpTasks.end(); i++)
+    if (iHighestPosition < (*i)->position())
+      iHighestPosition = (*i)->position();
+
+  wxSize sizeWindow (m_sizeCell.x, m_sizeCell.y * (iHighestPosition + 1));
+  SetClientSize (sizeWindow);
+  m_pCanvas->Refresh();
+}
+
+
+
+IMPLEMENT_DYNAMIC_CLASS(BackgroundManagerCanvas, wxPanel)
+BEGIN_EVENT_TABLE(BackgroundManagerCanvas, wxPanel)
+END_EVENT_TABLE()
+
+BackgroundManagerCanvas::BackgroundManagerCanvas (BackgroundManager* pMgr)
+: wxPanel (pMgr), m_pBackgroundManager(pMgr)
+{
+}
+
+
+#endif // HAVE_WXTHREADS
diff --git a/src/backgroundmgr.h b/src/backgroundmgr.h
new file mode 100644
index 0000000..225a78e
--- /dev/null
+++ b/src/backgroundmgr.h
@@ -0,0 +1,134 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          backgroundmgr.h
+**   Purpose:       Header file for background manager
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _BACKGROUND_MGR_H
+
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+#include "wx/minifram.h"
+#include "wx/gauge.h"
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "threadrecon.h"
+
+#include <list>
+
+#ifdef HAVE_WXTHREADS
+
+class BackgroundManagerCanvas;
+class BackgroundManagerTask;
+
+
+class BackgroundManager : public wxMiniFrame
+{
+private:
+
+  DECLARE_DYNAMIC_CLASS(BackgroundManager)
+
+  wxCriticalSection m_criticalSection;
+  BackgroundManagerCanvas* m_pCanvas;
+  int m_iNumTasks;
+
+  typedef std::list<BackgroundManagerTask*> TaskContainer;
+  TaskContainer m_vecpTasks;
+
+  void resizeWindow();
+  BackgroundManagerTask* lookupTask (BackgroundSupervisor* pSupervisor);
+  BackgroundManagerTask* lookupTask (int iButtonID);
+
+  static int s_iNextButtonID;
+
+  wxSize m_sizeGauge;
+  wxSize m_sizeLabel;
+  wxSize m_sizeCell;
+  wxSize m_sizeBorder;
+  wxSize m_sizeCellSpacing;
+  wxSize m_sizeButton;
+
+public:
+  BackgroundManager ();
+  ~BackgroundManager();
+
+  void OnAddTask (wxCommandEvent& event);
+  void OnRemoveTask (wxCommandEvent& event);
+  void OnUnitTick (wxCommandEvent& event);
+  void OnCloseWindow(wxCloseEvent& event);
+  void OnCancelButton(wxCommandEvent& event);
+
+  DECLARE_EVENT_TABLE()
+};
+
+
+class BackgroundSupervisor;
+class BackgroundManagerTask {
+private:
+  BackgroundSupervisor* m_pSupervisor;
+  const std::string m_strName;
+  const int m_iPosition;
+  wxGauge* m_pGauge;
+  wxStaticText* m_pLabel;
+  wxButton* m_pButton;
+  const int m_iButtonID;
+
+public:
+  BackgroundManagerTask (BackgroundSupervisor* pSupervisor, const char* const pszName, int iPos,
+          wxGauge* pGauge, wxStaticText* pLabel, wxButton* pButton, int iButtonID)
+          : m_pSupervisor(pSupervisor), m_strName(pszName), m_iPosition(iPos), m_pGauge(pGauge),
+    m_pLabel(pLabel), m_pButton(pButton), m_iButtonID(iButtonID)
+  {}
+
+  int position() const {return m_iPosition;}
+  const std::string& name() const {return m_strName;}
+  BackgroundSupervisor* supervisor() {return m_pSupervisor;}
+
+  wxGauge* gauge() {return m_pGauge;}
+  wxStaticText* label() {return m_pLabel;}
+  wxButton* button() {return m_pButton;}
+  int buttonID() const {return m_iButtonID;}
+};
+
+
+class BackgroundManagerCanvas : public wxPanel {
+private:
+  DECLARE_DYNAMIC_CLASS(BackgroundManagerCanvas)
+  BackgroundManager* m_pBackgroundManager;
+
+public:
+  BackgroundManagerCanvas (BackgroundManager* pBkgdMgr = NULL);
+
+  DECLARE_EVENT_TABLE()
+};
+
+#endif // HAVE_WXTHREADS
+
+#endif // _BACKGROUNDMGR_H
+
diff --git a/src/backgroundsupr.cpp b/src/backgroundsupr.cpp
new file mode 100644
index 0000000..4c031ef
--- /dev/null
+++ b/src/backgroundsupr.cpp
@@ -0,0 +1,214 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          BackgroundSupr.cpp
+**   Purpose:       Background Supervisor classes
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+// pragma line required for Fedora 4 and wxWin 2.4.2
+#pragma implementation "timer.h"
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "backgroundsupr.h"
+#include "backgroundmgr.h"
+
+#ifdef HAVE_WXTHREADS
+
+#define USE_BKGMGR 1
+
+////////////////////////////////////////////////////////////////////////////
+//
+// Class BackgroundSupervisor -- An event handler run by a SupervisorThread
+//
+////////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC_CLASS(BackgroundSupervisor, wxEvtHandler)
+BEGIN_EVENT_TABLE(BackgroundSupervisor, BackgroundSupervisor)
+END_EVENT_TABLE()
+
+
+
+BackgroundSupervisor::BackgroundSupervisor (SupervisorThread* pMyThread, wxWindow* pParentFrame, BackgroundProcessingDocument* pDocument, wxChar const* pszProcessTitle, int iTotalUnits)
+    : wxEvtHandler(), m_pMyThread(pMyThread), m_pParentFrame(pParentFrame), m_pDocument(pDocument), m_strProcessTitle(pszProcessTitle),
+    m_iTotalUnits(iTotalUnits), m_iNumThreads(0), m_bDone(false), m_bFail(false), m_bCancelled(false), m_iRunning(0),
+    m_pTimer(NULL), m_bWorkersDeleted(false), m_bBackgroundManagerAdded(false)
+{
+  m_iNumThreads = theApp->getNumberCPU();
+  //   ++m_iNumThreads;
+
+  m_vecpThreads.resize (m_iNumThreads);
+  for (int iThread = 0; iThread < m_iNumThreads; iThread++)
+    m_vecpThreads[iThread] = NULL;
+
+}
+
+BackgroundSupervisor::~BackgroundSupervisor()
+{
+  m_pDocument->removeBackgroundSupervisor (this);
+
+  delete m_pTimer;
+}
+
+void
+BackgroundSupervisor::deleteWorkers()
+{
+  wxCriticalSectionLocker lock (m_critsectThreads);
+  if (m_bWorkersDeleted)
+    return;
+
+  for (int i = 0; i < m_iNumThreads; i++)
+    if (m_vecpThreads[i])
+      m_vecpThreads[i]->Delete(); // send Destroy message to workers
+
+#ifdef USE_BKGMGR
+  wxCommandEvent doneEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_REMOVE);
+  doneEvent.SetClientData (this);
+  wxPostEvent (theApp->getBackgroundManager(), doneEvent);
+#endif
+
+  while (m_iRunning > 0 || m_bBackgroundManagerAdded)
+    m_pMyThread->Sleep(50);
+
+  m_bWorkersDeleted = true;
+}
+
+void
+BackgroundSupervisor::ackRemoveBackgroundManager()
+{
+  m_bBackgroundManagerAdded = false;
+}
+
+bool
+BackgroundSupervisor::start()
+{
+  int iBaseUnits = m_iTotalUnits / m_iNumThreads;
+  int iExtraUnits = m_iTotalUnits % m_iNumThreads;
+  int iStartUnit = 0;
+  for (int iThread = 0; iThread < m_iNumThreads; iThread++) {
+    int iNumUnits = iBaseUnits;
+    if (iThread < iExtraUnits)
+      ++iNumUnits;
+    m_vecpThreads[iThread] = createWorker (iThread, iStartUnit, iNumUnits);
+    if (! m_vecpThreads[iThread]) {
+      m_bFail = true;
+      m_strFailMessage = _T("createWorker returned NULL [BackgroundSupervisor]");
+      break;
+    }
+    if (m_vecpThreads[iThread]->Create () != wxTHREAD_NO_ERROR) {
+      m_bFail = true;
+      m_strFailMessage = _T("Thread creation failed [BackgroundSupervisor]");
+      break;
+    }
+   m_vecpThreads[iThread]->SetPriority (40);
+   iStartUnit += iNumUnits;
+  }
+  if (m_bFail)
+    return false;
+
+  m_pTimer = new Timer;
+
+  wxString strLabel (m_strProcessTitle);
+  strLabel += _T(" ");
+  strLabel += dynamic_cast<wxFrame*>(m_pParentFrame)->GetTitle();
+
+#ifdef USE_BKGMGR
+  wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_ADD);
+  addTaskEvent.SetString (strLabel);
+  addTaskEvent.SetInt (m_iTotalUnits);
+  addTaskEvent.SetClientData (this);
+  wxPostEvent (theApp->getBackgroundManager(), addTaskEvent);
+#endif
+
+  m_pDocument->addBackgroundSupervisor (this);
+  m_bBackgroundManagerAdded = true;
+
+  m_iRunning = m_iNumThreads;
+  m_iUnitsDone = 0;
+
+  for (int i = 0; i < m_iNumThreads; i++)
+    m_vecpThreads[i]->Run();
+
+  return true;
+}
+
+void
+BackgroundSupervisor::onCancel()
+{
+  m_bCancelled = true;
+  m_bDone = true;
+}
+
+
+void
+BackgroundSupervisor::onWorkerUnitTick ()
+{
+    ++m_iUnitsDone;
+
+#ifdef USE_BKGMGR
+    wxCommandEvent addTaskEvent (wxEVT_COMMAND_MENU_SELECTED, MSG_BACKGROUND_SUPERVISOR_UNIT_TICK);
+    addTaskEvent.SetInt (m_iUnitsDone - 1);
+    addTaskEvent.SetClientData (this);
+    wxPostEvent (theApp->getBackgroundManager(), addTaskEvent);
+#endif
+}
+
+void
+BackgroundSupervisor::onWorkerDone (int iThread)
+{
+        wxCriticalSection critsectDone;
+        critsectDone.Enter();
+
+  m_iRunning--;
+
+#ifdef DEBUG
+  if (theApp->getVerboseLogging()) {
+    wxString msg;
+    msg.Printf(_T("Background Supervisor: Thread finished. Remaining threads: %d\n"), m_iRunning);
+    wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+    eventLog.SetString( msg );
+    wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+  }
+#endif
+
+  critsectDone.Leave();
+}
+
+void
+BackgroundSupervisor::onWorkerFail (int iThread, const wxString& strFailMessage)
+{
+  m_iRunning--;
+  wxCommandEvent eventLog( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+  eventLog.SetString( strFailMessage );
+  wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+
+  onCancel();
+}
+
+#endif // HAVE_WXTHREADS
diff --git a/src/backgroundsupr.h b/src/backgroundsupr.h
new file mode 100644
index 0000000..8d310a4
--- /dev/null
+++ b/src/backgroundsupr.h
@@ -0,0 +1,140 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          backgroundsupr.h
+**   Purpose:       Header file for background supervisors
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _BACKGROUNDSUPR_H
+#define _BACKGROUNDSUPR_H
+
+#include <vector>
+#include <wx/thread.h>
+#include <wx/progdlg.h>
+#include "timer.h"
+
+// This thread creates a SupervisorTask event handler object
+// The thread is detached and terminates when SupervisorTask terminates
+class SupervisorThread : public wxThread {
+private:
+
+public:
+  SupervisorThread()
+    : wxThread(wxTHREAD_DETACHED)
+  {}
+
+};
+
+
+// Pure virtual class for BackgroundSupervisor that can communication with BackgroundManager via messages
+class BackgroundWorkerThread;
+class BackgroundProcessingDocument;
+
+class BackgroundSupervisor : public wxEvtHandler {
+private:
+  DECLARE_DYNAMIC_CLASS(BackgroundSupervisor)
+
+  SupervisorThread* m_pMyThread;
+  wxWindow* m_pParentFrame;
+  BackgroundProcessingDocument* m_pDocument;
+  const wxString m_strProcessTitle;
+
+  const unsigned int m_iTotalUnits;
+  int m_iNumThreads;
+  volatile bool m_bDone;
+  volatile bool m_bFail;
+  wxString m_strFailMessage;
+  volatile bool m_bCancelled;
+  volatile int m_iRunning;
+  volatile unsigned int m_iUnitsDone;
+  Timer* m_pTimer;
+  volatile bool m_bWorkersDeleted;
+  volatile bool m_bBackgroundManagerAdded;
+
+  typedef std::vector<BackgroundWorkerThread*> ThreadContainer;
+  ThreadContainer m_vecpThreads;
+  wxCriticalSection m_critsectThreads;
+
+public:
+  enum {
+    MSG_BACKGROUND_SUPERVISOR_ADD = 7500, // sends to BackgroundManager and Document
+    MSG_BACKGROUND_SUPERVISOR_REMOVE = 7501, // sends to BackgroundManager and Document
+    MSG_BACKGROUND_SUPERVISOR_UNIT_TICK = 7502,  // sends to BackgroundManager for progress bars
+    MSG_BACKGROUND_SUPERVISOR_CANCEL = 7503,   // *sent* to Supervisor to cancel process
+    MSG_DOCUMENT_ACK_REMOVE = 7504,
+
+    MSG_WORKER_THREAD_UNIT_TICK = 7505,
+    MSG_WORKER_THREAD_DONE = 7506,
+    MSG_WORKER_THREAD_FAIL = 7507,   // sent by workers when they fail
+  };
+
+  BackgroundSupervisor (SupervisorThread* pMyThread, wxWindow* pParentFrame, BackgroundProcessingDocument* pDocument, wxChar const* pszProcessTitle,
+    int iTotalUnits);
+
+  BackgroundSupervisor ()
+    : wxEvtHandler(), m_iTotalUnits(0)
+  {}
+
+  virtual ~BackgroundSupervisor();
+
+  virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits)
+  { return NULL; }
+
+  bool start();
+  virtual void onDone() {};
+
+  virtual void onCancel();
+
+  virtual void onWorkerFail(int iThread, const wxString& strFailMessage);
+  virtual void onWorkerUnitTick();
+  virtual void onWorkerDone(int iThread);
+
+  void deleteWorkers();
+  void ackRemoveBackgroundManager();
+  bool workersDone() const { return m_iRunning == 0; }
+  bool workersDeleted() const { return m_bWorkersDeleted; }
+  bool isDone() const {return m_bDone;}
+  void setDone() { m_bDone = true; }
+  bool fail() const {return m_bFail;}
+  const wxString& getFailMessage() const { return m_strFailMessage; }
+  bool cancelled() const {return m_bCancelled;}
+
+  int getNumWorkers() const { return m_iNumThreads; }
+  double getTimerEnd() { return m_pTimer->timerEnd(); }
+
+  DECLARE_EVENT_TABLE()
+};
+
+
+class BackgroundWorkerThread : public wxThread {
+protected:
+  BackgroundSupervisor* m_pSupervisor;
+  const int m_iThread;
+  const int m_iStartUnit;
+  const int m_iNumUnits;
+
+public:
+  BackgroundWorkerThread (BackgroundSupervisor* pSupervisor, int iThread, int iStartUnit, int iNumUnits)
+    : wxThread (wxTHREAD_DETACHED), m_pSupervisor(pSupervisor), m_iThread(iThread), m_iStartUnit(iStartUnit), m_iNumUnits(iNumUnits)
+  {}
+};
+
+#endif  // _BACKGROUNDSUPR_H_
diff --git a/src/ctsim-map.h b/src/ctsim-map.h
new file mode 100644
index 0000000..7f69559
--- /dev/null
+++ b/src/ctsim-map.h
@@ -0,0 +1,19 @@
+#define IDH_QUICKSTART         8601
+#define IDH_INTRODUCTION       8602
+#define IDH_DLG_PROJECTIONS    8603
+#define IDH_DLG_RASTERIZE      8604
+#define IDH_DLG_RECONSTRUCTION 8605
+#define IDH_DLG_FILTER         8606
+#define IDH_DLG_MINMAX         8607
+#define IDH_DLG_AUTOSCALE      8608
+#define IDH_DLG_EXPORT         8609
+#define IDH_DLG_PHANTOM        8610
+#define IDH_DLG_COMPARISON     8611
+#define IDH_DLG_PREFERENCES    8612
+#define IDH_DLG_POLAR          8613
+#define IDH_DLG_FFT_POLAR      8614
+#define IDH_DLG_RECON_FOURIER  8615
+#define IDH_DLG_RECONSTRUCTION_REBIN 8617
+#define IDH_DLG_IMPORT         8618
+#define IDH_DLG_THETA_RANGE    8619
+
diff --git a/src/ctsim.cpp b/src/ctsim.cpp
new file mode 100644
index 0000000..9befa24
--- /dev/null
+++ b/src/ctsim.cpp
@@ -0,0 +1,1152 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          ctsim.cpp
+**   Purpose:       Top-level routines of CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifdef MSVC
+#define strdup _strdup
+#endif
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#include "wx/image.h"
+#include "wx/filesys.h"
+#include "wx/fs_zip.h"
+#include "wx/cmdline.h"
+#ifdef __WXMSW__
+#include "wx/msw/helpchm.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#include "ct.h"
+#include "ctndicom.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "dialogs.h"
+#include "tips.h"
+#include "backgroundmgr.h"
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#if defined(HAVE_GETOPT_H) || defined(HAVE_GETOPT_LONG)
+#ifdef MSVC
+#define __STDC__ 1
+#endif
+#include "getopt.h"
+#ifdef MSVC
+#undef __STDC__
+#endif
+#endif
+
+
+IMPLEMENT_APP(CTSimApp)
+
+CTSimApp::CTSimApp()
+: m_bAdvancedOptions(false), m_bSetModifyNewDocs(true), 
+  m_bVerboseLogging(false), m_bShowStartupTips(true),
+  m_iCurrentTip(0), m_bUseBackgroundTasks(false),
+  m_docManager(NULL), m_pFrame(NULL), m_pConfig(0), m_pLog(0), m_pLogDoc(0),
+  m_bPrintCmdLineImages(false), m_bCmdLineVerboseFlag(false)
+{
+  theApp = this;
+}
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_SYS_RESOURCE_H
+#include <sys/resource.h>
+#endif
+
+
+void CTSimApp::OnInitCmdLine(wxCmdLineParser& parser)
+{
+  static const wxCmdLineEntryDesc cmdLineDesc[] = {
+    { wxCMD_LINE_SWITCH, _T("l"), _T("verbose"), _T("verbose logging") },
+    { wxCMD_LINE_SWITCH, _T("v"), _T("version"), _T("print version") },
+    { wxCMD_LINE_SWITCH, _T("p"), _T("print"), _T("print images from command line"),
+      wxCMD_LINE_VAL_NONE,
+      wxCMD_LINE_PARAM_OPTIONAL },
+    { wxCMD_LINE_SWITCH, _T("h"), _T("help"), _T("print this help message"),
+      wxCMD_LINE_VAL_NONE,
+      wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_OPTION_HELP },
+    { wxCMD_LINE_PARAM, NULL, NULL, _T("input file"),
+      wxCMD_LINE_VAL_STRING,
+      wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE },
+    { wxCMD_LINE_NONE }
+  };
+
+  parser.SetDesc(cmdLineDesc);
+}
+
+bool CTSimApp::OnCmdLineParsed(wxCmdLineParser& parser)
+{
+  if (wxApp::OnCmdLineParsed(parser) == false)
+    return false;
+
+  if (parser.Found(_T("version"))) {
+#ifdef VERSION
+      std::cout << "Version: " << VERSION << std::endl;
+#elif defined(CTSIMVERSION)
+      std::cout << "Version: " << CTSIMVERSION << std::endl;
+#else
+      std::cout << "Version: " << "Unknown" << std::endl;
+#endif
+      return false;
+  }
+  if (parser.Found(_T("print"))) {
+    m_bPrintCmdLineImages = true;
+  }
+  if (parser.Found(_T("verbose"))) {
+    m_bCmdLineVerboseFlag = true;
+  }
+
+  return true;
+}
+
+bool
+CTSimApp::OnInit()
+{
+  if (! wxApp::OnInit())
+    return false;
+
+#ifdef HAVE_SETPRIORITY
+  setpriority (PRIO_PROCESS, 0, 15);  // set to low scheduling priority
+#endif
+
+  openConfig();
+
+  g_bRunningWXWindows = true;
+  m_docManager = new wxDocManager (wxDEFAULT_DOCMAN_FLAGS, true);
+
+  m_pDocTemplImage = new wxDocTemplate (m_docManager, _T("ImageFile"), _T("*.if"), _T(""), _T("if"), _T("ImageFile"), _T("ImageView"), CLASSINFO(ImageFileDocument), CLASSINFO(ImageFileView));
+  m_pDocTemplProjection = new wxDocTemplate (m_docManager, _T("ProjectionFile"), _T("*.pj"), _T(""), _T("pj"), _T("ProjectionFile"), _T("ProjectionView"), CLASSINFO(ProjectionFileDocument), CLASSINFO(ProjectionFileView));
+  m_pDocTemplPhantom = new wxDocTemplate (m_docManager, _T("PhantomFile"), _T("*.phm"), _T(""), _T("phm"), _T("PhantomFile"), _T("PhantomView"), CLASSINFO(PhantomFileDocument), CLASSINFO(PhantomFileView));
+  m_pDocTemplPlot = new wxDocTemplate (m_docManager, _T("PlotFile"), _T("*.plt"), _T(""), _T("plt"), _T("PlotFile"), _T("PlotView"), CLASSINFO(PlotFileDocument), CLASSINFO(PlotFileView));
+  m_pDocTemplText = new wxDocTemplate (m_docManager, _T("TextFile"), _T("*.txt"), _T(""), _T("txt"), _T("TextFile"), _T("TextView"), CLASSINFO(TextFileDocument), CLASSINFO(TextFileView), wxTEMPLATE_INVISIBLE);
+#if wxUSE_GLCANVAS
+  m_pDocTemplGraph3d = new wxDocTemplate (m_docManager, _T("Graph3dFile"), _T("*.g3d"), _T(""), _T("g3d"),
+                                          _T("Graph3dFile"), _T("Graph3dView"), CLASSINFO(Graph3dFileDocument), 
+                                          CLASSINFO(Graph3dFileView), wxTEMPLATE_INVISIBLE);
+#endif
+
+#if wxUSE_GIF
+  wxImage::AddHandler(new wxGIFHandler);     // Required for images in the online documentation
+#endif
+
+#if wxUSE_STREAMS && wxUSE_ZIPSTREAM && wxUSE_ZLIB
+  wxFileSystem::AddHandler(new wxZipFSHandler);     // Required for advanced HTML help
+#endif
+
+  // Create the main frame window
+  int xDisplay, yDisplay;
+  ::wxDisplaySize (&xDisplay, &yDisplay);
+
+#ifdef CTSIM_MDI
+  wxSize frameSize(nearest<int>(xDisplay * .75), nearest<int>(yDisplay * .75));
+#else
+  wxSize frameSize(nearest<int>(xDisplay * .6), nearest<int>(yDisplay * .4));
+#endif
+
+  m_pFrame = new MainFrame(m_docManager, (wxFrame *) NULL, -1, _T("CTSim"), wxPoint(0, 0), frameSize, wxDEFAULT_FRAME_STYLE);
+
+  setIconForFrame (m_pFrame);
+  m_pFrame->Centre(wxBOTH);
+  m_pFrame->Show(true);
+  SetTopWindow (m_pFrame);
+
+  if (m_pConfig)
+    m_docManager->FileHistoryLoad(*m_pConfig);
+
+#ifdef CTSIM_MDI
+  m_pLogDoc = newTextDoc();
+  if (m_pLogDoc) {
+    m_pLog = m_pLogDoc->getTextCtrl();
+    m_pLogDoc->SetDocumentName(_T("Log.txt"));
+    m_pLogDoc->SetFilename(_T("Log.txt"));
+    m_pLogDoc->getView()->getFrame()->SetTitle(_T("Log"));
+    int xSize, ySize;
+    m_pFrame->GetClientSize(&xSize, &ySize);
+    int yLogSize = ySize / 4;
+    m_pLogDoc->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize);
+    m_pLogDoc->getView()->getFrame()->Show (true);
+  } else
+#else
+    m_pLog = new wxTextCtrl (m_pFrame, -1, _T("Log Window\n"), wxPoint(0, 0), frameSize, wxTE_MULTILINE | wxTE_READONLY);
+#endif
+  wxLog::SetActiveTarget (new wxLogTextCtrl(m_pLog));
+
+  wxString helpDir;
+  if (! m_pConfig->Read(_T("HelpDir"), &helpDir))
+    helpDir = ::wxGetCwd();
+#ifdef CTSIM_WINHELP
+  if (! m_pFrame->getWinHelpController().Initialize(helpDir + _T("/ctsim")))
+    *m_pLog << _T("Cannot initialize the Windows Help system") << _T("\n");
+#else
+#ifdef DATADIR
+  wxString docDir (DATADIR, *wxConvCurrent);
+#else
+  wxString docDir (::wxGetCwd());
+#endif
+  wxString docFile = docDir + _T("ctsim.htb");
+  if (! m_pFrame->getHtmlHelpController().AddBook(docFile) &&
+      ! m_pFrame->getHtmlHelpController().AddBook(_T("/usr/share/ctsim/ctsim.htb")) &&
+      ! m_pFrame->getHtmlHelpController().AddBook(_T("/tmp/ctsim.htb")))
+    *m_pLog << _T("Cannot initialize the HTML Help system") << _T("\n");
+  else {
+    if (::wxDirExists (_T("/tmp")))
+      m_pFrame->getHtmlHelpController().SetTempDir(_T("/tmp"));
+    m_pFrame->getHtmlHelpController().UseConfig (m_pConfig);
+  }
+#endif
+
+  for (int i = optind + 1; i <= argc; i++) {
+    wxString filename = argv [i - 1];
+    wxDocument* pNewDoc = m_docManager->CreateDocument (filename, wxDOC_SILENT);
+    if (m_bPrintCmdLineImages) {
+      wxView* pNewView = pNewDoc->GetFirstView();
+      wxPrintout *printout = pNewView->OnCreatePrintout();
+      if (printout) {
+        wxPrinter printer;
+        printer.Print(pNewView->GetFrame(), printout, TRUE);
+        delete printout;
+      }
+      wxCommandEvent nullEvent;
+      nullEvent.SetId (wxID_CLOSE);
+      m_docManager->OnFileClose (nullEvent);
+    }
+  }
+  if (m_bPrintCmdLineImages) {
+    wxCommandEvent closeEvent;
+    closeEvent.SetInt (MAINMENU_FILE_EXIT);
+    m_pFrame->AddPendingEvent(closeEvent);
+  }
+
+  if (getStartupTips())
+    ShowTips();
+
+#ifdef HAVE_WXTHREADS
+  m_pBackgroundMgr = new BackgroundManager;
+#endif
+
+  return true;
+}
+
+void
+CTSimApp::ShowTips()
+{
+  CTSimTipProvider tipProvider (m_iCurrentTip);
+  setStartupTips (::wxShowTip (m_pFrame, &tipProvider, getStartupTips()));
+  m_iCurrentTip = tipProvider.GetCurrentTip();
+}
+
+
+#include "./ctsim.xpm"
+void
+CTSimApp::setIconForFrame(wxFrame* pFrame)
+{
+  wxIcon iconApp (ctsim16_xpm);
+
+  if (iconApp.Ok())
+    pFrame->SetIcon (iconApp);
+}
+
+void
+CTSimApp::usage(const char* program)
+{
+  std::cout << "usage: " << fileBasename(program) << " [files-to-open...] [OPTIONS]\n";
+  std::cout << "Computed Tomography Simulator (Graphical Shell)\n";
+  std::cout << "\n";
+  std::cout << "  --version Display version\n";
+  std::cout << "  --help    Display this help message\n";
+}
+
+int
+CTSimApp::OnExit()
+{
+  closeConfig();
+
+#ifdef HAVE_DMALLOC
+  dmalloc_shutdown();
+#endif
+  return 0;
+}
+
+void
+CTSimApp::openConfig()
+{
+#ifdef MSVC
+  m_pConfig = new wxConfig(_T("ctsim"), _T("Kevin Rosenberg"), _T(""), _T(""), wxCONFIG_USE_LOCAL_FILE);
+#else
+  m_pConfig = new wxConfig(_T("ctsim"), _T("Kevin Rosenberg"), _T(".ctsim"), _T(""), wxCONFIG_USE_LOCAL_FILE);
+#endif
+
+  wxConfigBase::Set(m_pConfig);
+  m_pConfig->Read (_T("AdvancedOptions"), &m_bAdvancedOptions);
+  m_pConfig->Read (_T("SetModifyNewDocs"), &m_bSetModifyNewDocs);
+  m_pConfig->Read (_T("VerboseLogging"), &m_bVerboseLogging);
+  m_pConfig->Read (_T("StartupTips"), &m_bShowStartupTips);
+  m_pConfig->Read (_T("CurrentTip"), &m_iCurrentTip);
+  m_pConfig->Read (_T("UseBackgroundTasks"), &m_bUseBackgroundTasks);
+#ifdef HAVE_FFTW
+  wxString strFftwWisdom;
+  m_pConfig->Read (_T("FftwWisdom"), strFftwWisdom);
+  if (strFftwWisdom.size() > 0)
+    fftw_import_wisdom_from_string (strFftwWisdom.mb_str(wxConvUTF8));
+#endif
+}
+
+void
+CTSimApp::closeConfig()
+{
+  m_pConfig->Write (_T("AdvancedOptions"), m_bAdvancedOptions);
+  m_pConfig->Write (_T("SetModifyNewDocs"), m_bSetModifyNewDocs);
+  m_pConfig->Write (_T("VerboseLogging"), m_bVerboseLogging);
+  m_pConfig->Write (_T("StartupTips"), m_bShowStartupTips);
+  m_pConfig->Write (_T("CurrentTip"), m_iCurrentTip);
+  m_pConfig->Write (_T("UseBackgroundTasks"), m_bUseBackgroundTasks);
+#ifdef HAVE_FFTW
+  const char* const pszWisdom = fftw_export_wisdom_to_string();
+  wxString strFftwWisdom (pszWisdom, *wxConvCurrent);
+  fftw_free ((void*) pszWisdom);
+  m_pConfig->Write (_T("FftwWisdom"), strFftwWisdom);
+#endif
+
+  delete m_pConfig;
+}
+
+
+// Top-level window for CTSim
+
+#if CTSIM_MDI
+IMPLEMENT_CLASS(MainFrame, wxMDIParentFrame)
+
+BEGIN_EVENT_TABLE(MainFrame, wxMDIParentFrame)
+#else
+IMPLEMENT_CLASS(MainFrame, wxDocParentFrame)
+
+BEGIN_EVENT_TABLE(MainFrame, wxDocParentFrame)
+#endif
+
+EVT_MENU(MAINMENU_FILE_PREFERENCES, MainFrame::OnPreferences)
+EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout)
+EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents)
+EVT_MENU(MAINMENU_HELP_TIPS, MainFrame::OnHelpTips)
+EVT_MENU(MAINMENU_IMPORT, MainFrame::OnImport)
+EVT_MENU(IDH_QUICKSTART, MainFrame::OnHelpButton)
+EVT_MENU(MAINMENU_LOG_EVENT, MainFrame::OnLogEvent)
+EVT_MENU(NEW_IMAGEFILE_EVENT, MainFrame::OnNewImageFile)
+EVT_MENU(NEW_PROJECTIONFILE_EVENT, MainFrame::OnNewProjectionFile)
+EVT_BUTTON(IDH_DLG_RASTERIZE, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_PROJECTIONS, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_RECONSTRUCTION, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_FILTER, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_MINMAX, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_EXPORT, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_PHANTOM, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_COMPARISON, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_PREFERENCES, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_POLAR, MainFrame::OnHelpButton)
+EVT_BUTTON(IDH_DLG_AUTOSCALE, MainFrame::OnHelpButton)
+
+EVT_SIZE(MainFrame::OnSize)
+
+#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
+EVT_MENU(MAINMENU_HELP_SECONDARY, MainFrame::OnHelpSecondary)
+#endif
+EVT_MENU(MAINMENU_FILE_CREATE_PHANTOM, MainFrame::OnCreatePhantom)
+EVT_MENU(MAINMENU_FILE_CREATE_FILTER, MainFrame::OnCreateFilter)
+EVT_MENU(MAINMENU_FILE_EXIT, MainFrame::OnExit)
+EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, MainFrame::OnMRUFile)
+EVT_MENU(MAINMENU_WINDOW_BASE, MainFrame::OnWindowMenu0)
+EVT_MENU(MAINMENU_WINDOW_BASE+1, MainFrame::OnWindowMenu1)
+EVT_MENU(MAINMENU_WINDOW_BASE+2, MainFrame::OnWindowMenu2)
+EVT_MENU(MAINMENU_WINDOW_BASE+3, MainFrame::OnWindowMenu3)
+EVT_MENU(MAINMENU_WINDOW_BASE+4, MainFrame::OnWindowMenu4)
+EVT_MENU(MAINMENU_WINDOW_BASE+5, MainFrame::OnWindowMenu5)
+EVT_MENU(MAINMENU_WINDOW_BASE+6, MainFrame::OnWindowMenu6)
+EVT_MENU(MAINMENU_WINDOW_BASE+7, MainFrame::OnWindowMenu7)
+EVT_MENU(MAINMENU_WINDOW_BASE+8, MainFrame::OnWindowMenu8)
+EVT_MENU(MAINMENU_WINDOW_BASE+9, MainFrame::OnWindowMenu9)
+EVT_MENU(MAINMENU_WINDOW_BASE+10, MainFrame::OnWindowMenu10)
+EVT_MENU(MAINMENU_WINDOW_BASE+11, MainFrame::OnWindowMenu11)
+EVT_MENU(MAINMENU_WINDOW_BASE+12, MainFrame::OnWindowMenu12)
+EVT_MENU(MAINMENU_WINDOW_BASE+13, MainFrame::OnWindowMenu13)
+EVT_MENU(MAINMENU_WINDOW_BASE+14, MainFrame::OnWindowMenu14)
+EVT_MENU(MAINMENU_WINDOW_BASE+15, MainFrame::OnWindowMenu15)
+EVT_MENU(MAINMENU_WINDOW_BASE+16, MainFrame::OnWindowMenu16)
+EVT_MENU(MAINMENU_WINDOW_BASE+17, MainFrame::OnWindowMenu17)
+EVT_MENU(MAINMENU_WINDOW_BASE+18, MainFrame::OnWindowMenu18)
+EVT_MENU(MAINMENU_WINDOW_BASE+19, MainFrame::OnWindowMenu19)
+EVT_UPDATE_UI_RANGE(MAINMENU_WINDOW_BASE, MAINMENU_WINDOW_BASE+20, MainFrame::OnUpdateUI)
+END_EVENT_TABLE()
+
+
+
+#if CTSIM_MDI
+MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type)
+: wxDocMDIParentFrame(manager, NULL, id, title, pos, size, type, _T("MainFrame"))
+#else
+MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type)
+: wxDocParentFrame(manager, frame, id, title, pos, size, type, _T("MainFrame"))
+#endif
+{
+  m_bShuttingDown = false;
+
+  //// Make a menubar
+  wxMenu *file_menu = new wxMenu;
+
+  file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  file_menu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  file_menu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+
+  file_menu->AppendSeparator();
+  file_menu->Append (MAINMENU_IMPORT, _T("&Import...\tCtrl-M"));
+  file_menu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  file_menu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+
+  //  history of files visited
+  theApp->getDocManager()->FileHistoryAddFilesToMenu(file_menu);
+  theApp->getDocManager()->FileHistoryUseMenu(file_menu);
+
+#ifndef CTSIM_MDI
+  m_pWindowMenu = new wxMenu;
+  m_pWindowMenu->UpdateUI (this);
+#endif
+
+  wxMenu* help_menu = new wxMenu;
+  help_menu->Append (MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips"));
+  help_menu->Append (IDH_QUICKSTART, _T("&Quick Start"));
+#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
+  help_menu->Append (MAINMENU_HELP_SECONDARY, _T("&Secondary Help"));
+#endif
+  help_menu->Append (MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar* menu_bar = new wxMenuBar;
+
+  menu_bar->Append(file_menu, _T("&File"));
+#ifndef CTSIM_MDI
+  menu_bar->Append(m_pWindowMenu, _T("&Window"));
+#endif
+  menu_bar->Append(help_menu, _T("&Help"));
+
+  SetMenuBar(menu_bar);
+
+
+#ifndef CTSIM_MDI
+  int i;
+  for (i = 0; i < MAX_WINDOW_MENUITEMS; i++) {
+    m_apWindowMenuItems[i] = new wxMenuItem (m_pWindowMenu, MAINMENU_WINDOW_BASE+i, _T("[EMPTY]"));
+    m_pWindowMenu->Append (m_apWindowMenuItems[i]);
+    m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+i, false);
+  }
+#endif
+
+  m_iDefaultPhantomID = Phantom::PHM_HERMAN;
+  m_iDefaultFilterID = SignalFilter::FILTER_BANDLIMIT;
+  m_iDefaultFilterDomainID = SignalFilter::DOMAIN_FREQUENCY;
+  m_iDefaultFilterXSize = 256;
+  m_iDefaultFilterYSize = 256;
+  m_dDefaultFilterParam = 1.;
+  m_dDefaultFilterBandwidth = 1.;
+  m_dDefaultFilterInputScale = 1.;
+  m_dDefaultFilterOutputScale = 1.;
+  m_iDefaultImportFormat = ImageFile::IMPORT_FORMAT_PNG;
+
+  wxAcceleratorEntry accelEntries[15];
+  accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+  accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+  accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+  accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('M'), MAINMENU_IMPORT);
+  accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+#ifndef CTSIM_MDI
+  for (i = 0; i < 10; i++)
+    accelEntries[i+5].Set (wxACCEL_CTRL, static_cast<int>('0'+i), MAINMENU_WINDOW_BASE+i);
+  wxAcceleratorTable accelTable (15, accelEntries);
+#else
+  wxAcceleratorTable accelTable (5, accelEntries);
+#endif
+
+  SetAcceleratorTable (accelTable);
+}
+
+MainFrame::~MainFrame()
+{
+  m_bShuttingDown = true; // Currently used so that Log Window will close
+#if 0
+  // delete all non-modified documents
+  wxList& rListDocs = theApp->getDocManager()->GetDocuments();
+  for (wxNode* pNode = rListDocs.GetFirst(); pNode != NULL; pNode = pNode->GetNext()) {
+    wxDocument* pDoc = dynamic_cast<wxDocument*>(pNode->GetData());
+    if (pDoc && ! pDoc->IsModified()) {
+      theApp->getDocManager()->RemoveDocument(pDoc);
+      delete pDoc;
+    }
+  }
+#endif
+  ::wxYield();
+  if (theApp->getConfig())
+    theApp->getDocManager()->FileHistorySave (*theApp->getConfig());
+  ::wxYield();
+  delete theApp->getDocManager();
+
+}
+
+void
+MainFrame::OnSize (wxSizeEvent& event)
+{
+#ifdef CTSIM_MDI
+  if (theApp->getLogDoc()) {
+    int xSize, ySize;
+    GetClientSize(&xSize, &ySize);
+    int yLogSize = ySize / 4;
+    theApp->getLogDoc()->getView()->getFrame()->SetSize (0, ySize - yLogSize, xSize, yLogSize);
+    theApp->getLogDoc()->getView()->getFrame()->Show (true);
+  }
+#endif
+
+#if CTSIM_MDI
+  wxDocMDIParentFrame::OnSize (event);
+#else
+  wxDocParentFrame::OnSize (event);
+#endif
+}
+
+void
+MainFrame::OnCreatePhantom(wxCommandEvent& event)
+{
+  DialogGetPhantom dialogPhantom (this, m_iDefaultPhantomID);
+  int dialogReturn = dialogPhantom.ShowModal();
+  if (dialogReturn == wxID_OK) {
+    wxString selection (dialogPhantom.getPhantom(), *wxConvCurrent);
+    if (theApp->getVerboseLogging())
+      *theApp->getLog() << _T("Selected phantom ") << selection.c_str() << _T("\n");
+    wxString filename = selection + _T(".phm");
+    m_iDefaultPhantomID = Phantom::convertNameToPhantomID (selection.mb_str(wxConvUTF8));
+    theApp->getDocManager()->CreateDocument (filename, wxDOC_SILENT);
+  }
+
+}
+
+void
+MainFrame::OnCreateFilter (wxCommandEvent& WXUNUSED(event))
+{
+  DialogGetFilterParameters dialogFilter (this, m_iDefaultFilterXSize, m_iDefaultFilterYSize, m_iDefaultFilterID, m_dDefaultFilterParam, m_dDefaultFilterBandwidth, m_iDefaultFilterDomainID, m_dDefaultFilterInputScale, m_dDefaultFilterOutputScale);
+  int dialogReturn = dialogFilter.ShowModal();
+  if (dialogReturn == wxID_OK) {
+    wxString strFilter (dialogFilter.getFilterName(), *wxConvCurrent);
+    wxString strDomain (dialogFilter.getDomainName(), *wxConvCurrent);
+    m_iDefaultFilterID = SignalFilter::convertFilterNameToID (strFilter.mb_str(wxConvUTF8));
+    m_iDefaultFilterDomainID = SignalFilter::convertDomainNameToID (strDomain.mb_str(wxConvUTF8));
+    m_iDefaultFilterXSize = dialogFilter.getXSize();
+    m_iDefaultFilterYSize = dialogFilter.getYSize();
+    m_dDefaultFilterBandwidth = dialogFilter.getBandwidth();
+    m_dDefaultFilterParam= dialogFilter.getFilterParam();
+    m_dDefaultFilterInputScale = dialogFilter.getInputScale();
+    m_dDefaultFilterOutputScale = dialogFilter.getOutputScale();
+    wxString os;
+    os << _T("Generate Filter=") << strFilter
+       << _T(", size=(") << static_cast<int>(m_iDefaultFilterXSize) << _T(",")
+       << static_cast<int>(m_iDefaultFilterYSize)
+       << _T("), domain=") << strDomain.c_str() << _T(", filterParam=")
+       << m_dDefaultFilterParam << _T(", bandwidth=") <<
+      m_dDefaultFilterBandwidth
+       << _T(", inputScale=") << m_dDefaultFilterInputScale << _T(", outputScale=") << m_dDefaultFilterOutputScale;
+    *theApp->getLog() << os << _T("\n");
+    ImageFileDocument* pFilterDoc = theApp->newImageDoc();
+    pFilterDoc->setBadFileOpen();
+    if (! pFilterDoc) {
+      sys_error (ERR_SEVERE, "Unable to create filter image");
+      return;
+    }
+    ImageFile& rIF = pFilterDoc->getImageFile();
+    rIF.setArraySize (m_iDefaultFilterXSize, m_iDefaultFilterYSize);
+    rIF.filterResponse (strDomain.mb_str(wxConvUTF8), m_dDefaultFilterBandwidth, strFilter.mb_str(wxConvUTF8), m_dDefaultFilterParam, m_dDefaultFilterInputScale, m_dDefaultFilterOutputScale);
+    rIF.labelAdd (os.mb_str(wxConvUTF8));
+    if (theApp->getAskDeleteNewDocs())
+      pFilterDoc->Modify (true);
+    pFilterDoc->UpdateAllViews();
+    pFilterDoc->GetFirstView()->OnUpdate (NULL, NULL);
+    pFilterDoc->getView()->getFrame()->SetClientSize(m_iDefaultFilterXSize, m_iDefaultFilterYSize);
+    pFilterDoc->getView()->getFrame()->Show(true);
+  }
+}
+
+void
+CTSimApp::getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector<ImageFileDocument*>& vecIF)
+{
+  const ImageFile& rIF = pIFDoc->getImageFile();
+  unsigned int nx = rIF.nx();
+  unsigned int ny = rIF.ny();
+  wxList& rListDocs = m_docManager->GetDocuments();
+  for (wxNode* pNode = rListDocs.GetFirst(); pNode != NULL; pNode = pNode->GetNext()) {
+    wxDocument* pDoc = reinterpret_cast<wxDocument*>(pNode->GetData());
+    ImageFileDocument* pIFCompareDoc = dynamic_cast<ImageFileDocument*>(pDoc);
+    if (pIFCompareDoc && (pIFDoc != pIFCompareDoc)) {
+      const ImageFile& rCompareIF = pIFCompareDoc->getImageFile();
+      if (rCompareIF.nx() == nx && rCompareIF.ny() == ny)
+        vecIF.push_back (pIFCompareDoc);
+    }
+  }
+}
+
+
+void
+MainFrame::OnNewImageFile (wxCommandEvent& event)
+{
+  ImageFile* pImageFile = reinterpret_cast<ImageFile*>(event.GetClientData());
+
+  ImageFileDocument* pImageDoc = theApp->newImageDoc();
+  if (! pImageDoc) {
+    sys_error (ERR_SEVERE, "Unable to create image file");
+    return;
+  }
+  pImageDoc->setImageFile (pImageFile);
+  if (theApp->getAskDeleteNewDocs())
+    pImageDoc->Modify (true);
+}
+
+void
+MainFrame::OnNewProjectionFile (wxCommandEvent& event)
+{
+  Projections* pProjections = reinterpret_cast<Projections*>(event.GetClientData());
+  ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc();
+  if (! pProjDoc) {
+    sys_error (ERR_SEVERE, "Unable to create projection file");
+    return;
+  }
+  pProjDoc->setProjections (pProjections);
+  if (theApp->getAskDeleteNewDocs())
+    pProjDoc->Modify (true);
+}
+
+void
+MainFrame::OnLogEvent (wxCommandEvent& event)
+{
+  *theApp->getLog() << event.GetString();
+}
+
+void
+MainFrame::OnHelpTips (wxCommandEvent& event)
+{
+  theApp->ShowTips();
+}
+
+void
+MainFrame::OnHelpContents (wxCommandEvent& event)
+{
+  showHelp (event.GetId());
+}
+
+void
+MainFrame::OnHelpButton (wxCommandEvent& event)
+{
+  showHelp (event.GetId());
+}
+
+#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
+void
+MainFrame::OnHelpSecondary (wxCommandEvent& event)
+{
+  m_htmlHelp.Display ("Contents");
+}
+#endif
+
+void
+MainFrame::showHelp (int commandID)
+{
+  switch (commandID) {
+
+  case MAINMENU_HELP_CONTENTS:
+#ifdef CTSIM_WINHELP
+    m_winHelp.DisplayContents ();
+#else
+    m_htmlHelp.Display (_T("Contents"));
+#endif
+    break;
+
+  default:
+#ifdef CTSIM_WINHELP
+    m_winHelp.DisplaySection (commandID);
+#else
+    m_htmlHelp.Display (commandID);
+#endif
+    break;
+  }
+}
+
+void
+MainFrame::OnExit (wxCommandEvent& WXUNUSED(event) )
+{
+  Close(true);
+}
+
+void
+MainFrame::OnUpdateUI (wxUpdateUIEvent& rEvent)
+{
+#ifndef CTSIM_MDI
+  int iPos = 0;
+  wxList& rListDocs = theApp->getDocManager()->GetDocuments();
+  wxNode* pNode = rListDocs.GetFirst();
+  while (iPos < MAX_WINDOW_MENUITEMS && pNode != NULL) {
+    wxDocument* pDoc = static_cast<wxDocument*>(pNode->GetData());
+    wxString strFilename = pDoc->GetFilename();
+    if (iPos < 10) {
+      strFilename += _T("\tCtrl-");
+      strFilename += static_cast<char>('0' + iPos);
+    }
+    static_cast<wxMenuItemBase*>(m_apWindowMenuItems[iPos])->SetName (strFilename);
+    m_apWindowMenuData[iPos] = pDoc;
+    m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+iPos, true);
+    iPos++;
+    pNode = pNode->GetNext();
+  }
+  for (int i = iPos; i < MAX_WINDOW_MENUITEMS; i++) {
+    m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+i, false);
+    static_cast<wxMenuItemBase*>(m_apWindowMenuItems[i])->SetName (_T("[EMPTY]"));
+    m_apWindowMenuData[i] = NULL;
+  }
+#endif
+}
+
+
+void
+MainFrame::DoWindowMenu (int iMenuPosition, wxCommandEvent& event)
+{
+  if (wxDocument* pDoc = m_apWindowMenuData [iMenuPosition]) {
+    wxString strFilename = pDoc->GetFilename();
+    const wxView* pView = pDoc->GetFirstView();
+    if (pView) {
+      wxWindow* pWindow = pView->GetFrame();
+      pWindow->SetFocus();
+      pWindow->Raise();
+    }
+  }
+}
+
+void MainFrame::OnWindowMenu0 (wxCommandEvent& event)
+{ DoWindowMenu (0, event); }
+
+void MainFrame::OnWindowMenu1 (wxCommandEvent& event)
+{ DoWindowMenu (1, event); }
+
+void MainFrame::OnWindowMenu2 (wxCommandEvent& event)
+{ DoWindowMenu (2, event); }
+
+void MainFrame::OnWindowMenu3 (wxCommandEvent& event)
+{ DoWindowMenu (3, event); }
+
+void MainFrame::OnWindowMenu4 (wxCommandEvent& event)
+{ DoWindowMenu (4, event); }
+
+void MainFrame::OnWindowMenu5 (wxCommandEvent& event)
+{ DoWindowMenu (5, event); }
+
+void MainFrame::OnWindowMenu6 (wxCommandEvent& event)
+{ DoWindowMenu (6, event); }
+
+void MainFrame::OnWindowMenu7 (wxCommandEvent& event)
+{ DoWindowMenu (7, event); }
+
+void MainFrame::OnWindowMenu8 (wxCommandEvent& event)
+{ DoWindowMenu (8, event); }
+
+void MainFrame::OnWindowMenu9 (wxCommandEvent& event)
+{ DoWindowMenu (9, event); }
+
+void MainFrame::OnWindowMenu10 (wxCommandEvent& event)
+{ DoWindowMenu (10, event); }
+
+void MainFrame::OnWindowMenu11 (wxCommandEvent& event)
+{ DoWindowMenu (11, event); }
+
+void MainFrame::OnWindowMenu12 (wxCommandEvent& event)
+{ DoWindowMenu (12, event); }
+
+void MainFrame::OnWindowMenu13 (wxCommandEvent& event)
+{ DoWindowMenu (13, event); }
+
+void MainFrame::OnWindowMenu14 (wxCommandEvent& event)
+{ DoWindowMenu (14, event); }
+
+void MainFrame::OnWindowMenu15 (wxCommandEvent& event)
+{ DoWindowMenu (15, event); }
+
+void MainFrame::OnWindowMenu16 (wxCommandEvent& event)
+{ DoWindowMenu (16, event); }
+
+void MainFrame::OnWindowMenu17 (wxCommandEvent& event)
+{ DoWindowMenu (17, event); }
+
+void MainFrame::OnWindowMenu18 (wxCommandEvent& event)
+{ DoWindowMenu (18, event); }
+
+void MainFrame::OnWindowMenu19 (wxCommandEvent& event)
+{ DoWindowMenu (19, event); }
+
+
+class BitmapControl : public wxPanel
+{
+private:
+  DECLARE_DYNAMIC_CLASS (BitmapControl)
+    DECLARE_EVENT_TABLE ()
+    wxBitmap* m_pBitmap;
+
+public:
+  BitmapControl (wxBitmap* pBitmap, wxWindow *parent, wxWindowID id = -1,
+    const wxPoint& pos = wxDefaultPosition,
+    const wxSize& size = wxDefaultSize,
+    long style = wxSTATIC_BORDER,
+    const wxValidator& validator = wxDefaultValidator,
+                 const wxString& name = _T("BitmapCtrl"));
+
+
+  virtual ~BitmapControl();
+
+  virtual wxSize GetBestSize() const;
+
+  wxBitmap* getBitmap()
+  { return m_pBitmap; }
+
+  void OnPaint(wxPaintEvent& event);
+};
+
+
+BEGIN_EVENT_TABLE(BitmapControl, wxPanel)
+EVT_PAINT(BitmapControl::OnPaint)
+END_EVENT_TABLE()
+
+IMPLEMENT_CLASS(BitmapControl, wxPanel)
+
+
+BitmapControl::BitmapControl (wxBitmap* pBitmap, wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
+                              long style, const wxValidator& validator, const wxString& name)
+                              : m_pBitmap(pBitmap)
+{
+  Create(parent, id, pos, size, style, name);
+
+  SetSize (GetBestSize());
+}
+
+wxSize
+BitmapControl::GetBestSize () const
+{
+  if (m_pBitmap)
+    return wxSize (m_pBitmap->GetWidth(), m_pBitmap->GetHeight());
+  else
+    return wxSize(0,0);
+}
+
+BitmapControl::~BitmapControl()
+{}
+
+void
+BitmapControl::OnPaint (wxPaintEvent& event)
+{
+  wxPaintDC dc(this);
+  if (m_pBitmap)
+    dc.DrawBitmap (*m_pBitmap, 0, 0);
+}
+
+
+class BitmapDialog : public wxDialog {
+private:
+  BitmapControl* m_pBitmapCtrl;
+
+public:
+  BitmapDialog (wxBitmap* pBitmap, char const* pszTitle);
+  virtual ~BitmapDialog();
+};
+
+BitmapDialog::BitmapDialog (wxBitmap* pBitmap, char const* pszTitle)
+  : wxDialog(theApp->getMainFrame(), -1, wxString(pszTitle,*wxConvCurrent), wxDefaultPosition, wxDefaultSize, wxDIALOG_MODAL | wxDEFAULT_DIALOG_STYLE)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new BitmapControl (pBitmap, this), 0, wxALIGN_CENTER | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Ok"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+BitmapDialog::~BitmapDialog()
+{}
+
+
+void
+MainFrame::OnPreferences (wxCommandEvent& WXUNUSED(event) )
+{
+  DialogPreferences dlg (this, _T("CTSim Preferences"), theApp->getAdvancedOptions(),
+    theApp->getAskDeleteNewDocs(), theApp->getVerboseLogging(), theApp->getStartupTips(),
+    theApp->getUseBackgroundTasks());
+  if (dlg.ShowModal() == wxID_OK) {
+    theApp->setAdvancedOptions (dlg.getAdvancedOptions());
+    theApp->setAskDeleteNewDocs (dlg.getAskDeleteNewDocs());
+    theApp->setVerboseLogging (dlg.getVerboseLogging());
+    theApp->setStartupTips (dlg.getStartupTips());
+    theApp->setUseBackgroundTasks (dlg.getUseBackgroundTasks());
+  }
+}
+
+void
+MainFrame::OnImport (wxCommandEvent& WXUNUSED(event) )
+{
+  DialogImportParameters dialogImport (this, m_iDefaultImportFormat);
+  if (dialogImport.ShowModal() != wxID_OK)
+    return;
+
+  wxString strFormatName (dialogImport.getFormatName (), *wxConvCurrent);
+  m_iDefaultImportFormat = ImageFile::convertImportFormatNameToID (strFormatName.mb_str(wxConvUTF8));
+
+  wxString strExt;
+  wxString strWildcard;
+  if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PPM) {
+    strExt = _T(".ppm");
+    strWildcard = _T("PPM Files (*.ppm)|*.ppm|PGM Files (*.pgm)|*.pgm");
+  }
+#ifdef HAVE_PNG
+  else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PNG) {
+    strExt = _T(".png");
+    strWildcard = _T("PNG Files (*.png)|*.png");
+  }
+#endif
+#ifdef HAVE_CTN_DICOM
+  else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_DICOM) {
+    strExt = _T("*.*");
+    strWildcard = _T("Dicom Files (*.*)|*.*");
+  }
+#endif
+  else {
+    return;
+  }
+
+  wxString strFilename = wxFileSelector (wxString(wxConvUTF8.cMB2WX("Import Filename")), wxString(wxConvUTF8.cMB2WX("")),
+                                         wxString(wxConvUTF8.cMB2WX("")), strExt, strWildcard, wxOPEN);
+
+  if (! strFilename.IsEmpty()) {
+    if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PPM || m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_PNG) {
+      ImageFile* pIF = new ImageFile;
+      if (pIF->importImage (strFormatName.mb_str(wxConvUTF8), strFilename.mb_str(wxConvUTF8))) {
+        ImageFileDocument* pIFDoc = theApp->newImageDoc();
+        pIFDoc->setImageFile(pIF);
+        pIFDoc->getView()->getFrame()->Show(true);
+        std::ostringstream os;
+        os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
+        pIF->labelAdd (os.str().c_str());
+        if (theApp->getAskDeleteNewDocs())
+          pIFDoc->Modify (true);
+        pIFDoc->UpdateAllViews();
+        pIFDoc->GetFirstView()->OnUpdate (NULL, NULL);
+        pIFDoc->getView()->getFrame()->Show(true);
+      } else
+        delete pIF;
+    }
+#ifdef HAVE_CTN_DICOM
+    else if (m_iDefaultImportFormat == ImageFile::IMPORT_FORMAT_DICOM) {
+      DicomImporter dicomImport (strFilename.mb_str(wxConvUTF8));
+      if (dicomImport.fail()) {
+        ::wxMessageBox (wxConvUTF8.cMB2WX(dicomImport.failMessage().c_str()), _T("Import Error"));
+      } else if (dicomImport.testImage()) {
+        ImageFileDocument* pIFDoc = theApp->newImageDoc();
+        ImageFile* pIF = dicomImport.getImageFile();
+        pIFDoc->setImageFile (pIF);
+        std::ostringstream os;
+        os << "Import file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
+        pIF->labelAdd (os.str().c_str());
+        if (theApp->getAskDeleteNewDocs())
+          pIFDoc->Modify (true);
+        pIFDoc->UpdateAllViews();
+        pIFDoc->getView()->setInitialClientSize();
+        pIFDoc->Activate();
+      } else if (dicomImport.testProjections()) {
+        ProjectionFileDocument* pProjDoc = theApp->newProjectionDoc();
+        Projections* pProj = dicomImport.getProjections();
+        pProjDoc->setProjections (pProj);
+        pProjDoc->getView()->getFrame()->Show(true);
+        std::ostringstream os;
+        os << "Import projection file " << strFilename.c_str() << " (type " << strFormatName.c_str() << ")";
+        pProj->setRemark (os.str().c_str());
+        if (theApp->getAskDeleteNewDocs())
+          pProjDoc->Modify (true);
+        pProjDoc->UpdateAllViews();
+        pProjDoc->getView()->setInitialClientSize();
+        pProjDoc->Activate();
+      } else
+        ::wxMessageBox (_T("Unrecognized DICOM file contents"), _T("Import Error"));
+    }
+#endif
+    else
+      sys_error (ERR_WARNING, "Unknown import format type");
+  }
+}
+
+#include "./splash.xpm"
+void
+MainFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
+{
+  wxString strOSDesc = ::wxGetOsDescription();
+  *theApp->getLog() << _T("Operating System: ") << strOSDesc;
+  *theApp->getLog() << _T(", wxWindows: ") << wxVERSION_STRING;
+#ifdef _TIMESTAMP__
+  *theApp->getLog() << _T(", Build Date: ") << wxConvUTF8.cMB2WX(_TIMESTAMP__);
+#endif
+#if defined(DEBUG)
+  *theApp->getLog() << _T(", Debug version");
+#else
+  *theApp->getLog() << _T(", Release version");
+#endif
+#ifdef VERSION
+  *theApp->getLog() << _T(" ") <<  wxConvUTF8.cMB2WX(VERSION);
+#elif defined(CTSIMVERSION)
+  *theApp->getLog() << _T(" ") <<  _T(CTSIMVERSION);
+#endif
+    *theApp->getLog() << _T("\n");
+
+  wxBitmap bmp (splash);
+  if (bmp.Ok()) {
+    BitmapDialog dlg (&bmp, "About CTSim");
+    dlg.ShowModal();
+  } else {
+    wxString msg = _T("CTSim\nThe Open Source Computed Tomography Simulator\n");
+#ifdef VERSION
+    msg << _T("Version: ") <<  wxConvUTF8.cMB2WX(VERSION) << _T("\n\n");
+#elif defined(CTSIMVERSION)
+    msg << _T("Version: ") <<  wxConvUTF8.cMB2WX(CTSIMVERSION) << _T("\n\n");
+#endif
+    msg += _T("Author: Kevin Rosenberg <kevin at rosenberg.net>\nUsage: ctsim [files-to-open..] [--help]");
+
+    wxMessageBox(msg, _T("About CTSim"), wxOK | wxICON_INFORMATION, this);
+    *theApp->getLog() << msg << wxConvUTF8.cMB2WX("\n");
+  }
+}
+
+
+// Create new documents
+
+wxDocument* 
+CTSimApp::newDocumentHelper (wxDocTemplate* tmpl) {
+  wxDocument* newDoc = tmpl->CreateDocument (_T(""));
+  if (newDoc) {
+    newDoc->SetDocumentTemplate (tmpl);
+    newDoc->OnNewDocument();
+    wxString fname = newDoc->GetFilename();
+    fname += _T(".");
+    fname += tmpl->GetDefaultExtension();
+    newDoc->SetDocumentName(fname);
+    newDoc->SetTitle(fname);
+    newDoc->SetFilename(fname, true);
+  }
+
+  return newDoc;
+}
+
+ProjectionFileDocument*
+CTSimApp::newProjectionDoc()
+{
+  ProjectionFileDocument* newDoc = dynamic_cast<ProjectionFileDocument*>
+    (newDocumentHelper(m_pDocTemplProjection));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+  return newDoc;
+}
+
+ImageFileDocument*
+CTSimApp::newImageDoc()
+{
+  ImageFileDocument* newDoc = dynamic_cast<ImageFileDocument*>
+    (newDocumentHelper(m_pDocTemplImage));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+
+  return newDoc;
+}
+
+PlotFileDocument*
+CTSimApp::newPlotDoc()
+{
+  PlotFileDocument* newDoc = dynamic_cast<PlotFileDocument*>
+    (newDocumentHelper(m_pDocTemplPlot));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+
+  return newDoc;
+}
+
+
+TextFileDocument*
+CTSimApp::newTextDoc()
+{
+  TextFileDocument* newDoc = dynamic_cast<TextFileDocument*>
+    (newDocumentHelper(m_pDocTemplText));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+
+  return newDoc;
+}
+
+
+PhantomFileDocument*
+CTSimApp::newPhantomDoc()
+{
+  PhantomFileDocument* newDoc = dynamic_cast<PhantomFileDocument*>
+    (newDocumentHelper(m_pDocTemplPhantom));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+
+  return newDoc;
+}
+
+
+#if wxUSE_GLCANVAS
+Graph3dFileDocument*
+CTSimApp::newGraph3dDoc()
+{
+  Graph3dFileDocument* newDoc = dynamic_cast<Graph3dFileDocument*>
+    (newDocumentHelper(m_pDocTemplGraph3d));
+  if (newDoc)
+    newDoc->getView()->getFrame()->SetTitle(newDoc->GetDocumentName());
+
+  return newDoc;
+}
+
+#endif
diff --git a/src/ctsim.h b/src/ctsim.h
new file mode 100644
index 0000000..3188b1f
--- /dev/null
+++ b/src/ctsim.h
@@ -0,0 +1,384 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          ctsim.h
+**   Purpose:       Header file for CTSim
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __CTSIMH__
+#define __CTSIMH__
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_DMALLOC
+#include <dmalloc.h>
+#endif
+
+#ifdef MSVC
+#define HAVE_WXTHREADS 1
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+#include "wx/config.h"
+#ifdef __WXMSW__
+#include "wx/msw/helpchm.h"
+#endif
+
+#ifdef MSVC
+#define CTSIM_MDI 1
+#endif
+
+#if defined(CTSIM_MDI) && !wxUSE_MDI_ARCHITECTURE
+#error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h!
+#endif
+#ifdef CTSIM_MDI
+#include "wx/docmdi.h"
+#endif
+
+class wxMenu;
+class wxDocument;
+class ImageFileDocument;
+class ProjectionFileDocument;
+class PhantomFileDocument;
+class PlotFileDocument;
+class TextFileDocument;
+class BackgroundManager;
+
+#if wxUSE_GLCANVAS
+class Graph3dFileDocument;
+#endif
+
+#include <vector>
+#include "wx/docview.h"
+#include "wx/textctrl.h"
+#include "wx/menu.h"
+#include "wx/help.h"
+#include "wx/html/helpctrl.h"
+#include "dlgezplot.h"
+#include "ctsim-map.h"
+
+
+#if defined(__WXMSW__) || defined (MSVC)
+// #define CTSIM_WINHELP   1
+#endif
+
+// Define a new frame for main window
+#if CTSIM_MDI
+class MainFrame: public wxDocMDIParentFrame
+#else
+class MainFrame: public wxDocParentFrame
+#endif
+{
+private:
+  DECLARE_CLASS(MainFrame)
+  DECLARE_EVENT_TABLE()
+
+#ifndef CTSIM_MDI
+  wxMenu* m_pWindowMenu;
+#endif
+
+  enum { MAX_WINDOW_MENUITEMS = 20 };
+  wxMenuItem* m_apWindowMenuItems[MAX_WINDOW_MENUITEMS];
+  wxDocument* m_apWindowMenuData[MAX_WINDOW_MENUITEMS];
+
+  int m_iDefaultImportFormat;
+  int m_iDefaultPhantomID;
+  int m_iDefaultFilterID;
+  int m_iDefaultFilterDomainID;
+  unsigned int m_iDefaultFilterXSize;
+  unsigned int m_iDefaultFilterYSize;
+  double m_dDefaultFilterParam;
+  double m_dDefaultFilterBandwidth;
+  double m_dDefaultFilterInputScale;
+  double m_dDefaultFilterOutputScale;
+
+  bool m_bShuttingDown;
+
+#if CTSIM_WINHELP
+  wxCHMHelpController      m_winHelp;
+#endif
+  wxHtmlHelpController     m_htmlHelp;
+
+public:
+  MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type);
+  virtual ~MainFrame();
+
+  void OnSize (wxSizeEvent& event);
+
+#if CTSIM_WINHELP
+  wxCHMHelpController&   getWinHelpController()
+  {return m_winHelp; }
+#endif
+  wxHtmlHelpController&  getHtmlHelpController()
+  { return m_htmlHelp; }
+
+  void showHelp (int commandID);
+
+  void OnAbout (wxCommandEvent& event);
+  void OnHelpContents (wxCommandEvent& event);
+  void OnHelpTips (wxCommandEvent& event);
+  void OnCreatePhantom (wxCommandEvent& event);
+  void OnPreferences (wxCommandEvent& event);
+  void OnLogEvent (wxCommandEvent& event);  // used by thread children
+  void OnNewImageFile (wxCommandEvent& event);
+  void OnNewProjectionFile (wxCommandEvent& event);
+
+  void OnHelpButton (wxCommandEvent& event);
+  void OnImport (wxCommandEvent& event);
+
+#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
+  void OnHelpSecondary (wxCommandEvent& event);
+#endif
+
+  void OnCreateFilter (wxCommandEvent& event);
+  void OnExit (wxCommandEvent& event);
+
+  void OnUpdateUI (wxUpdateUIEvent& event);
+
+  void OnWindowMenu0 (wxCommandEvent& event);
+  void OnWindowMenu1 (wxCommandEvent& event);
+  void OnWindowMenu2 (wxCommandEvent& event);
+  void OnWindowMenu3 (wxCommandEvent& event);
+  void OnWindowMenu4 (wxCommandEvent& event);
+  void OnWindowMenu5 (wxCommandEvent& event);
+  void OnWindowMenu6 (wxCommandEvent& event);
+  void OnWindowMenu7 (wxCommandEvent& event);
+  void OnWindowMenu8 (wxCommandEvent& event);
+  void OnWindowMenu9 (wxCommandEvent& event);
+  void OnWindowMenu10 (wxCommandEvent& event);
+  void OnWindowMenu11 (wxCommandEvent& event);
+  void OnWindowMenu12 (wxCommandEvent& event);
+  void OnWindowMenu13 (wxCommandEvent& event);
+  void OnWindowMenu14 (wxCommandEvent& event);
+  void OnWindowMenu15 (wxCommandEvent& event);
+  void OnWindowMenu16 (wxCommandEvent& event);
+  void OnWindowMenu17 (wxCommandEvent& event);
+  void OnWindowMenu18 (wxCommandEvent& event);
+  void OnWindowMenu19 (wxCommandEvent& event);
+
+  void DoWindowMenu (int iMenuPosition, wxCommandEvent& event);
+
+  bool getShuttingDown() const { return m_bShuttingDown; }
+};
+
+
+class wxDocManager;
+class CTSimApp: public wxApp
+{
+private:
+  enum { O_HELP, O_PRINT, O_VERSION };
+  static struct option ctsimOptions[];
+
+  bool m_bAdvancedOptions;
+  bool m_bSetModifyNewDocs;
+  bool m_bVerboseLogging;
+  bool m_bShowStartupTips;
+  long m_iCurrentTip;
+  bool m_bUseBackgroundTasks;
+
+  wxDocManager* m_docManager;
+  MainFrame* m_pFrame;
+  wxConfig* m_pConfig;
+  wxTextCtrl* m_pLog;
+  TextFileDocument* m_pLogDoc;
+  wxDocTemplate* m_pDocTemplImage;
+  wxDocTemplate* m_pDocTemplProjection;
+  wxDocTemplate* m_pDocTemplPhantom;
+  wxDocTemplate* m_pDocTemplPlot;
+  wxDocTemplate* m_pDocTemplText;
+#if wxUSE_GLCANVAS
+  wxDocTemplate* m_pDocTemplGraph3d;
+#endif
+
+  void usage (const char* program);
+  void openConfig();
+  void closeConfig();
+  BackgroundManager*  m_pBackgroundMgr;
+  bool m_bPrintCmdLineImages;
+  bool m_bCmdLineVerboseFlag;
+
+  wxDocument* newDocumentHelper (wxDocTemplate* tmpl);
+
+public:
+  CTSimApp();
+  void OnInitCmdLine(wxCmdLineParser& parser);
+  bool OnCmdLineParsed(wxCmdLineParser& parser);
+  bool OnInit();
+  int OnExit();
+  MainFrame* getMainFrame() const
+  { return m_pFrame; }
+
+  wxTextCtrl* getLog()
+  { return m_pLog; }
+
+  wxDocManager* getDocManager()
+  { return m_docManager; }
+
+  int getNumberCPU() const { return wxThread::GetCPUCount(); }
+
+  EZPlotDialog* makeEZPlotDialog()
+  { return new EZPlotDialog (m_pFrame); }
+
+  void getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector<ImageFileDocument*>& vecIF);
+  bool getAdvancedOptions() const { return m_bAdvancedOptions; }
+  void setAdvancedOptions (bool bAdv) { m_bAdvancedOptions = bAdv; }
+  bool getVerboseLogging() const { return m_bVerboseLogging || m_bCmdLineVerboseFlag; }
+  void setVerboseLogging (bool bVerbose) { m_bVerboseLogging = bVerbose; }
+  bool getStartupTips() const { return m_bShowStartupTips; }
+  void setStartupTips(bool bTips) { m_bShowStartupTips = bTips; }
+  bool getUseBackgroundTasks() const { return m_bUseBackgroundTasks; }
+  void setUseBackgroundTasks(bool bBkgd) { m_bUseBackgroundTasks = bBkgd; }
+
+  BackgroundManager* getBackgroundManager() {return m_pBackgroundMgr;}
+
+  void ShowTips();
+
+  void setIconForFrame (wxFrame* pFrame);
+  wxConfig* getConfig()
+  { return m_pConfig; }
+  bool getAskDeleteNewDocs() const { return m_bSetModifyNewDocs; }
+  void setAskDeleteNewDocs(bool bAsk) { m_bSetModifyNewDocs = bAsk; }
+
+  wxDocTemplate* getDocTemplImage() { return m_pDocTemplImage; }
+  wxDocTemplate* getDocTemplProjection() { return m_pDocTemplProjection; }
+  wxDocTemplate* getDocTemplPhantom() { return m_pDocTemplPhantom; }
+  wxDocTemplate* getDocTemplPlot() { return m_pDocTemplPlot; }
+  wxDocTemplate* getDocTemplText() { return m_pDocTemplText; }
+#if wxUSE_GLCANVAS
+  wxDocTemplate* getDocTemplGraph3d() { return m_pDocTemplGraph3d; }
+#endif
+  TextFileDocument* getLogDoc() { return m_pLogDoc; }
+
+  ProjectionFileDocument* newProjectionDoc();
+  ImageFileDocument* newImageDoc();
+  PhantomFileDocument* newPhantomDoc();
+  PlotFileDocument* newPlotDoc();
+  TextFileDocument* newTextDoc();
+#if wxUSE_GLCANVAS
+  Graph3dFileDocument* newGraph3dDoc();
+#endif
+};
+
+DECLARE_APP(CTSimApp)
+extern class CTSimApp* theApp;
+
+enum {
+    MAINMENU_WINDOW_BASE = 500,
+    MAINMENU_HELP_ABOUT = 600,
+    MAINMENU_HELP_CONTENTS,
+    MAINMENU_HELP_TIPS,
+#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
+    MAINMENU_HELP_SECONDARY,
+#endif
+    MAINMENU_FILE_CREATE_PHANTOM,
+    MAINMENU_FILE_CREATE_FILTER,
+    MAINMENU_FILE_EXIT,
+    MAINMENU_FILE_PREFERENCES,
+    MAINMENU_LOG_EVENT,
+    MAINMENU_IMPORT,
+
+    PJMENU_FILE_PROPERTIES,
+    PJMENU_RECONSTRUCT_FBP,
+    PJMENU_RECONSTRUCT_FBP_REBIN,
+    PJMENU_RECONSTRUCT_FOURIER,
+    PJMENU_CONVERT_RECTANGULAR,
+    PJMENU_CONVERT_POLAR,
+    PJMENU_CONVERT_FFT_POLAR,
+    PJMENU_CONVERT_PARALLEL,
+    PJMENU_PLOT_TTHETA_SAMPLING,
+    PJMENU_PLOT_HISTOGRAM,
+    PJMENU_ARTIFACT_REDUCTION,
+
+    IFMENU_FILE_EXPORT,
+    IFMENU_FILE_PROPERTIES,
+
+    IFMENU_EDIT_COPY,
+    IFMENU_EDIT_CUT,
+    IFMENU_EDIT_PASTE,
+
+    IFMENU_PLOT_ROW,
+    IFMENU_PLOT_COL,
+    IFMENU_PLOT_FFT_ROW,
+    IFMENU_PLOT_FFT_COL,
+    IFMENU_PLOT_HISTOGRAM,
+
+    IFMENU_VIEW_SCALE_AUTO,
+    IFMENU_VIEW_SCALE_MINMAX,
+    IFMENU_VIEW_SCALE_FULL,
+
+    IFMENU_COMPARE_IMAGES,
+    IFMENU_COMPARE_ROW,
+    IFMENU_COMPARE_COL,
+    IFMENU_IMAGE_SCALESIZE,
+    IFMENU_IMAGE_ADD,
+    IFMENU_IMAGE_SUBTRACT,
+    IFMENU_IMAGE_MULTIPLY,
+    IFMENU_IMAGE_DIVIDE,
+#ifdef wxUSE_GLCANVAS
+    IFMENU_IMAGE_CONVERT3D,
+#endif
+
+    IFMENU_FILTER_INVERTVALUES,
+    IFMENU_FILTER_SQRT,
+    IFMENU_FILTER_SQUARE,
+    IFMENU_FILTER_LOG,
+    IFMENU_FILTER_EXP,
+    IFMENU_FILTER_FOURIER,
+    IFMENU_FILTER_INVERSE_FOURIER,
+    IFMENU_FILTER_FFT,
+    IFMENU_FILTER_IFFT,
+    IFMENU_FILTER_FFT_ROWS,
+    IFMENU_FILTER_FFT_COLS,
+    IFMENU_FILTER_IFFT_ROWS,
+    IFMENU_FILTER_IFFT_COLS,
+    IFMENU_FILTER_MAGNITUDE,
+    IFMENU_FILTER_PHASE,
+    IFMENU_FILTER_REAL,
+    IFMENU_FILTER_IMAGINARY,
+    IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER,
+    IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER,
+
+    PHMMENU_FILE_PROPERTIES,
+    PHMMENU_PROCESS_RASTERIZE,
+    PHMMENU_PROCESS_PROJECTIONS,
+
+    PLOTMENU_FILE_PROPERTIES,
+    PLOTMENU_VIEW_SCALE_MINMAX,
+    PLOTMENU_VIEW_SCALE_AUTO,
+    PLOTMENU_VIEW_SCALE_FULL,
+
+    GRAPH3D_VIEW_WIREFRAME,
+    GRAPH3D_VIEW_COLOR,
+    GRAPH3D_VIEW_LIGHTING,
+    GRAPH3D_VIEW_SMOOTH,
+    GRAPH3D_VIEW_SCALE_AUTO,
+    GRAPH3D_VIEW_SCALE_MINMAX,
+    GRAPH3D_VIEW_SCALE_FULL,
+
+    RECONSTRUCTION_THREAD_EVENT,
+    NEW_IMAGEFILE_EVENT,
+    NEW_PROJECTIONFILE_EVENT,
+};
+
+#endif
diff --git a/src/ctsim.rc b/src/ctsim.rc
new file mode 100644
index 0000000..b86c4e2
--- /dev/null
+++ b/src/ctsim.rc
@@ -0,0 +1 @@
+#include "wx/msw/wx.rc"
diff --git a/src/ctsim.xpm b/src/ctsim.xpm
new file mode 100644
index 0000000..7175102
--- /dev/null
+++ b/src/ctsim.xpm
@@ -0,0 +1,153 @@
+static const char *ctsim16_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"16 16 130 2",
+/* colors */
+"   c #F5F502",
+" . c #D8DA00",
+" X c #FEFDA3",
+" o c #FAFAFF",
+" O c #FCFBF7",
+" + c #F7F2D1",
+" @ c #FAF5F5",
+" # c #F8F3F3",
+" $ c #F0EB00",
+" % c #FFFF3D",
+" & c #FFFFFD",
+" * c #FEFC07",
+" = c #E6E200",
+" - c #FDFBFB",
+" ; c #F7F200",
+" : c #F8F001",
+" > c #F6F294",
+" , c #FFFF7F",
+" < c #EDED00",
+" 1 c #E6E66D",
+" 2 c #EDE900",
+" 3 c #FFFE0B",
+" 4 c #FFFE36",
+" 5 c #FEFD00",
+" 6 c #FCF9FD",
+" 7 c #FDFC5F",
+" 8 c #F3F3F4",
+" 9 c #EAEB00",
+" 0 c #FEFD6D",
+" q c #FBFBFF",
+" w c #FFFF2F",
+" e c #FBFB00",
+" r c #FBF900",
+" t c #F8F2F2",
+" y c #EFEFC8",
+" u c #E9E9C2",
+" i c #FFFEFC",
+" p c #E3E366",
+" a c #FFFFF2",
+" s c #F8F100",
+" d c #FFFFB3",
+" f c #FFFF49",
+" g c #E8E839",
+" h c #FFFEFF",
+" j c #FEFEFE",
+" k c #FFFE00",
+" l c #FCFAFC",
+" z c #E9E91C",
+" x c #EBEB35",
+" c c #EBEC00",
+" v c #FFFFF8",
+" b c #E1E100",
+" n c #FCFC00",
+" m c #E1DB00",
+" M c #FFFF24",
+" N c #F9F4FC",
+" B c #FFFFB9",
+" V c #F2ED00",
+" C c #FFFF66",
+" Z c #FFFFFB",
+" A c #F9F800",
+" S c #FBF7F7",
+" D c #F9F5F5",
+" F c #E5E549",
+" G c #E9E939",
+" H c #EFEB00",
+" J c #FEFDFD",
+" K c #EBEB13",
+" L c #FFFF80",
+" P c #ECED00",
+" I c #E2E200",
+" U c #FDFD00",
+" Y c #E2DE00",
+" T c #FEFDC1",
+" R c #EBEB6C",
+" E c #FFFF6F",
+" W c #FFFF9A",
+" Q c #F2F202",
+" ! c #F9F4F4",
+" ~ c #FFFFB1",
+" ^ c #F0EC00",
+" / c #FFFD72",
+" ( c #FFFF08",
+" ) c #E6E700",
+" _ c #FFFFF3",
+" ` c #FCFAFA",
+" ' c #DCDC00",
+" ] c #F7F300",
+" [ c #F7F3C0",
+" { c #F4F4F2",
+" } c #EDEE00",
+" | c #EDE800",
+".  c #FEFEFF",
+".. c #E3E500",
+".X c #FDFCFE",
+".o c #FEFE00",
+".O c #FEFC00",
+".+ c #E9E91D",
+".@ c #FFFFE2",
+".# c #FFFFCE",
+".$ c #FBF6FF",
+".% c #F9F3F3",
+".& c #E6E669",
+".* c #E7E800",
+".= c #FCF9F9",
+".- c #FFFFFF",
+".; c #E4E400",
+".: c #FFFF00",
+".> c #FFFD00",
+"., c #FBF7FB",
+".< c #FAF5FA",
+".1 c #F5F600",
+".2 c #FBF927",
+".3 c #FCF9FF",
+".4 c #E1DC00",
+".5 c #F2F200",
+".6 c #FFFFDA",
+".7 c #FFFF06",
+".8 c #FEFD30",
+".9 c #EBEB1A",
+".0 c #F9F700",
+".q c #FAF6F6",
+".w c #F9F100",
+".e c #EFEA00",
+".r c #FFFEFE",
+".t c #E5E500",
+".y c #FCFAFB",
+".u c #FEFEE9",
+".i c #F6F100",
+".p c #E2DD00",
+/* pixels */
+".-.-.-.  S !.% ! # t # S J.-.-.-",
+".-.- O N.3 h.-.-.-.-.r.= @ -.-.-",
+".-.X [ 7 d a.-.-.-.-.-.- j.q -.-",
+" j.<.u (.: M E B _.-.-.-.- J @ j",
+" S.y.- f.: 5.> r.2 / T v.-.- l S",
+" D j.- , 5.w ^ Y.p H :.8 L.# i.$",
+" D.-.- ~.O ].. }.5 ) ;.O.:.7 % >",
+" D.-.-.@ 3 $.t I ' c | k.:.:.: K",
+" D.-.- & 4.e P.; b.* = k.:.:.:.9",
+" D.-.-.- 0.i 9 <.1 . V 5.:.:.: x",
+" D j.-.- X s 2.4 m |.w U.:.:.o R",
+" S `.-.-.6 *.> A.0.>.O.:.:.:   y",
+" j @ J.- Z w.:.:.:.:.:.:.: n.& q",
+".- -.q J.- C.:.:.:.:.:.: e F {.-",
+".-.- - @ 6 W.:.:.:.:.: Q p 8.-.-",
+".-.-.- j., + G z.+ g 1 u o.-.-.-"
+};
+
diff --git a/src/dialogs.cpp b/src/dialogs.cpp
new file mode 100644
index 0000000..88cf1c7
--- /dev/null
+++ b/src/dialogs.cpp
@@ -0,0 +1,1658 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dialogs.cpp
+**   Purpose:       Dialog routines for CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#include "wx/statline.h"
+#include "wx/sizer.h"
+#include "dialogs.h"
+#include "ctsim.h"
+#include "ct.h"
+#include "docs.h"
+#include "views.h"
+#include "imagefile.h"
+#include "projections.h"
+
+#if defined(MSVC) || HAVE_SSTREAM
+#include <sstream>
+#else
+#include <sstream_subst>
+#endif
+
+
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    StringValueAndTitleListBox
+///////////////////////////////////////////////////////////////////////
+
+#if 0
+StringValueAndTitleListBox::StringValueAndTitleListBox (wxDialog* pParent, int nChoices, 
+                                                        wxChar const* const* asTitle, 
+                                                        char const* const* aszValue)
+: wxListBox ()
+{
+  wxString* psTitle = new wxString [nChoices];
+  for (int i = 0; i < nChoices; i++)
+    psTitle[i] = asTitle[i];
+
+  Create (pParent, -1, wxDefaultPosition, wxSize(-1,-1), nChoices, psTitle, wxLB_SINGLE | wxLB_NEEDED_SB);
+
+  m_ppszValues = aszValue;
+  delete [] psTitle;
+};
+#endif
+
+const char*
+StringValueAndTitleListBox::getSelectionStringValue () const
+{
+  return m_ppszValues[GetSelection()];
+}
+
+StringValueAndTitleRadioBox::StringValueAndTitleRadioBox (wxDialog* pParent, 
+                                                          wxChar const* strTitle, 
+                                                          int nChoices, 
+                                                          char const* const* aszTitle, 
+                                                          char const* const* aszValue)
+: wxRadioBox ()
+{
+  wxString* psTitle = new wxString [nChoices];
+  for (int i = 0; i < nChoices; i++)
+    psTitle[i] = wxConvUTF8.cMB2WX(aszTitle[i]);
+
+  Create (pParent, -1, strTitle, wxDefaultPosition, wxDefaultSize, nChoices, psTitle, 1, wxRA_SPECIFY_COLS);
+
+  m_ppszValues = aszValue;
+  delete [] psTitle;
+};
+
+
+
+const char*
+StringValueAndTitleRadioBox::getSelectionStringValue () const
+{
+  return m_ppszValues[GetSelection()];
+}
+
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    DialogGetPhantom
+///////////////////////////////////////////////////////////////////////
+
+DialogGetPhantom::DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom)
+: wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Select Phantom")), 0, wxCENTER | wxALL, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  m_pRadioBoxPhantom = new StringValueAndTitleRadioBox (this, _T("Phantom"), Phantom::getPhantomCount(), Phantom::getPhantomTitleArray(), Phantom::getPhantomNameArray());
+  m_pRadioBoxPhantom->SetSelection (iDefaultPhantom);
+  pTopSizer->Add (m_pRadioBoxPhantom, 0, wxALL | wxALIGN_CENTER);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PHANTOM);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+const char*
+DialogGetPhantom::getPhantom()
+{
+  return m_pRadioBoxPhantom->getSelectionStringValue();
+}
+
+
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    DialogGetThetaRange
+///////////////////////////////////////////////////////////////////////
+
+DialogGetThetaRange::DialogGetThetaRange (wxWindow* pParent, int iDefaultThetaRange)
+: wxDialog (pParent, -1, _T("Select Phantom"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Select Theta Range")), 0, wxCENTER | wxALL, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxString asTitle[] = {_T("Unconstrained"), _T("Normalized to 2pi"), _T("Fold to pi")};
+
+  m_pRadioBoxThetaRange = new wxRadioBox (this, -1, _T("Theta Range"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS);
+  if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_UNCONSTRAINED)
+    m_pRadioBoxThetaRange->SetSelection (0);
+  else if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI)
+    m_pRadioBoxThetaRange->SetSelection (1);
+  else if (iDefaultThetaRange == ParallelRaysums::THETA_RANGE_FOLD_TO_PI)
+    m_pRadioBoxThetaRange->SetSelection (2);
+
+  pTopSizer->Add (m_pRadioBoxThetaRange, 0, wxALL | wxALIGN_CENTER);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_THETA_RANGE);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+int
+DialogGetThetaRange::getThetaRange()
+{
+  int iSelection = m_pRadioBoxThetaRange->GetSelection();
+  if (iSelection == 0)
+    return ParallelRaysums::THETA_RANGE_UNCONSTRAINED;
+  else if (iSelection == 1)
+    return ParallelRaysums::THETA_RANGE_NORMALIZE_TO_TWOPI;
+  else
+    return ParallelRaysums::THETA_RANGE_FOLD_TO_PI;
+}
+
+
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    DialogGetComparisonImage
+///////////////////////////////////////////////////////////////////////
+
+DialogGetComparisonImage::DialogGetComparisonImage (wxWindow* pParent, wxChar const* pwszTitle, 
+                                                    const std::vector<ImageFileDocument*>& rVecIF, bool bShowMakeDifference)
+: wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_rVecIF(rVecIF)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxALL, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
+
+  int iNImages = m_rVecIF.size();
+  wxString* pstrImages = new wxString [iNImages];
+  for (int i = 0; i < iNImages; i++) {
+    ImageFileView* pView = dynamic_cast<ImageFileView*>(m_rVecIF[i]->GetFirstView());
+    if (pView)
+      pstrImages[i] = pView->getFrame()->GetTitle();
+  }
+
+  m_pListBoxImageChoices = new wxListBox (this, -1, wxDefaultPosition, wxDefaultSize, iNImages, pstrImages, wxLB_SINGLE);
+  delete [] pstrImages;
+
+  m_pListBoxImageChoices->SetSelection (0);
+  pTopSizer->Add (m_pListBoxImageChoices, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+
+  if (bShowMakeDifference) {
+    m_pMakeDifferenceImage = new wxCheckBox (this, -1, _T("Make Difference Image"));
+    m_pMakeDifferenceImage->SetValue (FALSE);
+    pTopSizer->Add (m_pMakeDifferenceImage, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+  } else
+    m_pMakeDifferenceImage = NULL;
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_COMPARISON);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+ImageFileDocument*
+DialogGetComparisonImage::getImageFileDocument()
+{
+  return m_rVecIF[ m_pListBoxImageChoices->GetSelection() ];
+}
+
+bool
+DialogGetComparisonImage::getMakeDifferenceImage()
+{
+  if (m_pMakeDifferenceImage)
+    return m_pMakeDifferenceImage->GetValue();
+  else
+    return false;
+}
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS DiaglogPreferences Implementation
+/////////////////////////////////////////////////////////////////////
+
+DialogPreferences::DialogPreferences (wxWindow* pParent, wxChar const* pwszTitle,
+                                      bool bAdvancedOptions, bool bAskDeleteNewDocs, bool bVerboseLogging, bool bStartupTips, 
+                                      bool bUseBackgroundTasks)
+: wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  m_pCBAdvancedOptions = new wxCheckBox (this, -1, _T("Advanced Options"), wxDefaultPosition, wxSize(250, 25), 0);
+  m_pCBAdvancedOptions->SetValue (bAdvancedOptions);
+  pTopSizer->Add (m_pCBAdvancedOptions, 0, wxALIGN_CENTER_VERTICAL);
+
+  m_pCBAskDeleteNewDocs = new wxCheckBox (this, -1, _T("Ask \"Save New Documents\" Before Closing"), wxDefaultPosition, wxSize(250, 25), 0);
+  m_pCBAskDeleteNewDocs->SetValue (bAskDeleteNewDocs);
+  pTopSizer->Add (m_pCBAskDeleteNewDocs, 0, wxALIGN_CENTER_VERTICAL);
+
+  m_pCBVerboseLogging = new wxCheckBox (this, -1, _T("Verbose Logging"), wxDefaultPosition, wxSize(250, 25), 0);
+  m_pCBVerboseLogging->SetValue (bVerboseLogging);
+  pTopSizer->Add (m_pCBVerboseLogging, 0, wxALIGN_CENTER_VERTICAL);
+
+  m_pCBStartupTips = new wxCheckBox (this, -1, _T("Show Tips at Start"), wxDefaultPosition, wxSize(250, 25), 0);
+  m_pCBStartupTips->SetValue (bStartupTips);
+  pTopSizer->Add (m_pCBStartupTips, 0, wxALIGN_CENTER_VERTICAL);
+
+#if HAVE_WXTHREADS && MSVC
+  m_pCBUseBackgroundTasks = new wxCheckBox (this, -1, _T("Put Tasks in Background"), wxDefaultPosition, wxSize(250, 25), 0);
+  m_pCBUseBackgroundTasks->SetValue (bUseBackgroundTasks);
+  pTopSizer->Add (m_pCBUseBackgroundTasks, 0, wxALIGN_CENTER_VERTICAL);
+#endif
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PREFERENCES);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+DialogPreferences::~DialogPreferences ()
+{
+}
+
+bool
+DialogPreferences::getAdvancedOptions ()
+{
+  return static_cast<bool>(m_pCBAdvancedOptions->GetValue());
+}
+
+bool
+DialogPreferences::getAskDeleteNewDocs ()
+{
+  return static_cast<bool>(m_pCBAskDeleteNewDocs->GetValue());
+}
+
+bool
+DialogPreferences::getVerboseLogging ()
+{
+  return static_cast<bool>(m_pCBVerboseLogging->GetValue());
+}
+
+bool
+DialogPreferences::getStartupTips ()
+{
+  return static_cast<bool>(m_pCBStartupTips->GetValue());
+}
+
+bool
+DialogPreferences::getUseBackgroundTasks ()
+{
+#if HAVE_WXTHREADS && MSVC
+  return static_cast<bool>(m_pCBUseBackgroundTasks->GetValue());
+#else
+  return false;
+#endif
+}
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS DiaglogGetMinMax Implementation
+/////////////////////////////////////////////////////////////////////
+
+DialogGetMinMax::DialogGetMinMax (wxWindow* pParent, wxChar const* pwszTitle, double dDefaultMin, double dDefaultMax)
+: wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxString sMin;
+  sMin << dDefaultMin;
+  m_pTextCtrlMin = new wxTextCtrl (this, -1, sMin, wxDefaultPosition, wxSize(100, 25), 0);
+  wxString sMax;
+  sMax << dDefaultMax;
+  m_pTextCtrlMax = new wxTextCtrl (this, -1, sMax, wxDefaultPosition, wxSize(100, 25), 0);
+
+  wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Minimum")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlMin, 0, wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Maximum")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlMax, 0, wxALIGN_CENTER_VERTICAL);
+  pTopSizer->Add (pGridSizer, 1, wxALL, 10);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_MINMAX);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+DialogGetMinMax::~DialogGetMinMax ()
+{
+}
+
+double
+DialogGetMinMax::getMinimum ()
+{
+  wxString strCtrl = m_pTextCtrlMin->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return dValue;
+  else
+    return (m_dDefaultMin);
+}
+
+double
+DialogGetMinMax::getMaximum ()
+{
+  wxString strCtrl = m_pTextCtrlMax->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return dValue;
+  else
+    return (m_dDefaultMax);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS DialogAutoScaleParameters IMPLEMENTATION
+/////////////////////////////////////////////////////////////////////
+
+DialogAutoScaleParameters::DialogAutoScaleParameters (wxWindow *pParent, double mean, double mode, double median, double stddev, double dDefaultScaleFactor)
+: wxDialog (pParent, -1, _T("Auto Scale Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION), m_dMean(mean), m_dMode(mode), m_dMedian(median), m_dStdDev(stddev)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Auto Scale Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxString asTitle[] = {_T("Mode"), _T("Median"), _T("Mean")};
+
+  m_pRadioBoxCenter = new wxRadioBox (this, -1, _T("Center"), wxDefaultPosition, wxDefaultSize, 3, asTitle, 1, wxRA_SPECIFY_COLS);
+  m_pRadioBoxCenter->SetSelection (0);
+  pTopSizer->Add (m_pRadioBoxCenter, 0, wxALL | wxALIGN_CENTER);
+
+  wxGridSizer *pGridSizer = new wxGridSizer (2);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Standard Deviation Factor")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  wxString sDefaultFactor;
+  sDefaultFactor << dDefaultScaleFactor;
+  m_pTextCtrlStdDevFactor = new wxTextCtrl (this, -1, sDefaultFactor, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (m_pTextCtrlStdDevFactor, 0, wxALIGN_CENTER_VERTICAL);
+  pTopSizer->Add (pGridSizer, 1, wxALL, 10);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_AUTOSCALE);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+bool
+DialogAutoScaleParameters::getMinMax (double* pMin, double* pMax)
+{
+  int iCenter = m_pRadioBoxCenter->GetSelection();
+  double dCenter = m_dMode;
+  if (iCenter == 1)
+    dCenter = m_dMedian;
+  else if (iCenter == 2)
+    dCenter = m_dMean;
+
+  wxString sStddevFactor = m_pTextCtrlStdDevFactor->GetValue();
+  double dValue;
+  if (! sStddevFactor.ToDouble (&dValue)) {
+    *theApp->getLog() << _T("Error: Non-numeric Standard Deviation Factor of ") << sStddevFactor << _T("\n");
+    return false;
+  }
+  double dHalfWidth = dValue * m_dStdDev / 2;
+  *pMin = dCenter - dHalfWidth;
+  *pMax = dCenter + dHalfWidth;
+  *theApp->getLog() << _T("Setting minimum to ") << *pMin << _T(" and maximum to ") << *pMax << _T("\n");
+
+  return true;
+}
+
+double
+DialogAutoScaleParameters::getAutoScaleFactor ()
+{
+  wxString sStddevFactor = m_pTextCtrlStdDevFactor->GetValue();
+  double dValue = 1.;
+  if (! sStddevFactor.ToDouble (&dValue)) {
+    *theApp->getLog() << _T("Error: Non-numeric Standard Deviation Factor of ") << sStddevFactor << _T("\n");
+  }
+
+  return dValue;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS IDENTIFICATION
+//
+// DialogGetRasterParameters
+/////////////////////////////////////////////////////////////////////
+
+DialogGetRasterParameters::DialogGetRasterParameters
+   (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultNSamples, double dDefaultViewRatio)
+: wxDialog (pParent, -1, _T("Rasterization Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Rasterization Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
+  wxString sXSize;
+  sXSize << iDefaultXSize;
+  m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sYSize;
+  sYSize << iDefaultYSize;
+  m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sViewRatio;
+  sViewRatio << dDefaultViewRatio;
+  m_pTextCtrlViewRatio = new wxTextCtrl (this, -1, sViewRatio, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("View Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlViewRatio, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sNSamples;
+  sNSamples << iDefaultNSamples;
+  m_pTextCtrlNSamples = new wxTextCtrl (this, -1, sNSamples, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Samples per Pixel")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlNSamples, 0, wxALIGN_CENTER_VERTICAL);
+
+  pTopSizer->Add (pGridSizer, 1, wxALL, 10);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_RASTERIZE);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+DialogGetRasterParameters::~DialogGetRasterParameters ()
+{
+}
+
+
+unsigned int
+DialogGetRasterParameters::getXSize ()
+{
+  wxString strCtrl = m_pTextCtrlXSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultXSize);
+}
+
+unsigned int
+DialogGetRasterParameters::getYSize ()
+{
+  wxString strCtrl = m_pTextCtrlYSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultYSize);
+}
+
+unsigned int
+DialogGetRasterParameters::getNSamples ()
+{
+  wxString strCtrl = m_pTextCtrlNSamples->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultNSamples);
+}
+
+double
+DialogGetRasterParameters::getViewRatio ()
+{
+  wxString strCtrl = m_pTextCtrlViewRatio->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return dValue;
+  else
+    return (m_dDefaultViewRatio);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS IDENTIFICATION
+//
+// DialogGetProjectionParameters
+/////////////////////////////////////////////////////////////////////
+
+
+DialogGetProjectionParameters::DialogGetProjectionParameters
+   (wxWindow* pParent, int iDefaultNDet, int iDefaultNView, int iDefaultOffsetView, int iDefaultNSamples,
+    double dDefaultRotAngle, double dDefaultFocalLength, double dDefaultCenterDetectorLength,
+    double dDefaultViewRatio, double dDefaultScanRatio, int iDefaultGeometry, int iDefaultTrace)
+: wxDialog (pParent, -1, _T("Projection Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  m_dDefaultRotAngle = dDefaultRotAngle;
+  m_dDefaultFocalLength = dDefaultFocalLength;
+  m_dDefaultCenterDetectorLength = dDefaultCenterDetectorLength;
+  m_dDefaultViewRatio = dDefaultViewRatio;
+  m_dDefaultScanRatio = dDefaultScanRatio;
+  m_iDefaultNSamples = iDefaultNSamples;
+  m_iDefaultNView = iDefaultNView;
+  m_iDefaultNDet = iDefaultNDet;
+  m_iDefaultTrace = iDefaultTrace;
+  m_iDefaultGeometry = iDefaultGeometry;
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Projection Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2);
+  m_pRadioBoxGeometry = new StringValueAndTitleRadioBox (this, _T("Geometry"), Scanner::getGeometryCount(), Scanner::getGeometryTitleArray(), Scanner::getGeometryNameArray());
+  m_pRadioBoxGeometry->SetSelection (iDefaultGeometry);
+
+  pGridSizer->Add (m_pRadioBoxGeometry, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+
+  m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), Trace::getTraceCount(), Trace::getTraceTitleArray(), Trace::getTraceNameArray());
+  m_pRadioBoxTrace->SetSelection (iDefaultTrace);
+  pGridSizer->Add (m_pRadioBoxTrace, 0, wxALL | wxALIGN_CENTER | wxEXPAND);
+
+          wxFlexGridSizer* pText1Sizer = new wxFlexGridSizer(2);
+  wxString sNDet;
+  sNDet << iDefaultNDet;
+  m_pTextCtrlNDet = new wxTextCtrl (this, -1, sNDet, wxDefaultPosition, wxSize(100, 25), 0);
+  pText1Sizer->Add (new wxStaticText (this, -1, _T("Detectors")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pText1Sizer->Add (m_pTextCtrlNDet, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sNView;
+  sNView << iDefaultNView;
+  m_pTextCtrlNView = new wxTextCtrl (this, -1, sNView, wxDefaultPosition, wxSize(100, 25), 0);
+  pText1Sizer->Add (new wxStaticText (this, -1, _T("Views")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pText1Sizer->Add (m_pTextCtrlNView, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sNSamples;
+  sNSamples << iDefaultNSamples;
+  m_pTextCtrlNSamples = new wxTextCtrl (this, -1, sNSamples, wxDefaultPosition, wxSize(100, 25), 0);
+  pText1Sizer->Add (new wxStaticText (this, -1, _T("Samples per Detector")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pText1Sizer->Add (m_pTextCtrlNSamples, 0, wxALIGN_CENTER_VERTICAL);
+
+  pGridSizer->Add (pText1Sizer);
+
+  wxFlexGridSizer* pText2Sizer = new wxFlexGridSizer(2);
+  wxString sViewRatio;
+  sViewRatio << dDefaultViewRatio;
+  m_pTextCtrlViewRatio = new wxTextCtrl (this, -1, sViewRatio, wxDefaultPosition, wxSize(100, 25), 0);
+  pText2Sizer->Add (new wxStaticText (this, -1, _T("View Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pText2Sizer->Add (m_pTextCtrlViewRatio, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sScanRatio;
+  sScanRatio << dDefaultScanRatio;
+  m_pTextCtrlScanRatio = new wxTextCtrl (this, -1, sScanRatio, wxDefaultPosition, wxSize(100, 25), 0);
+  pText2Sizer->Add (new wxStaticText (this, -1, _T("Scan Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pText2Sizer->Add (m_pTextCtrlScanRatio, 0, wxALIGN_CENTER_VERTICAL);
+  wxString sFocalLength;
+  sFocalLength << dDefaultFocalLength;
+  m_pTextCtrlFocalLength = new wxTextCtrl (this, -1, sFocalLength, wxDefaultPosition, wxSize(100, 25), 0);
+  pText2Sizer->Add (new wxStaticText (this, -1, _T("Focal Length Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pText2Sizer->Add (m_pTextCtrlFocalLength, 0, wxALIGN_CENTER_VERTICAL);
+
+  if (theApp->getAdvancedOptions()) {
+    wxString sCenterDetectorLength;
+    sCenterDetectorLength << dDefaultCenterDetectorLength;
+    m_pTextCtrlCenterDetectorLength = new wxTextCtrl (this, -1, sCenterDetectorLength, wxDefaultPosition, wxSize(100, 25), 0);
+    pText2Sizer->Add (new wxStaticText (this, -1, _T("Center-Detector Length Ratio")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pText2Sizer->Add (m_pTextCtrlCenterDetectorLength, 0, wxALIGN_CENTER_VERTICAL);
+
+    wxString sRotAngle;
+    sRotAngle << dDefaultRotAngle;
+    m_pTextCtrlRotAngle = new wxTextCtrl (this, -1, sRotAngle, wxDefaultPosition, wxSize(100, 25), 0);
+    pText2Sizer->Add (new wxStaticText (this, -1, _T("Rotation Angle (Fraction of circle)")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pText2Sizer->Add (m_pTextCtrlRotAngle, 0, wxALIGN_CENTER_VERTICAL);
+
+    wxString sOffsetView;
+    sOffsetView << iDefaultOffsetView;
+    m_pTextCtrlOffsetView = new wxTextCtrl (this, -1, sOffsetView, wxDefaultPosition, wxSize(100, 25), 0);
+    pText2Sizer->Add (new wxStaticText (this, -1, _T("Gantry offset in units of 'views' ")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pText2Sizer->Add (m_pTextCtrlOffsetView, 0, wxALIGN_CENTER_VERTICAL);
+
+  }
+  pGridSizer->Add (pText2Sizer);
+
+  pTopSizer->Add (pGridSizer, 1, wxALL, 10);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_PROJECTIONS);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+
+  m_pRadioBoxGeometry->SetFocus();
+}
+
+DialogGetProjectionParameters::~DialogGetProjectionParameters ()
+{
+}
+
+
+unsigned int
+DialogGetProjectionParameters::getNDet ()
+{
+  wxString strCtrl = m_pTextCtrlNDet->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultNDet);
+}
+
+unsigned int
+DialogGetProjectionParameters::getNView ()
+{
+  wxString strCtrl = m_pTextCtrlNView->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultNView);
+}
+
+unsigned int
+DialogGetProjectionParameters::getOffsetView ()
+{
+  if (theApp->getAdvancedOptions()) {
+          wxString strCtrl = m_pTextCtrlOffsetView->GetValue();
+          unsigned long lValue;
+          if (strCtrl.ToULong (&lValue))
+            return lValue;
+          else
+            return (m_iDefaultOffsetView);
+  }
+  else
+    return 0;
+}
+
+unsigned int
+DialogGetProjectionParameters::getNSamples ()
+{
+  wxString strCtrl = m_pTextCtrlNSamples->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultNSamples);
+}
+
+double
+DialogGetProjectionParameters::getRotAngle ()
+{
+  if (theApp->getAdvancedOptions()) {
+    wxString strCtrl = m_pTextCtrlRotAngle->GetValue();
+    double dValue;
+    if (strCtrl.ToDouble (&dValue))
+      return (dValue * TWOPI);
+    else
+      return (m_dDefaultRotAngle);
+  } else {
+    if (Scanner::convertGeometryNameToID (m_pRadioBoxGeometry->getSelectionStringValue()) ==
+          Scanner::GEOMETRY_PARALLEL)
+      return (PI);
+    else
+      return (TWOPI);
+  }
+}
+
+double
+DialogGetProjectionParameters::getFocalLengthRatio ()
+{
+  wxString strCtrl = m_pTextCtrlFocalLength->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return (dValue);
+  else
+    return (m_dDefaultFocalLength);
+}
+
+double
+DialogGetProjectionParameters::getCenterDetectorLengthRatio ()
+{
+  if (theApp->getAdvancedOptions()) {
+    wxString strCtrl = m_pTextCtrlCenterDetectorLength->GetValue();
+    double dValue;
+    if (strCtrl.ToDouble (&dValue))
+      return (dValue);
+    else
+      return (m_dDefaultCenterDetectorLength);
+  } else
+    return getFocalLengthRatio(); // default is to set equal to focal-length
+}
+
+double
+DialogGetProjectionParameters::getViewRatio ()
+{
+  wxString strCtrl = m_pTextCtrlViewRatio->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return (dValue);
+  else
+    return (m_dDefaultViewRatio);
+}
+
+double
+DialogGetProjectionParameters::getScanRatio ()
+{
+  wxString strCtrl = m_pTextCtrlScanRatio->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return (dValue);
+  else
+    return (m_dDefaultScanRatio);
+}
+
+const char*
+DialogGetProjectionParameters::getGeometry ()
+{
+  return m_pRadioBoxGeometry->getSelectionStringValue();
+}
+
+int
+DialogGetProjectionParameters::getTrace ()
+{
+  return Trace::convertTraceNameToID(m_pRadioBoxTrace->getSelectionStringValue());
+}
+
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS IDENTIFICATION
+//
+// DialogGetReconstructionParameters
+/////////////////////////////////////////////////////////////////////
+
+
+DialogGetReconstructionParameters::DialogGetReconstructionParameters (wxWindow* pParent, int iDefaultXSize,
+                     int iDefaultYSize, int iDefaultFilterID, double dDefaultHammingParam,
+                     int iDefaultFilterMethodID, int iDefaultFilterGenerationID, int iDefaultZeropad,
+                     int iDefaultInterpID, int iDefaultInterpParam, int iDefaultBackprojectID, int iTrace,
+                     ReconstructionROI* pDefaultROI)
+: wxDialog (pParent, -1, _T("Reconstruction Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  m_iDefaultXSize = iDefaultXSize;
+  m_iDefaultYSize = iDefaultYSize;
+  m_dDefaultFilterParam = dDefaultHammingParam;
+  m_iDefaultZeropad = iDefaultZeropad;
+  m_iDefaultInterpParam = iDefaultInterpParam;
+  m_dDefaultRoiXMin = pDefaultROI->m_dXMin;
+  m_dDefaultRoiXMax = pDefaultROI->m_dXMax;
+  m_dDefaultRoiYMin = pDefaultROI->m_dYMin;
+  m_dDefaultRoiYMax = pDefaultROI->m_dYMax;
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Filtered Backprojection Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxFlexGridSizer* pGridSizer = NULL;
+  if (theApp->getAdvancedOptions())
+    pGridSizer = new wxFlexGridSizer (4);
+  else
+    pGridSizer = new wxFlexGridSizer (3);
+
+  if (theApp->getAdvancedOptions())
+    m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
+  else
+    m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getReconstructFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
+  m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
+  pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+
+  if (theApp->getAdvancedOptions()) {
+    m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), ProcessSignal::getFilterMethodCount(), ProcessSignal::getFilterMethodTitleArray(), ProcessSignal::getFilterMethodNameArray());
+    m_pRadioBoxFilterMethod->SetSelection (iDefaultFilterMethodID);
+    pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+  } else {
+#if HAVE_FFTW
+    static const char* aszFilterMethodTitle[] = {"Convolution", "FFT"};
+    static const char* aszFilterMethodName[] = {"convolution", "rfftw"};
+#else
+    static const char* aszFilterMethodTitle[] = {"Convolution", "Fourier"};
+    static const char* aszFilterMethodName[] = {"convolution", "fourier-table"};
+#endif
+      m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), 2, aszFilterMethodTitle, aszFilterMethodName);
+#if HAVE_FFTW
+      m_pRadioBoxFilterMethod->SetSelection (1);
+#else
+      m_pRadioBoxFilterMethod->SetSelection (0);
+#endif
+      pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+  }
+
+  if (theApp->getAdvancedOptions()) {
+    m_pRadioBoxFilterGeneration = new StringValueAndTitleRadioBox (this, _T("Filter Generation"), ProcessSignal::getFilterGenerationCount(), ProcessSignal::getFilterGenerationTitleArray(), ProcessSignal::getFilterGenerationNameArray());
+    m_pRadioBoxFilterGeneration->SetSelection (iDefaultFilterGenerationID);
+    pGridSizer->Add (m_pRadioBoxFilterGeneration, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+
+    m_pRadioBoxBackproject = new StringValueAndTitleRadioBox (this, _T("Backprojection"), Backprojector::getBackprojectCount(), Backprojector::getBackprojectTitleArray(), Backprojector::getBackprojectNameArray());
+    m_pRadioBoxBackproject->SetSelection (iDefaultBackprojectID);
+    pGridSizer->Add (m_pRadioBoxBackproject, 0, wxALL | wxALIGN_RIGHT | wxEXPAND);
+  }
+
+  m_pRadioBoxInterp = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Backprojector::getInterpCount(), Backprojector::getInterpTitleArray(), Backprojector::getInterpNameArray());
+  m_pRadioBoxInterp->SetSelection (iDefaultInterpID);
+  pGridSizer->Add (m_pRadioBoxInterp, 0, wxALL | wxALIGN_RIGHT | wxEXPAND);
+
+  static const char* aszTraceTitle[] = {"None", "Full"};
+  static const char* aszTraceName[] = {"none", "full"};
+  m_pRadioBoxTrace = new StringValueAndTitleRadioBox (this, _T("Trace Level"), 2, aszTraceTitle, aszTraceName);
+  iTrace = clamp(iTrace, 0, 1);
+  m_pRadioBoxTrace->SetSelection (iTrace);
+  pGridSizer->Add (m_pRadioBoxTrace);
+
+  wxFlexGridSizer* pTextGridSizer = new wxFlexGridSizer (2);
+  wxString sXSize;
+  sXSize << iDefaultXSize;
+  m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pTextGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+  wxString sYSize;
+  sYSize << iDefaultYSize;
+  m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pTextGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  wxString sHammingParam;
+  sHammingParam << dDefaultHammingParam;
+  m_pTextCtrlFilterParam = new wxTextCtrl (this, -1, sHammingParam, wxDefaultPosition, wxSize(100, 25), 0);
+  pTextGridSizer->Add (new wxStaticText (this, -1, _T("Hamming Parameter")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pTextGridSizer->Add (m_pTextCtrlFilterParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  if (theApp->getAdvancedOptions()) {
+    wxString sZeropad;
+    sZeropad << iDefaultZeropad;
+    m_pTextCtrlZeropad = new wxTextCtrl (this, -1, sZeropad, wxDefaultPosition, wxSize(100, 25), 0);
+    pTextGridSizer->Add (new wxStaticText (this, -1, _T("Zeropad")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+  }
+  pGridSizer->Add (pTextGridSizer);
+
+#if HAVE_FREQ_PREINTERP
+  wxString sInterpParam;
+  sInterpParam << iDefaultInterpParam;
+  m_pTextCtrlInterpParam = new wxTextCtrl (this, -1, sInterpParam, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Interpolation Parameter")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlInterpParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+#endif
+
+  if (theApp->getAdvancedOptions()) {
+    wxFlexGridSizer* pROIGridSizer = new wxFlexGridSizer (2);
+    wxString sRoiXMin;
+    sRoiXMin << m_dDefaultRoiXMin;
+    m_pTextCtrlRoiXMin = new wxTextCtrl (this, -1, sRoiXMin, wxDefaultPosition, wxSize(100, 25), 0);
+    pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI XMin")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pROIGridSizer->Add (m_pTextCtrlRoiXMin, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+    wxString sRoiXMax;
+    sRoiXMax << m_dDefaultRoiXMax;
+    m_pTextCtrlRoiXMax = new wxTextCtrl (this, -1, sRoiXMax, wxDefaultPosition, wxSize(100, 25), 0);
+    pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI XMax")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pROIGridSizer->Add (m_pTextCtrlRoiXMax, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+    wxString sRoiYMin;
+    sRoiYMin << m_dDefaultRoiYMin;
+    m_pTextCtrlRoiYMin = new wxTextCtrl (this, -1, sRoiYMin, wxDefaultPosition, wxSize(100, 25), 0);
+    pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI YMin")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pROIGridSizer->Add (m_pTextCtrlRoiYMin, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+    wxString sRoiYMax;
+    sRoiYMax << m_dDefaultRoiYMax;
+    m_pTextCtrlRoiYMax = new wxTextCtrl (this, -1, sRoiYMax, wxDefaultPosition, wxSize(100, 25), 0);
+    pROIGridSizer->Add (new wxStaticText (this, -1, _T("ROI YMax")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pROIGridSizer->Add (m_pTextCtrlRoiYMax, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+    pGridSizer->Add (pROIGridSizer);
+  }
+
+  pTopSizer->Add (pGridSizer, 1, wxALL, 3);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_RECONSTRUCTION);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Layout();
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+DialogGetReconstructionParameters::~DialogGetReconstructionParameters ()
+{
+}
+
+
+unsigned int
+DialogGetReconstructionParameters::getXSize ()
+{
+  wxString strCtrl = m_pTextCtrlXSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultXSize);
+}
+
+unsigned int
+DialogGetReconstructionParameters::getYSize ()
+{
+  wxString strCtrl = m_pTextCtrlYSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultYSize);
+}
+
+unsigned int
+DialogGetReconstructionParameters::getZeropad ()
+{
+  if (theApp->getAdvancedOptions()) {
+    wxString strCtrl = m_pTextCtrlZeropad->GetValue();
+    unsigned long lValue;
+    if (strCtrl.ToULong (&lValue))
+      return lValue;
+    else
+      return (m_iDefaultZeropad);
+  } else
+    return 1;
+}
+
+
+unsigned int
+DialogGetReconstructionParameters::getInterpParam ()
+{
+#if HAVE_FREQ_PREINTERP
+  wxString strCtrl = m_pTextCtrlInterpParam->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultInterpParam);
+#else
+  return 1;
+#endif
+}
+
+double
+DialogGetReconstructionParameters::getFilterParam ()
+{
+  wxString strCtrl = m_pTextCtrlFilterParam->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return (dValue);
+  else
+    return (m_dDefaultFilterParam);
+}
+
+const char*
+DialogGetReconstructionParameters::getFilterName ()
+{
+  return m_pRadioBoxFilter->getSelectionStringValue();
+}
+
+const char*
+DialogGetReconstructionParameters::getFilterMethodName ()
+{
+  return m_pRadioBoxFilterMethod->getSelectionStringValue();
+}
+
+const char*
+DialogGetReconstructionParameters::getInterpName ()
+{
+  return m_pRadioBoxInterp->getSelectionStringValue();
+}
+
+int
+DialogGetReconstructionParameters::getTrace ()
+{
+  int iTrace = 0;
+  if (strcmp("full", m_pRadioBoxTrace->getSelectionStringValue()) == 0)
+    iTrace = Trace::TRACE_PLOT;
+  return iTrace;
+}
+
+const char*
+DialogGetReconstructionParameters::getBackprojectName ()
+{
+  if (theApp->getAdvancedOptions()) {
+    return m_pRadioBoxBackproject->getSelectionStringValue();
+  } else
+    return "idiff";
+}
+
+const char*
+DialogGetReconstructionParameters::getFilterGenerationName ()
+{
+  if (theApp->getAdvancedOptions()) {
+    return m_pRadioBoxFilterGeneration->getSelectionStringValue();
+  } else {
+    if (ProcessSignal::convertFilterMethodNameToID(m_pRadioBoxFilterMethod->getSelectionStringValue())
+        == ProcessSignal::FILTER_METHOD_CONVOLUTION)
+      return "direct";
+    else
+      return "inverse-fourier";
+  }
+}
+
+void
+DialogGetReconstructionParameters::getROI (ReconstructionROI* pROI)
+{
+  if (theApp->getAdvancedOptions()) {
+    double dValue;
+    if (m_pTextCtrlRoiXMin->GetValue().ToDouble (&dValue))
+      pROI->m_dXMin = dValue;
+    else
+      pROI->m_dXMin = m_dDefaultRoiXMin;
+
+    if (m_pTextCtrlRoiXMax->GetValue().ToDouble (&dValue))
+      pROI->m_dXMax = dValue;
+    else
+      pROI->m_dXMax = m_dDefaultRoiXMax;
+
+    if (m_pTextCtrlRoiYMin->GetValue().ToDouble (&dValue))
+      pROI->m_dYMin = dValue;
+    else
+      pROI->m_dYMin = m_dDefaultRoiYMin;
+
+    if (m_pTextCtrlRoiYMax->GetValue().ToDouble (&dValue))
+      pROI->m_dYMax = dValue;
+    else
+      pROI->m_dYMax = m_dDefaultRoiYMax;
+  } else {
+    pROI->m_dXMin = m_dDefaultRoiXMin;
+    pROI->m_dXMax = m_dDefaultRoiXMax;
+    pROI->m_dYMin = m_dDefaultRoiYMin;
+    pROI->m_dYMax = m_dDefaultRoiYMax;
+  }
+}
+
+/////////////////////////////////////////////////////////////////////
+// CLASS IDENTIFICATION
+//
+// DialogGetFilterParameters
+/////////////////////////////////////////////////////////////////////
+
+
+
+DialogGetFilterParameters::DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize, int iDefaultYSize, int iDefaultFilterID, double dDefaultFilterParam,  double dDefaultBandwidth, int iDefaultDomainID, double dDefaultInputScale, double dDefaultOutputScale)
+: wxDialog (pParent, -1, _T("Filter Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Filter Parameters")), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (2);
+
+  m_pRadioBoxFilter = new StringValueAndTitleRadioBox (this, _T("Filter"), SignalFilter::getFilterCount(), SignalFilter::getFilterTitleArray(), SignalFilter::getFilterNameArray());
+  m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
+  pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+
+  m_pRadioBoxDomain = new StringValueAndTitleRadioBox (this, _T("Domain"), SignalFilter::getDomainCount(), SignalFilter::getDomainTitleArray(), SignalFilter::getDomainNameArray());
+  m_pRadioBoxDomain->SetSelection (iDefaultDomainID);
+  pGridSizer->Add (m_pRadioBoxDomain, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+
+  wxString sXSize;
+  sXSize << iDefaultXSize;
+  m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  wxString sYSize;
+  sYSize << iDefaultYSize;
+  m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  wxString sFilterParam;
+  sFilterParam << dDefaultFilterParam;
+  m_pTextCtrlFilterParam = new wxTextCtrl (this, -1, sFilterParam, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Filter Parameter")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlFilterParam, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  wxString sBandwidth;
+  sBandwidth << dDefaultBandwidth;
+  m_pTextCtrlBandwidth = new wxTextCtrl (this, -1, sBandwidth, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Bandwidth")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlBandwidth, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  wxString sInputScale;
+  sInputScale << dDefaultInputScale;
+  m_pTextCtrlInputScale = new wxTextCtrl (this, -1, sInputScale, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Axis (input) Scale")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlInputScale, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  wxString sOutputScale;
+  sOutputScale << dDefaultOutputScale;
+  m_pTextCtrlOutputScale = new wxTextCtrl (this, -1, sOutputScale, wxDefaultPosition, wxSize(100, 25), 0);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Filter Output Scale")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlOutputScale, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+
+  pTopSizer->Add (pGridSizer, 1, wxALL, 3);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_FILTER);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Layout();
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+DialogGetFilterParameters::~DialogGetFilterParameters ()
+{
+}
+
+
+unsigned int
+DialogGetFilterParameters::getXSize ()
+{
+  wxString strCtrl = m_pTextCtrlXSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultXSize);
+}
+
+unsigned int
+DialogGetFilterParameters::getYSize ()
+{
+  wxString strCtrl = m_pTextCtrlYSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultYSize);
+}
+
+double
+DialogGetFilterParameters::getBandwidth ()
+{
+  wxString strCtrl = m_pTextCtrlBandwidth->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return dValue;
+  else
+    return (m_dDefaultBandwidth);
+}
+
+double
+DialogGetFilterParameters::getFilterParam ()
+{
+  wxString strCtrl = m_pTextCtrlFilterParam->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return (dValue);
+  else
+    return (m_dDefaultFilterParam);
+}
+
+double
+DialogGetFilterParameters::getInputScale ()
+{
+  wxString strCtrl = m_pTextCtrlInputScale->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return dValue;
+  else
+    return (m_dDefaultInputScale);
+}
+
+double
+DialogGetFilterParameters::getOutputScale ()
+{
+  wxString strCtrl = m_pTextCtrlOutputScale->GetValue();
+  double dValue;
+  if (strCtrl.ToDouble (&dValue))
+    return dValue;
+  else
+    return (m_dDefaultOutputScale);
+}
+
+const char*
+DialogGetFilterParameters::getFilterName ()
+{
+  return m_pRadioBoxFilter->getSelectionStringValue();
+}
+
+const char*
+DialogGetFilterParameters::getDomainName ()
+{
+  return m_pRadioBoxDomain->getSelectionStringValue();
+}
+
+
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    DialogExportParameters
+///////////////////////////////////////////////////////////////////////
+
+DialogExportParameters::DialogExportParameters (wxWindow* pParent, int iDefaultFormatID)
+: wxDialog (pParent, -1, _T("Select ExportParameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Select Export Format")), 0, wxALIGN_CENTER | wxALL, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
+
+  m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"),
+    ImageFile::getExportFormatCount(), ImageFile::getExportFormatTitleArray(), ImageFile::getExportFormatNameArray());
+  m_pRadioBoxFormat->SetSelection (iDefaultFormatID);
+  pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_EXPORT);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+const char*
+DialogExportParameters::getFormatName()
+{
+  return m_pRadioBoxFormat->getSelectionStringValue();
+}
+
+
+///////////////////////////////////////////////////////////////////////
+// CLASS IMPLEMENTATION
+//    DialogImportParameters
+///////////////////////////////////////////////////////////////////////
+
+DialogImportParameters::DialogImportParameters (wxWindow* pParent, int iDefaultFormatID)
+: wxDialog (pParent, -1, _T("Select Import Parameters"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, _T("Select Import Format")), 0, wxALIGN_CENTER | wxALL, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxALL, 5);
+
+  m_pRadioBoxFormat = new StringValueAndTitleRadioBox (this, _T("File Type"),
+    ImageFile::getImportFormatCount(), ImageFile::getImportFormatTitleArray(), ImageFile::getImportFormatNameArray());
+  m_pRadioBoxFormat->SetSelection (iDefaultFormatID);
+  pTopSizer->Add (m_pRadioBoxFormat, 0, wxALL | wxALIGN_CENTER);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, IDH_DLG_IMPORT);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+const char*
+DialogImportParameters::getFormatName()
+{
+  return m_pRadioBoxFormat->getSelectionStringValue();
+}
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS DiaglogGetXYSize Implementation
+/////////////////////////////////////////////////////////////////////
+
+DialogGetXYSize::DialogGetXYSize (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize, int iDefaultYSize)
+: wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  m_iDefaultXSize = iDefaultXSize;
+  m_iDefaultYSize = iDefaultYSize;
+
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxString sXSize;
+  sXSize << iDefaultXSize;
+  m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0);
+  wxString sYSize;
+  sYSize << iDefaultYSize;
+  m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0);
+
+  wxFlexGridSizer *pGridSizer = new wxFlexGridSizer (2);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_CENTER_VERTICAL);
+  pTopSizer->Add (pGridSizer, 1, wxALL, 10);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+DialogGetXYSize::~DialogGetXYSize ()
+{
+}
+
+unsigned int
+DialogGetXYSize::getXSize ()
+{
+  wxString strCtrl = m_pTextCtrlXSize->GetValue();
+  long lValue;
+  if (strCtrl.ToLong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultXSize);
+}
+
+unsigned int
+DialogGetXYSize::getYSize ()
+{
+  wxString strCtrl = m_pTextCtrlYSize->GetValue();
+  long lValue;
+  if (strCtrl.ToLong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultYSize);
+}
+
+
+
+/////////////////////////////////////////////////////////////////////
+// CLASS IDENTIFICATION
+//
+// DialogGetConvertPolarParameters
+/////////////////////////////////////////////////////////////////////
+
+DialogGetConvertPolarParameters::DialogGetConvertPolarParameters (wxWindow* pParent, wxChar const * pwszTitle,
+       int iDefaultXSize, int iDefaultYSize, int iDefaultInterpolationID, int iDefaultZeropad, int iHelpID)
+: wxDialog (pParent, -1, pwszTitle, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxCAPTION)
+{
+  m_iDefaultXSize = iDefaultXSize;
+  m_iDefaultYSize = iDefaultYSize;
+  m_iDefaultZeropad = iDefaultZeropad;
+
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (new wxStaticText (this, -1, pwszTitle), 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, 5);
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxFlexGridSizer* pGridSizer = new wxFlexGridSizer (1);
+
+  m_pRadioBoxInterpolation = new StringValueAndTitleRadioBox (this, _T("Interpolation"), Projections::getInterpCount(), Projections::getInterpTitleArray(), Projections::getInterpNameArray());
+  m_pRadioBoxInterpolation->SetSelection (iDefaultInterpolationID);
+  pGridSizer->Add (m_pRadioBoxInterpolation, 0, wxALL | wxALIGN_CENTER);
+
+  wxFlexGridSizer* pTextGridSizer = new wxFlexGridSizer (2);
+  wxString sXSize;
+  sXSize << iDefaultXSize;
+  m_pTextCtrlXSize = new wxTextCtrl (this, -1, sXSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pTextGridSizer->Add (new wxStaticText (this, -1, _T("X Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pTextGridSizer->Add (m_pTextCtrlXSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+  wxString sYSize;
+  sYSize << iDefaultYSize;
+  m_pTextCtrlYSize = new wxTextCtrl (this, -1, sYSize, wxDefaultPosition, wxSize(100, 25), 0);
+  pTextGridSizer->Add (new wxStaticText (this, -1, _T("Y Size")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+  pTextGridSizer->Add (m_pTextCtrlYSize, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+  if (m_iDefaultZeropad >= 0) {
+    wxString sZeropad;
+    sZeropad << iDefaultZeropad;
+    m_pTextCtrlZeropad = new wxTextCtrl (this, -1, sZeropad, wxDefaultPosition, wxSize(100, 25), 0);
+    pTextGridSizer->Add (new wxStaticText (this, -1, _T("Zeropad")), 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
+    pTextGridSizer->Add (m_pTextCtrlZeropad, 0, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
+  }
+
+  pGridSizer->Add (pTextGridSizer, 0, wxALIGN_CENTER | wxALL);
+
+  pTopSizer->Add (pGridSizer, 1, wxALL | wxALIGN_CENTER, 3);
+
+  pTopSizer->Add (new wxStaticLine (this, -1, wxDefaultPosition, wxSize(3,3), wxHORIZONTAL), 0, wxEXPAND | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Okay"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+  pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  CTSimHelpButton* pButtonHelp = new CTSimHelpButton (this, iHelpID);
+  pButtonSizer->Add (pButtonHelp, 0, wxEXPAND | wxALL, 10);
+
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+  pButtonOk->SetDefault();
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Layout();
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+
+DialogGetConvertPolarParameters::~DialogGetConvertPolarParameters ()
+{
+}
+
+
+unsigned int
+DialogGetConvertPolarParameters::getXSize ()
+{
+  wxString strCtrl = m_pTextCtrlXSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultXSize);
+}
+
+unsigned int
+DialogGetConvertPolarParameters::getYSize ()
+{
+  wxString strCtrl = m_pTextCtrlYSize->GetValue();
+  unsigned long lValue;
+  if (strCtrl.ToULong (&lValue))
+    return lValue;
+  else
+    return (m_iDefaultYSize);
+}
+
+unsigned int
+DialogGetConvertPolarParameters::getZeropad ()
+{
+  if (m_iDefaultZeropad >= 0) {
+    wxString strCtrl = m_pTextCtrlZeropad->GetValue();
+    unsigned long lValue;
+    if (strCtrl.ToULong (&lValue))
+      return lValue;
+    else
+      return (m_iDefaultZeropad);
+  } else
+    return 0;
+}
+
+const char*
+DialogGetConvertPolarParameters::getInterpolationName ()
+{
+  return m_pRadioBoxInterpolation->getSelectionStringValue();
+}
+
diff --git a/src/dialogs.h b/src/dialogs.h
new file mode 100644
index 0000000..853a5b3
--- /dev/null
+++ b/src/dialogs.h
@@ -0,0 +1,423 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dialogs.h
+**   Purpose:       Header file for Dialogs of CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#ifndef __DIALOGSH__
+#define __DIALOGSH__
+
+#include "wx/wx.h"
+#include <string>
+#include "ctsupport.h"
+#include "scanner.h"
+#include "phantom.h"
+#include "procsignal.h"
+#include "filter.h"
+#include "projections.h"
+#include "ctsim-map.h"
+
+
+class CTSimHelpButton : public wxButton
+{
+public:
+  CTSimHelpButton (wxWindow* parent, int id)
+    : wxButton (parent, id, _T("Help"))
+  {}
+};
+
+
+// CLASS StringValueAndTitleListBox
+//
+// A superclass of wxListBox that can handle string values and titles
+// and by displaying the title in the list box and returning the string value
+
+class StringValueAndTitleListBox : public wxListBox
+{
+ public:
+  StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* const* asTitle,
+                              char const* const aszValue[]);
+#if 0
+  StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* title,
+                              char const* const* aszTitle, char const* const* aszValue);
+#endif
+  StringValueAndTitleListBox (wxDialog* pParent, int nChoices, wxChar const* title,
+                              wxChar const* const* asTitle, char const* const* aszValue);
+
+    const char* getSelectionStringValue () const;
+
+ private:
+    const char* const* m_ppszValues;
+};
+
+
+class StringValueAndTitleRadioBox : public wxRadioBox
+{
+ public:
+  StringValueAndTitleRadioBox (wxDialog* pParent, wxChar const* strTitle, int nChoices, const char* const aszTitle[], const char* const aszValue[]);
+
+  const char* getSelectionStringValue () const;
+
+ private:
+  const char* const* m_ppszValues;
+};
+
+
+class DialogGetPhantom : public wxDialog
+{
+ public:
+    DialogGetPhantom (wxWindow* pParent, int iDefaultPhantom = Phantom::PHM_HERMAN);
+    virtual ~DialogGetPhantom () {}
+
+    const char* getPhantom ();
+
+ private:
+    StringValueAndTitleRadioBox* m_pRadioBoxPhantom;
+};
+
+class DialogGetThetaRange : public wxDialog
+{
+ public:
+   DialogGetThetaRange (wxWindow* pParent, int iDefaultThetaRange = ParallelRaysums::THETA_RANGE_UNCONSTRAINED);
+    virtual ~DialogGetThetaRange () {}
+
+    int getThetaRange ();
+
+ private:
+    wxRadioBox* m_pRadioBoxThetaRange;
+};
+
+
+#include <vector>
+class ImageFileDocument;
+class DialogGetComparisonImage : public wxDialog
+{
+ public:
+   DialogGetComparisonImage (wxWindow* pParent, wxChar const * pwszTitle, const std::vector<ImageFileDocument*>& rVecIF, bool bShowMakeDifference);
+    virtual ~DialogGetComparisonImage () {}
+
+    ImageFileDocument* getImageFileDocument ();
+
+    bool getMakeDifferenceImage();
+
+ private:
+    wxListBox* m_pListBoxImageChoices;
+    wxCheckBox* m_pMakeDifferenceImage;
+    const std::vector<ImageFileDocument*>& m_rVecIF;
+};
+
+
+class DialogPreferences : public wxDialog
+{
+ public:
+  DialogPreferences (wxWindow* pParent, wxChar const* pszTitle, bool bAdvanced, bool bAskNewDocs,
+      bool bVerboseLogging, bool bStartupTips, bool bUseBackgroundTasks);
+    virtual ~DialogPreferences ();
+
+    bool getAdvancedOptions ();
+    bool getAskDeleteNewDocs ();
+    bool getVerboseLogging ();
+    bool getStartupTips ();
+    bool getUseBackgroundTasks();
+
+ private:
+    wxCheckBox* m_pCBAdvancedOptions;
+    wxCheckBox* m_pCBAskDeleteNewDocs;
+    wxCheckBox* m_pCBVerboseLogging;
+    wxCheckBox* m_pCBStartupTips;
+    wxCheckBox* m_pCBUseBackgroundTasks;
+};
+
+
+class ImageFile;
+class DialogGetMinMax : public wxDialog
+{
+ public:
+    DialogGetMinMax (wxWindow* pParent, wxChar const* pszTitle, double dDefaultMin = 0., double dDefaultMax = 0.);
+    virtual ~DialogGetMinMax ();
+
+    double getMinimum ();
+    double getMaximum ();
+
+ private:
+    wxTextCtrl* m_pTextCtrlMin;
+    wxTextCtrl* m_pTextCtrlMax;
+
+    double m_dDefaultMin;
+    double m_dDefaultMax;
+};
+
+
+class DialogGetRasterParameters : public wxDialog
+{
+ public:
+    DialogGetRasterParameters (wxWindow* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0,
+      int iDefaultNSamples = 1, double dDefaultViewRatio = 1);
+    virtual ~DialogGetRasterParameters ();
+
+    unsigned int getXSize ();
+    unsigned int getYSize ();
+    unsigned int getNSamples ();
+    double getViewRatio();
+
+ private:
+    wxTextCtrl* m_pTextCtrlXSize;
+    wxTextCtrl* m_pTextCtrlYSize;
+    wxTextCtrl* m_pTextCtrlNSamples;
+    wxTextCtrl* m_pTextCtrlViewRatio;
+
+    int m_iDefaultXSize;
+    int m_iDefaultYSize;
+    int m_iDefaultNSamples;
+    double m_dDefaultViewRatio;
+};
+
+
+class DialogGetProjectionParameters : public wxDialog
+{
+ public:
+    DialogGetProjectionParameters (wxWindow* pParent, int iDefaultNDet = 0,
+      int iDefaultNView = 0, int iDefaultOffsetView = 0, int iDefaultNSamples = 1, double dDefaultRotAngle = 1.,
+      double dDefaultFocalLength = 1, double dDefaultCenterDetectorLength = 1, double dDefaultViewRatio = 1.,
+      double dDefaultScanRatio = 1., int iDefaultGeometry = Scanner::GEOMETRY_PARALLEL, int iDefaultTrace = Trace::TRACE_NONE);
+    ~DialogGetProjectionParameters ();
+
+    unsigned int getNDet ();
+    unsigned int getNView ();
+          unsigned int getOffsetView ();
+    unsigned int getNSamples ();
+    int getTrace ();
+
+    double getRotAngle ();
+    double getViewRatio ();
+    double getScanRatio ();
+    double getFocalLengthRatio ();
+    double getCenterDetectorLengthRatio ();
+    const char* getGeometry();
+
+ private:
+    wxTextCtrl* m_pTextCtrlNDet;
+    wxTextCtrl* m_pTextCtrlNView;
+    wxTextCtrl* m_pTextCtrlOffsetView;
+    wxTextCtrl* m_pTextCtrlNSamples;
+    wxTextCtrl* m_pTextCtrlRotAngle;
+    wxTextCtrl* m_pTextCtrlFocalLength;
+    wxTextCtrl* m_pTextCtrlCenterDetectorLength;
+    wxTextCtrl* m_pTextCtrlViewRatio;
+    wxTextCtrl* m_pTextCtrlScanRatio;
+    StringValueAndTitleRadioBox* m_pRadioBoxGeometry;
+    StringValueAndTitleRadioBox* m_pRadioBoxTrace;
+
+    int m_iDefaultNDet;
+    int m_iDefaultNView;
+          int m_iDefaultOffsetView;
+    int m_iDefaultNSamples;
+    int m_iDefaultTrace;
+    int m_iDefaultGeometry;
+    double m_dDefaultRotAngle;
+    double m_dDefaultFocalLength;
+    double m_dDefaultCenterDetectorLength;
+    double m_dDefaultViewRatio;
+    double m_dDefaultScanRatio;
+};
+
+
+#include "backprojectors.h"
+class DialogGetReconstructionParameters : public wxDialog
+{
+ public:
+    DialogGetReconstructionParameters (wxWindow* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0,
+      int iDefaultFilterID = SignalFilter::FILTER_ABS_BANDLIMIT, double dDefaultFilterParam = 1.,
+      int iDefaultFilterMethodID = ProcessSignal::FILTER_METHOD_CONVOLUTION,
+      int iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_DIRECT,
+      int iDefaultZeropad = 3, int iDefaultInterpID = Backprojector::INTERP_LINEAR,
+      int iDefaultInterpParam = 1, int iDefaultBackprojectID = Backprojector::BPROJ_IDIFF,
+      int iDefaultTrace = Trace::TRACE_NONE, ReconstructionROI* pROI = NULL);
+    virtual ~DialogGetReconstructionParameters ();
+
+    unsigned int getXSize();
+    unsigned int getYSize();
+    const char* getFilterName();
+    double getFilterParam();
+    const char* getFilterMethodName();
+    unsigned int getZeropad();
+    const char* getFilterGenerationName();
+    const char* getInterpName();
+    unsigned int getInterpParam();
+    const char* getBackprojectName();
+    void getROI (ReconstructionROI* pROI);
+    int getTrace ();
+
+ private:
+    wxTextCtrl* m_pTextCtrlXSize;
+    wxTextCtrl* m_pTextCtrlYSize;
+    wxTextCtrl* m_pTextCtrlZeropad;
+    wxTextCtrl* m_pTextCtrlFilterParam;
+    wxTextCtrl* m_pTextCtrlInterpParam;
+    wxTextCtrl* m_pTextCtrlRoiXMin;
+    wxTextCtrl* m_pTextCtrlRoiXMax;
+    wxTextCtrl* m_pTextCtrlRoiYMin;
+    wxTextCtrl* m_pTextCtrlRoiYMax;
+    StringValueAndTitleRadioBox* m_pRadioBoxFilter;
+    StringValueAndTitleRadioBox* m_pRadioBoxFilterMethod;
+    StringValueAndTitleRadioBox* m_pRadioBoxFilterGeneration;
+    StringValueAndTitleRadioBox* m_pRadioBoxInterp;
+    StringValueAndTitleRadioBox* m_pRadioBoxBackproject;
+    StringValueAndTitleRadioBox* m_pRadioBoxTrace;
+
+    int m_iDefaultXSize;
+    int m_iDefaultYSize;
+    double m_dDefaultFilterParam;
+    int m_iDefaultZeropad;
+    int m_iDefaultInterpParam;
+    double m_dDefaultRoiXMin;
+    double m_dDefaultRoiXMax;
+    double m_dDefaultRoiYMin;
+    double m_dDefaultRoiYMax;
+};
+
+
+class DialogGetFilterParameters : public wxDialog
+{
+ public:
+    DialogGetFilterParameters (wxWindow* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultFilterID = SignalFilter::FILTER_BANDLIMIT, double dDefaultFilterParam = 1., double dDefaultBandwidth = 1., int iDefaultDomain = SignalFilter::DOMAIN_SPATIAL, double dDefaultInputScale = 1., double dDefaultOutputScale = 1.);
+    virtual ~DialogGetFilterParameters ();
+
+    unsigned int getXSize();
+    unsigned int getYSize();
+    const char* getFilterName();
+    const char* getDomainName();
+    double getFilterParam();
+    double getInputScale();
+    double getOutputScale();
+    double getBandwidth();
+
+ private:
+    wxTextCtrl* m_pTextCtrlXSize;
+    wxTextCtrl* m_pTextCtrlYSize;
+    wxTextCtrl* m_pTextCtrlFilterParam;
+    wxTextCtrl* m_pTextCtrlOutputScale;
+    wxTextCtrl* m_pTextCtrlInputScale;
+    wxTextCtrl* m_pTextCtrlBandwidth;
+
+    StringValueAndTitleRadioBox* m_pRadioBoxFilter;
+    StringValueAndTitleRadioBox* m_pRadioBoxDomain;
+
+    int m_iDefaultXSize;
+    int m_iDefaultYSize;
+    double m_dDefaultFilterParam;
+    double m_dDefaultBandwidth;
+    double m_dDefaultOutputScale;
+    double m_dDefaultInputScale;
+    int m_iDefaultDomain;
+};
+
+class DialogExportParameters : public wxDialog
+{
+ public:
+    DialogExportParameters (wxWindow* pParent, int iDefaultFormatID);
+    virtual ~DialogExportParameters () {}
+
+    const char* getFormatName();
+
+ private:
+    StringValueAndTitleRadioBox* m_pRadioBoxFormat;
+};
+
+class DialogImportParameters : public wxDialog
+{
+ public:
+    DialogImportParameters (wxWindow* pParent, int iDefaultFormatID);
+    virtual ~DialogImportParameters () {}
+
+    const char* getFormatName();
+
+ private:
+    StringValueAndTitleRadioBox* m_pRadioBoxFormat;
+};
+
+class DialogAutoScaleParameters : public wxDialog
+{
+ public:
+    DialogAutoScaleParameters (wxWindow* pParent, double mean, double mode, double median, double stddev, double dDefaultScaleFactor = 1.);
+    virtual ~DialogAutoScaleParameters() {}
+
+    bool getMinMax (double* pMin, double* pMax);
+    double getAutoScaleFactor ();
+
+ private:
+    const double m_dMean;
+        const double m_dMode;
+        const double m_dMedian;
+        const double m_dStdDev;
+
+    wxTextCtrl* m_pTextCtrlStdDevFactor;
+    wxRadioBox* m_pRadioBoxCenter;
+};
+
+class DialogGetXYSize : public wxDialog
+{
+ public:
+    DialogGetXYSize (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize = 1, int iDefaultYSize = 1);
+    virtual ~DialogGetXYSize ();
+
+    unsigned int getXSize ();
+    unsigned int getYSize ();
+
+ private:
+    wxTextCtrl* m_pTextCtrlXSize;
+    wxTextCtrl* m_pTextCtrlYSize;
+
+    unsigned int m_iDefaultXSize;
+    unsigned int m_iDefaultYSize;
+};
+
+
+class DialogGetConvertPolarParameters : public wxDialog
+{
+ public:
+   DialogGetConvertPolarParameters (wxWindow* pParent, wxChar const * pwszTitle, int iDefaultXSize = 0,
+     int iDefaultYSize = 0, int iDefaultInterpolationID = Projections::POLAR_INTERP_BILINEAR,
+     int iDefaultZeropad = 3, int iHelpID = IDH_DLG_POLAR);
+   virtual ~DialogGetConvertPolarParameters ();
+
+    unsigned int getXSize();
+    unsigned int getYSize();
+    const char* getInterpolationName();
+    unsigned int getZeropad();
+
+ private:
+    wxTextCtrl* m_pTextCtrlXSize;
+    wxTextCtrl* m_pTextCtrlYSize;
+    wxTextCtrl* m_pTextCtrlZeropad;
+
+    StringValueAndTitleRadioBox* m_pRadioBoxInterpolation;
+
+    int m_iDefaultXSize;
+    int m_iDefaultYSize;
+    int m_iDefaultZeropad;
+};
+
+
+#endif
+
diff --git a/src/dlgezplot.cpp b/src/dlgezplot.cpp
new file mode 100644
index 0000000..086a21f
--- /dev/null
+++ b/src/dlgezplot.cpp
@@ -0,0 +1,157 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dlgezplot.cpp
+**   Purpose:       EZPlot Dialog
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_WXWINDOWS
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/utils.h"
+#include "wx/frame.h"
+#include "wx/button.h"
+#include "wx/stattext.h"
+#include "wx/layout.h"
+#include "wx/event.h"
+#include "wx/intl.h"
+#include "wx/settings.h"
+#include "wx/dcclient.h"
+#include "wx/timer.h"
+#endif
+
+#include "ct.h"
+#include "../src/ctsim.h"
+#include "dlgezplot.h"
+
+
+static const int LAYOUT_X_MARGIN = 4;
+static const int LAYOUT_Y_MARGIN = 4;
+
+BEGIN_EVENT_TABLE(EZPlotControl, wxPanel)
+EVT_PAINT(EZPlotControl::OnPaint)
+END_EVENT_TABLE()
+
+IMPLEMENT_CLASS(EZPlotControl, wxPanel)
+
+
+EZPlotControl::EZPlotControl (wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size,
+                              long style, const wxValidator& validator, const wxString& name)
+     : m_pEZPlot(0), m_pSGPDriver(0), m_pSGP(0), m_pDC(0)
+{
+  Create(parent, id, pos, size, style, name);
+
+  SetSize (GetBestSize());
+
+  m_pEZPlot = new EZPlot;
+}
+
+wxSize
+EZPlotControl::GetBestSize () const
+{
+  return wxSize (500,500);
+}
+
+EZPlotControl::~EZPlotControl()
+{
+  delete m_pEZPlot;
+  delete m_pSGP;
+  delete m_pSGPDriver;
+  delete m_pDC;
+}
+
+void
+EZPlotControl::OnPaint (wxPaintEvent& event)
+{
+  wxPaintDC dc(this);
+  GetClientSize (&m_iClientX, &m_iClientY);
+  m_pSGPDriver = new SGPDriver (&dc, m_iClientX, m_iClientY);
+  m_pSGP = new SGP (*m_pSGPDriver);
+  m_pSGP->setTextPointSize(10);
+//  m_pSGP->setViewport (0, 0, 1., 0.5);  // for debugging testing only
+  if (m_pEZPlot && m_pSGP) {
+    m_pSGP->eraseWindow();
+    m_pEZPlot->plot (m_pSGP);
+  }
+}
+
+
+wxEZPlotDialog::wxEZPlotDialog (wxWindow *parent, bool bCancelButton)
+: wxDialog((parent ? parent : theApp->getMainFrame()), -1, _T("EZPlot"), wxDefaultPosition, wxDefaultSize, wxDIALOG_MODAL),
+  m_parentTop(0)
+{
+  if (! parent)
+    parent = theApp->getMainFrame();
+
+  m_parentTop = parent;
+  while ( m_parentTop && m_parentTop->GetParent() )
+    m_parentTop = m_parentTop->GetParent();
+
+  wxBoxSizer* pTopSizer = new wxBoxSizer (wxVERTICAL);
+
+  pTopSizer->Add (m_pEZPlotCtrl = new EZPlotControl (this), 0, wxALIGN_CENTER | wxALL, 5);
+
+  wxBoxSizer* pButtonSizer = new wxBoxSizer (wxHORIZONTAL);
+  wxButton* pButtonOk = new wxButton (this, wxID_OK, _T("Ok"));
+  pButtonSizer->Add (pButtonOk, 0, wxEXPAND | wxALL, 10);
+  if (bCancelButton) {
+    wxButton* pButtonCancel = new wxButton (this, wxID_CANCEL, _T("Cancel"));
+    pButtonSizer->Add (pButtonCancel, 0, wxEXPAND | wxALL, 10);
+  }
+  pTopSizer->Add (pButtonSizer, 0, wxALIGN_CENTER);
+
+  SetAutoLayout (true);
+  SetSizer (pTopSizer);
+  pTopSizer->Fit (this);
+  pTopSizer->SetSizeHints (this);
+}
+
+
+
+EZPlotDialog::EZPlotDialog(wxWindow* parent, bool bCancelButton)
+    : m_pDialog(new wxEZPlotDialog(parent, bCancelButton))
+{
+}
+
+EZPlot*
+EZPlotDialog::getEZPlot()
+{ return m_pDialog->getEZPlot(); }
+
+int
+EZPlotDialog::ShowModal()
+{ return m_pDialog->ShowModal(); }
+
+wxEZPlotDialog::~wxEZPlotDialog()
+{
+  if ( m_parentTop )
+    m_parentTop->Enable(TRUE);
+}
+
+
+
+#endif // HAVE_WXWINDOWS
diff --git a/src/dlgezplot.h b/src/dlgezplot.h
new file mode 100644
index 0000000..39c1aca
--- /dev/null
+++ b/src/dlgezplot.h
@@ -0,0 +1,98 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dlgezplot.h
+**   Purpose:       Headers for EZPlot Dialog
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __DLGEZPLOT_H_
+#define __DLGEZPLOT_H_
+
+#include "wx/setup.h"
+#include "wx/dialog.h"
+#include "wx/dcmemory.h"
+
+class wxButton;
+class SGP;
+class SGPDriver;
+class EZPlot;
+
+
+class EZPlotControl : public wxPanel
+{
+private:
+  DECLARE_DYNAMIC_CLASS (EZPlotControl)
+  DECLARE_EVENT_TABLE ()
+  EZPlot* m_pEZPlot;
+   int m_iClientX;   // size of client window
+   int m_iClientY;
+
+   SGPDriver* m_pSGPDriver;
+   SGP* m_pSGP;
+   wxDC* m_pDC;
+
+public:
+    EZPlotControl (wxWindow *parent, wxWindowID id = -1,
+               const wxPoint& pos = wxDefaultPosition,
+               const wxSize& size = wxDefaultSize,
+               long style = wxSTATIC_BORDER,
+               const wxValidator& validator = wxDefaultValidator,
+                   const wxString& name = _T("EZPlotCtrl"));
+
+   virtual ~EZPlotControl();
+
+  virtual wxSize GetBestSize() const;
+
+  EZPlot* getEZPlot()
+  { return m_pEZPlot; }
+
+  void OnPaint(wxPaintEvent& event);
+};
+
+
+class wxEZPlotDialog : public wxDialog
+{
+private:
+   wxWindow *m_parentTop;     // parent top level window (may be NULL)
+   EZPlotControl* m_pEZPlotCtrl;
+
+public:
+  wxEZPlotDialog (wxWindow *parent = NULL, bool bCancelButton = false);
+
+   ~wxEZPlotDialog();
+
+   EZPlot* getEZPlot ()
+   { if (m_pEZPlotCtrl) return m_pEZPlotCtrl->getEZPlot(); else return NULL; }
+};
+
+class EZPlotDialog
+{
+private:
+  wxEZPlotDialog* m_pDialog;
+
+public:
+  EZPlotDialog (wxWindow *parent = NULL, bool bCancelButton = false);
+
+  EZPlot* getEZPlot ();
+  int ShowModal();
+};
+#endif
+
diff --git a/src/dlgprojections.cpp b/src/dlgprojections.cpp
new file mode 100644
index 0000000..3c5854e
--- /dev/null
+++ b/src/dlgprojections.cpp
@@ -0,0 +1,298 @@
+/*****************************************************************************
+ ** FILE IDENTIFICATION
+ **
+ **   Name:          dlgprojections.cpp
+ **   Purpose:       Projection Collection Animation Dialog
+ **   Programmer:    Kevin Rosenberg
+ **   Date Started:  August 2000
+ **
+ **  This is part of the CTSim program
+ **  Copyright (c) 1983-2009 Kevin Rosenberg
+ **
+ **  This program is free software; you can redistribute it and/or modify
+ **  it under the terms of the GNU General Public License (version 2) as
+ **  published by the Free Software Foundation.
+ **
+ **  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ ******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/utils.h"
+#include "wx/frame.h"
+#include "wx/button.h"
+#include "wx/stattext.h"
+#include "wx/layout.h"
+#include "wx/event.h"
+#include "wx/intl.h"
+#include "wx/settings.h"
+#include "wx/dcclient.h"
+#include "wx/timer.h"
+#endif
+
+#include "dlgprojections.h"
+#include "ct.h"
+
+
+static const int LAYOUT_X_MARGIN = 4;
+static const int LAYOUT_Y_MARGIN = 4;
+
+BEGIN_EVENT_TABLE(ProjectionsDialog, wxDialog)
+  EVT_BUTTON(wxID_CANCEL, ProjectionsDialog::OnCancel)
+  EVT_BUTTON(ProjectionsDialog::ID_BTN_PAUSE, ProjectionsDialog::OnPause)
+  EVT_BUTTON(ProjectionsDialog::ID_BTN_STEP, ProjectionsDialog::OnStep)
+  EVT_CLOSE(ProjectionsDialog::OnClose)
+  EVT_PAINT(ProjectionsDialog::OnPaint)
+  END_EVENT_TABLE()
+
+  IMPLEMENT_CLASS(ProjectionsDialog, wxDialog)
+
+
+ProjectionsDialog::ProjectionsDialog (Scanner& rScanner, Projections& rProj, const Phantom& rPhantom, const int iTrace, wxWindow *parent)
+: wxDialog(parent, -1, _T("Collect Projections"), wxDefaultPosition), m_rScanner(rScanner), m_rProjections(rProj), m_rPhantom(rPhantom),
+      m_pSGPDriver(NULL), m_pSGP(NULL), m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0)
+{
+  m_state = Continue;
+  m_iLastView = -1;
+  m_parentTop = parent;
+  while ( m_parentTop && m_parentTop->GetParent() )
+    m_parentTop = m_parentTop->GetParent();
+
+  m_btnAbort = new wxButton(this, wxID_CANCEL, _("Cancel"));
+  wxLayoutConstraints* c = new wxLayoutConstraints;
+  c->right.SameAs(this, wxRight, 2*LAYOUT_X_MARGIN);
+  c->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN);
+
+  wxSize sizeBtn = wxButton::GetDefaultSize();
+  c->width.Absolute(sizeBtn.x);
+  c->height.Absolute(sizeBtn.y);
+
+  m_btnAbort->SetConstraints(c);
+
+  m_btnPause = new wxButton (this, ID_BTN_PAUSE, _T("Pause"));
+  wxLayoutConstraints* cPause = new wxLayoutConstraints;
+  cPause->right.SameAs(this, wxRight, 3*LAYOUT_X_MARGIN + sizeBtn.x);
+  cPause->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN);
+  cPause->width.Absolute(sizeBtn.x);
+  cPause->height.Absolute(sizeBtn.y);
+  m_btnPause->SetConstraints(cPause);
+
+  m_btnStep = new wxButton (this, ID_BTN_STEP, _T("Step"));
+  wxLayoutConstraints* cStep = new wxLayoutConstraints;
+  cStep->right.SameAs(this, wxRight, 5*LAYOUT_X_MARGIN + sizeBtn.x * 2);
+  cStep->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN);
+  cStep->width.Absolute(sizeBtn.x);
+  cStep->height.Absolute(sizeBtn.y);
+  m_btnStep->SetConstraints(cStep);
+
+  SetAutoLayout(TRUE);
+  Layout();
+
+  wxSize sizeDlg (500,500);
+  if (sizeDlg.x != sizeDlg.y) {
+    sizeDlg.x = imax(sizeDlg.x,sizeDlg.y);
+    sizeDlg.y = imax(sizeDlg.x,sizeDlg.y);
+  }
+  if (m_iTrace >= Trace::TRACE_PLOT)
+    sizeDlg.x += 250;
+
+  m_iClientX = sizeDlg.x;
+  m_iClientY = sizeDlg.y;
+  SetClientSize(sizeDlg);
+
+  Centre(wxCENTER_FRAME | wxBOTH);
+
+  if ( m_parentTop )
+    m_parentTop->Enable(FALSE);
+
+  Show(TRUE);
+  Enable(TRUE); // enable this window
+
+  m_bitmap.Create (m_iClientX, m_iClientY); // save a copy of screen
+  m_pDC = dynamic_cast<wxDC*> (new wxClientDC (this));
+  int x, y;
+  this->GetClientSize(&x, &y);
+  m_pSGPDriver = new SGPDriver (m_pDC, x, y);
+  m_pSGP = new SGP (*m_pSGPDriver);
+
+  wxYield();     // Update the display
+
+  m_pSGP->setTextPointSize(7);
+#ifdef __WXMAC__
+  //  MacUpdateImmediately();
+#endif
+}
+
+void
+ProjectionsDialog::showView (int iViewNumber)
+{
+  if ( iViewNumber < m_rProjections.nView() ) {
+    m_iLastView = iViewNumber;
+    ::wxYield();        // update the display
+    m_pSGP->eraseWindow();
+    m_btnPause->Refresh();
+    m_btnStep->Refresh();
+    m_btnAbort->Refresh();
+
+    if (m_iTrace >= Trace::TRACE_PLOT)
+      m_pSGP->setViewport (0, 0, 0.66, 1);
+    ::wxYield();        // update the display
+    m_rScanner.collectProjections (m_rProjections, m_rPhantom, iViewNumber, 1, m_rScanner.offsetView(), true, m_iTrace, m_pSGP);
+    ::wxYield();        // update the display
+    if (m_iTrace >= Trace::TRACE_PLOT) {
+      const DetectorArray& detArray = m_rProjections.getDetectorArray (iViewNumber);
+      const DetectorValue* detValues = detArray.detValues();
+      double* detPos = new double [detArray.nDet()];
+      for (int i = 0; i < detArray.nDet(); i++)
+        detPos[i] = i;
+      EZPlot ezplot;
+      ezplot.ezset ("grid");
+      ezplot.ezset ("box");
+      ezplot.ezset ("yticks left");
+      ezplot.ezset ("xticks major 5");
+      ezplot.ezset ("yticks major 10");
+      ezplot.addCurve (detValues, detPos, detArray.nDet());
+#if 1
+      ezplot.ezset ("xporigin 0.67");
+      ezplot.ezset ("yporigin 0.10");
+      ezplot.ezset ("xlength  0.33");
+      ezplot.ezset ("ylength  0.90");
+      m_pSGP->setViewport (0., 0., 1., 1.);
+#else
+      m_pSGP->setViewport (0.67, 0.1, 1., 1.);
+#endif
+      ezplot.plot (m_pSGP);
+      delete detPos;
+    }
+  }
+}
+
+bool
+ProjectionsDialog::projectView (int iViewNumber)
+{
+  if (iViewNumber <= m_iLastView)  // already done this view
+    return true;
+
+  if (iViewNumber < m_rProjections.nView()) {
+    showView (iViewNumber);
+    wxYield();        // update the display
+    if (m_iTrace >= Trace::TRACE_PLOT) {
+      ::wxMilliSleep(500);
+    }
+  } else {
+    m_state = Finished;    // so that we return TRUE below and
+    // that [Cancel] handler knew what to do
+  }
+
+#ifdef __WXMAC__
+  //  MacUpdateImmediately();
+#endif
+
+  return m_state != Cancelled;
+}
+
+
+// EVENT HANDLERS
+
+void ProjectionsDialog::OnCancel (wxCommandEvent& event)
+{
+  if ( m_state == Finished ) {
+    // this means that the count down is already finished and we're being
+    // shown as a modal dialog - so just let the default handler do the job
+    event.Skip();
+  } else {
+    // request to cancel was received, the next time Update() is called we
+    // will handle it
+    m_state = Cancelled;
+
+    // update the button state immediately so that the user knows that the
+    // request has been noticed
+    m_btnAbort->Disable();
+  }
+}
+
+
+void
+ProjectionsDialog::OnPause (wxCommandEvent& event)
+{
+  if ( m_state == Finished ) {
+    event.Skip();
+  } else if (m_state == Continue) {
+    m_memoryDC.SelectObject (m_bitmap);       // in memoryDC
+    m_pSGP->setDC (&m_memoryDC);
+    showView (m_iLastView);
+    m_state = Paused;
+    m_btnPause->SetLabel (_T("Resume"));
+    m_pSGP->setDC (m_pDC);
+    m_memoryDC.SelectObject(wxNullBitmap);
+  } else if (m_state == Paused) {
+    m_state = Continue;
+    m_btnPause->SetLabel (_T("Pause"));
+  }
+}
+
+void
+ProjectionsDialog::OnStep (wxCommandEvent& event)
+{
+  if ( m_state == Finished ) {
+    event.Skip();
+  } else if (m_state == Continue) {
+    m_memoryDC.SelectObject (m_bitmap);       // in memoryDC
+    m_pSGP->setDC (&m_memoryDC);
+    showView (m_iLastView);
+    // m_rScanner.collectProjections (m_rProjections, m_rPhantom, m_iLastView, 1, true, m_iTrace, m_pSGP);
+    m_state = Paused;
+    m_btnPause->SetLabel (_T("Resume"));
+    m_pSGP->setDC (m_pDC);
+    m_memoryDC.SelectObject(wxNullBitmap);
+    Refresh();
+  } else if (m_state == Paused) {
+    m_memoryDC.SelectObject (m_bitmap);       // in memoryDC
+    m_pSGP->setDC (&m_memoryDC);
+    projectView (m_iLastView + 1);
+    m_pSGP->setDC (m_pDC);
+    m_memoryDC.SelectObject(wxNullBitmap);
+    Refresh();
+  }
+}
+
+void ProjectionsDialog::OnClose(wxCloseEvent& event)
+{
+  if ( m_state == Uncancellable )
+    event.Veto(TRUE);    // can't close this dialog
+  else if ( m_state == Finished )
+    event.Skip(); // let the default handler close the window as we already terminated
+  else
+    m_state = Cancelled;          // next Update() will notice it
+}
+
+void
+ProjectionsDialog::OnPaint (wxPaintEvent& event)
+{
+  wxPaintDC paintDC (this);
+  if (m_state == Paused) {
+    paintDC.DrawBitmap (m_bitmap, 0, 0, false);
+  }
+}
+
+
+/////////////////////////////////////////////////////
+// destruction
+
+ProjectionsDialog::~ProjectionsDialog()
+{
+  if ( m_parentTop )
+    m_parentTop->Enable(TRUE);
+
+  delete m_pSGP;
+  delete m_pSGPDriver;
+  delete m_pDC;
+}
diff --git a/src/dlgprojections.h b/src/dlgprojections.h
new file mode 100644
index 0000000..df78d36
--- /dev/null
+++ b/src/dlgprojections.h
@@ -0,0 +1,114 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dlgprojections.h
+**   Purpose:       Headers for Projection Collection Animation Dialog
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  August 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __DLGPROJECTIONS_H_
+#define __DLGPROJECTIONS_H_
+
+#include "wx/setup.h"
+#include "wx/dialog.h"
+#include "wx/dcmemory.h"
+
+class wxButton;
+class wxStaticText;
+class Projections;
+class Phantom;
+class SGP;
+class Scanner;
+class SGPDriver;
+
+class ProjectionsDialog : public wxDialog
+{
+  DECLARE_DYNAMIC_CLASS(ProjectionsDialog)
+
+public:
+  ProjectionsDialog (Scanner& rScanner, Projections& rProj, const Phantom& rPhantom, const int iTrace, wxWindow *parent);
+
+   ~ProjectionsDialog();
+
+   /* Perform projection on view number
+       return true if ABORT button has not been pressed
+   */
+   bool projectView(int iViewNumber);
+
+   /* Can be called to continue after the cancel button has been pressed, but
+       the program decided to continue the operation (e.g., user didn't
+       confirm it)
+   */
+   void Resume() { m_state = Continue; }
+
+   // implementation from now on
+       // callback for optional abort button
+   void OnCancel(wxCommandEvent& event);
+       // callback to disable "hard" window closing
+   void OnClose(wxCloseEvent& event);
+   void OnPaint(wxPaintEvent& event);
+
+   void OnPause(wxCommandEvent& event);
+   void OnStep(wxCommandEvent& event);
+
+   bool isPaused() const {return m_state == Paused;}
+
+   bool isCancelled() const {return m_state == Cancelled;}
+
+private:
+   // parent top level window (may be NULL)
+   wxWindow *m_parentTop;
+   int m_iLastView;
+   int m_iClientX;   // size of client window
+   int m_iClientY;
+
+   Scanner& m_rScanner;
+   Projections& m_rProjections;
+   const Phantom& m_rPhantom;
+   SGPDriver* m_pSGPDriver;
+   SGP* m_pSGP;
+   const int m_iTrace;
+   wxDC* m_pDC;
+
+   wxButton *m_btnAbort;    // the abort button (or NULL if none)
+   wxButton *m_btnPause;
+   wxButton *m_btnStep;
+
+   wxMemoryDC m_memoryDC;  // for restoring image on OnPaint
+   wxBitmap m_bitmap;
+
+   // continue processing or not (return value for Update())
+   enum
+   {
+      Uncancellable = -1,   // dialog can't be canceled
+      Paused,
+      Cancelled,            // can be cancelled and, in fact, was
+      Continue,            // can be cancelled but wasn't
+      Finished             // finished, waiting to be removed from screen
+   } m_state;
+
+   enum { ID_BTN_PAUSE = 19996, ID_BTN_STEP = 19997 };
+
+   void showView (int iViewNumber);
+
+   DECLARE_EVENT_TABLE()
+};
+#endif
+
diff --git a/src/dlgreconstruct.cpp b/src/dlgreconstruct.cpp
new file mode 100644
index 0000000..0f217af
--- /dev/null
+++ b/src/dlgreconstruct.cpp
@@ -0,0 +1,336 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dlgreconstruct.cpp
+**   Purpose:       Reconstruction Animation Dialog
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  August 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#include "wx/utils.h"
+#include "wx/frame.h"
+#include "wx/button.h"
+#include "wx/stattext.h"
+#include "wx/layout.h"
+#include "wx/event.h"
+#include "wx/intl.h"
+#include "wx/settings.h"
+#include "wx/dcclient.h"
+#include "wx/timer.h"
+#include "wx/image.h"
+
+#include "dlgreconstruct.h"
+#include <algorithm>
+#include "ct.h"
+
+
+static const int LAYOUT_X_MARGIN = 4;
+static const int LAYOUT_Y_MARGIN = 4;
+
+
+const int ReconstructDialog::ID_BTN_PAUSE = 19998;
+const int ReconstructDialog::ID_BTN_STEP = 19999;
+const int ReconstructDialog::MAX_IMAGE_X = 400;
+const int ReconstructDialog::MAX_IMAGE_Y = 400;
+
+
+BEGIN_EVENT_TABLE(ReconstructDialog, wxDialog)
+EVT_BUTTON(wxID_CANCEL, ReconstructDialog::OnCancel)
+EVT_BUTTON(ID_BTN_PAUSE, ReconstructDialog::OnPause)
+EVT_BUTTON(ID_BTN_STEP, ReconstructDialog::OnStep)
+EVT_CLOSE(ReconstructDialog::OnClose)
+EVT_PAINT(ReconstructDialog::OnPaint)
+END_EVENT_TABLE()
+
+IMPLEMENT_CLASS(ReconstructDialog, wxDialog)
+
+
+ReconstructDialog::ReconstructDialog (Reconstructor& rReconstruct, const Projections& rProj,
+                                      ImageFile& rIF, const int iTrace, wxWindow *parent)
+: wxDialog(parent, -1, _T("Reconstruction"), wxDefaultPosition), m_rReconstructor(rReconstruct),
+           m_rProjections(rProj), m_rImageFile(rIF), m_pSGPDriver(NULL), m_pSGP(NULL),
+  m_iTrace(iTrace), m_pDC(NULL), m_btnAbort(0), m_btnPause(0), m_btnStep(0)
+{
+    m_state = Continue;
+    m_iLastView = -1;
+    m_parentTop = parent;
+    while ( m_parentTop && m_parentTop->GetParent() )
+        m_parentTop = m_parentTop->GetParent();
+
+    m_btnAbort = new wxButton(this, wxID_CANCEL, _T("Cancel"));
+    wxLayoutConstraints* c = new wxLayoutConstraints;
+    c->right.SameAs(this, wxRight, 2*LAYOUT_X_MARGIN);
+    c->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN);
+
+    wxSize sizeBtn = wxButton::GetDefaultSize();
+    c->width.Absolute(sizeBtn.x);
+    c->height.Absolute(sizeBtn.y);
+
+    m_btnAbort->SetConstraints(c);
+
+    m_btnPause = new wxButton (this, ID_BTN_PAUSE, _T("Pause"));
+    wxLayoutConstraints* cPause = new wxLayoutConstraints;
+    cPause->right.SameAs(this, wxRight, 3*LAYOUT_X_MARGIN + sizeBtn.x);
+    cPause->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN);
+    cPause->width.Absolute(sizeBtn.x);
+    cPause->height.Absolute(sizeBtn.y);
+    m_btnPause->SetConstraints(cPause);
+
+    m_btnStep = new wxButton (this, ID_BTN_STEP, _T("Step"));
+    wxLayoutConstraints* cStep = new wxLayoutConstraints;
+    cStep->right.SameAs(this, wxRight, 5*LAYOUT_X_MARGIN + sizeBtn.x * 2);
+    cStep->bottom.SameAs(this, wxBottom, 2*LAYOUT_Y_MARGIN);
+    cStep->width.Absolute(sizeBtn.x);
+    cStep->height.Absolute(sizeBtn.y);
+    m_btnStep->SetConstraints(cStep);
+
+    SetAutoLayout(TRUE);
+    Layout();
+
+    m_nxGraph = 500;
+    m_nyGraph = 500;
+    wxSize sizeDlg (m_nxGraph, m_nyGraph);
+    m_nxImage = m_rImageFile.nx();
+    if (m_nxImage > MAX_IMAGE_X)
+                   m_nxImage = MAX_IMAGE_X;
+    m_nyImage = m_rImageFile.ny();
+    if (m_nyImage > MAX_IMAGE_Y)
+                   m_nyImage = MAX_IMAGE_Y;
+
+    sizeDlg.x += m_nxImage;
+    sizeDlg.y = imax (sizeDlg.y, m_nyImage);
+
+    m_iClientX = sizeDlg.x;
+    m_iClientY = sizeDlg.y;
+    SetClientSize (sizeDlg);
+
+    Centre(wxCENTER_FRAME | wxBOTH);
+
+    if ( m_parentTop )
+                m_parentTop->Enable(FALSE);
+
+    Show(TRUE);
+    Enable(TRUE); // enable this window
+
+    m_bitmap.Create (m_iClientX, m_iClientY); // save a copy of screen
+    m_pDC = dynamic_cast<wxDC*> (new wxClientDC (this));
+    int x, y;
+    this->GetClientSize(&x, &y);
+    m_pSGPDriver = new SGPDriver (m_pDC, x, y);
+    m_pSGP = new SGP (*m_pSGPDriver);
+
+    wxYield();     // Update the display
+
+    m_pSGPDriver->idWX()->SetFont(*wxSWISS_FONT);
+}
+
+void
+ReconstructDialog::showView (int iViewNumber, bool bBackprojectView)
+{
+        if ( iViewNumber < m_rProjections.nView() ) {
+                m_iLastView = iViewNumber;
+                ::wxYield();        // update the display
+                m_pSGP->eraseWindow();
+                m_btnPause->Refresh();
+                m_btnStep->Refresh();
+                m_btnAbort->Refresh();
+
+                char szProgress [256];
+                snprintf (szProgress, sizeof(szProgress), "Reconstructing View %d (%.1f%%)", iViewNumber, 100 * iViewNumber / static_cast<double>(m_rProjections.nView()));
+                m_pSGP->setViewport (0, 0, 1, 1);
+                m_pSGP->setWindow (0, 0, 1, 1);
+                m_pSGP->setTextColor (C_LTRED, -1);
+                m_pSGP->setTextPointSize (20.);
+                m_pSGP->moveAbs(0., m_pSGP->getCharHeight());
+                m_pSGP->drawText (szProgress);
+                m_pSGP->setTextPointSize (10.);
+
+    int iXDialog, iYDialog;
+    GetClientSize (&iXDialog, &iYDialog);
+    double dGraphWidth = (iXDialog - m_nxImage) / static_cast<double>(iXDialog);
+
+                m_rReconstructor.reconstructView (iViewNumber, 1, m_pSGP, bBackprojectView, dGraphWidth);
+    ::wxYield();
+::wxYield();
+::wxYield();
+::wxYield();
+
+                ImageFileArrayConst v = m_rImageFile.getArray();
+                int xBase = m_nxGraph;
+                int yBase = 0;
+                if (m_nyGraph > m_nyImage)
+                        yBase = (m_nyGraph - m_nyImage) / 2;
+                double minValue = v[0][0];
+                double maxValue = v[0][0];
+                for (int ix = 0; ix < m_nxImage; ix++) {
+                        for (int iy = 0; iy < m_nyImage; iy++) {
+                                double dPixel = v[ix][iy];
+                                if (dPixel < minValue)
+                                        minValue = dPixel;
+                                else if (dPixel > maxValue)
+                                        maxValue = dPixel;
+                        }
+                }
+                unsigned char* imageData = new unsigned char [m_nxImage * m_nyImage * 3];
+                double dScale = 255 / (maxValue - minValue);
+                for (int ix2 = 0; ix2 < m_nxImage; ix2++) {
+                        for (int iy = 0; iy < m_nyImage; iy++) {
+                                double dPixel = v[ix2][iy];
+                                dPixel = (dPixel - minValue) * dScale;
+                                int intensity = nearest<int>(dPixel);
+                                intensity = clamp (intensity, 0, 255);
+                                int baseAddr = ((m_nyImage - 1 - iy) * m_nxImage + ix2) * 3;
+                                imageData[baseAddr] = imageData[baseAddr+1] = imageData[baseAddr+2] = intensity;
+                        }
+                }
+                wxImage image (m_nxImage, m_nyImage, imageData, true);
+                wxBitmap bitmap (image);
+                m_pSGP->getDriver().idWX()->DrawBitmap(bitmap, xBase, yBase, false);
+                delete imageData;
+        }
+
+  ::wxYield();
+}
+
+bool
+ReconstructDialog::reconstructView (int iViewNumber, bool bBackproject)
+{
+        if (iViewNumber <= m_iLastView)  // have already done this view
+                return true;
+
+        if (iViewNumber < m_rProjections.nView()) {
+                ::wxYield();        // update the display
+                showView (iViewNumber, bBackproject);
+                ::wxYield();        // update the display
+                if (m_iTrace >= Trace::TRACE_PLOT) {
+                        ::wxMilliSleep(250);
+                }
+        } else {
+                m_state = Finished;    // so that we return TRUE below and
+        }                        // that [Cancel] handler knew what to do
+
+        ::wxYield();        // update the display
+        return m_state != Cancelled;
+}
+
+
+// EVENT HANDLERS
+
+void ReconstructDialog::OnCancel (wxCommandEvent& event)
+{
+        if ( m_state == Finished ) {
+                // this means that the count down is already finished and we're being
+                // shown as a modal dialog - so just let the default handler do the job
+                event.Skip();
+        } else {
+                // request to cancel was received, the next time Update() is called we
+                // will handle it
+                m_state = Cancelled;
+
+                // update the button state immediately so that the user knows that the
+                // request has been noticed
+                m_btnAbort->Disable();
+        }
+}
+
+
+void
+ReconstructDialog::OnPause (wxCommandEvent& event)
+{
+        if ( m_state == Finished ) {
+                // this means that the count down is already finished and we're being
+                // shown as a modal dialog - so just let the default handler do the job
+                event.Skip();
+        } else if (m_state == Continue) {
+                m_memoryDC.SelectObject (m_bitmap);       // in memoryDC
+                m_pSGP->setDC (&m_memoryDC);
+                m_memoryDC.SetFont (*wxSWISS_FONT);
+                showView (m_iLastView, false);
+                m_state = Paused;
+                m_btnPause->SetLabel (_T("Resume"));
+                m_pSGP->setDC (m_pDC);
+                m_memoryDC.SelectObject(wxNullBitmap);
+        } else if (m_state == Paused) {
+                m_state = Continue;
+                m_btnPause->SetLabel (_T("Pause"));
+        }
+}
+
+
+void
+ReconstructDialog::OnStep (wxCommandEvent& event)
+{
+        if ( m_state == Finished ) {
+                event.Skip();
+        } else if (m_state == Continue) {
+                m_memoryDC.SelectObject (m_bitmap);       // in memoryDC
+                m_pSGP->setDC (&m_memoryDC);
+                m_memoryDC.SetFont (*wxSWISS_FONT);
+                showView (m_iLastView, false);
+                m_state = Paused;
+                m_btnPause->SetLabel (_T("Resume"));
+                m_pSGP->setDC (m_pDC);
+                m_memoryDC.SelectObject(wxNullBitmap);
+                Refresh();
+        } else if (m_state == Paused) {
+                m_memoryDC.SelectObject (m_bitmap);       // in memoryDC
+                m_pSGP->setDC (&m_memoryDC);
+                m_memoryDC.SetFont (*wxSWISS_FONT);
+                reconstructView (m_iLastView + 1);
+                m_pSGP->setDC (m_pDC);
+                m_memoryDC.SelectObject(wxNullBitmap);
+                Refresh();
+        }
+}
+
+void ReconstructDialog::OnClose(wxCloseEvent& event)
+{
+    if ( m_state == Uncancellable )
+                event.Veto(TRUE);    // can't close this dialog
+    else if ( m_state == Finished )
+                event.Skip(); // let the default handler close the window as we already terminated
+    else
+                m_state = Cancelled;          // next Update() will notice it
+}
+
+void
+ReconstructDialog::OnPaint (wxPaintEvent& event)
+{
+        wxPaintDC paintDC (this);
+        if (m_state == Paused) {
+                paintDC.DrawBitmap (m_bitmap, 0, 0, false);
+        }
+}
+
+
+/////////////////////////////////////////////////////
+// destruction
+
+ReconstructDialog::~ReconstructDialog()
+{
+        if ( m_parentTop )
+                m_parentTop->Enable(TRUE);
+
+        delete m_pSGP;
+        delete m_pSGPDriver;
+        delete m_pDC;
+}
+
diff --git a/src/dlgreconstruct.h b/src/dlgreconstruct.h
new file mode 100644
index 0000000..91f1790
--- /dev/null
+++ b/src/dlgreconstruct.h
@@ -0,0 +1,122 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          dlgreconstruct.h
+**   Purpose:       Headers for Reconstruction Animation Dialog
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  August 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __DLGRECONSTRUCT_H_
+#define __DLGRECONSTRUCT_H_
+
+#include "wx/setup.h"
+#include "wx/dialog.h"
+#include "wx/dcmemory.h"
+
+class wxButton;
+class wxStaticText;
+class Projections;
+class ImageFile;
+class SGP;
+class SGPDriver;
+class Reconstructor;
+
+class ReconstructDialog : public wxDialog
+{
+  DECLARE_DYNAMIC_CLASS(ReconstructDialog)
+
+public:
+  ReconstructDialog (Reconstructor& rReconstruct, const Projections& rProj, ImageFile& rIF, const int iTrace, wxWindow *parent);
+
+   ~ReconstructDialog();
+
+   /* Perform projection on view number
+       return true if ABORT button has not been pressed
+   */
+   bool reconstructView (int iViewNumber, bool bBackproject = true);
+
+   /* Can be called to continue after the cancel button has been pressed, but
+       the program decided to continue the operation (e.g., user didn't
+       confirm it)
+   */
+   void Resume() { m_state = Continue; }
+
+   // implementation from now on
+       // callback for optional abort button
+   void OnCancel(wxCommandEvent& event);
+       // callback to disable "hard" window closing
+   void OnClose(wxCloseEvent& event);
+   void OnPaint(wxPaintEvent& event);
+
+   void OnPause(wxCommandEvent& event);
+   void OnStep(wxCommandEvent& event);
+
+   bool isPaused() const {return m_state == Paused;}
+
+   bool isCancelled() const {return m_state == Cancelled;}
+
+private:
+   // parent top level window (may be NULL)
+   wxWindow *m_parentTop;
+   int m_iLastView;
+   int m_iClientX;   // size of client window
+   int m_iClientY;
+
+   Reconstructor& m_rReconstructor;
+   const Projections& m_rProjections;
+   ImageFile& m_rImageFile;
+   SGPDriver* m_pSGPDriver;
+   SGP* m_pSGP;
+   const int m_iTrace;
+   wxDC* m_pDC;
+
+   wxButton *m_btnAbort;    // the abort button (or NULL if none)
+   wxButton *m_btnPause;
+   wxButton *m_btnStep;
+
+   wxMemoryDC m_memoryDC;  // for restoring image on OnPaint
+   wxBitmap m_bitmap;
+
+   int m_nxImage;
+   int m_nyImage;
+   int m_nxGraph;
+   int m_nyGraph;
+
+   // continue processing or not (return value for Update())
+   enum
+   {
+      Uncancellable = -1,   // dialog can't be canceled
+      Paused,
+      Cancelled,            // can be cancelled and, in fact, was
+      Continue,            // can be cancelled but wasn't
+      Finished             // finished, waiting to be removed from screen
+   } m_state;
+
+   const static int ID_BTN_PAUSE;
+   const static int ID_BTN_STEP;
+   const static int MAX_IMAGE_X;
+   const static int MAX_IMAGE_Y;
+
+   void showView (int iViewNumber, bool bBackprojectView = true);
+
+   DECLARE_EVENT_TABLE()
+};
+#endif
+
diff --git a/src/docs.cpp b/src/docs.cpp
new file mode 100644
index 0000000..a47d8d9
--- /dev/null
+++ b/src/docs.cpp
@@ -0,0 +1,540 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          docs.cpp
+**   Purpose:       Document routines for CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+#include "wx/txtstrm.h"
+#include "wx/file.h"
+#include "wx/thread.h"
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "threadrecon.h"
+
+
+// ImageFileDocument
+
+IMPLEMENT_DYNAMIC_CLASS(ImageFileDocument, wxDocument)
+
+bool ImageFileDocument::OnSaveDocument(const wxString& filename)
+{
+  if (! m_pImageFile->fileWrite (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to write image file ") << filename << _T("\n");
+    return false;
+  }
+  if (theApp->getVerboseLogging())
+    *theApp->getLog() << _T("Wrote image file ") << filename << _T("\n");
+  Modify(false);
+  return true;
+}
+
+bool ImageFileDocument::OnOpenDocument(const wxString& filename)
+{
+  if (! OnSaveModified())
+    return false;
+
+  if (! m_pImageFile->fileRead (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to read image file ") << filename << _T("\n");
+    m_bBadFileOpen = true;
+    return false;
+  }
+
+  if (theApp->getVerboseLogging() && filename != _T(""))
+    *theApp->getLog() << _T("Read image file ") << filename << _T("\n");
+
+  SetFilename(filename, true);
+  Modify(false);
+  getView()->setInitialClientSize();
+  this->SetFilename(filename, true);
+  UpdateAllViews();
+  m_bBadFileOpen = false;
+
+  return true;
+}
+
+bool
+ImageFileDocument::IsModified(void) const
+{
+  return wxDocument::IsModified();
+}
+
+void
+ImageFileDocument::Modify(bool mod)
+{
+  wxDocument::Modify(mod);
+}
+
+ImageFileView*
+ImageFileDocument::getView() const
+{
+  return dynamic_cast<ImageFileView*>(GetFirstView());
+}
+
+bool
+ImageFileDocument::Revert ()
+{
+  if (IsModified()) {
+    wxString msg (_T("Revert to saved "));
+    msg += GetFilename();
+    msg += _T("?");
+    wxMessageDialog dialog (getView()->getFrame(), msg, _T("Are you sure?"), wxYES_NO | wxNO_DEFAULT);
+    if (dialog.ShowModal() == wxID_YES) {
+      if (theApp->getVerboseLogging())
+        *theApp->getLog() << _T("Reverting to saved ") << GetFilename() << _T("\n");
+      Modify (false);
+      OnOpenDocument (GetFilename());
+    }
+  }
+  UpdateAllViews();
+
+  return true;
+}
+
+void
+ImageFileDocument::Activate()
+{
+#if CTSIM_MDI
+  getView()->getFrame()->Activate();
+#endif
+};
+
+// BackgroundProcessingDocument - Base Class
+
+IMPLEMENT_DYNAMIC_CLASS(BackgroundProcessingDocument, wxDocument)
+BEGIN_EVENT_TABLE(BackgroundProcessingDocument, wxDocument)
+END_EVENT_TABLE()
+
+#ifdef HAVE_WXTHREADS
+void
+BackgroundProcessingDocument::addBackgroundSupervisor (BackgroundSupervisor* pSupervisor)
+{
+  wxCriticalSectionLocker locker (m_criticalSection);
+  if (pSupervisor)
+    m_vecpBackgroundSupervisors.push_back (pSupervisor);
+}
+
+void
+BackgroundProcessingDocument::removeBackgroundSupervisor (BackgroundSupervisor* pSupervisor)
+{
+  m_criticalSection.Enter();
+  bool bFound = false;
+  for (BackgroundContainer::iterator i = m_vecpBackgroundSupervisors.begin();
+        i != m_vecpBackgroundSupervisors.end();
+        i++)
+          if (*i == pSupervisor) {
+            m_vecpBackgroundSupervisors.erase(i);
+            bFound = true;
+            break;
+        }
+  m_criticalSection.Leave();
+
+  if (! bFound)
+     sys_error (ERR_SEVERE, "Could not find background task [OnRemoveBackground]");
+}
+#endif
+
+void
+BackgroundProcessingDocument::cancelRunningTasks()
+{
+#ifdef HAVE_WXTHREADS
+  m_criticalSection.Enter();
+  for (BackgroundContainer::iterator i = m_vecpBackgroundSupervisors.begin();
+        i != m_vecpBackgroundSupervisors.end(); i++)
+          (*i)->onCancel();
+  m_criticalSection.Leave();
+
+  while (m_vecpBackgroundSupervisors.size() > 0) {
+     ::wxYield();
+     ::wxMilliSleep(50);
+  }
+#endif
+}
+
+
+// ProjectionFileDocument
+
+IMPLEMENT_DYNAMIC_CLASS(ProjectionFileDocument, BackgroundProcessingDocument)
+
+bool
+ProjectionFileDocument::OnSaveDocument(const wxString& filename)
+{
+  if (! m_pProjectionFile->write (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to write projection file ") << filename << _T("\n");
+    return false;
+  }
+  if (theApp->getVerboseLogging())
+    *theApp->getLog() << _T("Wrote projection file ") << filename << _T("\n");
+  Modify(false);
+  return true;
+}
+
+ProjectionFileDocument::~ProjectionFileDocument()
+{
+  cancelRunningTasks();
+
+  delete m_pProjectionFile;
+}
+
+bool
+ProjectionFileDocument::OnOpenDocument(const wxString& filename)
+{
+  if (! OnSaveModified())
+    return false;
+
+  if (! m_pProjectionFile->read (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to read projection file ") << filename << _T("\n");
+    m_bBadFileOpen = true;
+    return false;
+  }
+  m_bBadFileOpen = false;
+
+  if (theApp->getVerboseLogging() && filename != _T(""))
+    *theApp->getLog() << _T("Read projection file ") << filename << _T("\n");
+
+  SetFilename(filename, true);
+  Modify(false);
+  getView()->setInitialClientSize();
+  UpdateAllViews();
+
+  return true;
+}
+
+bool
+ProjectionFileDocument::IsModified(void) const
+{
+  return wxDocument::IsModified();
+}
+
+void
+ProjectionFileDocument::Modify(bool mod)
+{
+  wxDocument::Modify(mod);
+}
+
+
+ProjectionFileView*
+ProjectionFileDocument::getView() const
+{
+  return dynamic_cast<ProjectionFileView*>(GetFirstView());
+}
+
+void
+ProjectionFileDocument::Activate()
+{
+#if CTSIM_MDI
+  getView()->getFrame()->Activate();
+#endif
+};
+
+// PhantomFileDocument
+
+IMPLEMENT_DYNAMIC_CLASS(PhantomFileDocument, BackgroundProcessingDocument)
+
+PhantomFileDocument::~PhantomFileDocument()
+{
+  cancelRunningTasks();
+}
+
+bool
+PhantomFileDocument::OnOpenDocument(const wxString& constFilename)
+{
+  if (! OnSaveModified())
+    return false;
+
+  wxString filename (constFilename);
+
+  if (wxFile::Exists (filename)) {
+    m_phantom.createFromFile (filename.mb_str(wxConvUTF8));
+    if (theApp->getVerboseLogging())
+      *theApp->getLog() << _T("Read phantom file ") << filename << _T("\n");
+  } else {
+    filename.Replace (_T(".phm"), _T(""));
+    m_phantom.createFromPhantom (filename.mb_str(wxConvUTF8));
+  }
+  m_namePhantom = filename;
+  SetFilename (filename, true);
+  if (m_phantom.fail()) {
+    *theApp->getLog() << _T("Failure creating phantom ") << filename << _T("\n");
+    m_bBadFileOpen = true;
+    return false;
+  }
+  m_idPhantom = m_phantom.id();
+  Modify(false);
+  UpdateAllViews();
+  m_bBadFileOpen = false;
+
+  return true;
+}
+
+bool
+PhantomFileDocument::OnSaveDocument(const wxString& filename)
+{
+  if (! m_phantom.fileWrite (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to write phantom file ") << filename << _T("\n");
+    return false;
+  }
+  if (theApp->getVerboseLogging())
+    *theApp->getLog() << _T("Wrote phantom file ") << filename << _T("\n");
+  Modify(false);
+  return true;
+}
+
+bool
+PhantomFileDocument::IsModified(void) const
+{
+  return false;
+}
+
+void
+PhantomFileDocument::Modify(bool mod)
+{
+  wxDocument::Modify(mod);
+}
+
+
+PhantomFileView*
+PhantomFileDocument::getView() const
+{
+  return dynamic_cast<PhantomFileView*>(GetFirstView());
+}
+
+void
+PhantomFileDocument::Activate()
+{
+#if CTSIM_MDI
+  getView()->getFrame()->Activate();
+#endif
+};
+
+// PlotFileDocument
+
+IMPLEMENT_DYNAMIC_CLASS(PlotFileDocument, wxDocument)
+
+bool
+PlotFileDocument::OnSaveDocument(const wxString& filename)
+{
+  m_namePlot = filename.c_str();
+  if (! m_plot.fileWrite (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to write plot file ") << filename << _T("\n");
+    return false;
+  }
+  if (theApp->getVerboseLogging())
+    *theApp->getLog() << _T("Wrote plot file ") << filename << _T("\n");
+  Modify(false);
+  return true;
+}
+
+bool
+PlotFileDocument::OnOpenDocument(const wxString& filename)
+{
+  if (! OnSaveModified())
+    return false;
+
+  if (! m_plot.fileRead (filename.mb_str(wxConvUTF8))) {
+    *theApp->getLog() << _T("Unable to read plot file ") << filename << _T("\n");
+    m_bBadFileOpen = true;
+    return false;
+  }
+  m_bBadFileOpen = false;
+
+  if (theApp->getVerboseLogging() && filename != _T(""))
+    *theApp->getLog() << _T("Read plot file ") << filename << _T("\n");
+
+  SetFilename (filename, true);
+  m_namePlot = filename.c_str();
+  Modify (false);
+  getView()->setInitialClientSize();
+  UpdateAllViews();
+
+  return true;
+}
+
+
+bool
+PlotFileDocument::IsModified(void) const
+{
+  return wxDocument::IsModified();
+}
+
+void
+PlotFileDocument::Modify (bool mod)
+{
+  wxDocument::Modify(mod);
+}
+
+PlotFileView*
+PlotFileDocument::getView() const
+{
+  return dynamic_cast<PlotFileView*>(GetFirstView());
+}
+
+void
+PlotFileDocument::Activate()
+{
+#if CTSIM_MDI
+  getView()->getFrame()->Activate();
+#endif
+};
+
+//////////////////////////////////////////////////////////////////////////
+//
+// TextFileDocument
+//
+//////////////////////////////////////////////////////////////////////////
+
+IMPLEMENT_DYNAMIC_CLASS(TextFileDocument, wxDocument)
+
+bool
+TextFileDocument::OnSaveDocument(const wxString& filename)
+{
+  TextFileView *view = getView();
+  if (! view->getTextCtrl()->SaveFile(filename))
+    return false;
+  Modify(false);
+  return true;
+}
+
+bool
+TextFileDocument::OnOpenDocument(const wxString& filename)
+{
+  TextFileView *view = getView();
+
+  if (! view->getTextCtrl()->LoadFile(filename)) {
+    m_bBadFileOpen = true;
+    return false;
+  }
+
+  SetFilename (filename, true);
+  Modify (false);
+  UpdateAllViews();
+  m_bBadFileOpen = false;
+  return true;
+}
+
+bool
+TextFileDocument::IsModified(void) const
+{
+  return false;
+
+  TextFileView *view = getView();
+
+  if (view)
+    return (wxDocument::IsModified() || view->getTextCtrl()->IsModified());
+  else
+    return wxDocument::IsModified();
+}
+
+
+TextFileView*
+TextFileDocument::getView() const
+{
+  return dynamic_cast<TextFileView*>(GetFirstView());
+}
+
+wxTextCtrl*
+TextFileDocument::getTextCtrl()
+{
+  return dynamic_cast<TextFileView*>(GetFirstView())->getTextCtrl();
+}
+
+//////////////////////////////////////////////////////////////////////////
+//
+// Graph3dFileDocument
+//
+//////////////////////////////////////////////////////////////////////////
+
+#if wxUSE_GLCANVAS
+
+IMPLEMENT_DYNAMIC_CLASS(Graph3dFileDocument, wxDocument)
+
+Graph3dFileDocument::Graph3dFileDocument(void)
+: m_bBadFileOpen(false), m_nVertices(0), m_pVertices(0), m_pNormals(0),m_nx(0),m_ny(0),m_array(0)
+{
+}
+
+Graph3dFileDocument::~Graph3dFileDocument()
+{
+}
+
+bool
+Graph3dFileDocument::OnSaveDocument(const wxString& filename)
+{
+  Modify(false);
+  return true;
+}
+
+bool
+Graph3dFileDocument::OnOpenDocument(const wxString& filename)
+{
+  SetFilename (filename, true);
+  Modify (false);
+  getView()->setInitialClientSize();
+  UpdateAllViews();
+  m_bBadFileOpen = false;
+  return true;
+}
+
+bool
+Graph3dFileDocument::IsModified(void) const
+{
+    return wxDocument::IsModified();
+}
+
+
+Graph3dFileView*
+Graph3dFileDocument::getView() const
+{
+  return dynamic_cast<Graph3dFileView*>(GetFirstView());
+}
+
+bool
+Graph3dFileDocument::createFromImageFile (const ImageFile& rImageFile)
+{
+  m_nx = rImageFile.nx();
+  m_ny = rImageFile.ny();
+  m_array = rImageFile.getArray();
+
+  return true;
+}
+
+void
+Graph3dFileDocument::Activate()
+{
+#if CTSIM_MDI
+  getView()->getFrame()->Activate();
+#endif
+};
+
+
+#endif // wxUSE_GLCANVAS
diff --git a/src/docs.h b/src/docs.h
new file mode 100644
index 0000000..670a6b2
--- /dev/null
+++ b/src/docs.h
@@ -0,0 +1,284 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          docs.h
+**   Purpose:       Header file for Document routines of CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __DOCSH__
+#define __DOCSH__
+
+#include "wx/docview.h"
+
+// #include "views.h"
+#include "imagefile.h"
+#include "phantom.h"
+#include "projections.h"
+#include "plotfile.h"
+#include "threadrecon.h"
+
+class ProjectionFileView;
+class PhantomFileView;
+class ImageFileView;
+class PlotFileView;
+class TextFileView;
+class Graph3dFileView;
+
+
+class ImageFileDocument: public wxDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(ImageFileDocument)
+    ImageFile* m_pImageFile;
+    bool m_bBadFileOpen;
+
+public:
+    virtual bool OnSaveDocument (const wxString& filename);
+    virtual bool OnOpenDocument (const wxString& filename);
+    virtual bool IsModified () const;
+    virtual bool Revert ();
+    virtual void Modify (bool mod);
+
+    ImageFileDocument ()
+      : m_bBadFileOpen(false)
+    {
+      m_pImageFile = new ImageFile;
+    }
+
+    virtual ~ImageFileDocument ()
+    {
+      delete m_pImageFile;
+    }
+
+    const ImageFile& getImageFile() const { return *m_pImageFile; }
+    ImageFile& getImageFile() { return *m_pImageFile; }
+    void setImageFile (ImageFile* pImageFile)
+    {
+      delete m_pImageFile;
+      m_pImageFile = pImageFile;
+    }
+
+    ImageFileView* getView() const;
+    bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
+};
+
+class BackgroundProcessingDocument : public wxDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(BackgroundProcessingDocument)
+#ifdef HAVE_WXTHREADS
+    typedef BackgroundSupervisor BackgroundObject;
+    typedef std::vector<BackgroundObject*> BackgroundContainer;
+    BackgroundContainer m_vecpBackgroundSupervisors;
+    wxCriticalSection m_criticalSection;
+#endif
+
+public:
+  BackgroundProcessingDocument()
+    : wxDocument()
+      {}
+
+  void cancelRunningTasks();
+#ifdef HAVE_WXTHREADS
+  void addBackgroundSupervisor (BackgroundSupervisor* pSupervisor);
+  void removeBackgroundSupervisor (BackgroundSupervisor* pSupervisor);
+#endif
+
+  DECLARE_EVENT_TABLE()
+};
+
+class ProjectionFileDocument: public BackgroundProcessingDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(ProjectionFileDocument)
+    Projections* m_pProjectionFile;
+    bool m_bBadFileOpen;
+
+public:
+    virtual bool OnSaveDocument (const wxString& filename);
+    virtual bool OnOpenDocument (const wxString& filename);
+    virtual bool IsModified () const;
+    virtual void Modify (bool mod);
+
+    ProjectionFileDocument ()
+          : m_bBadFileOpen(false)
+    {
+      m_pProjectionFile = new Projections;
+    }
+
+    virtual ~ProjectionFileDocument ();
+
+    const Projections& getProjections () const  { return *m_pProjectionFile; }
+    Projections& getProjections ()      { return *m_pProjectionFile; }
+
+    void setProjections (Projections* pProjections)
+    { delete m_pProjectionFile;
+      m_pProjectionFile = pProjections;
+    }
+
+    ProjectionFileView* getView() const;
+    bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
+};
+
+
+class PhantomFileDocument: public BackgroundProcessingDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(PhantomFileDocument)
+    Phantom m_phantom;
+    int m_idPhantom;
+    wxString m_namePhantom;
+    bool m_bBadFileOpen;
+
+public:
+    PhantomFileDocument ()
+        : m_idPhantom(Phantom::PHM_INVALID), m_bBadFileOpen(false)
+    {}
+
+    virtual ~PhantomFileDocument ();
+
+    const int getPhantomID () const { return m_idPhantom; }
+
+    const wxString& getPhantomName () const { return m_namePhantom; }
+
+    const Phantom& getPhantom () const  { return m_phantom; }
+
+    Phantom& getPhantom ()      { return m_phantom; }
+
+    virtual bool OnOpenDocument (const wxString& filename);
+    virtual bool OnSaveDocument (const wxString& filename);
+    virtual bool IsModified () const;
+    virtual void Modify (bool mod);
+    PhantomFileView* getView() const;
+    bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
+};
+
+
+class PlotFileDocument: public wxDocument
+{
+private:
+    DECLARE_DYNAMIC_CLASS(PlotFileDocument)
+    PlotFile m_plot;
+    wxString m_namePlot;
+    bool m_bBadFileOpen;
+
+public:
+    PlotFileDocument ()
+      : m_bBadFileOpen(false)
+    {}
+
+    virtual ~PlotFileDocument ()
+        {}
+
+    const wxString& getPlotName () const
+        { return m_namePlot; }
+
+    const PlotFile& getPlotFile () const
+        { return m_plot; }
+
+    PlotFile& getPlotFile ()
+        { return m_plot; }
+
+    virtual bool OnOpenDocument (const wxString& filename);
+    virtual bool OnSaveDocument (const wxString& filename);
+    virtual bool IsModified () const;
+    virtual void Modify (bool mod);
+    PlotFileView* getView() const;
+    bool getBadFileOpen() const { return m_bBadFileOpen; }
+    void setBadFileOpen() { m_bBadFileOpen = true; }
+    void Activate();
+};
+
+
+class TextFileDocument: public wxDocument
+{
+ private:
+  DECLARE_DYNAMIC_CLASS(TextFileDocument)
+  bool m_bBadFileOpen;
+
+ public:
+  TextFileDocument(void)
+        : m_bBadFileOpen(false)
+  {}
+
+  virtual ~TextFileDocument(void) {}
+
+  virtual bool OnSaveDocument(const wxString& filename);
+  virtual bool OnOpenDocument(const wxString& filename);
+  virtual bool IsModified(void) const;
+
+  wxTextCtrl* getTextCtrl();
+
+  TextFileView* getView() const;
+  bool getBadFileOpen() const { return m_bBadFileOpen; }
+  void setBadFileOpen() { m_bBadFileOpen = true; }
+};
+
+
+#if wxUSE_GLCANVAS
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+typedef GLfloat glTripleFloat[3];
+
+class Graph3dFileDocument: public wxDocument
+{
+  friend class Graph3dFileView;
+
+ private:
+  DECLARE_DYNAMIC_CLASS(Graph3dFileDocument)
+  bool m_bBadFileOpen;
+  GLint m_nVertices;
+  glTripleFloat* m_pVertices;
+  glTripleFloat* m_pNormals;
+  unsigned int m_nx;
+  unsigned int m_ny;
+  ImageFileArray m_array;
+
+ public:
+  Graph3dFileDocument(void);
+  virtual ~Graph3dFileDocument(void);
+
+  virtual bool OnSaveDocument (const wxString& filename);
+  virtual bool OnOpenDocument (const wxString& filename);
+  virtual bool IsModified () const;
+
+  Graph3dFileView* getView() const;
+  bool getBadFileOpen() const { return m_bBadFileOpen; }
+  void setBadFileOpen()       { m_bBadFileOpen = true; }
+  bool createFromImageFile (const ImageFile& rImageFile);
+
+  int nx() const  { return m_nx; }
+  int ny() const { return m_ny; }
+  ImageFileArray getArray() { return m_array; }
+  ImageFileArrayConst getArray() const { return m_array; }
+  void Activate();
+};
+#endif // wxUSE_GLCANVAS
+
+
+#endif
diff --git a/src/graph3dview.cpp b/src/graph3dview.cpp
new file mode 100644
index 0000000..dbcd2b0
--- /dev/null
+++ b/src/graph3dview.cpp
@@ -0,0 +1,979 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          graph3dview.cpp
+**   Purpose:       3d graph view classes
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if wxUSE_GLCANVAS
+
+#if !wxUSE_GLCANVAS
+#error Please set wxUSE_GLCANVAS to 1 in setup.h.
+#endif
+
+#include "wx/timer.h"
+#include "wx/glcanvas.h"
+
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "dialogs.h"
+#include "dlgprojections.h"
+#include "dlgreconstruct.h"
+#include "backprojectors.h"
+#include "reconstruct.h"
+#include "timer.h"
+
+#if defined(MSVC) || HAVE_SSTREAM
+#include <sstream>
+#else
+#include <sstream_subst>
+#endif
+
+inline void
+Graph3dFileView::intensityToColor (double dIntensity, GLfloat* vecColor)
+{
+  if (dIntensity < 0 || dIntensity > 1) {
+    vecColor[0] = vecColor[1] = vecColor[2] = 1;
+    return;
+  }
+
+  float fRange = dIntensity * 5;
+  int iRange = static_cast<int>(floor (fRange));
+  float fFrac = fRange - iRange;
+
+  // Rainbow: Purple->Blue->Cyan->Green->Yellow->Red = (1,0,1)-(0,0,1)-(0,1,1)-(0,1,0)-(1,1,0)-(1,0,0)
+  switch (iRange) {
+  case 0:
+    vecColor[0] = 1.0f - fFrac; vecColor[1] = 0.0f; vecColor[2] = 1.0f;
+    break;
+  case 1:
+    vecColor[0] = 0.0f; vecColor[1] = fFrac; vecColor[2] = 1.0f;
+    break;
+  case 2:
+    vecColor[0] = 0.0f; vecColor[1] = 1.0f; vecColor[2] = 1.0f - fFrac;
+    break;
+  case 3:
+    vecColor[0] = fFrac; vecColor[1] = 1.0f; vecColor[2] = 0.0f;
+    break;
+  case 4:
+    vecColor[0] = 1.0f; vecColor[1] = 1.0f - fFrac; vecColor[2] = 0.0f;
+    break;
+  case 5:
+    vecColor[0] = 1.0f; vecColor[1] = 0.0f; vecColor[2] = 0.0f;
+    break;
+  }
+}
+
+//***********************************************************************
+// Function: CalculateVectorNormal
+//
+// Purpose: Given three points of a 3D plane, this function calculates
+//          the normal vector of that plane.
+//
+// Parameters:
+//     fVert1[]   == array for 1st point (3 elements are x, y, and z).
+//     fVert2[]   == array for 2nd point (3 elements are x, y, and z).
+//     fVert3[]   == array for 3rd point (3 elements are x, y, and z).
+//
+// Returns:
+//     fNormalX   == X vector for the normal vector
+//     fNormalY   == Y vector for the normal vector
+//     fNormalZ   == Z vector for the normal vector
+//*************************************************************************
+
+template<class T>
+static void
+CalculateVectorNormal (T fVert1[], T fVert2[], T fVert3[], T *fNormalX, T *fNormalY, T *fNormalZ)
+{
+  T Qx = fVert2[0] - fVert1[0];
+  T Qy = fVert2[1] - fVert1[1];
+  T Qz = fVert2[2] - fVert1[2];
+  T Px = fVert3[0] - fVert1[0];
+  T Py = fVert3[1] - fVert1[1];
+  T Pz = fVert3[2] - fVert1[2];
+
+  *fNormalX = Py*Qz - Pz*Qy;
+  *fNormalY = Pz*Qx - Px*Qz;
+  *fNormalZ = Px*Qy - Py*Qx;
+}
+
+IMPLEMENT_DYNAMIC_CLASS(Graph3dFileView, wxView)
+
+BEGIN_EVENT_TABLE(Graph3dFileView, wxView)
+EVT_MENU(IFMENU_FILE_PROPERTIES, Graph3dFileView::OnProperties)
+EVT_MENU(GRAPH3D_VIEW_LIGHTING, Graph3dFileView::OnLighting)
+EVT_MENU(GRAPH3D_VIEW_COLOR, Graph3dFileView::OnColor)
+EVT_MENU(GRAPH3D_VIEW_SMOOTH, Graph3dFileView::OnSmooth)
+EVT_MENU(GRAPH3D_VIEW_WIREFRAME, Graph3dFileView::OnWireframe)
+EVT_MENU(GRAPH3D_VIEW_SCALE_MINMAX, Graph3dFileView::OnScaleSet)
+EVT_MENU(GRAPH3D_VIEW_SCALE_AUTO, Graph3dFileView::OnScaleAuto)
+EVT_MENU(GRAPH3D_VIEW_SCALE_FULL, Graph3dFileView::OnScaleFull)
+END_EVENT_TABLE()
+
+Graph3dFileView::Graph3dFileView ()
+  : m_pFileMenu(NULL), m_pViewMenu(NULL), m_pStatusBar(NULL), m_pCanvas(NULL),
+    m_dXRotate(-180), m_dYRotate(-210), m_dZRotate(195),
+    m_bDoubleBuffer(true), m_bSmooth(true), m_bWireframe(false),
+    m_bLighting(false), m_bColor(true),
+    m_bColorScaleMinSet(false), m_bColorScaleMaxSet(false),
+    m_pGLContext(NULL), m_pFrame(NULL)
+{}
+
+
+Graph3dFileView::~Graph3dFileView()
+{
+  GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu);
+  GetDocumentManager()->ActivateView(this, false);
+  if (m_pGLContext)
+    delete m_pGLContext;
+}
+
+bool
+Graph3dFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
+{
+  m_pFrame = CreateChildFrame(doc, this);
+  SetFrame (m_pFrame);
+
+  m_pViewMenu->Check (GRAPH3D_VIEW_COLOR, m_bColor);
+  m_pViewMenu->Check (GRAPH3D_VIEW_LIGHTING, m_bLighting);
+  m_pViewMenu->Check (GRAPH3D_VIEW_SMOOTH, m_bSmooth);
+  m_pViewMenu->Check (GRAPH3D_VIEW_WIREFRAME, m_bWireframe);
+
+  m_pFrame->SetFocus();
+  m_pFrame->Show(true);
+  Activate(true);
+
+#if 1
+  m_pCanvas = CreateCanvas (m_pFrame);
+  m_pGLContext = new wxGLContext (m_pCanvas);
+  m_pFrame->SetClientSize (m_pCanvas->GetBestSize());
+  m_pCanvas->SetClientSize (m_pCanvas->GetBestSize());
+  m_pFrame->SetTitle(doc->GetFilename());
+
+  m_pCanvas->SetCurrent(*m_pGLContext);
+  InitGL(); // Crash
+  m_pCanvas->SwapBuffers();
+#endif
+
+  return true;
+}
+
+Graph3dFileCanvas*
+Graph3dFileView::CreateCanvas (wxFrame* parent)
+{
+  Graph3dFileCanvas* pCanvas =
+    new Graph3dFileCanvas (this, parent, NULL,
+                           wxDefaultPosition, wxDefaultSize,
+                           wxFULL_REPAINT_ON_RESIZE);
+
+  pCanvas->SetBackgroundColour(*wxWHITE);
+  pCanvas->ClearBackground();
+
+  return pCanvas;
+}
+
+
+void
+Graph3dFileView::DrawSurface()
+{
+  if (! GetDocument())
+    return;
+
+  if (m_bSmooth) {
+    glShadeModel (GL_SMOOTH);
+  } else {
+    glShadeModel (GL_FLAT);
+  }
+
+  if (m_bLighting) {
+    glEnable (GL_LIGHTING);
+  } else {
+    glDisable (GL_LIGHTING);
+  }
+
+  unsigned int nx = GetDocument()->nx();
+  unsigned int ny = GetDocument()->ny();
+
+  glRotated (m_dZRotate, 0.0, 1.0, 0.0);
+  glRotated (m_dXRotate, 0.0, 0.0, 1.0);
+  glRotated (m_dYRotate, 1.0, 0.0, 0.0);
+  glTranslated (-static_cast<double>(nx - 1) / 2, 0.0, -static_cast<double>(ny - 1) / 2);
+
+  InitMaterials();
+  if (m_bWireframe) {
+    if (! m_bColor)
+      glColor3f (1.0f, 1.0f, 1.0f);
+    glPolygonOffset (1.0f, 1.0f);
+    glEnable (GL_POLYGON_OFFSET_FILL);
+    glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
+    glCallList (DISPLAYLIST_COLOR);
+
+    glEnable (GL_DEPTH_TEST);
+    glColor3f (1.0f, 1.0f, 1.0f);
+    glPolygonOffset (0.0f, 0.0f);
+    glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
+    glCallList (DISPLAYLIST_NO_COLOR);
+
+  } else {
+    glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
+    if (! m_bColor) {
+      glColor3f (1.0f, 1.0f, 1.0f);
+      glCallList (DISPLAYLIST_NO_COLOR);
+    } else {
+      glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE);
+      glEnable (GL_COLOR_MATERIAL);
+      glShadeModel (GL_FLAT);
+      glCallList (DISPLAYLIST_COLOR);
+    }
+  }
+
+}
+
+void
+Graph3dFileView::CreateDisplayList()
+{
+  if (! GetDocument())
+    return;
+
+  unsigned int nx = GetDocument()->nx();
+  unsigned int ny = GetDocument()->ny();
+  const ImageFileArrayConst v = GetDocument()->getArray();
+  if (nx == 0 || ny == 0 || ! v)
+    return;
+
+  glNewList (DISPLAYLIST_COLOR, GL_COMPILE);
+
+  double dMin = m_dColorScaleMin;
+  double dIntensityScale = m_dColorScaleMax - m_dColorScaleMin;
+  double actOffset = m_dGraphMin;
+  double actScale = 0.4 * sqrt(nx*nx+ny*ny) / (m_dGraphMax - m_dGraphMin);
+  double dXOffset = -(static_cast<double>(nx) - 1) / 2.;
+  double dYOffset = -(static_cast<double>(ny) - 1) / 2.;
+  dXOffset = 0;
+  dYOffset = 0;
+
+  double dXPos = -dXOffset;
+  unsigned int ix;
+  for (ix = 0; ix < nx - 1; ix++, dXPos++) {
+    double dYPos = -dYOffset;
+    glBegin(GL_QUAD_STRIP);
+    double p1[3], p2[3], p3[3], n1[3];
+    p1[0] = dXPos;  p1[1] = actScale * (v[ix][0] + actOffset); p1[2] = dYPos;
+    p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][0] + actOffset); p2[2] = dYPos;
+    p3[0] = dXPos; p3[1] = actScale * (v[ix][1] + actOffset); p3[2] = dYPos + 1;
+    CalculateVectorNormal<double> (p1, p2, p3, &n1[0], &n1[1], &n1[2]);
+
+    double dIntensity1 = 0., dIntensity2 = 0.;
+    if (m_bColor) {
+      dIntensity1 = (v[ix][0] - dMin) / dIntensityScale;
+      dIntensity2 = (v[ix+1][0] - dMin) / dIntensityScale;
+    }
+    float vecColor[3];
+    if (m_bColor) {
+      intensityToColor (dIntensity1, vecColor);
+      glColor3fv (vecColor);
+    }
+    glVertex3dv (p1); glNormal3dv (n1);
+    if (m_bColor) {
+      intensityToColor (dIntensity2, vecColor);
+      glColor3fv (vecColor);
+    }
+    glVertex3dv (p2); glNormal3dv (n1);
+
+    double lastP[3];
+    lastP[0] = ix; lastP[1] = actScale * (v[ix][0] + actOffset); lastP[2] = 0;
+    for (unsigned int iy = 1; iy < ny - 1; iy++, dYPos++) {
+      p1[0] = dXPos; p1[1] = actScale * (v[ix][iy] + actOffset); p1[2] = dYPos;
+      p2[0] = dXPos+1;  p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = dYPos;
+      CalculateVectorNormal (p1, p2, lastP, &n1[0], &n1[1], &n1[2]);
+      lastP[0] = p1[0]; lastP[1] = p1[1]; lastP[2] = p1[2];
+      if (m_bColor) {
+        dIntensity1 = (v[ix][iy] - dMin) / dIntensityScale;
+        dIntensity2 = (v[ix+1][iy] - dMin) / dIntensityScale;
+        intensityToColor (dIntensity1, vecColor);
+        glColor3fv (vecColor);
+      }
+      glVertex3dv (p1); glNormal3dv (n1);
+      if (m_bColor) {
+        intensityToColor (dIntensity2, vecColor);
+        glColor3fv (vecColor);
+      }
+      glVertex3dv (p2); glNormal3dv (n1);
+    }
+    glEnd(); // QUAD_STRIP
+  }
+  glEndList();
+
+
+  glNewList (DISPLAYLIST_NO_COLOR, GL_COMPILE);
+  dXPos = -dXOffset;
+  for (ix = 0; ix < nx - 1; ix++, dXPos++) {
+    double dYPos = -dYOffset;
+    glBegin(GL_QUAD_STRIP);
+    double p1[3], p2[3], p3[3], n1[3];
+    p1[0] = dXPos;  p1[1] = actScale * (v[ix][0] + actOffset); p1[2] = dYPos;
+    p2[0] = dXPos+1; p2[1] = actScale * (v[ix+1][0] + actOffset); p2[2] = dYPos;
+    p3[0] = dXPos; p3[1] = actScale * (v[ix][1] + actOffset); p3[2] = dYPos + 1;
+    CalculateVectorNormal<double> (p1, p2, p3, &n1[0], &n1[1], &n1[2]);
+
+    glVertex3dv (p1);
+    glNormal3dv (n1);
+    glVertex3dv (p2);
+    glNormal3dv (n1);
+    double lastP[3];
+    lastP[0] = ix; lastP[1] = actScale * (v[ix][0] + actOffset); lastP[2] = 0;
+    for (unsigned int iy = 1; iy < ny - 1; iy++, dYPos++) {
+      p1[0] = dXPos; p1[1] = actScale * (v[ix][iy] + actOffset); p1[2] = dYPos;
+      p2[0] = dXPos+1;  p2[1] = actScale * (v[ix+1][iy] + actOffset); p2[2] = dYPos;
+       CalculateVectorNormal (p1, p2, lastP, &n1[0], &n1[1], &n1[2]);
+      lastP[0] = p1[0]; lastP[1] = p1[1]; lastP[2] = p1[2];
+      glVertex3dv (p1); glNormal3dv (n1);
+      glVertex3dv (p2); glNormal3dv (n1);
+    }
+    glEnd(); // QUAD_STRIP
+  }
+  glEndList();
+}
+
+
+void
+Graph3dFileView::OnProperties (wxCommandEvent& event)
+{
+  wxString os;
+  *theApp->getLog() << _T(">>>>\n") << os << _T("<<<<\n");
+  wxMessageDialog dialogMsg (getFrameForChild(), os,
+                             _T("Imagefile Properties"), 
+                             wxOK | wxICON_INFORMATION);
+  dialogMsg.ShowModal();
+}
+
+void
+Graph3dFileView::OnLighting (wxCommandEvent& event)
+{
+  m_bLighting = ! m_bLighting;
+  m_pViewMenu->Check (GRAPH3D_VIEW_LIGHTING, m_bLighting);
+  m_pCanvas->Refresh();
+}
+
+void
+Graph3dFileView::OnWireframe (wxCommandEvent& event)
+{
+  m_bWireframe = ! m_bWireframe;
+  m_pViewMenu->Check (GRAPH3D_VIEW_WIREFRAME, m_bWireframe);
+  m_pCanvas->Refresh();
+}
+
+void
+Graph3dFileView::OnColor (wxCommandEvent& event)
+{
+  m_bColor = ! m_bColor;
+  m_pViewMenu->Check (GRAPH3D_VIEW_COLOR, m_bColor);
+  m_pCanvas->Refresh();
+}
+
+void
+Graph3dFileView::OnSmooth (wxCommandEvent& event)
+{
+  m_bSmooth = ! m_bSmooth;
+  m_pViewMenu->Check (GRAPH3D_VIEW_SMOOTH, m_bSmooth);
+  m_pCanvas->Refresh();
+}
+
+
+
+void
+Graph3dFileView::OnDraw (wxDC* dc)
+{
+  if (m_pCanvas) {
+    m_pCanvas->SetCurrent(*m_pGLContext);
+#ifdef DEBUG
+    *theApp->getLog() << _T("Drawing 3d surface\n");
+#endif
+    Draw();
+    m_pCanvas->SwapBuffers();
+  }
+
+  if (m_pStatusBar) {
+    wxString os;
+    os << _T("Xangle=") << m_dXRotate << _T(", Yangle=") << m_dYRotate
+       << _T(", Zangle=") << m_dZRotate;
+    m_pStatusBar->SetStatusText (os);
+  }
+}
+
+
+void
+Graph3dFileView::Draw ()
+{
+  glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
+  glPushMatrix();
+  DrawSurface();
+  glPopMatrix();
+  glFlush();
+}
+
+
+void
+Graph3dFileView::InitMaterials()
+{
+  if (! GetDocument())
+    return;
+  int nx = GetDocument()->nx();
+  int ny = GetDocument()->ny();
+
+#if 1
+  static float position0[] = {nx/2, ny*2, -ny*2, 0.0f,};
+  static float ambient0[] = {.1f, .1f, .1f, 1.0f};
+  static float diffuse0[] = {1.0f, 1.0f, 1.0f, 1.0f};
+  static float position1[] = {-nx/2, -ny*2, -ny*2, 0.0f,};
+  static float ambient1[] = {.1f, .1f, .1f, .1f};
+  static float diffuse1[] = {1.0f, 1.0f, 1.0f, 1.0f};
+  //  static float position0[] = {0.0f, 0.0f, 20.0f, 0.0f};
+  //  static float position1[] = {0.0f, 0.0f, -20.0f, 0.0f};
+  static float front_mat_shininess[] = {60.0f};
+  static float front_mat_specular[] = {0.2f, 0.2f, 0.2f, 1.0f};
+  static float front_mat_diffuse[] = {0.3f, 0.3f, 0.3f, 1.0f};
+  static float back_mat_shininess[] = {10.0f};
+  static float back_mat_specular[] = {0.1f, 0.1f, 0.1f, 1.0f};
+  static float back_mat_diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f};
+  static float lmodel_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f};
+  static float lmodel_twoside[] = {GL_TRUE};
+
+  //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+  glHint(GL_LINE_SMOOTH, GL_DONT_CARE);
+  glEnable(GL_NORMALIZE);
+
+  glLightfv (GL_LIGHT0, GL_AMBIENT, ambient0);
+  glLightfv (GL_LIGHT0, GL_DIFFUSE, diffuse0);
+  glLightfv (GL_LIGHT0, GL_POSITION, position0);
+  glEnable (GL_LIGHT0);
+
+  glLightfv (GL_LIGHT1, GL_AMBIENT, ambient1);
+  glLightfv (GL_LIGHT1, GL_DIFFUSE, diffuse1);
+  glLightfv (GL_LIGHT1, GL_POSITION, position1);
+  glEnable (GL_LIGHT1);
+
+  glLightModelfv (GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
+  glLightModelfv (GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
+
+  glMaterialfv (GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess);
+  glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular);
+  glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse);
+  glMaterialfv (GL_BACK, GL_SHININESS, back_mat_shininess);
+  glMaterialfv (GL_BACK, GL_SPECULAR, back_mat_specular);
+  glMaterialfv (GL_BACK, GL_DIFFUSE, back_mat_diffuse);
+
+  glColorMaterial (GL_FRONT_AND_BACK, GL_DIFFUSE);
+  glColorMaterial (GL_FRONT_AND_BACK, GL_SPECULAR);
+  glEnable(GL_COLOR_MATERIAL);
+#else
+  GLfloat impLPos[]  = {1.0f, 1.0f, 1.0f, 0.0f};
+
+  GLfloat defaultLightAmb   [] = {.2f, .2f, .2f, 1.0f};
+  GLfloat defaultLightDiff  [] = {.2f, .2f, .2f, 1.0f};
+  GLfloat defaultLightSpec  [] = { .3f, .3f, .3f, 1.0f};
+
+  GLfloat defaultGlobalAmb [] = {.3f, .3f, .3f, 1.0f};
+  GLfloat defaultGlobalDiff[] = {.3f, .3f, .3f, 1.0f};
+
+  GLfloat defaultMatShine[] = {  30.0f };
+  GLfloat defaultMatSpec[]  = { .4f, .4f, .4f, 1.0f};
+  GLfloat defaultMatAmb[]   = { .3f, .3f, .3f, 1.0f};
+  GLfloat defaultMatDiff[]  = { .5f, .5f, .5f, 1.0f};
+
+  GLfloat brassMatAmb[]   = { .33f, .22f, .03f, 1.0f};
+  GLfloat brassMatDiff[]  = { .78f, .57f, .11f, 1.0f};
+  GLfloat brassMatSpec[]  = { .99f, .91f, .81f, 1.0f};
+  GLfloat brassMatShine[] = {  27.8f };
+
+  GLfloat emeraldMatAmb[]   = { .02f1, .1745f , .021f, 1.0f };
+  GLfloat emeraldMatDiff[]  = { .075f, .6142f , .075f, 1.0f };
+  GLfloat emeraldMatSpec[]  = { .633f, .7278f , .633f, 1.0f };
+  GLfloat emeraldMatShine[] = {  76.8f };
+
+  GLfloat slateMatAmb[]   = { .02f, .02f , .02f, 1.0f };
+  GLfloat slateMatDiff[]  = { .02f, .01f , .01f, 1.0f };
+  GLfloat slateMatSpec[]  = { .4f,  .4f ,  .4f , 1.0f };
+  GLfloat slateMatShine[] = { .768f };
+
+  //       double opnX = nx, opnY = ny, opnZ = z;
+  //       eyeX = 1; eyeY = 1, eyeZ = 1;
+
+  impLPos[0] = nx/2.; impLPos[1]= ny/2.; impLPos[2] = 0.;
+  //opnListNum = 1;
+  //impGraphicsFlag = IMP__3D;
+
+  //       glutInitDisplayMode (GLUT_DOUBLE| GLUT_RGB | GLUT_DEPTH | GLUT_ACCUM);
+  //       glutInitWindowSize (IMP_WIN_X, IMP_WIN_Y);
+  //  glutInitWindowPosition (100, 100);
+  //       glutCreateWindow ("- imp3D graphics -" );
+
+  glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+
+  glShadeModel (GL_SMOOTH);
+  glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+  glHint(GL_LINE_SMOOTH, GL_DONT_CARE);
+  glEnable(GL_NORMALIZE);
+
+
+  glEnable(GL_DEPTH_TEST);
+
+  glLightfv(GL_LIGHT0, GL_AMBIENT, defaultLightAmb);
+  glLightfv(GL_LIGHT0, GL_DIFFUSE, defaultLightDiff);
+  glLightfv(GL_LIGHT0, GL_SPECULAR,defaultLightSpec);
+
+  glLightfv(GL_LIGHT1, GL_AMBIENT, defaultLightAmb);
+  glLightfv(GL_LIGHT1, GL_DIFFUSE, defaultLightDiff);
+  glLightfv(GL_LIGHT1, GL_SPECULAR,defaultLightSpec);
+
+  glLightfv(GL_LIGHT2, GL_AMBIENT , defaultLightAmb);
+  glLightfv(GL_LIGHT2, GL_DIFFUSE , defaultLightDiff);
+  glLightfv(GL_LIGHT2, GL_SPECULAR, defaultLightSpec);
+
+  glLightfv(GL_LIGHT0, GL_POSITION,impLPos);
+  glLightfv(GL_LIGHT1, GL_POSITION,impLPos);
+  glLightfv(GL_LIGHT2, GL_POSITION,impLPos);
+
+  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT  , defaultMatAmb);
+  glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE  , defaultMatDiff);
+  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR , defaultMatSpec);
+  glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, defaultMatShine);
+
+  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, defaultGlobalAmb);
+
+  glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
+
+  glEnable(GL_COLOR_MATERIAL);
+
+  glEnable(GL_LIGHTING);
+  glEnable(GL_LIGHT1);
+  glEnable(GL_LIGHT2);
+  glEnable(GL_LIGHT0);
+#endif
+
+}
+
+
+void
+Graph3dFileView::InitGL ()
+{
+  glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
+
+  glDisable (GL_CULL_FACE);
+  glEnable (GL_DEPTH_TEST);
+
+}
+
+void
+Graph3dFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+{
+  if (! GetDocument())
+    return;
+
+  unsigned int nx = GetDocument()->nx();
+  unsigned int ny = GetDocument()->ny();
+  const ImageFileArrayConst v = GetDocument()->getArray();
+  if (v != NULL && nx != 0 && ny != 0) {
+    double min = v[0][0];
+    double max = min;
+    for (unsigned int ix = 0; ix < nx; ix++)
+      for (unsigned int iy = 0; iy < ny; iy++) {
+        double dVal = v[ix][iy];
+        if (min > dVal)
+          min = dVal;
+        else if (max < dVal)
+          max = dVal;
+      }
+      m_dGraphMin = min;
+      m_dGraphMax = max;
+      if (! m_bColorScaleMinSet)
+        m_dColorScaleMin = min;
+      if (! m_bColorScaleMaxSet)
+        m_dColorScaleMax = max;
+  }
+  double dRadius = maxValue<int> (nx, ny) * SQRT2 / 2;
+
+  if (m_pCanvas)
+    m_pCanvas->SetCurrent(*m_pGLContext);
+
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  glOrtho (-dRadius, dRadius, -dRadius, dRadius, dRadius*5, -dRadius*5);
+
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+#if 0
+  GLfloat eyep[3], lookp[3], up[3];
+  eyep[0] = -nx/2; eyep[1] = 0; eyep[2] = -ny/2;
+  lookp[0] = 0; lookp[1] = 0, lookp[2] = 0;
+  up[0] = 0; up[1] = 1; up[2] = 0;
+  gluLookAt (eyep[0], eyep[1], eyep[2], lookp[0], lookp[1], lookp[2], up[0], up[1], up[2]);
+#endif
+
+  CreateDisplayList();
+
+  if (m_pCanvas) {
+        m_pCanvas->SwapBuffers();
+    m_pCanvas->Refresh();
+  }
+}
+
+bool
+Graph3dFileView::OnClose (bool deleteWindow)
+{
+  if (! GetDocument() || ! GetDocument()->Close())
+    return false;
+
+  Activate (false);
+  if (m_pCanvas) {
+    m_pCanvas->setView(NULL);
+    m_pCanvas = NULL;
+  }
+  wxString s(theApp->GetAppName());
+  if (m_pFrame)
+    m_pFrame->SetTitle(s);
+
+  SetFrame(NULL);
+
+  if (deleteWindow) {
+    delete m_pFrame;
+    m_pFrame = NULL;
+    if (GetDocument() && GetDocument()->getBadFileOpen())
+      ::wxYield();  // wxWindows bug workaround
+  }
+
+  return true;
+}
+
+void
+Graph3dFileView::setInitialClientSize ()
+{
+  if (m_pFrame && m_pCanvas) {
+    wxSize bestSize = m_pCanvas->GetBestSize();
+
+    m_pFrame->SetClientSize (bestSize);
+    m_pFrame->Show (true);
+    m_pFrame->SetFocus();
+  }
+}
+
+void
+Graph3dFileView::OnScaleAuto (wxCommandEvent& event)
+{
+#if 0
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  double min, max, mean, mode, median, stddev;
+  rIF.statistics(min, max, mean, mode, median, stddev);
+  DialogAutoScaleParameters dialogAutoScale (getFrameForChild(), mean, mode, median, stddev, m_dAutoScaleFactor);
+  int iRetVal = dialogAutoScale.ShowModal();
+  if (iRetVal == wxID_OK) {
+    m_bMinSpecified = true;
+    m_bMaxSpecified = true;
+    double dMin, dMax;
+    if (dialogAutoScale.getMinMax (&dMin, &dMax)) {
+      m_dMinPixel = dMin;
+      m_dMaxPixel = dMax;
+      m_dAutoScaleFactor = dialogAutoScale.getAutoScaleFactor();
+      OnUpdate (this, NULL);
+    }
+  }
+#endif
+}
+
+void
+Graph3dFileView::OnScaleSet (wxCommandEvent& event)
+{
+  if (! GetDocument())
+    return;
+
+  unsigned int nx = GetDocument()->nx();
+  unsigned int ny = GetDocument()->ny();
+  const ImageFileArrayConst v = GetDocument()->getArray();
+  double dMin = 0., dMax = 0.;
+  if (! m_bColorScaleMinSet && ! m_bColorScaleMaxSet) {
+    dMax = dMin = v[0][0];
+    for (unsigned ix = 0; ix < nx; ix++)
+      for (unsigned int iy = 0; iy < ny; iy++)
+        if (v[ix][iy] < dMin)
+          dMin = v[ix][iy];
+        else if (v[ix][iy] > dMax)
+          dMax = v[ix][iy];
+  }
+  if (m_bColorScaleMinSet)
+    dMin = m_dColorScaleMin;
+  if (m_bColorScaleMaxSet)
+    dMax = m_dColorScaleMax;
+
+  DialogGetMinMax dialogMinMax (getFrameForChild(), _T("Set Color Scale Minimum & Maximum"), dMin, dMax);
+  int retVal = dialogMinMax.ShowModal();
+  if (retVal == wxID_OK) {
+    m_bColorScaleMinSet = true;
+    m_bColorScaleMaxSet = true;
+    m_dColorScaleMin = dialogMinMax.getMinimum();
+    m_dColorScaleMax = dialogMinMax.getMaximum();
+    OnUpdate (this, NULL);
+  }
+}
+
+void
+Graph3dFileView::OnScaleFull (wxCommandEvent& event)
+{
+  if (m_bColorScaleMinSet || m_bColorScaleMaxSet) {
+    m_bColorScaleMinSet = false;
+    m_bColorScaleMaxSet = false;
+    OnUpdate (this, NULL);
+  }
+}
+
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+Graph3dFileView::CreateChildFrame (wxDocument *doc, wxView *view)
+{
+#if CTSIM_MDI
+  wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Graph3dFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#else
+  wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Graph3dFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#endif
+  theApp->setIconForFrame (subframe);
+
+// status bar text not showing tested with enlightenment. disabling for now...
+#if 0
+  m_pStatusBar = new wxStatusBar (subframe, -1);
+  subframe->SetStatusBar (m_pStatusBar);
+  m_pStatusBar->Show(true);
+#endif
+
+  m_pFileMenu = new wxMenu;
+
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+  m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(IFMENU_FILE_PROPERTIES, _T("P&roperties"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(wxID_PRINT, _T("&Print..."));
+  m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+  m_pFileMenu->Append(wxID_PREVIEW, _T("Print Preview"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+
+  GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu);
+
+  m_pViewMenu = new wxMenu;
+  m_pViewMenu->Append(GRAPH3D_VIEW_WIREFRAME, _T("Wi&reframe\tCtrl-R"), _T(""), true);
+  m_pViewMenu->Append(GRAPH3D_VIEW_SMOOTH, _T("S&mooth\tCtrl-M"), _T(""), true);
+  m_pViewMenu->Append(GRAPH3D_VIEW_COLOR, _T("Co&lor\tCtrl-L"), _T(""), true);
+  m_pViewMenu->Append(GRAPH3D_VIEW_LIGHTING, _T("Li&ghting\tCtrl-G"), _T(""), true);
+  m_pViewMenu->AppendSeparator();
+  m_pViewMenu->Append(GRAPH3D_VIEW_SCALE_MINMAX, _T("Color Scale S&et Min/Max...\tCtrl-E"));
+  m_pViewMenu->Append(GRAPH3D_VIEW_SCALE_AUTO, _T("Color Scale &Auto...\tCtrl-A"));
+  m_pViewMenu->Append(GRAPH3D_VIEW_SCALE_FULL, _T("Color F&ull Scale\tCtrl-U"));
+
+
+  wxMenu *help_menu = new wxMenu;
+  help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar *menu_bar = new wxMenuBar;
+
+  menu_bar->Append(m_pFileMenu, _T("&File"));
+  menu_bar->Append(m_pViewMenu, _T("&View"));
+  menu_bar->Append(help_menu, _T("&Help"));
+
+  subframe->SetMenuBar(menu_bar);
+
+  subframe->Centre(wxBOTH);
+
+  wxAcceleratorEntry accelEntries[7];
+  accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('R'), GRAPH3D_VIEW_WIREFRAME);
+  accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('L'), GRAPH3D_VIEW_COLOR);
+  accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('G'), GRAPH3D_VIEW_LIGHTING);
+  accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('M'), GRAPH3D_VIEW_SMOOTH);
+  accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('E'), GRAPH3D_VIEW_SCALE_MINMAX);
+  accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('A'), GRAPH3D_VIEW_SCALE_AUTO);
+  accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('U'), GRAPH3D_VIEW_SCALE_FULL);
+  wxAcceleratorTable accelTable (7, accelEntries);
+  subframe->SetAcceleratorTable (accelTable);
+
+  return subframe;
+}
+
+
+
+
+BEGIN_EVENT_TABLE(Graph3dFileCanvas, wxGLCanvas)
+EVT_PAINT(Graph3dFileCanvas::OnPaint)
+EVT_SIZE(Graph3dFileCanvas::OnSize)
+EVT_CHAR(Graph3dFileCanvas::OnChar)
+EVT_MOUSE_EVENTS(Graph3dFileCanvas::OnMouseEvent)
+EVT_ERASE_BACKGROUND(Graph3dFileCanvas::OnEraseBackground)
+END_EVENT_TABLE()
+
+
+Graph3dFileCanvas::Graph3dFileCanvas (Graph3dFileView* view, wxWindow *parent,
+                                      int* attribList,
+                                      const wxPoint& pos,
+                                      const wxSize& size, long style)
+: wxGLCanvas (parent, wxID_ANY, attribList, pos, size, style), m_pView(view)
+{
+}
+
+
+Graph3dFileCanvas::~Graph3dFileCanvas()
+{
+}
+
+void
+Graph3dFileCanvas::OnPaint (wxPaintEvent& event)
+{
+  wxPaintDC dc(this);
+  if (m_pView)
+    m_pView->OnDraw(& dc);
+}
+
+
+wxSize
+Graph3dFileCanvas::GetBestSize() const
+{
+  return wxSize (400,400);
+}
+
+void
+Graph3dFileCanvas::OnSize (wxSizeEvent& event)
+{
+#ifndef __WXMOTIF__
+  // if (!GetContext()) return;
+#endif
+
+  int width, height;
+  GetClientSize (&width, &height);
+  Reshape (width, height); // Crash
+}
+
+void
+Graph3dFileCanvas::OnChar(wxKeyEvent& event)
+{
+  if (! m_pView)
+    return;
+
+  wxCommandEvent dummyEvent;
+  switch (event.GetKeyCode()) {
+  case WXK_LEFT:
+        m_pView->m_dZRotate += 15.0;
+    Refresh (false);
+    break;
+  case WXK_RIGHT:
+    m_pView->m_dZRotate -= 15.0;
+    Refresh (false);
+    break;
+  case WXK_UP:
+    m_pView->m_dXRotate += 15.0;
+    Refresh (false);
+    break;
+  case WXK_DOWN:
+    m_pView->m_dXRotate -= 15.0;
+    Refresh (false);
+    break;
+  case 'y': case 'Y':
+    m_pView->m_dYRotate += 15.0;
+    Refresh (false);
+    break;
+  case 't': case 'T':
+    m_pView->m_dYRotate -= 15.0;
+    Refresh (false);
+    break;
+  case 'w': case 'W':
+    m_pView->OnWireframe (dummyEvent);
+    break;
+  case 's': case 'S':
+    m_pView->OnSmooth (dummyEvent);
+    break;
+  case 'l': case 'L':
+    m_pView->OnLighting (dummyEvent);
+    break;
+  case 'c': case 'C':
+    m_pView->OnColor (dummyEvent);
+    break;
+  default:
+    event.Skip();
+    return;
+  }
+}
+
+void
+Graph3dFileCanvas::Reshape (int width, int height)
+{
+  SetCurrent(*m_pView->m_pGLContext);
+  glViewport (0, 0, (GLint)width, (GLint)height);
+  SwapBuffers();
+}
+
+
+void
+Graph3dFileCanvas::OnMouseEvent(wxMouseEvent& event)
+{
+  static int dragging = 0;
+  static float last_x, last_y;
+
+  if (! m_pView)
+    return;
+
+  if(event.LeftIsDown()) {
+    if(! dragging) {
+      dragging = 1;
+    } else {
+      m_pView->m_dXRotate -= (event.GetY() - last_y)*1.0;
+      m_pView->m_dZRotate += (event.GetX() - last_x)*1.0;
+      Refresh (false);
+    }
+    last_x = event.GetX();
+    last_y = event.GetY();
+  } else
+    dragging = 0;
+}
+
+void
+Graph3dFileCanvas::OnEraseBackground(wxEraseEvent& event)
+{
+  // Do nothing: avoid flashing.
+}
+
+
+#endif // wxUSE_GLCANVAS
diff --git a/src/graph3dview.h b/src/graph3dview.h
new file mode 100644
index 0000000..b21072f
--- /dev/null
+++ b/src/graph3dview.h
@@ -0,0 +1,151 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          graph3dview.h
+**   Purpose:       Header file for 3d graph view
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#if !wxUSE_GLCANVAS
+#error Please set wxUSE_GLCANVAS to 1 in setup.h.
+#endif
+
+#include "wx/timer.h"
+#include "wx/glcanvas.h"
+
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+
+class Graph3dFileCanvas;
+class Graph3dFileView : public wxView
+{
+  friend class Graph3dFileCanvas;
+
+private:
+  DECLARE_DYNAMIC_CLASS(Graph3dFileView)
+  DECLARE_EVENT_TABLE()
+
+  wxMenu* m_pFileMenu;
+  wxMenu *m_pViewMenu;
+  wxStatusBar* m_pStatusBar;
+
+  Graph3dFileCanvas* m_pCanvas;
+  GLfloat m_dXRotate;
+  GLfloat m_dYRotate;
+  GLfloat m_dZRotate;
+  bool m_bDoubleBuffer;
+  bool m_bSmooth;
+  bool m_bWireframe;
+  bool m_bLighting;
+  bool m_bColor;
+  bool m_bColorScaleMinSet;
+  bool m_bColorScaleMaxSet;
+  enum {
+    DISPLAYLIST_COLOR = 1,
+    DISPLAYLIST_NO_COLOR = 2,
+  };
+
+  double m_dGraphMin;
+  double m_dGraphMax;
+  double m_dColorScaleMin;
+  double m_dColorScaleMax;
+  wxGLContext *m_pGLContext;
+
+#if CTSIM_MDI
+  wxDocMDIChildFrame* m_pFrame;
+  wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+  wxDocChildFrame* m_pFrame;
+  wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+
+  void Draw();
+  void DrawSurface();
+  void CreateDisplayList();
+  void InitMaterials();
+  void InitGL();
+
+  Graph3dFileCanvas *CreateCanvas (wxFrame* parent);
+
+  wxWindow* getFrameForChild()
+#if CTSIM_MDI
+  { return theApp->getMainFrame(); }
+#else
+  { return m_pFrame; }
+#endif
+
+  void intensityToColor (double dIntensity, GLfloat* vecColor);
+
+public:
+  Graph3dFileView();
+  virtual ~Graph3dFileView();
+  void canvasClosed()
+  { m_pCanvas = NULL; m_pFrame = NULL; }
+
+  bool OnCreate(wxDocument *doc, long flags);
+  void OnDraw(wxDC* dc);
+  void OnUpdate(wxView *sender, wxObject *hint = NULL);
+  bool OnClose (bool deleteWindow = true);
+  void OnProperties (wxCommandEvent& event);
+  void OnLighting (wxCommandEvent& event);
+  void OnWireframe (wxCommandEvent& event);
+  void OnColor (wxCommandEvent& event);
+  void OnSmooth (wxCommandEvent& event);
+  void OnScaleSet (wxCommandEvent& event);
+  void OnScaleAuto (wxCommandEvent& event);
+  void OnScaleFull (wxCommandEvent& event);
+
+  void setInitialClientSize();
+
+#if CTSIM_MDI
+  wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+  wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+  Graph3dFileCanvas* getCanvas() { return m_pCanvas; }
+  Graph3dFileDocument* GetDocument()
+  { return dynamic_cast<Graph3dFileDocument*>(wxView::GetDocument()); }
+};
+
+
+class Graph3dFileCanvas: public wxGLCanvas
+{
+private:
+  DECLARE_EVENT_TABLE()
+
+  void Reshape (int width, int height);
+  Graph3dFileView* m_pView;
+
+public:
+   Graph3dFileCanvas (Graph3dFileView* view, wxWindow *parent,
+                      int* attribList,
+                      const wxPoint& pos = wxDefaultPosition,
+                      const wxSize& size = wxDefaultSize, long style = 0);
+   virtual ~Graph3dFileCanvas();
+
+   void OnPaint(wxPaintEvent& event);
+   virtual wxSize GetBestSize() const;
+   void OnSize(wxSizeEvent& event);
+   void OnEraseBackground(wxEraseEvent& event);
+   void OnChar(wxKeyEvent& event);
+   void OnMouseEvent(wxMouseEvent& event);
+   void setView (Graph3dFileView* pView)  { m_pView = pView; }
+};
diff --git a/src/splash.xpm b/src/splash.xpm
new file mode 100644
index 0000000..596c174
--- /dev/null
+++ b/src/splash.xpm
@@ -0,0 +1,545 @@
+/* XPM */
+static const char *splash[] = {
+/* width height ncolors chars_per_pixel */
+"500 500 38 1",
+/* colors */
+"  c #000000",
+". c #67B26B",
+"X c #94C997",
+"o c #800000",
+"O c #FEF0F2",
+"+ c #F8A5B1",
+"@ c #F03E57",
+"# c #C2E0C4",
+"$ c #FBD2D8",
+"% c #F36B7E",
+"& c #ED203D",
+"* c #B3D8B5",
+"= c #E1F0E1",
+"- c #2A9330",
+"; c #FDE1E5",
+": c #F796A4",
+"> c #FAC3CB",
+", c #F25C71",
+"< c #EC1130",
+"1 c #58AB5C",
+"2 c #49A34D",
+"3 c #86C289",
+"4 c #F68898",
+"5 c #77BA7A",
+"6 c #A4D1A6",
+"7 c #D1E8D2",
+"8 c #FFFFFF",
+"9 c #F9B4BE",
+"0 c #FFFF00",
+"q c #F14D64",
+"w c #F47A8B",
+"e c #EE2F4A",
+"r c #F0F7F0",
+"t c #008000",
+"y c #1B8C21",
+"u c #0C8412",
+"i c #3A9B3F",
+"p c None",
+/* pixels */
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888863333333333#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888=*3522222.3X#r8888888888888888888888888888888888888888888888888888888888888888888=#*3333333##788888888888888888888-uuuuuuuuuu#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888*.-uuuuuuuuuuuuuu-.6r8888888832222222222222222222222222222222222222188888888888r*52uuuuuuuuuuuuuuu-13#88888888888888=uuuuuuuuuuur88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888=5yuuuuuuuuuuuuuuuuuuuuu.#888888-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu1888888888#1uuuuuuuuuuuuuuuuuuuuuuuu2X=88888888886uuuuuuuuuui888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888=.uuuuuuuuuuuuuuuuuuuuuuuuuu2#888ruuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu38888888#-uuuuuuuuuuuuuuuuuuuuuuuuuuuuu38888888885uuuuuuuuuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888883yuuuuuuuuuuuuuuuuuuuuuuuuuuuu.888*uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu#88888r1uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu3888888888iuuuuuuuuuu6888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888=iuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu68885uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu888887-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*88888888ruuuuuuuuuuu=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888#yuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu=888iuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu288887yuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuur88888888#uuuuuuuuuu-8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888886uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-8888uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu5888ryuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-888888888#333333333368888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888886uuuuuuuuuuuuuuu-233332yuuuuuuuuuu.888#uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*8882uuuuuuuuuuuuuy2.3333.2yuuuuuuuuuuu18888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888887uuuuuuuuuuuuuy5=8888888875yuuuuuuu6888#3333333333333-uuuuuuuuuu23333333333333r88#uuuuuuuuuuuu.78888888888=61uuuuuuuuX8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888ryuuuuuuuuuuuu.r888888888888=1uuuuuu=88888888888888888uuuuuuuuuuu*88888888888888881uuuuuuuuuuy7888888888888888rX-uuuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888882uuuuuuuuuuuu688888888888888886yuuu-888888888888888887uuuuuuuuuuu=888888888888888ruuuuuuuuuuu#88888888888888888883yuuu88888888888888888888888888888888888888888888888#31221378888888888888=65222.X=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888Xuuuuuuuuuuuy78888888888888888887yuu.88888888888888888Xuuuuuuuuuu-8888888888888888#uuuuuuuuuu-888888888888888888888=iu288888888862222222222888888888822222222223888r3yuuuuuuuu2788888888862uuuuuuuuu278888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888ryuuuuuuuuuuu6888888888888888888887yu6888888888888888881uuuuuuuuuu.8888888888888888Xuuuuuuuuuu288888888888888888888888X*8888888881uuuuuuuuu-8888888887uuuuuuuuuuX88Xyuuuuuuuuuuuy68888886-uuuuuuuuuuuuu6888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888.uuuuuuuuuuu5888888888888888888888873=88888888888888888-uuuuuuuuuuX88888888888888883uuuuuuuuuu-8888888888888888888888888888888888yuuuuuuuuu.888888888Xuuuuuuuuuu77iuuuuuuuuuuuuuuy788872uuuuuuuuuuuuuuuy788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888=uuuuuuuuuuu-888888888888888888888888888888888888888888=uuuuuuuuuuu788888888888888883uuuuuuuuuuuX888888888888888888888888888888887uuuuuuuuuu68888888881uuuuuuuuuy3uuuuuuuuuuuuuuuuu2883uuuuuuuuuuuuuuuuuu288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888885uuuuuuuuuuu#8888888888888888888888888888888888888888886uuuuuuuuuuy88888888888888888Xuuuuuuuuuuuu1=888888888888888888888888888888Xuuuuuuuuuu=888888888yuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*iuuuuuuuuuuuuuuuuuuuu=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888yuuuuuuuuuu28888888888888888888888888888888888888888888.uuuuuuuuuu288888888888888888#uuuuuuuuuuuuuu16r888888888888888888888888888.uuuuuuuuu-888888888=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888*uuuuuuuuuuu68888888888888888888888888888888888888888888iuuuuuuuuuu3888888888888888888yuuuuuuuuuuuuuuuu1X=888888888888888888888888-uuuuuuuuu.8888888886uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888.uuuuuuuuuuy8888888888888888888888888888888888888888888ruuuuuuuuuuu#8888888888888888883uuuuuuuuuuuuuuuuuuu-.*88888888888888888888=uuuuuuuuuuX888888888.uuuuuuuuuuuuui5332uuuuuuuuuuuuuuuu-.33.-uuuuuuuuuuuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888yuuuuuuuuuu18888888888888888888888888888888888888888888*uuuuuuuuuuu8888888888888888888ryuuuuuuuuuuuuuuuuuuuuuy.*888888888888888886uuuuuuuuuu7888888888-uuuuuuuuuuu.7888887uuuuuuuuuuuuu2*888888.uuuuuuuuuuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888887uuuuuuuuuuuX88888888888888888888888888888888888888888883uuuuuuuuuu2888888888888888888887yuuuuuuuuuuuuuuuuuuuuuuu-6r88888888888888.uuuuuuuuuy888888888=uuuuuuuuuu2=888888881uuuuuuuuuui#88888888ruuuuuuuuuuu68888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888886uuuuuuuuuuu#88888888888888888888888888888888888888888882uuuuuuuuuu58888888888888888888887yuuuuuuuuuuuuuuuuuuuuuuuu-68888888888888-uuuuuuuuu18888888886uuuuuuuuuu#8888888883uuuuuuuuuu68888888888uuuuuuuuuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888885uuuuuuuuuuu88888888888888888888888888888888888888888888uuuuuuuuuuu*8888888888888888888888=2uuuuuuuuuuuuuuuuuuuuuuuuu1r8888888888ruuuuuuuuuuX8888888885uuuuuuuuuu88888888883uuuuuuuuuu=8888888888uuuuuuuuuuu88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888882uuuuuuuuuuy8888888888888888888888888888888888888888888#uuuuuuuuuuur888888888888888888888888#2uuuuuuuuuuuuuuuuuuuuuuuuir888888888*uuuuuuuuuu7888888888iuuuuuuuuu288888888881uuuuuuuuu-88888888888uuuuuuuuuu288888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888882uuuuuuuuuu28888888888888888888888888888888888888888888Xuuuuuuuuuu-888888888888888888888888888#.yuuuuuuuuuuuuuuuuuuuuuu18888888885uuuuuuuuuu888888888ruuuuuuuuuu58888888888iuuuuuuuuu.8888888888#uuuuuuuuuu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888uuuuuuuuuuu288888888888888888888888888888888888888888881uuuuuuuuuu.888888888888888888888888888888*.yuuuuuuuuuuuuuuuuuuuu#88888888iuuuuuuuuu2888888888*uuuuuuuuuu*888888888ruuuuuuuuuu688888888883uuuuuuuuuu#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888uuuuuuuuuuu28888888888888888888888888888888888888888888yuuuuuuuuuu688888888888888888888888888888888873iuuuuuuuuuuuuuuuuu18888888ruuuuuuuuuu38888888885uuuuuuuuuur888888888#uuuuuuuuuu788888888881uuuuuuuuuur88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888uuuuuuuuuuu28888888888888888888888888888888888888888887uuuuuuuuuuu7888888888888888888888888888888888888r62uuuuuuuuuuuuuuu8888888*uuuuuuuuuu#888888888iuuuuuuuuui88888888883uuuuuuuuuy88888888888yuuuuuuuuui888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888uuuuuuuuuuui8888888888888888888888888888888888888888886uuuuuuuuuuy8888888888888888888888888888888888888888=5uuuuuuuuuuuuu78888883uuuuuuuuuu8888888888uuuuuuuuuu588888888882uuuuuuuuu188888888887uuuuuuuuuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888uuuuuuuuuuuu888888888888888888888888888888888888888888.uuuuuuuuuu18888888888888888888888888888888888888888887yuuuuuuuuuuu#8888882uuuuuuuuu2888888888#uuuuuuuuuu68888888888uuuuuuuuuuX8888888888Xuuuuuuuuuu*888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888-uuuuuuuuuuu=88888888888888888888887=88888888888888888-uuuuuuuuuuX8888888888888888888888888888888888888888888#uuuuuuuuuuu#888888uuuuuuuuuu38888888883uuuuuuuuuu=888888888#uuuuuuuuuu788888888881uuuuuuuuuur888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888882uuuuuuuuuuuX888888888888888888888.u*8888888888888888ruuuuuuuuuuu#8888888888888888851r888888888888888888888888uuuuuuuuuuu#88888#uuuuuuuuuu*8888888882uuuuuuuuu-8888888888Xuuuuuuuuuy88888888888-uuuuuuuuui8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888885uuuuuuuuuuu-88888888888888888887iuur8888888888888888*uuuuuuuuuuu888888888888888888uu-788888888888888888888888uuuuuuuuuuu8888883uuuuuuuuuur888888888uuuuuuuuuu.88888888881uuuuuuuuu28888888888=uuuuuuuuuu.8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888886uuuuuuuuuuuuX8888888888888888r3uuui888888888888888885uuuuuuuuuu288888888888888888#uuuu3r88888888888888888888*uuuuuuuuuui8888882uuuuuuuuui888888888#uuuuuuuuuu68888888888yuuuuuuuuu388888888886uuuuuuuuuu68888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888ruuuuuuuuuuuuu6888888888888886-uuuu588888888888888888iuuuuuuuuuu388888888888888888Xuuuuuy3r88888888888888888r-uuuuuuuuuu5888888uuuuuuuuuu58888888883uuuuuuuuuu=8888888887uuuuuuuuuu#8888888888.uuuuuuuuuu=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888881uuuuuuuuuuuuu5r888888888=3-uuuuuu688888888888888888uuuuuuuuuuu*88888888888888888.uuuuuuuy.788888888888888#iuuuuuuuuuuu=888887uuuuuuuuuu*8888888881uuuuuuuuuy8888888888Xuuuuuuuuuu88888888888-uuuuuuuuu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888#uuuuuuuuuuuuuuu13####35iuuuuuuuuu=8888888888888888#uuuuuuuuuuur88888888888888888-uuuuuuuuuuy13##888887#3iuuuuuuuuuuuu.888888Xuuuuuuuuuur888888888yuuuuuuuuu188888888881uuuuuuuuu28888888888=uuuuuuuuuu.88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888882uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-888888888888888883uuuuuuuuuui88888888888888888ruuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuyr8888881uuuuuuuuu-8888888887uuuuuuuuuuX8888888888-uuuuuuuuu388888888886uuuuuuuuuu688888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888=yuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.888888888888888882uuuuuuuuuu588888888888888888*uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy78888888yuuuuuuuuu.888888888Xuuuuuuuuuu7888888888=uuuuuuuuuu*8888888888.uuuuuuuuuu788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888*uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu688888888888888888yuuuuuuuuuu6888888888888888883uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy788888887uuuuuuuuuu68888888881uuuuuuuuuy88888888886uuuuuuuuuur8888888888-uuuuuuuuuy888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888886uuuuuuuuuuuuuuuuuuuuuuuuuuuuu=88888888888888887uuuuuuuuuuu=888888888888888882uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuui788888888Xuuuuuuuuuu=888888888yuuuuuuuuu28888888888.uuuuuuuuui8888888888=uuuuuuuuuu1888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888887-uuuuuuuuuuuuuuuuuuuuuuuuu-688888888888888888Xuuuuuuuuuu-888888888888888888-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy3r888888888.uuuuuuuuu-888888888=uuuuuuuuuu38888888888-uuuuuuuuu588888888886uuuuuuuuuuX888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888r3uuuuuuuuuuuuuuuuuuuuuu.#8888888888888888888.uuuuuuuuuu18888888888888888888#.yuuuuuuuuuuuuuuuuuuuuuuuuuuy3r88888888888-uuuuuuuuu.8888888886uuuuuuuuuu#888888888=uuuuuuuuuu*8888888888.uuuuuuuuuu7888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888r3-uuuuuuuuuuuuuuuu1Xr888888888888888888888-uuuuuuuuuuX8888888888888888888888#52uuuuuuuuuuuuuuuuuuuuy.*8888888888888=uuuuuuuuuuX888888888.uuuuuuuuuu88888888886uuuuuuuuuu=8888888888-uuuuuuuuuy8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888887X52iuuuuuu213#888888888888888888888888888888888888888888888888888888888888888#X322iuuuuuuui213*788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888122=88888888888888888888888888888887##r88888888888888888888888888888888888888888888888888888888###78888888888888888888888888888888888888888888888888888888888888888888888888###r88888888888888888888888888888888888888888888888888888888888888888888888888888888888888883 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888885uuuuuuuuuu-8=uuy88888888888888888888888888888=.yuuuu2#888888888888888888888888888888888888888888888888888#1uuuuuui68888888888888888888888888888888888888888888888888888888888888888888#1uuuuui688888888888888888888888888888888888888888888888888888888888#33#88888888888888888888888- [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uuuuuuuuuu186uu18888888888888888888888888888Xuuuuuuuuu688888888888888888888888888888888888888888888888886uuuuuuuuu588888888888888888888888888888888888888888888888888888888888888888r.uuuuuuuui888888888888888888888888888888888888888888888888888888888882uu68888888888888888888888=u [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883333uuu1333#8.uuX8888888888888888888888888883uuu26#3yuuyr88888888888888888888888888888888888888888888888=uuu2*##5-u6888888888888888888888888888888888888888888888888888888888888888881uuu.*#X-u588888888888888888888888888888888888888888888888888888888888uuu=88888888888888888888886u [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=uuu788888-uu#3-u-68888862uuy1#888888888#uuu.88886uuu68862266iuy38888862uuy1#888=221=.yui7888888888883uuu88888837888#1yuu268888X226888122=88322*=52*88=5iuu-.=88862uuy1#8888888883uuu688888.688862uuy1#8888322*6iu-68=.yu1r88862266iuy3888r222888*22383iuuu22188862uuy1#888883iuu12u [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuy88888=uuuyuuuuu=887iuuuuuuu#888888882uui88888ruuu3882uuuuuuuu6887iuuuuuuu#886uuyuuuuu-888888888883uuu.=88888888.uuuuuuu5888iuu#88=uuy888-uu2uuu#83uuuuuuu*87iuuuuuuu#8888888ryuu5888888888riuuuuuuu*888-uuyuuuuu5uuuuu.8882uuuuuuuu688*uu2888.uuX8-uuuuuu187iuuuuuuu#88riuuuuuuu [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.uu1888886uuu132uuu#8riuuXrr.uu.8888888=uuu6888888uuu388uuu.#*yuu18riuuXrr.uu.88.uuy.3-uuu88888888888=uuuuui5=88885uuy6#1uuur8ruuu8886uu188=uuuuuuu83uuy3#*2urriuuXrr.uu.88888886uuu=888888888iuui**iuui88=uuui31uuuy.3yuu2888uuu.#*yuu1885uu3888-uu78#iuu3##=riuuXrr.uu.881uuy6#5uu [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-uuX88888.uuX88=uuu=8Xuu3888#uu288888886uuu=88888=uuu*8#uui8883uu28Xuu3888#uu288-uu788*uu-883uuuuuu=88*yuuuuuu588=uuu#88ruuu#8*uu2888.uuX886uuiX##*=uuu#888868Xuu3888#uu288888885uu-8888888886uuyr88*uuu886uu1888uuu7883uu.88#uui8883uu288iuu#88=uuy888uuu=888Xuu3888#uu28#uuy7886uu [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=uuu788888-uu788#uu-88iuuuuuuuuu188888883uuu8888886uuu=83uu58883uu18iuuuuuuuuu18=uuy8883uu.882uuuuu-8888861yuuuu383uui8888uuu#85uuX888-uu788.uuX88883uu18888888iuuuuuuuuu188888882uu28888888882uu5888#uuu88.uuX887uuy8881uu6883uu58883uu18ruuy8886uu188#uu-8888iuuuuuuuuu181uu5888.uu [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuy88888=uuy888Xuu.88uuu2222222*88888883uuu888888-uu2882uu*8881uuX8uuu2222222*86uu18881uu6883333336888888886yuu282uu38887uuur8iuu#88=uuy888-uu788882uu38888888uuu2222222*88888882uu2888888888uuu#888Xuui88-uu7886uu1888yuu=882uu*8881uuX8*uu2888.uuX883uu.8888uuu2222222*8yuu*888-uu [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.uu1888886uu18881uu688uuur888888888888886uuu68888.uuu#88uuur887uuu=8uuur88888888.uuX888yuu=88888888881X888888iuu182uu3888.uu18ruuu8886uu188=uuy888882uu58888rr8uuur88888888888888.uuu=8888=1=8uuu#888-uuX8=uuy888.uuX887uu-888uuur887uuu=85uu3888-uu7882uu68888uuur88888888uuu#88=uuy [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888-uuX88888.uuX888yuu=88iuui788#5588888888ryuuy3#62uuu388#uu-r8#-uu588iuui788#5588-uu7887uu-88888888888-u-5##*.uuu68.uu-=8Xuuu78#uuuX#X-uuX886uu1888885uuy#8r6yr8iuui788#55888888886uuu-6#*.y-88-uu1rr.uu-r86uu1888-uu788Xuu.88#uu-r8#-uu5882uui#*.uuy888uuu*8888iuui788#5588uuu.8=5uu1 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=uuu788888-uu7887uu-888#uuuuuuuu68888888886uuuuuuuuuX8883uuuuuuuuir88#uuuuuuuu68=uuy888Xuu.8888888888=uuuuuuuuuu.887uuuuuuuu6887uuuuuuuuu788.uuX88888=yuuuuuui88#uuuuuuuu68888888882uuuuuuuu.88Xuuuuuuuy788.uuX88=uuy8881uu6883uuuuuuuuir881uuuuuuuu1888yuuy2-=8#uuuuuuuu6881uuuuuuuuX [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuy88888=uuy888Xuu.8888#iuuuuu1=8888888888#2uuuuu.788882uu2uuuu5r8888#iuuuuu1=86uu18881uu68888888888r3iuuuuuui68888*-uuuu2#8888.uuu26uuy888-uu788888872uuuu-6888#iuuuuu1=88888888883yuuuu-3=8883yuuuu.=888-uu7886uu1888yuu=882uu2uuuu5r8887yuuy31uuX8886uuuu-888#iuuuuu1=88riuuy3-uu7 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888r##7888888888888888r##78888888uuurr##888888888r##788888888888888888888888888888####888888888=##r8888888=#=88888888888888888888r##78888888r##78888888888888887##=888888887##8888888888888888888888888uuurr##88888888##8888888888r###888888r##78888888##888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uui888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uui88888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uu58888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uu588888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886337888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888633788888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=##=888888888888888888888888888888888888888r###r8888888888888888888888888888888888###888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888833333333333#88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu*8888888888888888888888888888*5222.378886uuur888888888888888888888888888888888#uui888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887uuuuuuuuuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888uuur888888888888888888888888887-uuuuuuuuX885uu-88888888888888888888888888888888883uu588888888888888=uuu888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888886uuuuuuuuuuur888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uui88888888888888888888888888=yuuu22iuuu#887##788888888888888888888888888888888882uu*888888888888886uu2888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uui8888888r*336=88888###8=X37888*36r888888#33X78888888*33*r##7888###887#88=#333X788888###8=X3#88883uu58*3X=8887##=8888###=888888.uu-=888=3u888###8887##rr63*88873X=88887##r888###888uuur88r#X333#8888#1uu.##=888=633*r888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu58888883yuuuuu5888#uu-.uuuu**-uuui8888*-uuuuu2r8887iuuuuyuu188#uui6-ui8=uuuuuuu.888=uuu.uuuu58882uu.-uuuy=88.uu.888Xuuy=8888882uu-r88888=88#uu-888uuu5yuuu572uuuy=888yuu=88#uui88#uui888-uuuuuuir8#uuuuuuu*8r.uuuuuy688 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888uuu*88888.uuu2-uuu6883uuuuuuuuuuuuuuu#886uuuiiuuu.88=yuuu2-uuuX883uuuuuu.8*uy22yuuu7886uuu-2yuuur88uuuuuuuuu3883uu288ryuuX8888888.uuu-5#8888883uu.88#uuuuuuuuuuuuuuu3887uu-8883uu5883uu588ruu22-uuuX86iuuu222rriuuy2yuuu=8 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uuur88886uuy7882uu1882uu5=81uu-*87uuu#8=uuu6883uuy882uuir88yuu7882uuui2i68#7888ruuu#88.uu5887uuu#8#uu-*8=yuu388*uu-88.uui88888888=yuuuuuy3r8882uu6883uu278Xuuu6rr-uu388Xuu.8882uu*882uu*88=*8888iuu3886uu28888.uuir8ryuuX8 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uui88888-uu38883uu288uuur885uu588ruuu88.uu2888#uuu8=uuu=887uuy888uuur888888=6312uuu888-uu7888uuu#83uu5888yuu#887uuu8#uuu7888888888r5yuuuuuir88uuu=882uu*88*uui888iuu#881uu6888uuur88uuur888r*3.2yuu#88.uu3888=uuu#8882uu38 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu58888=uuu=8885uu18#uui8882uu*88*uu288-uu6888*uuy86uui888Xuu188#uui8888872uuuuuuu288=uuy888ruuur82uu*88ruuu8888uuuriuu38888888888888#5yuuuX8#uu-888uuur883uu588ruuu888yuur88#uui88#uui88r.uuuuuuuu888-uu#8886uu-8888iuuX8 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888uuu*8888#uuu8888-uu683uu5888uuur885uu388uuu#888.uu.83uu2888.uuX883uu58888ryuu.#r.uu3886uu18886uui88uuur88*uu28888iuu.uui8888888886888888ruuu383uu.88#uui8882uu*88*uu2887uu-8883uu5883uu5882uu2*=6uu288=uuu88883uu2888=uuu=8 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888#uuur8888#uuu=88Xuuyr82uu*88#uui888iuu#88uuu6887uuu#83uuy78*-uu#882uu*8888Xuui888-uu#88.uuX88=yuu68#uui8885uu388882uuuuu#888888888u2*8888*uuu*82uu6883uu5888uuur885uu388Xuui88riuu*882uu*87uuur88.uu3886uu288883uu-8881uu288 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uui888888yuu-3.uuu*88uuur883uu588ruuu8881uuy55yuu5887uuuuuuuuu888uuur88883uuy**1uuu888-uu235yuu2883uu5888iuu#88883uuuu5888888888#uuuy22-uuui88uuu=882uu*88#uui888iuu#883uuui2uuuur88uuur8#uuuX#5uuu#883uuy*#687uuu232uuy=8# [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uu5888888*uuuuuuy688#uui8882uu*88*uu2888=yuuuuuu588883uuu-1uu188#uui888887uuuuuiuu288=uuuuuuuu2r882uu*88ruuu888886uuu-r8888888886uuuuuuuuu2r8#uu-888uuur883uu588ruuu888#uuuuu2uui88#uui888yuuuuiuuu888#uuuuu3885uuuuuu-7883 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888833378888888=3221Xr888#33*888333r88#33#8888rX1223=888888r##82uu688#33*888888#12.=#33#886uu1612.68888333r88=33688888Xuuu#88888888888=65222137888#33688=33X888633788=3368888*125=#33*88#33*888=.21#=3368888*122.=888#522.688886 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888.3##*1uu-888888888888888888888888.uuX88888888888888888888888=yuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttttttttttttttt8888888888888888888888888888888888888888888888888888888888888888888uuuuuuuy7888888888888888888888888-uu7888888888888888888888882uuyr888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttttttttt8888888888888888ttttttttttt8888888888888888888888888888888888888888888888888888888=2yuuu23r888888888888888888888888=uuy88888888888888888888888Xuuu*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttttttt88888888888888888888888888888888888888tttttttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttttt888888888888888888888888888888888888888888888888888888tttttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttt888888888888888888888888888888888888888888888888888888888888888888ttttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttt8888888888888888888888888888888888888888888888888888888888888888888888888888ttttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888   t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888   08888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888   000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t800000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8880000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888880000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888800000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888800000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888800000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888880000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888880000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888800000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888800000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888800000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oooooooo0000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oooooooo00000000oooooooo00008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooooooo000000000000000000000000ooooooo08888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooooo00000000000000000000000000000000000000ooooo088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000ooo0008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000oo00000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ooo0000000000000000000000000000000000000000000000000000000000ooo000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000oo0000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000oo000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000088888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000008888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000088888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000              00000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000    00000000000000    00000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000088888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000   0000000000000000000000   00000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000  0000000000000000000000000000  0000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000  00000000000          00000000000  000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008888888888t888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000 00000000     0000000000     00000000 000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000888888t888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000   000000   00000000000000000000   000000   0000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088t88888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000  000000  00000000000000000000000000  000000  0000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000 000000  000000000000000000000000000000  000000 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000o000000000000000000000000000000000000000000000  0000  0000000000000000000000000000000000  0000  000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000   000000000000000000000000000000000000   0000 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000  0000000000000000000000000000000000000000  0000 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000o000000000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000o00000000000000000000000000000000000000000000 0000 0000000000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000o00000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000000 0000 00000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000o00000000000000000000000000000000000000000000 000  00000000000000000000000000000000000000000000000000  000 00000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000o0000000000000000000000000000000000000000000  000 0000000000000000000000000000000000000000000000000000 000  0000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000o0000000000000000000000000000000000000000000 0000 000000000000000000000000000000000000000000000000000000 0000 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000o0000000000000000000000000000000000000000000 00  00000000000000000000000000000000000000000000000000000000  00 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000o0000000000000000000000000000000000000000000 000 0000000000000000000000000000000000000000000000000000000000 000 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000o000000000000000000000000000000000000000000 000 000000000000000000000000000000000000000000000000000000000000 000 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000o0000000000000000000000000000000000000000000 00  000000000000000000000000000      000000000000000000000000000  00 0000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000o000000000000000000000000000000000000000000 000 0000000000000000000000000    0000    0000000000000000000000000 000 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000o000000000000000000000000000000000000000000  0  000000000000000000000000   0000000000   000000000000000000000000  0  000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000o000000000000000000000000000000000000000000 00 000000000000000000000000  00000000000000  000000000000000000000000 00 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000  0000000000000000  000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000o000000000000000000000000000000000000000000 00 00000000000000000000000  000000000000000000  00000000000000000000000 00 000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 00000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000o000000000000000000000000000000000000000000 00 00000000000000000000000 0000000000000000000000 00000000000000000000000 00 000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000o00000000000000000000000000000000000000000 00 00000000000000000000000  0000000000000000000000  00000000000000000000000 00 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000o000000000000000000000000000000000000000000 00 00000000000000000000000 000000000000000000000000 00000000000000000000000 00 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000o00000000000000000000000000000000000000000 00 00000000000000000000000 00000000000000000000000000 00000000000000000000000 00 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888880000000000000000000o00000000000000000000000000000000000000000  0 000000000000000000000000 00000000000000000000000000 000000000000000000000000 0  00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888000000000000000000o00000000000000000000000000000000000000000 00 000000000000000000000000 00000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888800000000000000000o000000000000000000000000000000000000000000 0 000000000000000     00000 00000000000000000000000000 0000000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888800000000000000000o00000000000000000000000000000000000000000 00 0000000000000   000  000  00000000000000000000000000  000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888880000000000000000o00000000000000000000000000000000000000000 00 0000000000000 0000000  0 0000000000000000000000000000 000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888000000000000000o000000000000000000000000000000000000000000 0 0000000000000 000000000   0000000000000000000000000000 0000000000000000000000000 0 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888000000000000000o00000000000000000000000000000000000000000 00 0000000000000 0000000000  0000000000000000000000000000 0000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o00000000000000000000000000000000000000000 00 000000000000  00000000000  00000000000000000000000000  0000000000000000000000000 00 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o00000000000000000000000000000000000000000 0 0000000000000 0000000000000 00000000000000000000000000 000000000000000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o0000000000000000000000000000000000000000 00 0000000000000 0000000000000  0000000000000000000000000 000      000000000000000000 00 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000o00000000000000000000000000000000000000000 00 0000000000000 0000000000000 0 000000000000000000000000 00  0000  00000000000000000 00 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000o00000000000000000000000000000000000000000 0 00000000000000 0000000000000 0  00000000000000000000000 0  000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000o00000000000000000000000000000000000000000 0 0000000000000  00000000000000 0 0000000000000000000000 0  0000000 000000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o00000000000000000000000000000000000000000 0 0000000000000 000000000000000 0  000000000000000000000 0 00000000  00000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o00000000000000000000000000000000000000000 0 0000000000000 000000000000000  0 00000000000000000000   0000000000 00000000000000000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o0000000000000000000000000000000000000000 00 0000000000000 0000000000000000 00 0000000000000000000   0000000000 00000000000000000 00 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888880000000000o0000000000000000000000000000000000000000 0 00000000000000 00000000000000000 0 000000000000000000 0 00000000000 000000000000000000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000 0 000000000000000 0000000000000000  0 0000000000000000   000000000000 000000000000000000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000 0 000000000000000 00000000000000000   000000000000000    000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o00000000000000000000000000000000000000000 0 000000000000000 000000000000000000   000      0000  0 0000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o00000000000000000000000000000000000000000 0 000000000000000 0000000000000000000   00 0000 00   00 0000000000000 000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o00000000000000000000000000000000000000000 0 000000000000000 00000000000000000000     0000    000 0000000000000  000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o0000000000000000000000000000000000000000 0 0000000000000000 000000000000000000000 0        00000 0000000000000 00000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o0000000000000000000000000000000000000000 0 0000000000000000 000000000000000000000 00 0000 00000 00000000000000 00000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o0000000000000000000000000000000000000000 0 0000000000000000  00000000000000000000  0  00  00000 00000000000000 00000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o00000000000000000000000000000000000000000 0 00000000000000000 000000000000000000000 00    000000 00000000000000 00000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o00000000000000000000000000000000000000000 0 00000000000000000 000000000000000000000 00000000000 000000000000000 00000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o00000000000000000000000000000000000000000 0 00000000000000000 000000000000000000000  0000000000 00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o00000000000000000000000000000000000000000 0 00000000000000000 0000000000000000000000 0000000000 00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o00000000000000000000000000000000000000000 0 000000000000000000 000000000000000000000 000000000  00000000000000 000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o00000000000000000000000000000000000000000 0 000000000000000000 000000000000000000000 000000000 00000000000000  000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000 0 000000000000000000 000000000000000000000  00000000 00000000000000 0000000000000000000000 0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000 0 0000000000000000000 000000000000000000000     0000 00000000000000 0000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o0000000000000000000000000000000000000000 0 0000000000000000000 000000000000000000000  00  00  0000000000000  0000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o0000000000000000000000000000000000000000 0 0000000000000000000 000000000000000000000 0000 00 00000000000000 00000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o0000000000000000000000000000000000000000 0 0000000000000000000  0000000000000000000  00000 0 00000000000000 00000000000000000000000 0 0000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000  00000000000000000000 0000000000000000000   000  0 0000000000000  00000000000000000000000  00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000  00000000000000000000  0000000000000000000  000 00 0000000000000 000000000000000000000000  00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000  000000000000000000000 0000000000000000000      00 000000000000  000000000000000000000000  00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000 0 00000000000000000000 00000000000000000000 000000 000000000000 000000000000000000000000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000 0 000000000000000000000 0000000000000000000 000000 00000000000  000000000000000000000000 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000 0 000000000000000000000 0000000000000000000 000000 0000000000  0000000000000000000000  0 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000 0 0000000000000000000000 000000000000000000 000000 0000000000 0000000000000000000000   0 0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000  0000000000000000000000 000000000000000000 000000 000000000  0000000000000000000000 0 0  00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000  00000000000000000000000 00000000000000000 000000 000000000 0000000000000000000000  0 0  00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 0000000000000000000000  0000000000000000 000000 00000000 00000000000000000000000 00  0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 00000000000000000000000 0000000000000000 0000000 000000  0000000000000000000000  00  0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 00000000000000000000000  000000000000000 0000000  000  000000000000000000000000 000  0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o0000000000000000000000000000000000000000 0 000000000000000000000000  0000000000000  00000000     000000000000000000000000  000  0 0000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000  0000000000000000000000000  000000000000 00000000000000000000000000000000000000 000    00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  88888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 0000000000000000000000000 000000000000 00000000000000000000000000000000000000 000  0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 00000000000000000000000000 00000000000 0000000000000000000000000000000000000  000  0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000  000000000000000000000000000  00000000 00000000000000000000000000000000000000 0000   000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 000000000000000000000000000  000000  00000000000000000000000000000000000000 000  0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 0000000000000000000000000000   000  00000000000000000000000000000000000000  000  0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000   00000000000000000000000000000     000000000000000000000000000000000000000 0000   00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000000000 000  0 00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000   000000000000000000000000000000000000000000000000000000000000000000000000  000    00000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000000000000000000000000000000 0000 0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o00000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000000000000000000000000000000 000  0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000  00000000000000000000000000000000000000000000000000000000000000000000000 000   000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000000000000000000  00  0 00000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888o000000000000000000000000000000000000000000  000000000000000000000000000000000000000000000000000000000000000000000 000   000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000000000000000000000000000 000 0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000 00 0 000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o00000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000000000000000000 0  0 00000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000  0000000000000000000000000000000000000000000000000000000000000000000 0   000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000   000000000000000000000000000000000000000000000000000000000000000000     000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o000000000000000000000000000000000000000000 0 000000000000000000000000               00000000000000000000000000  0 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o0000000000000000000000000000000000000000000  000000000000000000000000 00000  00  00 000000000000000000000000000  0000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o000000000000000000000000000000000000000000 0  0000000000000000000000   0           0000000000000000000000000  0 000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880o0000000000000000000000000000000000000000000 0 000000000000000000000000   000  00  00000000000000000000000000 0 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000000 0  0000000000000000000000000000000000000000000000000000000000  0 0000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o0000000000000000000000000000000000000000000   0000000000000000000000000000000000000000000000000000000000   0000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800o00000000000000000000000000000000000000000000 0  000000000000000000000000000000000000000000000000000000  0 00000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000000 0 000000000000000000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o00000000000000000000000000000000000000000000 0 0000000000000000000000000000000000000000000000000000 0 00000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000o000000000000000000000000000000000000000000000 0  000000000000000000000000000000000000000000000000  0 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000o000000000000000000000000000000000000000000000 0  0000000000000000000000000000000000000000000000  0 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o000000000000000000000000000000000000000000000 00 00000000000000000000000000000000000000000000 00 000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o000000000000000000000000000000000000000000000    000000000000000000000000000000000000000000    000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000o0000000000000000000000000000000000000000000000 00  00000000000000000000000000000000000000  00 000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000o0000000000000000000000000000000000000000000000  00 000000000000000000000000000000000000 00  0000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000o0000000000000000000000000000000000000000000000   0  00000000000000000000000000000000  0   0000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000o000000000000000000000000000000000000000000000000 00  0000000000000000000000000000  00 000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o000000000000000000000000000000000000000000000000  00   0000000000000000000000   00  000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o0000000000000000000000000000000000000000000000000  000   0000000000000000   000  0000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000o000000000000000000000000000000000000000000000000000   000                000   00000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000000000000000    00000000000000    00000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000o00000000000000000000000000000000000000000000000000000000              00000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000o00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000o0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000o000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  8888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  88888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000oo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000ooo0000000000000000000000000000000000000000000000000000000000ooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000ooo0000000000000000000000000000000000000000000000000000ooo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000t  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000oo000000000000000000000000000000000000000000000000oo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000ooooo00000000000000000000000000000000000000ooooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000oooooooo0000000000000000000000oooooooo00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000ooooooo0000000oooooooo000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000ooooooo0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000  8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t888888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000   88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t88888888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t8888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000    888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt8888888888888888888888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000     8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000      888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt888888888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000       88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tt88888888888888888888880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000      88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000      88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt88888888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000       8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt8888888888888800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000        8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000000         8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttt888888888000000000000000000000000000000000000000000000000000000000000000000000000000000000        88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888tttt8888800000000000000000000000000000000000000000000000000000000000000000000000000000        888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888ttttt800000000000000000000000000000000000000000000000000000000000000000000000          888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888t      000000000000000000000000000000000000000000000000000000000000           8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888           00000000000000000000000000000000000000000000000000           888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888           tt00000000000000000000000000000000000              88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888                                                    8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888                                       888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888222788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888887222888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888;>>;888888888888;>>>>>>>;8888888888888888 [...]
+"8888888888#uuu#8885uuu68888888888888888888888888uuu#8888888888888888888883uuu.8888#uuuu8888888888888888uuuuuuu-.=888888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuu-8888ryuuu#8888888882uuuuuu2Xr88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O<@8888888w<988888888888888888888888888884<>8888888888888888888888888888888:e<<<<q$88888888884<<<<<<<48888888888888888 [...]
+"8888888888#uuu#886uuu38888888888888888888888888822278888888888888888888883uuuu=888.uuuu8888888888888888uuuuuuuuuy=88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu68886uuuu#8888888882uuuuuuuuy688888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<;888888e&88888888888888888888888888888+q$8888888888888888888888888888888qe:>>w<e88888888884<:>>>>>;8888888888888888 [...]
+"8888888888#uuu#87yuu.88888888888888888888888888888888888888888888888888883uuuu388=uuuuu8888888888888888uuu2332uuu.88888888888888888888888888888888888888888888888888#uuu8888888888888888888888888888888888888888888888888888888#uuuu2888-uuuu#8888888882uu-331uuuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888+<488888><%888888888888888888888888888888888888888888888888888888888888888>88888%<>8888888884<>8888888888888888888888 [...]
+"8888888888#uuu#riuui88888862uuy1#88.22X888r222r82227885226*iuy588888888883uuuu-883uuuuu8888888888888888uuu3888iuu28888#1yuu268888862uuui.7888=.-uui3r88822273-u-6888#uuu=.uui78888r3iuu-.=8885226=52688*iuu15225888888888888888#uuuuu=8#uuuuu#8888888882uu28887yuu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888&e88888%<$88O4e<<,;888+q$>%q+8;%&<&,988+q$888$,<<e48888+q$4e<e+8888888888888888w<$8888888884<>8888888888888O,q$888O, [...]
+"8888888888#uuu#1uu-r8888riuuuuuuu*83uu-8886uu288uuu#882uuyuuuuu38888888883uuyuu68-uyuuu8888888888888888uuu3888iuu18886uuuuuuu.888iuuuuuuu3886uuuuuuui888uuuyuuuuu#88#uuuyuuuuy=887yuuuuuuy=882uu2yuu386uuuuuuuu2888888888888888#uuuyu.8.uyuuu#8888888882uu288886uuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888%<$8888&e888@&:>+&&O884<,<<<4;&&w4%eq884<>88$&&w4q<%8884<&ew4&<>88888888888888>&,88888888884<:>>O88888888888><eO88w< [...]
+"8888888888#uuu2uuy7888885uui*#1uu-8=uuu*881uu688uuu#882uuy.3yuu-8888888883uu2iu26uu5uuu8888888888888888uuu.##1uuu*88=uuu3#6yuu686uu-6##5-38=yuu3#6yuu688uuu-55uuu.88#uuui3.uuu.88iuu1#*iuu.882uuu-223ryuui*#1uu2888888888888888#uuu5uy7uu5uuu#8888888882uu28888ruuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888><w8889<488:<>8889<:884<&+88;:<98888>884<>88q<$888,<>884<w888><%88888888888$qee4888888888884<<<<<q;8888888888:<,89<% [...]
+"8888888888#uuuuuuy=88888uuur88ruuu782uu.8ruuy888uuu#882uu3886uuu8888888883uu26uu-u.3uuu8888888888888888uuuuuuuuu58885uui8885uui83uuy67888=83uu58885uu188uuu#88.uu288#uuu8885uu-8#uui888*uuy882uu388886uuyr883uu2888888888888888#uuu=uu-u-#uuu#8888888882uu288888uuu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888e&888,<;88@@88888<q884<>8888:<w88888884<>8O<,8888$<w884<>8888<q88888888888$qq<@$8888888888>+>>9,<eO8888888888%<:&@O [...]
+"8888888888#uuuuuuui8888#uuuuuuuuuu#86uuy8Xuu.888uuu#882uu388#uuu8888888883uu28yuuu73uuu8888888888888888uuuuuuuuX88882uu3888#uuu8#uuuuuuiX882uuuuuuuuu288uuu#883uu288#uuu888#uuu83uuuuuuuuuu882uu388883uu28883uu2888888888888888#uuu81uuuX#uuu#8888888882uu28888ruuuX88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888w<98O<@888<<<<<<<<q884<>8888O&<&,4$8884<>8><488888<q884<>8888<q88888888888888O@&;888888888888888%<+8888888888O@<&;8 [...]
+"8888888888#uuuX2uuu5888#uuu2222222788yuu*iuu7888uuu#882uu388#uuu8888888883uu285uui83uuu8888888888888888uuu.Xuuuyr8882uu3888#uuu88*-uuuuuu582uu-222222588uuu#883uu288#uuu888#uuu83uuy2222222882uu388883uu28883uu2888888888888888#uuu8*uuur#uuu#8888888882uu288886uuu788888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888;<%8+<+888<@>>>>>>$884<>88888O:q&<<%884<>8><488888<q884<>8888<q8888888888888889<4888888888888888><488888888888%<eO8 [...]
+"8888888888#uuu#ryuuu*88=uuu=8888888885uu2uui8888uuu#882uu388#uuu8888888883uu28=uu683uuu888633#888888888uuu385uuu2888.uu.8886uu-8=88765-uuu8.uu.888888888uuu#883uu288#uuu888Xuu-86uu-8888888882uu38888*uuu7885uu2888633*88888888#uuu88-u.8#uuu#88#3368882uu28887yuui888333=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@&8q<O888ee8888888884<>888888888$@<$84<>8;<%8888;<%884<>8888<q888888888888888><48888888888888889<48888888888:<%<q8 [...]
+"8888888888#uuu#8#uuuy7882uui*88=X-888=uuuuu68888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388iuuu588#uuu#8=-uu383-6=886uuy8#uuu3=88*.388uuu#883uu288#uuur8#yuu38ryuu1788751882uu38888ryuuu2iuuu2888uuu#88888888#uuu888888#uuu#883uu28882uu-331uuuu7888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<4<,8888%<:88888$884<>8888$O88884<>84<>88e&O8884<+884<>8888<q88888888;;88888,<9888448888O88888,<$888448888><,8w<4 [...]
+"8888888888#uuu#883uuuir87yuuuuuuuu8888iuuuyr8888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu388=yuuu*88.uuuuuuuir83uuuuuuuu388.uuuuuuuu388uuu#883uu288#uuuuuuuuyr886uuuuuuuu2882uu3888886uuuuuyuu288#uu2888888888#uuu888888#uuu#883uu28882uuuuuuuuy*8888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O<&<98888;&<%>>:e4884<>88884&w>>:&e884<>889<@9>4<@8884<>8888<q88888888><,+>9,<q8888<<8888<%+>9,<%8888<<888;&&O88@< [...]
+"8888888888#uuu#8882uuu.88=.uuuuuy.88886uuu.88888uuu#882uu388#uuu8888888883uu28888883uuu8882uu3888888888uuu3888*uuuy7883yuuuu.r88#iuuuuu-*88886-uuuuui#88uuu#883uu288#uuu2uuu278888#2uuuuu-X882uu3888888#.2163uu2883uu*888888888#uuu888888#uuu#883uu28882uuuuuu2Xr88888uuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<&888888$q<<<<@>884<>8888>@<<<<q$884<>888+&<<<qO8884<>8888<q88888888;,<<<<<wO8888<<8888,<<<<&488888<<88O@<9888;& [...]
+"88888888888888888888888888887##788888888888888888888888888888888888888888888888888888888888888888888888888888888888888887##88888888###=88888888r###r888888888888888888888=#7888888888###=8888888888888=r888r-uu588iu-88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888O>>O8888888888888O>>;888888888888>>;8888888888888888888888888$>>888888888888888$>>88888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883u-22uuuu=8ruu688888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888883uuuuuuy*88*u-888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888=#X333#8888=#=888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"8888888888=##7888888888888888888888888888888887##=88888888888888888888888888888888888888888888888888888888888888###r888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888883uu2888888888888888888888888888888882uu38888888888888888888=32223=888888888888888888888888888888888888uuu#888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888884+88888888888888888888888888888888888888888888888888888 [...]
+"88888888883uu2888888888888888888888888888888882uu388888888888888888r.uui2iuu5r8888888888888883uu2888888888888888uuu#8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888884<>88888888888888<q88888888888888888888888888888888888888888888888888888 [...]
+"88888888883uu2888888888888888888888888888888887##=8888888888888888riu1=888r3uir888888888888883uu2888888888888888###r8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888884<>88888888888888>$88888888888888888888888888888888888888888888888888888 [...]
+"88888888883uu2888###78888#33X78887##788887##=87##=88=##787337888881u68rX3#366u5888888#333#887.uui##=888#333*=888###r887##=8*3Xr88=X3*8888888888888#33X788888###r8=#r88r63X=7##=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>$8888>;888;>OO>;888O>O888$>8;>O888;>8888>$88888888889449O8;%<:>>;88O+44>8888>$88O>;894:O88944;888888888888O+44$8888O>;8O>$888$449;> [...]
+"88888888883uu288Xuuy788*-uuuuu2r8Xuuy8888yuu782uu3883uui1uuuu6888#u187yuuuu281u=888*-uuuuu-82uuuuuu38*-uuuuuuX88uuu#882uu1iuuuy73yuuu.88888888887-uuuuu2r888uuu*2uu#87yuuuuyuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888@<888><%888q<OO<q8884<+888<@89<4888q<;88><w88888888$@<<<<&$4<<<<<48+&<<<<&888<q88><,e<<<e$q<<<<>8888888888$&<<<<%888><4w<<q88%<<<<<< [...]
+"88888888883uu287uuu*88#uuui2uuu.8ruuu688*uui882uu3883uuuuuuuuy888.u=ryu.#5u28*uX88*uuuy2iuu82uuuuuu3=uuu-22uu388uuu#882uuuuuuuuyuuuuuu788888888=yuu-2yuui888uuuuuuu#ryuuu22uuu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888w<>88w<&888&@88@<888@<,88$<w8O<q88O<<:88:<98888888Oe&+889q>;%<:>>;O<@;8O9q888<q88><<4O84<<,;8><q888888888O&&>8O%<488><<&w4484<%;8$q< [...]
+"88888888883uu2ryuuX888-uu688#uuur81uu188.uu6882uu3883uu-78Xuuu#88--8*uy88#u28ru188-uu1r88#-883uu28883uui888r6688uuu#882uu2=8.uuu*8=yuu388888888.uu288ryuu688uuu.*#*=Xuuy7882uu38888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888><:88e%<98;<w884<$8;<%<O8+<988q&88+&, at 88%<O8888888+<:88888O84<>888><w88888888<q88><4888O<q8888@<888888888:<+8888e&88><qO8888&e88884< [...]
+"88888888883uu2iuu.888=uuu3333uuu#8*uuurryuur882uu3883uu2888uuu#88u283u288#u288u287uuu=88888883uu2888Xuuu-13*8888uuu#882uu388#uuu8882uu388888888yuu6888.uu188uuu#88882uu58882uu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888<,8$<;e%89<>88><:8:e;<+8w<8884<$8,%+<;8 at q88888888,<O88888884<>888O&&w>888888<q88><48888<q8888q<888888888,<O8888w<$8><48888><w88884< [...]
+"88888888883uuuuuu5888#uuuuuuuuuu#88-uu66uu.8882uu3883uu2888uuu#88u283u288#u288u28#uuu888888883uu2888riuuuuuuy788uuu#882uu388#uuu8882uu388888888uuu#8883uu288uuu#88882uu38882uu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888qe8w at 8w&84<8888<%8 at w8@,8qq888><+O<9O<:8<488888888q<888888884<>88889e<<<@9888<q88><48888<q8888q<888888888q<888884<>8><48888><488884< [...]
+"88888888883uuu5uuu#88#uuu#######r883uu11uu#8882uu3883uu2888uuu#88-y8*uy88#u28#u58#uuur88888883uu28888861-uuuu-88uuu#882uu388#uuu8882uu388888888uuu#8883uu288uuu#88881uu.8882uu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888:<;e:8$<9qq8888,e;<$8:<O<48888&%+&88,@><>88888888q<888888884<>888888$+%&<>88<q88><48888<q8888q<888888888q<888884<>8><48888><w88884< [...]
+"88888888883uui85uu-r88yuuX888886888=uuuuu-88882uu3883uu2888uuu#88.u7ryu23-ui#.u*88yuu3888r5883uui88866888r3uuu88uuu#882uu388#uuu8882uu3882uu3881uu.888-uuX88uuu#8888Xuuu3#6yuu388888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888$<w<;88e%<48888:<we88;<%<>8888,e,%88+<%<8888888884<988888884<>8888888889<488<q88><48888<q8888q<8888888884<98888@<88><488888<e8888w< [...]
+"88888888883uu28r-uu1883uuui33.yu88881uuuuX88882uu3883uu2888uuu#88#u28#yuuiuuuu-8883uuu235-u88Xuuu.363u-.332uu288uuu#882uu388#uuu8882uu3882uu388#uuu.32uuyr88uuu#8888ryuuuuuuuu3888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888&<@888w&<$8888$<<w888@&&88888:<<988O<&,8888<<888;<e;88O4>8:<4888>%;888:<+88<q88><48888<q8888q<8888<<888;<@O88+<%88><488888w<,>9%<< [...]
+"88888888883uu288#uuu*885uuuuuuuu88886uuuur88882uu3883uu2888uuu#888.u58r#78####=88885uuuuuuu88=yuuuu33uuuuuuui788uuu#882uu388#uuu8882uu3882uu38886uuuuuuy7888uuu#888887-uuu2iuu3888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888,<:888$<&888888&<$888:<,88888$<&8888,<:8888<<8888+<<qq<<>8;&<qq4><<@qe<@888<q88><48888<q8888q<8888<<8888+<&q@<@O88><488888O,<<<q%< [...]
+"8888888888#336888633X888=31221X=88888333688888633#88#336888333=888riu2*r88#*88888888=322237888=5221#8*3222.68888333=88633#88=333888633#88633#8888=3221Xr8888333=88888887#=8-uuX888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>4;88884+888888+48888;4>8888884+8888>4;88884488888;wqqw$888$%q,>8$4qq,+88884+88;4>88884+8888+488884488888>%qq:O888;4>8888888;>$84< [...]
+"888888888888888888888888888888888888888888888888888888888888888888883yuuuuu28888888888888888888888888888888888888888888888888888888888888888888888888888888888888888853*#*1uuu=8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888Oe& [...]
+"8888888888888888888888888888888888888888888888888888888888888888888888#33367888888888888888888888888888888888888888888888888888888888888888888888888888888888888888882uuuuuuu5888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888>@%44e<+ [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888852uuuy1*8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888$q<<<q98 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+"88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888 [...]
+};
diff --git a/src/threadproj.cpp b/src/threadproj.cpp
new file mode 100644
index 0000000..92abd06
--- /dev/null
+++ b/src/threadproj.cpp
@@ -0,0 +1,266 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          threadproj.cpp
+**   Purpose:       Threaded projection class
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "threadproj.h"
+#include "backgroundmgr.h"
+#include "backgroundsupr.h"
+
+#ifdef HAVE_WXTHREADS
+
+
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class ProjectorSupervisorThread -- Thread for Background Supervisor
+//
+/////////////////////////////////////////////////////////////////////
+
+ProjectorSupervisorThread::ProjectorSupervisorThread (PhantomFileView* pProjView, int iNDet, int iNView, int iOffsetView,
+   const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength,
+   double dViewRatio, double dScanRatio, wxChar const* pszLabel)
+: SupervisorThread(), m_pPhantomView(pProjView), m_iNDet(iNDet), m_iNView(iNView), m_iOffsetView(iOffsetView), m_strGeometry(pszGeometry),
+  m_iNSample(iNSample), m_dRotation(dRotation), m_dFocalLength(dFocalLength), m_dCenterDetectorLength(dCenterDetectorLength),
+  m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_strLabel(pszLabel)
+{
+}
+
+wxThread::ExitCode
+ProjectorSupervisorThread::Entry()
+{
+  ProjectorSupervisor projSupervisor (this, m_pPhantomView, m_iNDet, m_iNView, m_iOffsetView,
+   m_strGeometry.c_str(), m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio, m_strLabel);
+
+  projSupervisor.start();
+  while (! projSupervisor.workersDone() && ! projSupervisor.fail() && ! projSupervisor.cancelled()) {
+    Sleep(100);
+  }
+  if (projSupervisor.fail())
+  {
+    wxString msg (_T("Error starting Projector supervisor: "));
+    msg += projSupervisor.getFailMessage();
+    msg += _T("\n");
+    wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+    eventLog.SetString( msg );
+    wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+  }
+
+  if (! projSupervisor.cancelled())
+          projSupervisor.onDone();
+  projSupervisor.deleteWorkers();
+
+  return static_cast<wxThread::ExitCode>(0);
+}
+
+void
+ProjectorSupervisorThread::OnExit()
+{
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class ProjectorSupervisor -- A Background Supervisor
+//
+/////////////////////////////////////////////////////////////////////
+
+ProjectorSupervisor::ProjectorSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNDet, int iNView, int iOffsetView,
+   const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength,
+   double dViewRatio, double dScanRatio, wxChar const* pszLabel)
+  : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), _T("Projecting"), iNView),
+      m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()),
+      m_iNDet(iNDet), m_iNView(iNView), m_iOffsetView(iOffsetView), m_pszGeometry(pszGeometry), m_iNSample(iNSample),
+      m_dRotation(dRotation), m_dFocalLength(dFocalLength), m_dCenterDetectorLength(dCenterDetectorLength),
+      m_dViewRatio(dViewRatio), m_dScanRatio(dScanRatio), m_strLabel(pszLabel)
+{
+  m_pScanner = new Scanner (m_pPhantomDoc->getPhantom(), m_pszGeometry, m_iNDet,
+                  m_iNView, m_iOffsetView, m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio);
+
+  m_vecpChildProjections.reserve (getNumWorkers());
+  for (int iThread = 0; iThread < getNumWorkers(); iThread++) {
+    m_vecpChildProjections[iThread] = new Projections (*m_pScanner);
+  }
+
+
+
+}
+
+ProjectorSupervisor::~ProjectorSupervisor()
+{
+  for (int i = 0; i < getNumWorkers(); i++) {
+      delete m_vecpChildProjections[i];
+      m_vecpChildProjections[i] = NULL;
+    }
+
+  delete m_pScanner;
+}
+
+BackgroundWorkerThread*
+ProjectorSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits)
+{
+   ProjectorWorker* pThread = new ProjectorWorker (this, iThread, iStartUnit, iNumUnits);
+   m_vecpChildProjections[iThread]->setNView (iNumUnits);
+   pThread->SetParameters (m_pPhantomView, m_vecpChildProjections[iThread], m_pScanner, m_iNDet, m_iNView, m_iOffsetView,
+     m_pszGeometry, m_iNSample, m_dRotation, m_dFocalLength, m_dCenterDetectorLength, m_dViewRatio, m_dScanRatio);
+
+   return pThread;
+}
+
+void
+ProjectorSupervisor::onDone()
+{
+  wxCriticalSection doneSection;
+  wxCriticalSectionLocker critsect (doneSection);
+
+  Projections* pProjections = getProjections();
+  pProjections->setRemark (m_strLabel.mb_str(wxConvUTF8));
+  pProjections->setCalcTime (getTimerEnd());
+
+  wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+  wxString msg (m_strLabel);
+  msg += _T("\n");
+  eventLog.SetString( msg );
+  wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+
+  wxCommandEvent newProjEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_PROJECTIONFILE_EVENT);
+  newProjEvent.SetClientData (pProjections);
+  wxPostEvent (theApp->getMainFrame(), newProjEvent);
+
+  setDone();
+}
+
+
+Projections*
+ProjectorSupervisor::getProjections()
+{
+  Projections* pProjections = new Projections (*m_pScanner);
+
+  int iGlobalView = 0;
+  size_t detArraySize = pProjections->nDet() * sizeof (DetectorValue);
+  for (int iw = 0; iw < getNumWorkers(); iw++) {
+    for (int iView = 0; iView < m_vecpChildProjections[iw]->nView(); iView++) {
+      DetectorArray& childDetArray = m_vecpChildProjections[iw]->getDetectorArray(iView);
+      DetectorArray& globalDetArray = pProjections->getDetectorArray(iGlobalView++);
+      globalDetArray.setViewAngle (childDetArray.viewAngle());
+      DetectorValue* childDetval = childDetArray.detValues();
+      DetectorValue* globalDetval = globalDetArray.detValues();
+      memcpy (globalDetval, childDetval, detArraySize);
+    }
+  }
+
+  return (pProjections);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class ProjectorWorker -- A worker thread
+//
+/////////////////////////////////////////////////////////////////////
+
+void
+ProjectorWorker::SetParameters (PhantomFileView* pPhantomView, Projections* pProjections, Scanner* pScanner,
+ int iNDet, int iView, int iOffsetView,
+ const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength,
+ double dViewRatio, double dScanRatio)
+{
+   m_pScanner = pScanner;
+   m_pPhantomView = pPhantomView;
+   m_pProjections = pProjections;
+   m_pszGeometry = pszGeometry;
+   m_iNSample = iNSample;
+   m_dFocalLength = dFocalLength;
+   m_dCenterDetectorLength = dCenterDetectorLength;
+   m_dViewRatio = dViewRatio;
+   m_dScanRatio = dScanRatio;
+}
+
+wxThread::ExitCode
+ProjectorWorker::Entry ()
+{
+  const Phantom& rPhantom = m_pPhantomView->GetDocument()->getPhantom();
+  bool bFail = m_pScanner->fail();
+  wxString failMsg;
+  if (bFail) {
+    failMsg = _T("Unable to make Projector: ");
+    failMsg += wxConvUTF8.cMB2WX(m_pScanner->failMessage().c_str());
+      wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+    event.SetString( failMsg );
+      wxPostEvent( theApp->getMainFrame(), event );
+  }
+  else
+  {
+    wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_UNIT_TICK);
+    for (int iUnit = 0; iUnit < m_iNumUnits; iUnit++) {
+      if (TestDestroy()) {
+#ifdef DEBUG
+        if (theApp->getVerboseLogging()) {
+          wxString msg;
+          msg.Printf(_T("Worker thread: Received destroy message at work unit #%d\n"), iUnit);
+          wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+          event.SetString( msg );
+          wxPostEvent( theApp->getMainFrame(), event );
+        }
+#endif
+        break;
+      }
+      m_pScanner->collectProjections (*m_pProjections, rPhantom, iUnit + m_iStartUnit, 1,
+        m_iOffsetView, iUnit, Trace::TRACE_NONE);
+      m_pSupervisor->onWorkerUnitTick();
+    }
+  }
+
+  if (bFail) {
+    m_pSupervisor->onWorkerFail (m_iThread, failMsg);
+  } else {
+    m_pSupervisor->onWorkerDone (m_iThread);
+  }
+
+  while (! TestDestroy())
+    Sleep(100);
+
+  return reinterpret_cast<wxThread::ExitCode>(0);
+}
+
+void
+ProjectorWorker::OnExit ()
+{
+}
+
+#endif // HAVE_WXTHREADS
diff --git a/src/threadproj.h b/src/threadproj.h
new file mode 100644
index 0000000..c4303d3
--- /dev/null
+++ b/src/threadproj.h
@@ -0,0 +1,145 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          threadproj.h
+**   Purpose:       Header file for thread reconstructions
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _THREADPROJ_H
+#define _THREADPROJ_H
+
+#ifdef HAVE_WXTHREADS
+
+#include <vector>
+#include <wx/thread.h>
+#include <wx/progdlg.h>
+#include "timer.h"
+#include "backgroundsupr.h"
+
+
+class Reconstructor;
+class ImageFile;
+class PhantomFileDocument;
+class ProjectorWorker;
+class ProjectionFileView;
+
+class ProjectorSupervisorThread : public SupervisorThread {
+private:
+  PhantomFileView* m_pPhantomView;
+  const int m_iNDet;
+  const int m_iNView;
+  const int m_iOffsetView;
+  const std::string m_strGeometry;
+  const int m_iNSample;
+  const double m_dRotation;
+  const double m_dFocalLength;
+  const double m_dCenterDetectorLength;
+  const double m_dViewRatio;
+  const double m_dScanRatio;
+  const wxString m_strLabel;
+
+public:
+  ProjectorSupervisorThread(PhantomFileView* pProjView, int iNDet, int iNView, int iOffsetView,
+   const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength,
+   double dViewRatio, double dScanRatio, wxChar const* strLabel);
+
+  virtual wxThread::ExitCode Entry();
+
+  virtual void OnExit();
+};
+
+
+
+class ProjectorSupervisor : public BackgroundSupervisor {
+private:
+
+  std::vector<Projections*> m_vecpChildProjections;
+  PhantomFileView* m_pPhantomView;
+  PhantomFileDocument* m_pPhantomDoc;
+  Scanner* m_pScanner;
+
+  const int m_iNDet;
+  const int m_iNView;
+  const int m_iOffsetView;
+  const char* const m_pszGeometry;
+  const int m_iNSample;
+  const double m_dRotation;
+  const double m_dFocalLength;
+  const double m_dCenterDetectorLength;
+  const double m_dViewRatio;
+  const double m_dScanRatio;
+  const wxString m_strLabel;
+
+
+public:
+   ProjectorSupervisor (SupervisorThread* pThread, PhantomFileView* pProjView, int iNDet, int iNView,  int iOffsetView,
+   const char* pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength,
+   double dViewRatio, double dScanRatio, wxChar const* pszLabel);
+
+   virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits);
+
+   virtual ~ProjectorSupervisor ();
+
+  void onDone();
+
+  Projections* getProjections();
+
+};
+
+
+
+
+class ProjectorWorker : public BackgroundWorkerThread {
+private:
+  PhantomFileView* m_pPhantomView;
+  Projections* m_pProjections;
+  Scanner* m_pScanner;
+  int m_iNDet;
+  int m_iNView;
+  int m_iOffsetView;
+  const char* m_pszGeometry;
+  int m_iNSample;
+  double m_dRotation;
+  double m_dFocalLength;
+  double m_dCenterDetectorLength;
+  double m_dViewRatio;
+  double m_dScanRatio;
+
+
+public:
+  ProjectorWorker (ProjectorSupervisor* pSupervisor, int iThread, int iStartView, int iNumViews)
+    : BackgroundWorkerThread (pSupervisor, iThread, iStartView, iNumViews)
+  {}
+
+  void SetParameters (PhantomFileView* pPhantomFile, Projections* pProjections, Scanner* pScanner,
+   int iNDet, int iView, int iOffsetView,
+   const char* const pszGeometry, int iNSample, double dRotation, double dFocalLength, double dCenterDetectorLength,
+   double dViewRatio, double dScanRatio);
+
+  virtual wxThread::ExitCode Entry();      // thread execution starts here
+
+  virtual void OnExit();
+};
+
+
+#endif // HAVE_WXTHREADS
+#endif // _THREADPROJ_H_
+
diff --git a/src/threadraster.cpp b/src/threadraster.cpp
new file mode 100644
index 0000000..0f2b6ad
--- /dev/null
+++ b/src/threadraster.cpp
@@ -0,0 +1,225 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          threadraster.cpp
+**   Purpose:       Threaded rasterizer class
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+
+
+#ifdef HAVE_WXTHREADS
+
+
+#include "threadraster.h"
+#include "backgroundmgr.h"
+#include "backgroundsupr.h"
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class RasterizerSupervisorThread -- Thread for Background Supervisor
+//
+/////////////////////////////////////////////////////////////////////
+
+RasterizerSupervisorThread::RasterizerSupervisorThread (PhantomFileView* pProjView, int iNX, int iNY,
+                                                        int iNSample, double dViewRatio, wxChar const* pszLabel)
+                                                        :   SupervisorThread(), m_pPhantomView(pProjView), m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel)
+{
+}
+
+wxThread::ExitCode
+RasterizerSupervisorThread::Entry()
+{
+  RasterizerSupervisor rasterSupervisor (this, m_pPhantomView, m_iNX, m_iNY, m_iNSample, m_dViewRatio, m_strLabel);
+
+  rasterSupervisor.start();
+
+  while (! rasterSupervisor.workersDone() && ! rasterSupervisor.fail() && ! rasterSupervisor.cancelled()) {
+    Sleep(100);
+  }
+
+  if (rasterSupervisor.fail())
+  {
+    wxString msg (_T("Error starting Rasterizer supervisor: "));
+    msg += rasterSupervisor.getFailMessage();
+    msg += _T("\n");
+    wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+    eventLog.SetString( msg );
+    wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+  }
+
+  if (! rasterSupervisor.cancelled())
+    rasterSupervisor.onDone();
+  rasterSupervisor.deleteWorkers();
+
+  return static_cast<wxThread::ExitCode>(0);
+}
+
+void
+RasterizerSupervisorThread::OnExit()
+{
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class RasterizerSupervisor -- A Background Supervisor
+//
+/////////////////////////////////////////////////////////////////////
+
+RasterizerSupervisor::RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pPhantomView, int iNX, int iNY,
+                                            int iNSample, double dViewRatio, wxChar const* pszLabel)
+  : BackgroundSupervisor (pThread, pPhantomView->GetFrame(), pPhantomView->GetDocument(), _T("Rasterizing"), iNX),
+                                            m_pPhantomView(pPhantomView), m_pPhantomDoc(pPhantomView->GetDocument()),
+                                            m_iNX(iNX), m_iNY(iNY), m_iNSample(iNSample), m_dViewRatio(dViewRatio), m_strLabel(pszLabel)
+{
+  m_vecpChildImageFiles.reserve (getNumWorkers());
+  for (int iThread = 0; iThread < getNumWorkers(); iThread++) {
+    m_vecpChildImageFiles[iThread] = new ImageFile;
+  }
+}
+
+RasterizerSupervisor::~RasterizerSupervisor()
+{
+  for (int i = 0; i < getNumWorkers(); i++)
+    delete m_vecpChildImageFiles[i];
+}
+
+BackgroundWorkerThread*
+RasterizerSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits)
+{
+  RasterizerWorker* pThread = new RasterizerWorker (this, iThread, iStartUnit, iNumUnits);
+  m_vecpChildImageFiles[iThread]->setArraySize (iNumUnits, m_iNY);
+  pThread->SetParameters (m_pPhantomView, m_vecpChildImageFiles[iThread], m_iNX, m_iNY, m_iNSample, m_dViewRatio);
+
+  return pThread;
+}
+
+void
+RasterizerSupervisor::onDone()
+{
+  wxCriticalSection doneSection;
+  wxCriticalSectionLocker critsect (doneSection);
+
+  ImageFile* pImageFile = getImageFile();
+  pImageFile->labelAdd (m_strLabel.mb_str(wxConvUTF8), getTimerEnd());
+
+  wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+  wxString msg (m_strLabel);
+  msg += _T("\n");
+  eventLog.SetString( msg );
+  wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+
+  wxCommandEvent newImageEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_IMAGEFILE_EVENT);
+  newImageEvent.SetClientData (pImageFile);
+  wxPostEvent (theApp->getMainFrame(), newImageEvent);
+
+  setDone();
+}
+
+
+ImageFile*
+RasterizerSupervisor::getImageFile()
+{
+  ImageFile* pImageFile = new ImageFile (m_iNX, m_iNY);
+
+  size_t iColSize = sizeof(ImageFileValue) * m_iNY;
+
+  ImageFileArray globalArray = pImageFile->getArray();
+  int iGlobalCol = 0;
+  for (int iw = 0; iw < getNumWorkers(); iw++) {
+    ImageFileArray childArray = m_vecpChildImageFiles[iw]->getArray();
+    for (unsigned int iCol = 0; iCol < m_vecpChildImageFiles[iw]->nx(); iCol++) {
+      memcpy (globalArray[iGlobalCol++], childArray[iCol], iColSize);
+    }
+  }
+  return (pImageFile);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class RasterizerWorker -- A worker thread
+//
+/////////////////////////////////////////////////////////////////////
+
+void
+RasterizerWorker::SetParameters (PhantomFileView* pPhantomView, ImageFile* pImageFile, int iNX, int iNY, int iNSample, double dViewRatio)
+{
+  m_pImageFile = pImageFile;
+  m_iNX = iNX;
+  m_iNY = iNY;
+  m_pPhantomView = pPhantomView;
+  m_iNSample = iNSample;
+  m_dViewRatio = dViewRatio;
+}
+
+wxThread::ExitCode
+RasterizerWorker::Entry ()
+{
+  const Phantom& rPhantom = m_pPhantomView->GetDocument()->getPhantom();
+  wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_UNIT_TICK);
+  for (int iUnit = 0; iUnit < m_iNumUnits; iUnit++) {
+    if (TestDestroy()) {
+#ifdef DEBUG
+      if (theApp->getVerboseLogging()) {
+        wxString msg;
+        msg.Printf(_T("Worker thread: Received destroy message at work unit #%d\n"), iUnit);
+        wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+        event.SetString( msg );
+        wxPostEvent( theApp->getMainFrame(), event );
+      }
+#endif
+      break;
+    }
+    rPhantom.convertToImagefile (*m_pImageFile, m_iNX, m_dViewRatio, m_iNSample, Trace::TRACE_NONE, iUnit + m_iStartUnit, 1, iUnit);
+    m_pSupervisor->onWorkerUnitTick();
+  }
+
+  m_pSupervisor->onWorkerDone (m_iThread);
+
+  while (! TestDestroy())
+    Sleep(100);
+
+  return static_cast<wxThread::ExitCode>(0);
+}
+
+void
+RasterizerWorker::OnExit ()
+{
+}
+
+#endif // HAVE_WXTHREADS
diff --git a/src/threadraster.h b/src/threadraster.h
new file mode 100644
index 0000000..b222445
--- /dev/null
+++ b/src/threadraster.h
@@ -0,0 +1,118 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          threadraster.h
+**   Purpose:       Header file for threaded rasterizations
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _THREADRASTER_H
+#define _THREADRASTER_H
+
+#ifdef HAVE_WXTHREADS
+
+#include <vector>
+#include <wx/thread.h>
+#include <wx/progdlg.h>
+#include "timer.h"
+#include "backgroundsupr.h"
+
+
+class Reconstructor;
+class ImageFile;
+class PhantomFileDocument;
+class RasterizerWorker;
+class ImageFileView;
+
+class RasterizerSupervisorThread : public SupervisorThread {
+private:
+  PhantomFileView* m_pPhantomView;
+  const int m_iNX;
+  const int m_iNY;
+  const int m_iNSample;
+  const double m_dViewRatio;
+  const wxString m_strLabel;
+
+public:
+  RasterizerSupervisorThread(PhantomFileView* pProjView, int iNX, int iNY, int iNSample, double dViewRatio, wxChar const* strLabel);
+
+  virtual wxThread::ExitCode Entry();
+  virtual void OnExit();
+};
+
+
+
+class RasterizerSupervisor : public BackgroundSupervisor {
+private:
+
+  PhantomFileView* m_pPhantomView;
+  std::vector<ImageFile*> m_vecpChildImageFiles;
+  PhantomFileDocument* m_pPhantomDoc;
+
+  const int m_iNX;
+  const int m_iNY;
+  const int m_iNSample;
+  const double m_dViewRatio;
+  const wxString m_strLabel;
+
+
+public:
+   RasterizerSupervisor (SupervisorThread* pThread, PhantomFileView* pProjView, int iNX, int iNY,
+   int iNSample, double dViewRatio, wxChar const* pszLabel);
+
+   virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits);
+
+   virtual ~RasterizerSupervisor ();
+
+  void onDone();
+
+  ImageFile* getImageFile();
+
+};
+
+
+
+
+class RasterizerWorker : public BackgroundWorkerThread {
+private:
+  PhantomFileView* m_pPhantomView;
+  ImageFile* m_pImageFile;
+  int m_iNX;
+  int m_iNY;
+  int m_iNSample;
+  double m_dViewRatio;
+
+
+public:
+  RasterizerWorker (RasterizerSupervisor* pSupervisor, int iThread, int iStartView, int iNumViews)
+    : BackgroundWorkerThread (pSupervisor, iThread, iStartView, iNumViews)
+  {}
+
+  void SetParameters (PhantomFileView* pPhantomFile, ImageFile* pImageFile, int iNX, int iY,
+   int iNSample, double dViewRatio);
+
+  virtual wxThread::ExitCode Entry();      // thread execution starts here
+
+  virtual void OnExit();
+};
+
+#endif // HAVE_WXTHREADS
+#endif // _THREADRASTER_H_
+
diff --git a/src/threadrecon.cpp b/src/threadrecon.cpp
new file mode 100644
index 0000000..f3d6ef7
--- /dev/null
+++ b/src/threadrecon.cpp
@@ -0,0 +1,276 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          threadrecon.cpp
+**   Purpose:       Threaded reconstruction class
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "threadrecon.h"
+#include "backgroundmgr.h"
+#include "backgroundsupr.h"
+
+#ifdef HAVE_WXTHREADS
+
+
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class ReconstructorSupervisorThread -- Thread for Background Supervisor
+//
+/////////////////////////////////////////////////////////////////////
+
+ReconstructorSupervisorThread::ReconstructorSupervisorThread (ProjectionFileView* pProjView, int iNX, int iNY,
+   const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad,
+   const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam,
+   const char* pszBackprojectName, wxChar const* pszLabel, ReconstructionROI* pROI, bool bRebinToParallel)
+:   SupervisorThread(), m_pProjView(pProjView), m_iNX(iNX), m_iNY(iNY), m_strFilterName(pszFilterName), m_dFilterParam(dFilterParam),
+  m_strFilterMethod(pszFilterMethod), m_iZeropad(iZeropad), m_strFilterGenerationName(pszFilterGenerationName),
+  m_strInterpName(pszInterpName), m_iInterpParam(iInterpParam), m_strBackprojectName(pszBackprojectName),
+  m_strLabel(pszLabel), m_reconROI(*pROI), m_bRebinToParallel(bRebinToParallel)
+{
+}
+
+wxThread::ExitCode
+ReconstructorSupervisorThread::Entry()
+{
+  Projections* pProj = &m_pProjView->GetDocument()->getProjections();
+
+  if (m_bRebinToParallel)
+    pProj = pProj->interpolateToParallel();
+
+  ReconstructorSupervisor reconSupervisor (this, pProj, m_pProjView, m_iNX, m_iNY,
+   m_strFilterName.c_str(), m_dFilterParam, m_strFilterMethod.c_str(), m_iZeropad, m_strFilterGenerationName.c_str(),
+   m_strInterpName.c_str(), m_iInterpParam, m_strBackprojectName.c_str(), m_strLabel, &m_reconROI);
+
+  reconSupervisor.start();
+  while (! reconSupervisor.workersDone() && ! reconSupervisor.fail() && ! reconSupervisor.cancelled()) {
+    Sleep(100);
+  }
+  if (reconSupervisor.fail())
+  {
+    wxString msg (_T("Error starting reconstructor supervisor: "));
+    msg += reconSupervisor.getFailMessage();
+    msg += _T("\n");
+    wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+    eventLog.SetString( msg );
+    wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+  }
+  if (! reconSupervisor.cancelled())
+          reconSupervisor.onDone();
+  reconSupervisor.deleteWorkers();
+
+  if (m_bRebinToParallel)
+    delete pProj;
+
+  return static_cast<wxThread::ExitCode>(0);
+}
+
+void
+ReconstructorSupervisorThread::OnExit()
+{
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class ReconstructorSupervisor -- A Background Supervisor
+//
+/////////////////////////////////////////////////////////////////////
+
+ReconstructorSupervisor::ReconstructorSupervisor (SupervisorThread* pThread, Projections* pProj,
+  ProjectionFileView* pProjView, int iImageNX, int iImageNY, const char* pszFilterName, double dFilterParam,
+  const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName,
+  const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, wxChar const* pszLabel,
+  ReconstructionROI* pROI)
+    : BackgroundSupervisor (pThread, pProjView->GetFrame(), pProjView->GetDocument(),
+                            _T("Reconstructing"), 
+                            pProjView->GetDocument()->getProjections().nView()),
+      m_pProj(pProj), m_pProjView(pProjView), m_pProjDoc(pProjView->GetDocument()),
+      m_iImageNX(iImageNX), m_iImageNY(iImageNY),
+      m_pszFilterName(pszFilterName), m_dFilterParam(dFilterParam), m_pszFilterMethod(pszFilterMethod),
+      m_iZeropad(iZeropad), m_pszFilterGenerationName(pszFilterGenerationName), m_pszInterpName(pszInterpName),
+      m_iInterpParam(iInterpParam), m_pszBackprojectName(pszBackprojectName), m_strLabel(pszLabel),
+      m_pReconROI(pROI)
+{
+  m_vecpChildImageFile.reserve (getNumWorkers());
+  for (int iThread = 0; iThread < getNumWorkers(); iThread++) {
+    m_vecpChildImageFile[iThread] = new ImageFile (m_iImageNX, m_iImageNY);
+  }
+
+}
+
+ReconstructorSupervisor::~ReconstructorSupervisor()
+{
+  for (int i = 0; i < getNumWorkers(); i++) {
+      delete m_vecpChildImageFile[i];
+      m_vecpChildImageFile[i] = NULL;
+    }
+}
+
+BackgroundWorkerThread*
+ReconstructorSupervisor::createWorker (int iThread, int iStartUnit, int iNumUnits)
+{
+   ReconstructorWorker* pThread = new ReconstructorWorker (this, iThread, iStartUnit, iNumUnits);
+   pThread->SetParameters (m_pProj, m_pProjView, m_vecpChildImageFile[iThread], m_pszFilterName,
+     m_dFilterParam, m_pszFilterMethod, m_iZeropad, m_pszFilterGenerationName, m_pszInterpName,
+     m_iInterpParam, m_pszBackprojectName, m_pReconROI);
+
+   return pThread;
+}
+
+void
+ReconstructorSupervisor::onDone()
+{
+  wxCriticalSection doneSection;
+  wxCriticalSectionLocker critsect (doneSection);
+
+  ImageFile* pImageFile = getImageFile();
+  pImageFile->labelAdd (m_pProj->getLabel());
+  pImageFile->labelAdd (m_strLabel.mb_str(wxConvUTF8), getTimerEnd());
+
+  wxCommandEvent eventLog (wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+  wxString msg (m_strLabel);
+  msg += _T("\n");
+  eventLog.SetString( msg );
+  wxPostEvent( theApp->getMainFrame(), eventLog ); // send log event
+
+  wxCommandEvent newImageEvent (wxEVT_COMMAND_MENU_SELECTED, NEW_IMAGEFILE_EVENT);
+  newImageEvent.SetClientData (pImageFile);
+  wxPostEvent (theApp->getMainFrame(), newImageEvent);
+
+  setDone();
+}
+
+
+ImageFile*
+ReconstructorSupervisor::getImageFile()
+{
+  ImageFile* pImageFile = new ImageFile (m_iImageNX, m_iImageNY);
+  pImageFile->arrayDataClear();
+  ImageFileArray pArray = pImageFile->getArray();
+
+  int i;
+  for (i = 0; i < getNumWorkers(); i++) {
+    ImageFileArrayConst pChildArray = m_vecpChildImageFile[i]->getArray();
+    for (int ix = 0; ix < m_iImageNX; ix++)
+      for (int iy = 0; iy < m_iImageNY; iy++)
+        pArray[ix][iy] += pChildArray[ix][iy];
+  }
+
+  return (pImageFile);
+}
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// Class ReconstructorWorker -- A worker thread
+//
+/////////////////////////////////////////////////////////////////////
+
+void
+ReconstructorWorker::SetParameters (const Projections* pProj, ProjectionFileView* pProjView, ImageFile* pImageFile,
+ const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad,
+ const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam,
+ const char* pszBackprojectName, ReconstructionROI* pROI)
+{
+   m_pProj = pProj;
+   m_pProjView = pProjView;
+   m_pImageFile = pImageFile;
+   m_pszFilterName = pszFilterName;
+   m_dFilterParam = dFilterParam;
+   m_pszFilterMethod = pszFilterMethod;
+   m_iZeropad = iZeropad;
+   m_pszFilterGenerationName = pszFilterGenerationName;
+   m_pszInterpName = pszInterpName;
+   m_iInterpParam = iInterpParam;
+   m_pszBackprojectName = pszBackprojectName;
+   m_pReconROI = pROI;
+}
+
+wxThread::ExitCode
+ReconstructorWorker::Entry ()
+{
+  Reconstructor* pReconstructor = new Reconstructor (*m_pProj, *m_pImageFile, m_pszFilterName,
+    m_dFilterParam, m_pszFilterMethod, m_iZeropad, m_pszFilterGenerationName, m_pszInterpName,
+    m_iInterpParam, m_pszBackprojectName, Trace::TRACE_NONE, m_pReconROI, false);
+
+  bool bFail = pReconstructor->fail();
+  wxString failMsg;
+  if (bFail) {
+    failMsg = _T("Unable to make reconstructor: ");
+    failMsg += wxConvUTF8.cMB2WX(pReconstructor->failMessage().c_str());
+      wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+    event.SetString( failMsg );
+      wxPostEvent( theApp->getMainFrame(), event );
+  }
+  else
+  {
+    wxCommandEvent eventProgress (wxEVT_COMMAND_MENU_SELECTED, BackgroundSupervisor::MSG_WORKER_THREAD_UNIT_TICK);
+    for (int iUnit = 0; iUnit < m_iNumUnits; iUnit++) {
+      if (TestDestroy()) {
+#ifdef DEBUG
+        if (theApp->getVerboseLogging()) {
+          wxString msg;
+          msg.Printf(_T("Worker thread: Received destroy message at work unit #%d\n"), iUnit);
+          wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, MAINMENU_LOG_EVENT );
+          event.SetString( msg );
+          wxPostEvent( theApp->getMainFrame(), event );
+        }
+#endif
+        break;
+      }
+      pReconstructor->reconstructView (iUnit + m_iStartUnit, 1);
+      m_pSupervisor->onWorkerUnitTick();
+    }
+    pReconstructor->postProcessing();
+  }
+  delete pReconstructor;
+
+  if (bFail) {
+        m_pSupervisor->onWorkerFail (m_iThread, failMsg);
+  } else {
+        m_pSupervisor->onWorkerDone (m_iThread);
+  }
+
+  while (! TestDestroy())
+    Sleep(100);
+
+  return reinterpret_cast<wxThread::ExitCode>(0);
+}
+
+void
+ReconstructorWorker::OnExit ()
+{
+}
+
+#endif // HAVE_WXTHREADS
diff --git a/src/threadrecon.h b/src/threadrecon.h
new file mode 100644
index 0000000..7537918
--- /dev/null
+++ b/src/threadrecon.h
@@ -0,0 +1,148 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          threadrecon.h
+**   Purpose:       Header file for thread reconstructions
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef _THREADRECON_H
+#define _THREADRECON_H
+
+#ifdef HAVE_WXTHREADS
+
+
+#include <vector>
+#include <wx/thread.h>
+#include <wx/progdlg.h>
+#include "timer.h"
+#include "backgroundsupr.h"
+
+
+class Reconstructor;
+class ImageFile;
+class ProjectionFileDocument;
+class ReconstructorWorker;
+class ProjectionFileView;
+struct ReconstructionROI;
+
+class ReconstructorSupervisorThread : public SupervisorThread {
+private:
+  ProjectionFileView* m_pProjView;
+  ImageFile* m_pImageFile;
+  const int m_iNX;
+  const int m_iNY;
+  const std::string m_strFilterName;
+  const double m_dFilterParam;
+  const std::string m_strFilterMethod;
+  const int m_iZeropad;
+  const std::string m_strFilterGenerationName;
+  const std::string m_strInterpName;
+  const int m_iInterpParam;
+  const std::string m_strBackprojectName;
+  const wxString m_strLabel;
+  ReconstructionROI m_reconROI;
+  const bool m_bRebinToParallel;
+
+public:
+  ReconstructorSupervisorThread(ProjectionFileView* pProjView, int iNX, int iNY, const char* pszFilterName,
+   double dFilterParam, const char* pszFilterMethod, int iZeropad, const char* pszFilterGenerationName,
+   const char* pszInterpName, int iInterpParam, const char* pszBackprojectName, wxChar const* pszLabel,
+   ReconstructionROI* pROI, bool bRebinToParallel);
+
+  virtual wxThread::ExitCode Entry();
+
+  virtual void OnExit();
+};
+
+
+
+class ReconstructorSupervisor : public BackgroundSupervisor {
+private:
+
+  std::vector<ImageFile*> m_vecpChildImageFile;
+  const Projections* m_pProj;
+  ProjectionFileView* m_pProjView;
+  ProjectionFileDocument* m_pProjDoc;
+
+  const int m_iImageNX;
+  const int m_iImageNY;
+
+  const char* const m_pszFilterName;
+  const double m_dFilterParam;
+  const char* const m_pszFilterMethod;
+  const int m_iZeropad;
+  const char* const m_pszFilterGenerationName;
+  const char* const m_pszInterpName;
+  const int m_iInterpParam;
+  const char* const m_pszBackprojectName;
+  const wxString m_strLabel;
+  ReconstructionROI* m_pReconROI;
+
+public:
+   ReconstructorSupervisor (SupervisorThread* pMyThread, Projections* pProj, ProjectionFileView* pProjView,
+   int iNX, int iNY, const char* pszFilterName, double dFilterParam, const char* pszFilterMethod, int iZeropad,
+   const char* pszFilterGenerationName, const char* pszInterpName, int iInterpParam,
+   const char* pszBackprojectName, wxChar const* pszLabel, ReconstructionROI* pReconROI);
+
+   virtual BackgroundWorkerThread* createWorker (int iThread, int iStartUnit, int iNumUnits);
+
+   virtual ~ReconstructorSupervisor ();
+
+  void onDone();
+
+  ImageFile* getImageFile();
+
+};
+
+
+class ReconstructorWorker : public BackgroundWorkerThread {
+private:
+  const Projections* m_pProj;
+  ProjectionFileView* m_pProjView;
+  ImageFile* m_pImageFile;
+  const char* m_pszFilterName;
+  double m_dFilterParam;
+  const char* m_pszFilterMethod;
+  int m_iZeropad;
+  const char* m_pszFilterGenerationName;
+  const char* m_pszInterpName;
+  int m_iInterpParam;
+  const char* m_pszBackprojectName;
+  ReconstructionROI* m_pReconROI;
+
+public:
+  ReconstructorWorker (ReconstructorSupervisor* pSupervisor, int iThread, int iStartView, int iNumViews)
+    : BackgroundWorkerThread (pSupervisor, iThread, iStartView, iNumViews)
+  {}
+
+  void SetParameters (const Projections* pProj, ProjectionFileView* pProjFile, ImageFile* pImageFile,
+   const char* const pszFilterName, double dFilterParam, const char* const pszFilterMethod,
+   int iZeropad, const char* const pszFilterGenerationName, const char* const pszInterpName, int iInterpParam,
+   const char* pszBackprojectName, ReconstructionROI* pROI);
+
+  virtual wxThread::ExitCode Entry();      // thread execution starts here
+
+  virtual void OnExit();
+};
+
+#endif // HAVE_WXTHREADS
+#endif // _THREADRECON_H_
+
diff --git a/src/tips.cpp b/src/tips.cpp
new file mode 100644
index 0000000..c80c50b
--- /dev/null
+++ b/src/tips.cpp
@@ -0,0 +1,95 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          tips.cpp
+**   Purpose:       User tips for CTSim
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+
+#include "tips.h"
+
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
+
+
+const char* const CTSimTipProvider::s_aszTips[] = {
+  "You can create a geometric phantom using the \"File - Create Phantom\" menu command.",
+  "You can create a gray-scale, rasterized image of a phantom by using the \"Process - Rasterize\" menu command on a geometric phantom.",
+  "You can simulate the x-ray process by using the \"Process - Projections\" menu command on a geometric phantom.",
+  "You can simulate first, second, and third-fourth-fifth generation CT scanners by using different scanner geometries.",
+  "You can reconstruct an image from the x-ray data by using the \"Reconstruction\" menu on a projection file.",
+  "You can specify different levels of smoothing by using different filters in the \"Reconstruction\" dialog.",
+  "You can select a row and column of an image by left-mouse button clicking on an image.",
+  "You can plot a column or row of an image by using the \"Analyze - Plot\" command.",
+  "You can save your plots to a disk file by using the \"File - Save\" command.",
+  "You can create your own phantoms using a text editor. Please see the manual for the simple file format.",
+  "You can perform 2-dimension Fourier transform of images using the \"Filter\" menu commands.",
+  "You can create an image of a filter by using the \"File - Create Filter\" menu command.",
+  "You can add two images by using the \"Image - Add\" menu command.",
+  "You can display the value of a pixel in an image by right-mouse button clicking on an image.",
+  "You can view a 3-dimensional view of an image using the \"Image - 3D\" menu command.",
+  "You can scale an image to any size using the \"Image - Scale Size\" menu command.",
+  "You can display context-sensitive help by using the \"Help\" button on dialog boxes.",
+  "You can compare two images by using the \"Analyze - Compare Images\" menu command.",
+  "You can display these tips at any time by using the \"Help - Tips\" menu command.",
+  "You can control CTSim's operation using the \"File - Preferences\" menu command.",
+};
+
+const size_t CTSimTipProvider::s_iNumTips = sizeof(s_aszTips) / sizeof(const char *);
+
+
+CTSimTipProvider::CTSimTipProvider (size_t iCurrentTip)
+: wxTipProvider (iCurrentTip)
+{
+  if (iCurrentTip >= s_iNumTips)
+    iCurrentTip = 0;
+
+  m_iCurrentTip = iCurrentTip;
+}
+
+wxString
+CTSimTipProvider::GetTip()
+{
+  if (m_iCurrentTip >= s_iNumTips)
+    m_iCurrentTip = 0;
+
+  size_t iThisTip = m_iCurrentTip;
+  ++m_iCurrentTip;
+
+  return wxString (wxConvUTF8.cMB2WX(s_aszTips[iThisTip]));
+}
+
+size_t
+CTSimTipProvider::GetCurrentTip()
+{
+  if (m_iCurrentTip >= s_iNumTips)
+    m_iCurrentTip = 0;
+
+  return m_iCurrentTip;
+}
+
diff --git a/src/tips.h b/src/tips.h
new file mode 100644
index 0000000..259e85b
--- /dev/null
+++ b/src/tips.h
@@ -0,0 +1,43 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          tips.h
+**   Purpose:       Header file for user tips
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  February 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#include <wx/tipdlg.h>
+
+
+class CTSimTipProvider : public wxTipProvider
+{
+private:
+  static const char* const s_aszTips[];
+  static const size_t s_iNumTips;
+
+  size_t m_iCurrentTip;
+
+public:
+  CTSimTipProvider(size_t currentTip);
+
+  virtual wxString GetTip();
+  size_t GetCurrentTip();
+};
diff --git a/src/views.cpp b/src/views.cpp
new file mode 100644
index 0000000..5f0d4d4
--- /dev/null
+++ b/src/views.cpp
@@ -0,0 +1,3738 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          views.cpp
+**   Purpose:       View & Canvas routines for CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "wx/wxprec.h"
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+#if !wxUSE_DOC_VIEW_ARCHITECTURE
+#error You must set wxUSE_DOC_VIEW_ARCHITECTURE to 1 in setup.h!
+#endif
+
+#include "wx/image.h"
+#include "wx/progdlg.h"
+#include "wx/clipbrd.h"
+
+#include "ct.h"
+#include "ctsim.h"
+#include "docs.h"
+#include "views.h"
+#include "dialogs.h"
+#include "dlgprojections.h"
+#include "dlgreconstruct.h"
+#include "backprojectors.h"
+#include "reconstruct.h"
+#include "timer.h"
+#include "threadproj.h"
+#include "threadrecon.h"
+#include "threadraster.h"
+
+#if defined(MSVC) || HAVE_SSTREAM
+#include <sstream>
+#else
+#include <sstream_subst>
+#endif
+
+// Used to reduce calls to progress bar update function
+const short int ITER_PER_UPDATE = 10;
+
+// ImageFileCanvas
+
+BEGIN_EVENT_TABLE(ImageFileCanvas, wxScrolledWindow)
+EVT_MOUSE_EVENTS(ImageFileCanvas::OnMouseEvent)
+EVT_CHAR(ImageFileCanvas::OnChar)
+END_EVENT_TABLE()
+
+
+ImageFileCanvas::ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style)
+: wxScrolledWindow(frame, -1, pos, size, style), m_pView(v), m_xCursor(-1), m_yCursor(-1)
+{
+}
+
+ImageFileCanvas::~ImageFileCanvas()
+{}
+
+void
+ImageFileCanvas::OnDraw(wxDC& dc)
+{
+  if (m_pView)
+    m_pView->OnDraw(& dc);
+}
+
+void
+ImageFileCanvas::DrawRubberBandCursor (wxDC& dc, int x, int y)
+{
+  const ImageFile& rIF = m_pView->GetDocument()->getImageFile();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+
+  int yPt = ny - y - 1;
+  dc.SetLogicalFunction (wxINVERT);
+  dc.SetPen (*wxGREEN_PEN);
+  dc.DrawLine (0, yPt, nx, yPt);
+  dc.DrawLine (x, 0, x, ny);
+  dc.SetLogicalFunction (wxCOPY);
+}
+
+bool
+ImageFileCanvas::GetCurrentCursor (int& x, int& y)
+{
+  x = m_xCursor;
+  y = m_yCursor;
+
+  if (m_xCursor >= 0 && m_yCursor >= 0)
+    return true;
+  else
+    return false;
+}
+
+void
+ImageFileCanvas::OnMouseEvent(wxMouseEvent& event)
+{
+  if (! m_pView)
+    return;
+
+
+  wxClientDC dc(this);
+  PrepareDC(dc);
+
+  wxPoint pt(event.GetLogicalPosition(dc));
+
+  const ImageFileDocument* pIFDoc = m_pView->GetDocument();
+  if (! pIFDoc)
+    return;
+  const ImageFile& rIF = pIFDoc->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+  const int yPt = ny - 1 - pt.y;
+  if (event.RightIsDown()) {
+    if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) {
+      wxString os;
+      os << _T("Image value (") << pt.x << _T(",") << yPt << _T(") = ")
+         << v[pt.x][yPt];
+      if (rIF.isComplex()) {
+        double dImag = rIF.getImaginaryArray()[pt.x][yPt];
+        if (dImag < 0)
+          os << _T(" - ") << -dImag;
+        else
+          os << _T(" + ") << dImag;
+        os << _T("i\n");
+      } else
+        os << _T("\n");
+      *theApp->getLog() << os;
+    } else
+      *theApp->getLog() << _T("Mouse out of image range (") << pt.x << _T(",") << yPt << _T(")\n");
+  }
+  else if (event.LeftIsDown() || event.LeftUp() || event.RightUp()) {
+    if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) {
+      if (m_xCursor >= 0 && m_yCursor >= 0) {
+        DrawRubberBandCursor (dc, m_xCursor, m_yCursor);
+      }
+      DrawRubberBandCursor (dc, pt.x, yPt);
+      m_xCursor = pt.x;
+      m_yCursor = yPt;
+      wxMenu* pMenu = m_pView->getMenuAnalyze();
+      if (pMenu && ! pMenu->IsEnabled(IFMENU_PLOT_ROW)) {
+        pMenu->Enable (IFMENU_PLOT_ROW, true);
+        pMenu->Enable (IFMENU_PLOT_COL, true);
+        pMenu->Enable (IFMENU_COMPARE_ROW, true);
+        pMenu->Enable (IFMENU_COMPARE_COL, true);
+        pMenu->Enable (IFMENU_PLOT_FFT_ROW, true);
+        pMenu->Enable (IFMENU_PLOT_FFT_COL, true);
+      }
+    } else
+      *theApp->getLog() << _T("Mouse out of image range (") << pt.x << _T(",") << yPt << _T(")\n");
+  }
+  if (event.LeftUp()) {
+    wxString os;
+    os << _T("Selected column ") << pt.x << _T(" , row ") << yPt << _T("\n");
+    *theApp->getLog() << os;
+  }
+}
+
+void
+ImageFileCanvas::OnChar (wxKeyEvent& event)
+{
+  if (event.GetKeyCode() == WXK_ESCAPE) {
+    m_xCursor = -1;
+    m_yCursor = -1;
+    if (m_pView)
+      m_pView->OnUpdate (NULL);
+  } else
+    event.Skip();
+}
+
+wxSize
+ImageFileCanvas::GetBestSize() const
+{
+  const int iMinX = 50;
+  const int iMinY = 20;
+  wxSize bestSize (iMinX,iMinY);
+
+  if (m_pView) {
+    const ImageFile& rIF = m_pView->GetDocument()->getImageFile();
+    bestSize.Set  (rIF.nx(), rIF.ny());
+  }
+
+  if (bestSize.x > 800)
+    bestSize.x = 800;
+  if (bestSize.y > 800)
+    bestSize.y = 800;
+
+  if (bestSize.y < iMinY)
+    bestSize.y = iMinY;
+  if (bestSize.x < iMinX)
+    bestSize.x = iMinX;
+
+  return bestSize;
+}
+
+
+// ImageFileView
+
+IMPLEMENT_DYNAMIC_CLASS(ImageFileView, wxView)
+
+BEGIN_EVENT_TABLE(ImageFileView, wxView)
+EVT_MENU(IFMENU_FILE_EXPORT, ImageFileView::OnExport)
+EVT_MENU(IFMENU_FILE_PROPERTIES, ImageFileView::OnProperties)
+EVT_MENU(IFMENU_EDIT_COPY, ImageFileView::OnEditCopy)
+EVT_MENU(IFMENU_EDIT_CUT, ImageFileView::OnEditCut)
+EVT_MENU(IFMENU_EDIT_PASTE, ImageFileView::OnEditPaste)
+EVT_MENU(IFMENU_VIEW_SCALE_MINMAX, ImageFileView::OnScaleMinMax)
+EVT_MENU(IFMENU_VIEW_SCALE_AUTO, ImageFileView::OnScaleAuto)
+EVT_MENU(IFMENU_VIEW_SCALE_FULL, ImageFileView::OnScaleFull)
+EVT_MENU(IFMENU_COMPARE_IMAGES, ImageFileView::OnCompare)
+EVT_MENU(IFMENU_COMPARE_ROW, ImageFileView::OnCompareRow)
+EVT_MENU(IFMENU_COMPARE_COL, ImageFileView::OnCompareCol)
+EVT_MENU(IFMENU_FILTER_INVERTVALUES, ImageFileView::OnInvertValues)
+EVT_MENU(IFMENU_FILTER_SQUARE, ImageFileView::OnSquare)
+EVT_MENU(IFMENU_FILTER_SQRT, ImageFileView::OnSquareRoot)
+EVT_MENU(IFMENU_FILTER_LOG, ImageFileView::OnLog)
+EVT_MENU(IFMENU_FILTER_EXP, ImageFileView::OnExp)
+EVT_MENU(IFMENU_FILTER_FOURIER, ImageFileView::OnFourier)
+EVT_MENU(IFMENU_FILTER_INVERSE_FOURIER, ImageFileView::OnInverseFourier)
+EVT_MENU(IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER, ImageFileView::OnShuffleFourierToNaturalOrder)
+EVT_MENU(IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER, ImageFileView::OnShuffleNaturalToFourierOrder)
+EVT_MENU(IFMENU_IMAGE_ADD, ImageFileView::OnAdd)
+EVT_MENU(IFMENU_IMAGE_SUBTRACT, ImageFileView::OnSubtract)
+EVT_MENU(IFMENU_IMAGE_MULTIPLY, ImageFileView::OnMultiply)
+EVT_MENU(IFMENU_IMAGE_DIVIDE, ImageFileView::OnDivide)
+EVT_MENU(IFMENU_IMAGE_SCALESIZE, ImageFileView::OnScaleSize)
+#if wxUSE_GLCANVAS
+EVT_MENU(IFMENU_IMAGE_CONVERT3D, ImageFileView::OnConvert3d)
+#endif
+#ifdef HAVE_FFT
+EVT_MENU(IFMENU_FILTER_FFT, ImageFileView::OnFFT)
+EVT_MENU(IFMENU_FILTER_IFFT, ImageFileView::OnIFFT)
+EVT_MENU(IFMENU_FILTER_FFT_ROWS, ImageFileView::OnFFTRows)
+EVT_MENU(IFMENU_FILTER_IFFT_ROWS, ImageFileView::OnIFFTRows)
+EVT_MENU(IFMENU_FILTER_FFT_COLS, ImageFileView::OnFFTCols)
+EVT_MENU(IFMENU_FILTER_IFFT_COLS, ImageFileView::OnIFFTCols)
+#endif
+EVT_MENU(IFMENU_FILTER_MAGNITUDE, ImageFileView::OnMagnitude)
+EVT_MENU(IFMENU_FILTER_PHASE, ImageFileView::OnPhase)
+EVT_MENU(IFMENU_FILTER_REAL, ImageFileView::OnReal)
+EVT_MENU(IFMENU_FILTER_IMAGINARY, ImageFileView::OnImaginary)
+EVT_MENU(IFMENU_PLOT_ROW, ImageFileView::OnPlotRow)
+EVT_MENU(IFMENU_PLOT_COL, ImageFileView::OnPlotCol)
+#ifdef HAVE_FFT
+EVT_MENU(IFMENU_PLOT_FFT_ROW, ImageFileView::OnPlotFFTRow)
+EVT_MENU(IFMENU_PLOT_FFT_COL, ImageFileView::OnPlotFFTCol)
+#endif
+EVT_MENU(IFMENU_PLOT_HISTOGRAM, ImageFileView::OnPlotHistogram)
+END_EVENT_TABLE()
+
+ImageFileView::ImageFileView()
+  :  wxView(), m_pBitmap(0), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0),
+     m_pFilterMenu(0), m_bMinSpecified(false), m_bMaxSpecified(false),
+     m_iDefaultExportFormatID(ImageFile::EXPORT_FORMAT_PNG)
+{}
+
+ImageFileView::~ImageFileView()
+{
+  GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu);
+  GetDocumentManager()->ActivateView(this, FALSE);
+}
+
+
+void
+ImageFileView::OnProperties (wxCommandEvent& event)
+{
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  if (rIF.nx() == 0 || rIF.ny() == 0)
+    *theApp->getLog() << _T("Properties: empty imagefile\n");
+  else {
+    const std::string rFilename (m_pFrame->GetTitle().mb_str(wxConvUTF8));
+    std::ostringstream os;
+    double min, max, mean, mode, median, stddev;
+    rIF.statistics (rIF.getArray(), min, max, mean, mode, median, stddev);
+    os << "Filename: " << rFilename << "\n";
+    os << "Size: (" << rIF.nx() << "," << rIF.ny() << ")\n";
+    os << "Data type: ";
+    if (rIF.isComplex())
+      os << "Complex\n";
+    else
+      os << "Real\n";
+    os << "Minimum: "<<min<<"\nMaximum: "<<max<<"\nMean: "<<mean<<"\nMedian: "<<median<<"\nMode: "<<mode<<"\nStandard Deviation: "<<stddev << "\n";
+    if (rIF.isComplex()) {
+      rIF.statistics (rIF.getImaginaryArray(), min, max, mean, mode, median, stddev);
+      os << "Imaginary: min: "<<min<<"\nmax: "<<max<<"\nmean: "<<mean<<"\nmedian: "<<median<<"\nmode: "<<mode<<"\nstddev: "<<stddev << "\n";
+    }
+    if (rIF.nLabels() > 0) {
+      rIF.printLabelsBrief (os);
+    }
+    *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n");
+    wxMessageDialog dialogMsg (getFrameForChild(), wxConvUTF8.cMB2WX(os.str().c_str()), _T("Imagefile Properties"), wxOK | wxICON_INFORMATION);
+    dialogMsg.ShowModal();
+  }
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnScaleAuto (wxCommandEvent& event)
+{
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  double min, max, mean, mode, median, stddev;
+  rIF.statistics(min, max, mean, mode, median, stddev);
+  DialogAutoScaleParameters dialogAutoScale (getFrameForChild(), mean, mode, median, stddev, m_dAutoScaleFactor);
+  int iRetVal = dialogAutoScale.ShowModal();
+  if (iRetVal == wxID_OK) {
+    m_bMinSpecified = true;
+    m_bMaxSpecified = true;
+    double dMin, dMax;
+    if (dialogAutoScale.getMinMax (&dMin, &dMax)) {
+      m_dMinPixel = dMin;
+      m_dMaxPixel = dMax;
+      m_dAutoScaleFactor = dialogAutoScale.getAutoScaleFactor();
+      OnUpdate(this, NULL);
+      GetDocument()->UpdateAllViews (this);
+    }
+  }
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnScaleMinMax (wxCommandEvent& event)
+{
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  double min, max;
+  if (! m_bMinSpecified && ! m_bMaxSpecified)
+    rIF.getMinMax (min, max);
+
+  if (m_bMinSpecified)
+    min = m_dMinPixel;
+  if (m_bMaxSpecified)
+    max = m_dMaxPixel;
+
+  DialogGetMinMax dialogMinMax (getFrameForChild(), _T("Set Image Minimum & Maximum"), min, max);
+  int retVal = dialogMinMax.ShowModal();
+  if (retVal == wxID_OK) {
+    m_bMinSpecified = true;
+    m_bMaxSpecified = true;
+    m_dMinPixel = dialogMinMax.getMinimum();
+    m_dMaxPixel = dialogMinMax.getMaximum();
+    OnUpdate(this, NULL);
+    GetDocument()->UpdateAllViews (this);
+  }
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnScaleFull (wxCommandEvent& event)
+{
+  if (m_bMinSpecified || m_bMaxSpecified) {
+    m_bMinSpecified = false;
+    m_bMaxSpecified = false;
+    OnUpdate(this, NULL);
+    GetDocument()->UpdateAllViews (this);
+  }
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnCompare (wxCommandEvent& event)
+{
+  std::vector<ImageFileDocument*> vecIF;
+  theApp->getCompatibleImages (GetDocument(), vecIF);
+
+  if (vecIF.size() == 0) {
+    wxMessageBox(_T("There are no compatible image files open for comparision"), _T("No comparison images"));
+  } else {
+    DialogGetComparisonImage dialogGetCompare(getFrameForChild(), _T("Get Comparison Image"), vecIF, true);
+
+    if (dialogGetCompare.ShowModal() == wxID_OK) {
+      const ImageFile& rIF = GetDocument()->getImageFile();
+      ImageFileDocument* pCompareDoc = dialogGetCompare.getImageFileDocument();
+      const ImageFile& rCompareIF = pCompareDoc->getImageFile();
+      std::ostringstream os;
+      double min, max, mean, mode, median, stddev;
+      rIF.statistics (min, max, mean, mode, median, stddev);
+      os << m_pFrame->GetTitle().mb_str(wxConvUTF8) << ": minimum=" << min << ", maximum=" << max << ", mean=" << mean << ", mode=" << mode << ", median=" << median << ", stddev=" << stddev << "\n";
+      rCompareIF.statistics (min, max, mean, mode, median, stddev);
+      os << dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << ": minimum=" << min << ", maximum=" << max << ", mean=" << mean << ", mode=" << mode << ", median=" << median << ", stddev=" << stddev << "\n";
+      double d, r, e;
+      rIF.comparativeStatistics (rCompareIF, d, r, e);
+      os << "Comparative Statistics: d=" << d << ", r=" << r << ", e=" << e << "\n";
+      *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n");
+      if (dialogGetCompare.getMakeDifferenceImage()) {
+        ImageFile* pDifferenceImage = new ImageFile;
+
+        pDifferenceImage->setArraySize (rIF.nx(), rIF.ny());
+        if (! rIF.subtractImages (rCompareIF, *pDifferenceImage)) {
+          *theApp->getLog() << _T("Unable to subtract images\n");
+          delete pDifferenceImage;
+          return;
+        }
+        ImageFileDocument* pDifferenceDoc = theApp->newImageDoc();
+        if (! pDifferenceDoc) {
+          sys_error (ERR_SEVERE, "Unable to create image file");
+          return;
+        }
+        pDifferenceDoc->setImageFile (pDifferenceImage);
+
+        wxString s = m_pFrame->GetTitle() + _T(": ");
+        pDifferenceImage->labelsCopy (rIF, s.mb_str(wxConvUTF8));
+        s = dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+        pDifferenceImage->labelsCopy (rCompareIF, s.mb_str(wxConvUTF8));
+        std::ostringstream osLabel;
+        osLabel << "Compare image " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str()
+                << " and " << dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().c_str() << ": "
+          << os.str().c_str();
+        pDifferenceImage->labelAdd (os.str().c_str());
+        if (theApp->getAskDeleteNewDocs())
+          pDifferenceDoc->Modify (true);
+        OnUpdate(this, NULL);
+        pDifferenceDoc->UpdateAllViews(this);
+        pDifferenceDoc->getView()->setInitialClientSize();
+        pDifferenceDoc->Activate();
+      }
+      wxMessageBox(wxConvUTF8.cMB2WX(os.str().c_str()), _T("Image Comparison"));
+    }
+  }
+}
+
+void
+ImageFileView::OnInvertValues (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.invertPixelValues (rIF);
+  rIF.labelAdd ("Invert Pixel Values");
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnSquare (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.square (rIF);
+  rIF.labelAdd ("Square Pixel Values");
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnSquareRoot (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.sqrt (rIF);
+  rIF.labelAdd ("Square-root Pixel Values");
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnLog (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.log (rIF);
+  rIF.labelAdd ("Logrithm base-e Pixel Values");
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnExp (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.exp (rIF);
+  rIF.labelAdd ("Exponent base-e Pixel Values");
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnAdd (wxCommandEvent& event)
+{
+  std::vector<ImageFileDocument*> vecIF;
+  theApp->getCompatibleImages (GetDocument(), vecIF);
+
+  if (vecIF.size() == 0) {
+    wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images"));
+  } else {
+    DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Add"), vecIF, false);
+
+    if (dialogGetCompare.ShowModal() == wxID_OK) {
+      ImageFile& rIF = GetDocument()->getImageFile();
+      ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
+      const ImageFile& rRHSIF = pRHSDoc->getImageFile();
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
+      if (! pNewDoc) {
+        sys_error (ERR_SEVERE, "Unable to create image file");
+        return;
+      }
+      ImageFile& newImage = pNewDoc->getImageFile();
+      newImage.setArraySize (rIF.nx(), rIF.ny());
+      rIF.addImages (rRHSIF, newImage);
+      std::ostringstream os;
+      os << "Add image " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and "
+         << dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str();
+      wxString s = dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8));
+      s = dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8));
+      newImage.labelAdd (os.str().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      if (theApp->getAskDeleteNewDocs())
+        pNewDoc->Modify (true);
+      OnUpdate(this, NULL);
+      pNewDoc->UpdateAllViews (this);
+      pNewDoc->getView()->setInitialClientSize();
+      pNewDoc->Activate();
+    }
+  }
+}
+
+void
+ImageFileView::OnSubtract (wxCommandEvent& event)
+{
+  std::vector<ImageFileDocument*> vecIF;
+  theApp->getCompatibleImages (GetDocument(), vecIF);
+
+  if (vecIF.size() == 0) {
+    wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images"));
+  } else {
+    DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Subtract"), vecIF, false);
+
+    if (dialogGetCompare.ShowModal() == wxID_OK) {
+      ImageFile& rIF = GetDocument()->getImageFile();
+      ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
+      const ImageFile& rRHSIF = pRHSDoc->getImageFile();
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
+      if (! pNewDoc) {
+        sys_error (ERR_SEVERE, "Unable to create image file");
+        return;
+      }
+      ImageFile& newImage = pNewDoc->getImageFile();
+      newImage.setArraySize (rIF.nx(), rIF.ny());
+      rIF.subtractImages (rRHSIF, newImage);
+      std::ostringstream os;
+      os << "Subtract image " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and "
+         << dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str();
+      wxString s = dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8));
+      s = dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8));
+      newImage.labelAdd (os.str().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      if (theApp->getAskDeleteNewDocs())
+        pNewDoc->Modify (true);
+      OnUpdate(this, NULL);
+      pNewDoc->UpdateAllViews (this);
+      pNewDoc->getView()->setInitialClientSize();
+      pNewDoc->Activate();
+    }
+  }
+}
+
+void
+ImageFileView::OnMultiply (wxCommandEvent& event)
+{
+  std::vector<ImageFileDocument*> vecIF;
+  theApp->getCompatibleImages (GetDocument(), vecIF);
+
+  if (vecIF.size() == 0) {
+    wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images"));
+  } else {
+    DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Multiply"), vecIF, false);
+
+    if (dialogGetCompare.ShowModal() == wxID_OK) {
+      ImageFile& rIF = GetDocument()->getImageFile();
+      ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
+      const ImageFile& rRHSIF = pRHSDoc->getImageFile();
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
+      if (! pNewDoc) {
+        sys_error (ERR_SEVERE, "Unable to create image file");
+        return;
+      }
+      ImageFile& newImage = pNewDoc->getImageFile();
+      newImage.setArraySize (rIF.nx(), rIF.ny());
+      rIF.multiplyImages (rRHSIF, newImage);
+      std::ostringstream os;
+      os << "Multiply image " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " and "
+         << dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str();
+      wxString s = dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8));
+      s = dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8));
+      newImage.labelAdd (os.str().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      if (theApp->getAskDeleteNewDocs())
+        pNewDoc->Modify (true);
+      OnUpdate(this, NULL);
+      pNewDoc->UpdateAllViews (this);
+      pNewDoc->getView()->setInitialClientSize();
+      pNewDoc->Activate();
+    }
+  }
+}
+
+void
+ImageFileView::OnDivide (wxCommandEvent& event)
+{
+  std::vector<ImageFileDocument*> vecIF;
+  theApp->getCompatibleImages (GetDocument(), vecIF);
+
+  if (vecIF.size() == 0) {
+    wxMessageBox (_T("There are no compatible image files open for comparision"), _T("No comparison images"));
+  } else {
+    DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Image to Divide"), vecIF, false);
+
+    if (dialogGetCompare.ShowModal() == wxID_OK) {
+      ImageFile& rIF = GetDocument()->getImageFile();
+      ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
+      const ImageFile& rRHSIF = pRHSDoc->getImageFile();
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
+      if (! pNewDoc) {
+        sys_error (ERR_SEVERE, "Unable to create image file");
+        return;
+      }
+      ImageFile& newImage = pNewDoc->getImageFile();
+      newImage.setArraySize (rIF.nx(), rIF.ny());
+      rIF.divideImages (rRHSIF, newImage);
+      std::ostringstream os;
+      os << "Divide image " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str() << " by "
+         << dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle().c_str();
+      wxString s = dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rIF, s.mb_str(wxConvUTF8));
+      s = dynamic_cast<wxFrame*>(pRHSDoc->GetFirstView()->GetFrame())->GetTitle() + _T(": ");
+      newImage.labelsCopy (rRHSIF, s.mb_str(wxConvUTF8));
+      newImage.labelAdd (os.str().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      if (theApp->getAskDeleteNewDocs())
+        pNewDoc->Modify (true);
+      OnUpdate(this, NULL);
+      pNewDoc->UpdateAllViews (this);
+      pNewDoc->getView()->setInitialClientSize();
+      pNewDoc->Activate();
+    }
+  }
+}
+
+
+#ifdef HAVE_FFT
+void
+ImageFileView::OnFFT (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.fft (rIF);
+  rIF.labelAdd ("FFT Image");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnIFFT (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.ifft (rIF);
+  rIF.labelAdd ("IFFT Image");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnFFTRows (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.fftRows (rIF);
+  rIF.labelAdd ("FFT Rows");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnIFFTRows (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.ifftRows (rIF);
+  rIF.labelAdd ("IFFT Rows");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnFFTCols (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.fftCols (rIF);
+  rIF.labelAdd ("FFT Columns");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnIFFTCols (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.ifftCols (rIF);
+  rIF.labelAdd ("IFFT Columns");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+#endif
+
+void
+ImageFileView::OnFourier (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  wxProgressDialog dlgProgress (_T("Fourier"), _T("Fourier Progress"), 1, getFrameForChild(), wxPD_APP_MODAL);
+  rIF.fourier (rIF);
+  rIF.labelAdd ("Fourier Image");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnInverseFourier (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  wxProgressDialog dlgProgress (_T("Inverse Fourier"), _T("Inverse Fourier Progress"), 1, getFrameForChild(), wxPD_APP_MODAL);
+  rIF.inverseFourier (rIF);
+  rIF.labelAdd ("Inverse Fourier Image");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnShuffleNaturalToFourierOrder (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  Fourier::shuffleNaturalToFourierOrder (rIF);
+  rIF.labelAdd ("Shuffle Natural To Fourier Order");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnShuffleFourierToNaturalOrder (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  Fourier::shuffleFourierToNaturalOrder (rIF);
+  rIF.labelAdd ("Shuffle Fourier To Natural Order");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnMagnitude (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  rIF.magnitude (rIF);
+  rIF.labelAdd ("Magnitude");
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews (this);
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnPhase (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  if (rIF.isComplex()) {
+    rIF.phase (rIF);
+    rIF.labelAdd ("Phase of complex-image");
+    m_bMinSpecified = false;
+    m_bMaxSpecified = false;
+    if (theApp->getAskDeleteNewDocs())
+      GetDocument()->Modify (true);
+    OnUpdate(this, NULL);
+    GetDocument()->UpdateAllViews (this);
+  }
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnReal (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  if (rIF.isComplex()) {
+    rIF.real (rIF);
+    rIF.labelAdd ("Real component of complex-image");
+    m_bMinSpecified = false;
+    m_bMaxSpecified = false;
+    if (theApp->getAskDeleteNewDocs())
+      GetDocument()->Modify (true);
+    OnUpdate(this, NULL);
+    GetDocument()->UpdateAllViews (this);
+  }
+  GetDocument()->Activate();
+}
+
+void
+ImageFileView::OnImaginary (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  if (rIF.isComplex()) {
+    rIF.imaginary (rIF);
+    rIF.labelAdd ("Imaginary component of complex-image");
+    m_bMinSpecified = false;
+    m_bMaxSpecified = false;
+    if (theApp->getAskDeleteNewDocs())
+      GetDocument()->Modify (true);
+    OnUpdate(this, NULL);
+    GetDocument()->UpdateAllViews (this);
+  }
+  GetDocument()->Activate();
+}
+
+
+ImageFileCanvas*
+ImageFileView::CreateCanvas (wxFrame* parent)
+{
+  ImageFileCanvas* pCanvas = new ImageFileCanvas (this, parent, wxPoint(-1,-1),
+                                                  wxSize(-1,-1), 0);
+  pCanvas->SetBackgroundColour(*wxWHITE);
+  pCanvas->ClearBackground();
+
+  return pCanvas;
+}
+
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
+{
+#if CTSIM_MDI
+  wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("ImageFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#else
+  wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("ImageFile Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#endif
+  theApp->setIconForFrame (subframe);
+
+  m_pFileMenu = new wxMenu;
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+  m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S"));
+  m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As..."));
+  m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W"));
+  m_pFileMenu->Append(wxID_REVERT, _T("Re&vert"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(IFMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I"));
+  m_pFileMenu->Append(IFMENU_FILE_EXPORT, _T("Expor&t..."));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(wxID_PRINT, _T("&Print..."));
+  m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+  m_pFileMenu->Append(wxID_PREVIEW, _T("Print Preview"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+  GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu);
+
+  wxMenu* edit_menu = new wxMenu;
+  edit_menu->Append(IFMENU_EDIT_COPY, _T("Copy\tCtrl-C"));
+  edit_menu->Append(IFMENU_EDIT_CUT, _T("Cut\tCtrl-X"));
+  edit_menu->Append(IFMENU_EDIT_PASTE, _T("Paste\tCtrl-V"));
+
+  wxMenu *view_menu = new wxMenu;
+  view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, _T("Display Scale S&et...\tCtrl-E"));
+  view_menu->Append(IFMENU_VIEW_SCALE_AUTO, _T("Display Scale &Auto...\tCtrl-A"));
+  view_menu->Append(IFMENU_VIEW_SCALE_FULL, _T("Display F&ull Scale\tCtrl-U"));
+
+  m_pFilterMenu = new wxMenu;
+  m_pFilterMenu->Append (IFMENU_FILTER_INVERTVALUES, _T("In&vert Values"));
+  m_pFilterMenu->Append (IFMENU_FILTER_SQUARE, _T("&Square"));
+  m_pFilterMenu->Append (IFMENU_FILTER_SQRT, _T("Square &Root"));
+  m_pFilterMenu->Append (IFMENU_FILTER_LOG, _T("&Log"));
+  m_pFilterMenu->Append (IFMENU_FILTER_EXP, _T("E&xp"));
+  m_pFilterMenu->AppendSeparator();
+#ifdef HAVE_FFT
+  m_pFilterMenu->Append (IFMENU_FILTER_FFT, _T("2-D &FFT\tCtrl-2"));
+  m_pFilterMenu->Append (IFMENU_FILTER_IFFT, _T("2-D &IFFT\tAlt-2"));
+  m_pFilterMenu->Append (IFMENU_FILTER_FFT_ROWS, _T("FFT Rows"));
+  m_pFilterMenu->Append (IFMENU_FILTER_IFFT_ROWS, _T("IFFT Rows"));
+  m_pFilterMenu->Append (IFMENU_FILTER_FFT_COLS, _T("FFT Columns"));
+  m_pFilterMenu->Append (IFMENU_FILTER_IFFT_COLS, _T("IFFT Columns"));
+  m_pFilterMenu->Append (IFMENU_FILTER_FOURIER, _T("2-D F&ourier"));
+  m_pFilterMenu->Append (IFMENU_FILTER_INVERSE_FOURIER, _T("2-D Inverse Fo&urier"));
+#else
+  m_pFilterMenu->Append (IFMENU_FILTER_FOURIER, _T("&Fourier"));
+  m_pFilterMenu->Append (IFMENU_FILTER_INVERSE_FOURIER, _T("&Inverse Fourier"));
+#endif
+  m_pFilterMenu->Append (IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER, _T("Shuffl&e Fourier to Natural Order"));
+  m_pFilterMenu->Append (IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER, _T("Shuffle &Natural to Fourier Order"));
+  m_pFilterMenu->AppendSeparator();
+  m_pFilterMenu->Append (IFMENU_FILTER_MAGNITUDE, _T("&Magnitude"));
+  m_pFilterMenu->Append (IFMENU_FILTER_PHASE, _T("&Phase"));
+  m_pFilterMenu->Append (IFMENU_FILTER_REAL, _T("Re&al"));
+  m_pFilterMenu->Append (IFMENU_FILTER_IMAGINARY, _T("Ima&ginary"));
+
+  wxMenu* image_menu = new wxMenu;
+  image_menu->Append (IFMENU_IMAGE_ADD, _T("&Add..."));
+  image_menu->Append (IFMENU_IMAGE_SUBTRACT, _T("&Subtract..."));
+  image_menu->Append (IFMENU_IMAGE_MULTIPLY, _T("&Multiply..."));
+  image_menu->Append (IFMENU_IMAGE_DIVIDE, _T("&Divide..."));
+  image_menu->AppendSeparator();
+  image_menu->Append (IFMENU_IMAGE_SCALESIZE, _T("S&cale Size..."));
+#if wxUSE_GLCANVAS
+  image_menu->Append (IFMENU_IMAGE_CONVERT3D, _T("Convert &3-D\tCtrl-3"));
+#endif
+
+  m_pMenuAnalyze = new wxMenu;
+  m_pMenuAnalyze->Append (IFMENU_PLOT_ROW, _T("Plot &Row"));
+  m_pMenuAnalyze->Append (IFMENU_PLOT_COL, _T("Plot &Column"));
+  m_pMenuAnalyze->Append (IFMENU_PLOT_HISTOGRAM, _T("Plot &Histogram"));
+  m_pMenuAnalyze->AppendSeparator();
+  m_pMenuAnalyze->Append (IFMENU_PLOT_FFT_ROW, _T("P&lot FFT Row"));
+  m_pMenuAnalyze->Append (IFMENU_PLOT_FFT_COL, _T("Plo&t FFT Column"));
+  m_pMenuAnalyze->AppendSeparator();
+  m_pMenuAnalyze->Append (IFMENU_COMPARE_IMAGES, _T("Compare &Images..."));
+  m_pMenuAnalyze->Append (IFMENU_COMPARE_ROW, _T("Compare Ro&w"));
+  m_pMenuAnalyze->Append (IFMENU_COMPARE_COL, _T("Compare Colu&mn"));
+  m_pMenuAnalyze->Enable (IFMENU_PLOT_ROW, false);
+  m_pMenuAnalyze->Enable (IFMENU_PLOT_COL, false);
+  m_pMenuAnalyze->Enable (IFMENU_COMPARE_ROW, false);
+  m_pMenuAnalyze->Enable (IFMENU_COMPARE_COL, false);
+  m_pMenuAnalyze->Enable (IFMENU_PLOT_FFT_ROW, false);
+  m_pMenuAnalyze->Enable (IFMENU_PLOT_FFT_COL, false);
+
+  wxMenu *help_menu = new wxMenu;
+  help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips"));
+  help_menu->Append (IDH_QUICKSTART, _T("&Quick Start"));
+  help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar *menu_bar = new wxMenuBar;
+
+  menu_bar->Append(m_pFileMenu, _T("&File"));
+  menu_bar->Append(edit_menu, _T("&Edit"));
+  menu_bar->Append(view_menu, _T("&View"));
+  menu_bar->Append(image_menu, _T("&Image"));
+  menu_bar->Append(m_pFilterMenu, _T("Fi&lter"));
+  menu_bar->Append(m_pMenuAnalyze, _T("&Analyze"));
+  menu_bar->Append(help_menu, _T("&Help"));
+
+  subframe->SetMenuBar(menu_bar);
+
+  subframe->Centre(wxBOTH);
+
+  wxAcceleratorEntry accelEntries[10];
+  accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('A'), IFMENU_VIEW_SCALE_AUTO);
+  accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('U'), IFMENU_VIEW_SCALE_FULL);
+  accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('E'), IFMENU_VIEW_SCALE_MINMAX);
+  accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('I'), IFMENU_FILE_PROPERTIES);
+  accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('C'), IFMENU_EDIT_COPY);
+  accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('X'), IFMENU_EDIT_CUT);
+  accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('V'), IFMENU_EDIT_PASTE);
+  int iEntry = 7;
+#ifdef HAVE_FFT
+  accelEntries[iEntry++].Set (wxACCEL_CTRL, static_cast<int>('2'), IFMENU_FILTER_FFT);
+  accelEntries[iEntry++].Set (wxACCEL_ALT,  static_cast<int>('2'), IFMENU_FILTER_IFFT);
+#endif
+#if wxUSE_GLCANVAS
+  accelEntries[iEntry++].Set (wxACCEL_CTRL, static_cast<int>('3'), IFMENU_IMAGE_CONVERT3D);
+#endif
+
+  wxAcceleratorTable accelTable (iEntry, accelEntries);
+  subframe->SetAcceleratorTable (accelTable);
+
+  return subframe;
+}
+
+
+bool
+ImageFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
+{
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  m_dAutoScaleFactor = 1.;
+
+  m_pFrame = CreateChildFrame(doc, this);
+  SetFrame (m_pFrame);
+  m_pCanvas = CreateCanvas (m_pFrame);
+  m_pFrame->SetClientSize (m_pCanvas->GetBestSize());
+  m_pCanvas->SetClientSize (m_pCanvas->GetBestSize());
+  m_pFrame->SetTitle(doc->GetFilename());
+
+  m_pFrame->Show(true);
+  Activate(true);
+
+  return true;
+}
+
+void
+ImageFileView::setInitialClientSize ()
+{
+  if (m_pFrame && m_pCanvas) {
+    wxSize bestSize = m_pCanvas->GetBestSize();
+
+    m_pFrame->SetClientSize (bestSize);
+    m_pFrame->Show (true);
+    m_pFrame->SetFocus();
+  }
+}
+
+void
+ImageFileView::OnDraw (wxDC* dc)
+{
+  if (m_pBitmap && m_pBitmap->Ok()) {
+#ifdef DEBUG
+    *theApp->getLog() << _T("Drawing bitmap\n");
+#endif
+    dc->DrawBitmap(*m_pBitmap, 0, 0, false);
+  }
+
+  int xCursor, yCursor;
+  if (m_pCanvas->GetCurrentCursor (xCursor, yCursor))
+    m_pCanvas->DrawRubberBandCursor (*dc, xCursor, yCursor);
+}
+
+
+void
+ImageFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+{
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  if (m_pFilterMenu && rIF.isComplex()) {
+    m_pFilterMenu->Enable(IFMENU_FILTER_REAL, true);
+    m_pFilterMenu->Enable(IFMENU_FILTER_IMAGINARY, true);
+    m_pFilterMenu->Enable(IFMENU_FILTER_PHASE, true);
+  } else {
+    m_pFilterMenu->Enable(IFMENU_FILTER_REAL, false);
+    m_pFilterMenu->Enable(IFMENU_FILTER_IMAGINARY, false);
+    m_pFilterMenu->Enable(IFMENU_FILTER_PHASE, false);
+  }
+  ImageFileArrayConst v = rIF.getArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+  if (v != NULL && nx != 0 && ny != 0) {
+    if (! m_bMinSpecified || ! m_bMaxSpecified) {
+      double min, max;
+      rIF.getMinMax (min, max);
+      if (! m_bMinSpecified)
+        m_dMinPixel = min;
+      if (! m_bMaxSpecified)
+        m_dMaxPixel = max;
+    }
+    double scaleWidth = m_dMaxPixel - m_dMinPixel;
+
+    unsigned char* imageData = new unsigned char [nx * ny * 3];
+    if (! imageData) {
+      sys_error (ERR_SEVERE, "Unable to allocate memory for Image display");
+      return;
+    }
+    for (int ix = 0; ix < nx; ix++) {
+      for (int iy = 0; iy < ny; iy++) {
+        double scaleValue = ((v[ix][iy] - m_dMinPixel) / scaleWidth) * 255;
+        int intensity = static_cast<int>(scaleValue + 0.5);
+        intensity = clamp (intensity, 0, 255);
+        int baseAddr = ((ny - 1 - iy) * nx + ix) * 3;
+        imageData[baseAddr] = imageData[baseAddr+1] = imageData[baseAddr+2] = intensity;
+      }
+    }
+    wxImage image (nx, ny, imageData, true);
+    if (m_pBitmap) {
+      delete m_pBitmap;
+      m_pBitmap = NULL;
+    }
+#ifdef DEBUG
+    *theApp->getLog() << _T("Making new bitmap\n");
+#endif
+    m_pBitmap = new wxBitmap (image);
+    delete imageData;
+    m_pCanvas->SetScrollbars(20, 20, nx/20, ny/20);
+    m_pCanvas->SetBackgroundColour(*wxWHITE);
+  }
+
+  if (m_pCanvas)
+    m_pCanvas->Refresh();
+}
+
+bool
+ImageFileView::OnClose (bool deleteWindow)
+{
+  if (! GetDocument() || ! GetDocument()->Close())
+    return false;
+
+  Activate (false);
+  if (m_pCanvas) {
+    m_pCanvas->setView(NULL);
+    m_pCanvas = NULL;
+  }
+  wxString s(theApp->GetAppName());
+  if (m_pFrame)
+    m_pFrame->SetTitle(s);
+
+  SetFrame(NULL);
+
+  if (deleteWindow) {
+    delete m_pFrame;
+    m_pFrame = NULL;
+    if (GetDocument() && GetDocument()->getBadFileOpen())
+      ::wxYield();  // wxWindows bug workaround
+  }
+
+  return true;
+}
+
+void
+ImageFileView::OnEditCopy (wxCommandEvent& event)
+{
+  wxBitmapDataObject *pBitmapObject = new wxBitmapDataObject;
+
+  if (m_pBitmap)
+    pBitmapObject->SetBitmap (*m_pBitmap);
+
+  if (wxTheClipboard->Open()) {
+    wxTheClipboard->SetData (pBitmapObject);
+    wxTheClipboard->Close();
+  }
+}
+
+void
+ImageFileView::OnEditCut (wxCommandEvent& event)
+{
+  OnEditCopy (event);
+  ImageFile& rIF = GetDocument()->getImageFile();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+  ImageFile* pIF = new ImageFile (nx, ny);
+  pIF->arrayDataClear();
+  GetDocument()->setImageFile (pIF); // deletes old IF
+  OnUpdate(this, NULL);
+  GetDocument()->UpdateAllViews();
+  if (theApp->getAskDeleteNewDocs())
+    GetDocument()->Modify (true);
+}
+
+void
+ImageFileView::OnEditPaste (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+
+  if (wxTheClipboard->Open()) {
+    wxBitmap bitmap;
+    if (wxTheClipboard->IsSupported (wxDF_BITMAP)) {
+      wxBitmapDataObject bitmapObject;
+      wxTheClipboard->GetData (bitmapObject);
+      bitmap = bitmapObject.GetBitmap ();
+    }
+    wxTheClipboard->Close();
+
+    int nx = rIF.nx();
+    int ny = rIF.ny();
+    bool bMonochrome = false;
+
+    if (bitmap.Ok() == true && bitmap.GetWidth() == nx && bitmap.GetHeight() == ny) {
+      wxImage image (bitmap.ConvertToImage());
+      double dScale3 = 3 * 255;
+      unsigned char* pixels = image.GetData();
+      ImageFileArray v = rIF.getArray();
+      for (unsigned int ix = 0; ix < rIF.nx(); ix++) {
+        for (unsigned int iy = 0; iy < rIF.ny(); iy++) {
+          unsigned int iBase = 3 * (iy * nx + ix);
+          if (ix == 0 && iy == 0 && (pixels[iBase] == pixels[iBase+1] && pixels[iBase+1] == pixels[iBase+2]))
+            bMonochrome = true;
+          if (bMonochrome) {
+            v[ix][ny - 1 - iy] = (pixels[iBase]+pixels[iBase+1]+pixels[iBase+2]) / dScale3;
+          } else {
+            double dR = pixels[iBase] / 255.;
+            double dG = pixels[iBase+1] / 255.;
+            double dB = pixels[iBase+2] / 255.;
+            v[ix][ny - 1 - iy] = ImageFile::colorToGrayscale (dR, dG, dB);
+          }
+        }
+      }
+      OnUpdate(this, NULL);
+      GetDocument()->UpdateAllViews();
+      if (theApp->getAskDeleteNewDocs())
+        GetDocument()->Modify(true);
+    }
+  }
+}
+
+void
+ImageFileView::OnExport (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+  if (v != NULL && nx != 0 && ny != 0) {
+    if (! m_bMinSpecified || ! m_bMaxSpecified) {
+      double min, max;
+      rIF.getMinMax (min, max);
+      if (! m_bMinSpecified)
+        m_dMinPixel = min;
+      if (! m_bMaxSpecified)
+        m_dMaxPixel = max;
+    }
+
+    DialogExportParameters dialogExport (getFrameForChild(), m_iDefaultExportFormatID);
+    if (dialogExport.ShowModal() == wxID_OK) {
+      wxString strFormatName (dialogExport.getFormatName (), wxConvUTF8);
+      m_iDefaultExportFormatID = ImageFile::convertExportFormatNameToID (strFormatName.mb_str(wxConvUTF8));
+
+      wxString strExt;
+      wxString strWildcard;
+      if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PGM || m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PGMASCII) {
+        strExt = _T(".pgm");
+        strWildcard = _T("PGM Files (*.pgm)|*.pgm");
+      }
+#ifdef HAVE_PNG
+      else if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PNG || m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_PNG16) {
+        strExt = _T(".png");
+        strWildcard = _T("PNG Files (*.png)|*.png");
+      }
+#endif
+#ifdef HAVE_CTN_DICOM
+      else if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_DICOM) {
+        strExt = _T("");
+        strWildcard = _T("DICOM Files (*.*)|*.*");
+      }
+#endif
+      else if (m_iDefaultExportFormatID == ImageFile::EXPORT_FORMAT_TEXT) {
+        strExt = _T(".txt");
+        strWildcard = _T("Text (*.txt)|*.txt");
+      }
+      else {
+        strExt = _T("");
+        strWildcard = _T("Miscellaneous (*.*)|*.*");
+      }
+
+#if WXWIN_COMPATIBILITY_2_4
+      const wxString& strFilename = wxFileSelector (_T("Export Filename"), _T(""),
+        _T(""), strExt, strWildcard, wxOVERWRITE_PROMPT | wxHIDE_READONLY | wxSAVE);
+#else
+      const wxString& strFilename = wxFileSelector (_T("Export Filename"), _T(""),
+        _T(""), strExt, strWildcard, wxOVERWRITE_PROMPT | wxSAVE);
+#endif
+      if (strFilename) {
+        rIF.exportImage (strFormatName.mb_str(wxConvUTF8), strFilename.mb_str(wxConvUTF8), 1, 1, m_dMinPixel, m_dMaxPixel);
+        *theApp->getLog() << _T("Exported file ") << strFilename << _T("\n");
+      }
+    }
+  }
+}
+
+void
+ImageFileView::OnScaleSize (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  unsigned int iOldNX = rIF.nx();
+  unsigned int iOldNY = rIF.ny();
+
+  DialogGetXYSize dialogGetXYSize (getFrameForChild(), _T("Set New X & Y Dimensions"), iOldNX, iOldNY);
+  if (dialogGetXYSize.ShowModal() == wxID_OK) {
+    unsigned int iNewNX = dialogGetXYSize.getXSize();
+    unsigned int iNewNY = dialogGetXYSize.getYSize();
+    std::ostringstream os;
+    os << "Scale Size from (" << iOldNX << "," << iOldNY << ") to (" << iNewNX << "," << iNewNY << ")";
+    ImageFileDocument* pScaledDoc = theApp->newImageDoc();
+    if (! pScaledDoc) {
+      sys_error (ERR_SEVERE, "Unable to create image file");
+      return;
+    }
+    ImageFile& rScaledIF = pScaledDoc->getImageFile();
+    rScaledIF.setArraySize (iNewNX, iNewNY);
+    rScaledIF.labelsCopy (rIF);
+    rScaledIF.labelAdd (os.str().c_str());
+    rIF.scaleImage (rScaledIF);
+    *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+    if (theApp->getAskDeleteNewDocs())
+      pScaledDoc->Modify (true);
+    OnUpdate(this, NULL);
+    pScaledDoc->UpdateAllViews (this);
+    pScaledDoc->getView()->setInitialClientSize();
+    pScaledDoc->Activate();
+  }
+}
+
+#if wxUSE_GLCANVAS
+void
+ImageFileView::OnConvert3d (wxCommandEvent& event)
+{
+  ImageFile& rIF = GetDocument()->getImageFile();
+  Graph3dFileDocument* pGraph3d = theApp->newGraph3dDoc();
+  pGraph3d->getView()->getFrame()->Show (false);
+  pGraph3d->setBadFileOpen();
+  pGraph3d->createFromImageFile (rIF);
+  pGraph3d->UpdateAllViews();
+  pGraph3d->getView()->getFrame()->Show (true);
+  pGraph3d->getView()->Activate(true);
+  ::wxYield();
+  pGraph3d->getView()->getCanvas()->SetFocus();
+}
+#endif
+
+void
+ImageFileView::OnPlotRow (wxCommandEvent& event)
+{
+  int xCursor, yCursor;
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
+    wxMessageBox (_T("No row selected. Please use left mouse button on image to select column"),_T("Error"));
+    return;
+  }
+
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  ImageFileArrayConst vImag = rIF.getImaginaryArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+
+  if (v != NULL && yCursor < ny) {
+    double* pX = new double [nx];
+    double* pYReal = new double [nx];
+    double *pYImag = NULL;
+    double *pYMag = NULL;
+    if (rIF.isComplex()) {
+      pYImag = new double [nx];
+      pYMag = new double [nx];
+    }
+    for (int i = 0; i < nx; i++) {
+      pX[i] = i;
+      pYReal[i] = v[i][yCursor];
+      if (rIF.isComplex()) {
+        pYImag[i] = vImag[i][yCursor];
+        pYMag[i] = ::sqrt (v[i][yCursor] * v[i][yCursor] + vImag[i][yCursor] * vImag[i][yCursor]);
+      }
+    }
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+    if (! pPlotDoc) {
+      sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+    } else {
+      PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+      std::ostringstream os;
+      os << "Row " << yCursor;
+      std::string title("title ");
+      title += os.str();
+      rPlotFile.addEzsetCommand (title.c_str());
+      rPlotFile.addEzsetCommand ("xlabel Column");
+      rPlotFile.addEzsetCommand ("ylabel Pixel Value");
+      rPlotFile.addEzsetCommand ("lxfrac 0");
+      rPlotFile.addEzsetCommand ("box");
+      rPlotFile.addEzsetCommand ("grid");
+      rPlotFile.addEzsetCommand ("curve 1");
+      rPlotFile.addEzsetCommand ("color 1");
+      if (rIF.isComplex()) {
+        rPlotFile.addEzsetCommand ("dash 1");
+        rPlotFile.addEzsetCommand ("curve 2");
+        rPlotFile.addEzsetCommand ("color 4");
+        rPlotFile.addEzsetCommand ("dash 3");
+        rPlotFile.addEzsetCommand ("curve 3");
+        rPlotFile.addEzsetCommand ("color 0");
+        rPlotFile.addEzsetCommand ("solid");
+        rPlotFile.setCurveSize (4, nx);
+      } else
+        rPlotFile.setCurveSize (2, nx);
+      rPlotFile.addColumn (0, pX);
+      rPlotFile.addColumn (1, pYReal);
+      if (rIF.isComplex()) {
+        rPlotFile.addColumn (2, pYImag);
+        rPlotFile.addColumn (3, pYMag);
+      }
+      for (unsigned int iL = 0; iL < rIF.nLabels(); iL++)
+        rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str());
+      os << ": plot of " << wxConvUTF8.cWX2MB(dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      rPlotFile.addDescription (os.str().c_str());
+    }
+    delete pX;
+    delete pYReal;
+    if (rIF.isComplex()) {
+      delete pYImag;
+      delete pYMag;
+    }
+    if (theApp->getAskDeleteNewDocs())
+      pPlotDoc->Modify (true);
+    pPlotDoc->getView()->getFrame()->Show(true);
+    pPlotDoc->UpdateAllViews ();
+    pPlotDoc->Activate();
+  }
+}
+
+void
+ImageFileView::OnPlotCol (wxCommandEvent& event)
+{
+  int xCursor, yCursor;
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
+    wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error"));
+    return;
+  }
+
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  ImageFileArrayConst vImag = rIF.getImaginaryArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+
+  if (v != NULL && xCursor < nx) {
+    double* const pX = new double [ny];
+    double* const pYReal = new double [ny];
+    double* pYImag = NULL;
+    double* pYMag = NULL;
+    if (rIF.isComplex()) {
+      pYImag = new double [ny];
+      pYMag = new double [ny];
+    }
+    for (int i = 0; i < ny; i++) {
+      pX[i] = i;
+      pYReal[i] = v[xCursor][i];
+      if (rIF.isComplex()) {
+        pYImag[i] = vImag[xCursor][i];
+        pYMag[i] = ::sqrt (v[xCursor][i] * v[xCursor][i] + vImag[xCursor][i] * vImag[xCursor][i]);
+      }
+    }
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+    if (! pPlotDoc) {
+      sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+    } else {
+      PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+      std::ostringstream os;
+      os << "Column " << xCursor;
+      std::string title("title ");
+      title += os.str();
+      rPlotFile.addEzsetCommand (title.c_str());
+      rPlotFile.addEzsetCommand ("xlabel Row");
+      rPlotFile.addEzsetCommand ("ylabel Pixel Value");
+      rPlotFile.addEzsetCommand ("lxfrac 0");
+      rPlotFile.addEzsetCommand ("box");
+      rPlotFile.addEzsetCommand ("grid");
+      rPlotFile.addEzsetCommand ("curve 1");
+      rPlotFile.addEzsetCommand ("color 1");
+      if (rIF.isComplex()) {
+        rPlotFile.addEzsetCommand ("dash 1");
+        rPlotFile.addEzsetCommand ("curve 2");
+        rPlotFile.addEzsetCommand ("color 4");
+        rPlotFile.addEzsetCommand ("dash 3");
+        rPlotFile.addEzsetCommand ("curve 3");
+        rPlotFile.addEzsetCommand ("color 0");
+        rPlotFile.addEzsetCommand ("solid");
+        rPlotFile.setCurveSize (4, ny);
+      } else
+        rPlotFile.setCurveSize (2, ny);
+      rPlotFile.addColumn (0, pX);
+      rPlotFile.addColumn (1, pYReal);
+      if (rIF.isComplex()) {
+        rPlotFile.addColumn (2, pYImag);
+        rPlotFile.addColumn (3, pYMag);
+      }
+      for (unsigned int iL = 0; iL < rIF.nLabels(); iL++)
+        rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str());
+      os << " : plot of " << wxConvUTF8.cWX2MB(dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      rPlotFile.addDescription (os.str().c_str());
+    }
+    delete pX;
+    delete pYReal;
+    if (rIF.isComplex()) {
+      delete pYImag;
+      delete pYMag;
+    }
+    if (theApp->getAskDeleteNewDocs())
+      pPlotDoc->Modify (true);
+    pPlotDoc->getView()->getFrame()->Show(true);
+    pPlotDoc->UpdateAllViews ();
+    pPlotDoc->Activate();
+  }
+}
+
+#ifdef HAVE_FFT
+void
+ImageFileView::OnPlotFFTRow (wxCommandEvent& event)
+{
+  int xCursor, yCursor;
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
+    wxMessageBox (_T("No row selected. Please use left mouse button on image to select column"),_T("Error"));
+    return;
+  }
+
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  ImageFileArrayConst vImag = rIF.getImaginaryArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+
+  if (v != NULL && yCursor < ny) {
+    fftw_complex* pcIn = static_cast<fftw_complex*>(fftw_malloc (sizeof(fftw_complex) * nx));
+
+    int i;
+    for (i = 0; i < nx; i++) {
+      pcIn[i][0] = v[i][yCursor];
+      if (rIF.isComplex())
+        pcIn[i][1] = vImag[i][yCursor];
+      else
+        pcIn[i][1] = 0;
+    }
+
+    fftw_plan plan = fftw_plan_dft_1d (nx, pcIn, pcIn, FFTW_FORWARD, FFTW_ESTIMATE);
+    fftw_execute (plan);
+    fftw_destroy_plan (plan);
+
+    double* pX = new double [nx];
+    double* pYReal = new double [nx];
+    double* pYImag = new double [nx];
+    double* pYMag = new double [nx];
+    for (i = 0; i < nx; i++) {
+      pX[i] = i;
+      pYReal[i] = pcIn[i][0] / nx;
+      pYImag[i] = pcIn[i][1] / nx;
+      pYMag[i] = ::sqrt (pcIn[i][0] * pcIn[i][0] + pcIn[i][1] * pcIn[i][1]);
+    }
+    Fourier::shuffleFourierToNaturalOrder (pYReal, nx);
+    Fourier::shuffleFourierToNaturalOrder (pYImag, nx);
+    Fourier::shuffleFourierToNaturalOrder (pYMag, nx);
+
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+    if (! pPlotDoc) {
+      sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+    } else {
+      PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+      std::ostringstream os;
+      os << "Row " << yCursor;
+      std::string title("title ");
+      title += os.str();
+      rPlotFile.addEzsetCommand (title.c_str());
+      rPlotFile.addEzsetCommand ("xlabel Column");
+      rPlotFile.addEzsetCommand ("ylabel Pixel Value");
+      rPlotFile.addEzsetCommand ("lxfrac 0");
+      rPlotFile.addEzsetCommand ("curve 1");
+      rPlotFile.addEzsetCommand ("color 1");
+      rPlotFile.addEzsetCommand ("dash 1");
+      rPlotFile.addEzsetCommand ("curve 2");
+      rPlotFile.addEzsetCommand ("color 4");
+      rPlotFile.addEzsetCommand ("dash 3");
+      rPlotFile.addEzsetCommand ("curve 3");
+      rPlotFile.addEzsetCommand ("color 0");
+      rPlotFile.addEzsetCommand ("solid");
+      rPlotFile.addEzsetCommand ("box");
+      rPlotFile.addEzsetCommand ("grid");
+      rPlotFile.setCurveSize (4, nx);
+      rPlotFile.addColumn (0, pX);
+      rPlotFile.addColumn (1, pYReal);
+      rPlotFile.addColumn (2, pYImag);
+      rPlotFile.addColumn (3, pYMag);
+      for (unsigned int iL = 0; iL < rIF.nLabels(); iL++)
+        rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str());
+      os << ": FFT plot of " << wxConvUTF8.cWX2MB(dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      rPlotFile.addDescription (os.str().c_str());
+    }
+    delete pX;
+    delete pYReal;
+    delete pYImag;
+    delete pYMag;
+    fftw_free(pcIn);
+
+    if (theApp->getAskDeleteNewDocs())
+      pPlotDoc->Modify (true);
+    pPlotDoc->getView()->getFrame()->Show(true);
+    pPlotDoc->UpdateAllViews ();
+    pPlotDoc->Activate();
+  }
+}
+
+void
+ImageFileView::OnPlotFFTCol (wxCommandEvent& event)
+{
+  int xCursor, yCursor;
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
+    wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error"));
+    return;
+  }
+
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  ImageFileArrayConst vImag = rIF.getImaginaryArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+
+  if (v != NULL && xCursor < nx) {
+    fftw_complex* pcIn = new fftw_complex [ny];
+    double *pdTemp = new double [ny];
+
+    int i;
+    for (i = 0; i < ny; i++)
+      pdTemp[i] = v[xCursor][i];
+    Fourier::shuffleNaturalToFourierOrder (pdTemp, ny);
+    for (i = 0; i < ny; i++)
+      pcIn[i][0] = pdTemp[i];
+
+    for (i = 0; i < ny; i++) {
+      if (rIF.isComplex())
+        pdTemp[i] = vImag[xCursor][i];
+      else
+        pdTemp[i] = 0;
+    }
+    Fourier::shuffleNaturalToFourierOrder (pdTemp, ny);
+    for (i = 0; i < ny; i++)
+      pcIn[i][1] = pdTemp[i];
+
+    fftw_plan plan = fftw_plan_dft_1d (ny, pcIn, pcIn, FFTW_BACKWARD, FFTW_ESTIMATE);
+    fftw_execute (plan);
+    fftw_destroy_plan (plan);
+
+    double* pX = new double [ny];
+    double* pYReal = new double [ny];
+    double* pYImag = new double [ny];
+    double* pYMag = new double [ny];
+    for (i = 0; i < ny; i++) {
+      pX[i] = i;
+      pYReal[i] = pcIn[i][0] / ny;
+      pYImag[i] = pcIn[i][1] / ny;
+      pYMag[i] = ::sqrt (pcIn[i][0] * pcIn[i][0] + pcIn[i][1] * pcIn[i][1]);
+    }
+
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+    if (! pPlotDoc) {
+      sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+    } else {
+      PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+      std::ostringstream os;
+      os << "Column " << xCursor;
+      std::string title("title ");
+      title += os.str();
+      rPlotFile.addEzsetCommand (title.c_str());
+      rPlotFile.addEzsetCommand ("xlabel Column");
+      rPlotFile.addEzsetCommand ("ylabel Pixel Value");
+      rPlotFile.addEzsetCommand ("lxfrac 0");
+      rPlotFile.addEzsetCommand ("curve 1");
+      rPlotFile.addEzsetCommand ("color 1");
+      rPlotFile.addEzsetCommand ("dash 1");
+      rPlotFile.addEzsetCommand ("curve 2");
+      rPlotFile.addEzsetCommand ("color 4");
+      rPlotFile.addEzsetCommand ("dash 3");
+      rPlotFile.addEzsetCommand ("curve 3");
+      rPlotFile.addEzsetCommand ("color 0");
+      rPlotFile.addEzsetCommand ("solid");
+      rPlotFile.addEzsetCommand ("box");
+      rPlotFile.addEzsetCommand ("grid");
+      rPlotFile.setCurveSize (4, ny);
+      rPlotFile.addColumn (0, pX);
+      rPlotFile.addColumn (1, pYReal);
+      rPlotFile.addColumn (2, pYImag);
+      rPlotFile.addColumn (3, pYMag);
+      for (unsigned int iL = 0; iL < rIF.nLabels(); iL++)
+        rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str());
+      os << ": FFT plot of " << wxConvUTF8.cWX2MB(dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      rPlotFile.addDescription (os.str().c_str());
+    }
+    delete pX;
+    delete pYReal;
+    delete pYImag;
+    delete pYMag;
+    delete pdTemp;
+    delete [] pcIn;
+
+    if (theApp->getAskDeleteNewDocs())
+      pPlotDoc->Modify (true);
+    pPlotDoc->getView()->getFrame()->Show(true);
+    pPlotDoc->UpdateAllViews ();
+    pPlotDoc->Activate();
+  }
+}
+#endif
+
+void
+ImageFileView::OnCompareCol (wxCommandEvent& event)
+{
+  int xCursor, yCursor;
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
+    wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error"));
+    return;
+  }
+
+  std::vector<ImageFileDocument*> vecIFDoc;
+  theApp->getCompatibleImages (GetDocument(), vecIFDoc);
+  if (vecIFDoc.size() == 0) {
+    wxMessageBox (_T("No compatible images for Column Comparison"), _T("Error"));
+    return;
+  }
+  DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Comparison Image"), vecIFDoc, false);
+
+  if (dialogGetCompare.ShowModal() == wxID_OK) {
+    ImageFileDocument* pCompareDoc = dialogGetCompare.getImageFileDocument();
+    const ImageFile& rIF = GetDocument()->getImageFile();
+    const ImageFile& rCompareIF = pCompareDoc->getImageFile();
+
+    ImageFileArrayConst v1 = rIF.getArray();
+    ImageFileArrayConst v2 = rCompareIF.getArray();
+    int nx = rIF.nx();
+    int ny = rIF.ny();
+
+    if (v1 != NULL && xCursor < nx) {
+      double* pX = new double [ny];
+      double* pY1 = new double [ny];
+      double* pY2 = new double [ny];
+      for (int i = 0; i < ny; i++) {
+        pX[i] = i;
+        pY1[i] = v1[xCursor][i];
+        pY2[i] = v2[xCursor][i];
+      }
+      PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+      if (! pPlotDoc) {
+        sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+      } else {
+        PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+        std::ostringstream os;
+        os << "Column " << xCursor << ": Comparison";
+        std::string title("title ");
+        title += os.str();
+        rPlotFile.addEzsetCommand (title.c_str());
+        rPlotFile.addEzsetCommand ("xlabel Row");
+        rPlotFile.addEzsetCommand ("ylabel Pixel Value");
+        rPlotFile.addEzsetCommand ("lxfrac 0");
+        rPlotFile.addEzsetCommand ("curve 1");
+        rPlotFile.addEzsetCommand ("color 2");
+        rPlotFile.addEzsetCommand ("curve 2");
+        rPlotFile.addEzsetCommand ("color 4");
+        rPlotFile.addEzsetCommand ("dash 5");
+        rPlotFile.addEzsetCommand ("box");
+        rPlotFile.addEzsetCommand ("grid");
+        rPlotFile.setCurveSize (3, ny);
+        rPlotFile.addColumn (0, pX);
+        rPlotFile.addColumn (1, pY1);
+        rPlotFile.addColumn (2, pY2);
+
+        unsigned int iL;
+        for (iL = 0; iL < rIF.nLabels(); iL++) {
+          std::ostringstream os;
+          os << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str();
+          os << ": " << rIF.labelGet(iL).getLabelString();
+          rPlotFile.addDescription (os.str().c_str());
+        }
+        for (iL = 0; iL < rCompareIF.nLabels(); iL++) {
+          std::ostringstream os;
+          os << dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8);
+          os << ": ";
+          os << rCompareIF.labelGet(iL).getLabelString();
+          rPlotFile.addDescription (os.str().c_str());
+        }
+        os << " between " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << " and "
+           << dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8);
+        *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+        rPlotFile.addDescription (os.str().c_str());
+      }
+      delete pX;
+      delete pY1;
+      delete pY2;
+      if (theApp->getAskDeleteNewDocs())
+        pPlotDoc->Modify (true);
+      pPlotDoc->getView()->getFrame()->Show(true);
+      pPlotDoc->UpdateAllViews ();
+      pPlotDoc->Activate();
+    }
+  }
+}
+
+void
+ImageFileView::OnCompareRow (wxCommandEvent& event)
+{
+  int xCursor, yCursor;
+  if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
+    wxMessageBox (_T("No column selected. Please use left mouse button on image to select column"),_T("Error"));
+    return;
+  }
+
+  std::vector<ImageFileDocument*> vecIFDoc;
+  theApp->getCompatibleImages (GetDocument(), vecIFDoc);
+
+  if (vecIFDoc.size() == 0) {
+    wxMessageBox (_T("No compatible images for Row Comparison"), _T("Error"));
+    return;
+  }
+
+  DialogGetComparisonImage dialogGetCompare (getFrameForChild(), _T("Get Comparison Image"), vecIFDoc, false);
+
+  if (dialogGetCompare.ShowModal() == wxID_OK) {
+    ImageFileDocument* pCompareDoc = dialogGetCompare.getImageFileDocument();
+    const ImageFile& rIF = GetDocument()->getImageFile();
+    const ImageFile& rCompareIF = pCompareDoc->getImageFile();
+
+    ImageFileArrayConst v1 = rIF.getArray();
+    ImageFileArrayConst v2 = rCompareIF.getArray();
+    int nx = rIF.nx();
+    int ny = rIF.ny();
+
+    if (v1 != NULL && yCursor < ny) {
+      double* pX = new double [nx];
+      double* pY1 = new double [nx];
+      double* pY2 = new double [nx];
+      for (int i = 0; i < nx; i++) {
+        pX[i] = i;
+        pY1[i] = v1[i][yCursor];
+        pY2[i] = v2[i][yCursor];
+      }
+      PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+      if (! pPlotDoc) {
+        sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+      } else {
+        PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+        std::ostringstream os;
+        os << "Row " << yCursor << ": Comparison";
+        std::string title("title ");
+        title += os.str();
+        rPlotFile.addEzsetCommand (title.c_str());
+        rPlotFile.addEzsetCommand ("xlabel Column");
+        rPlotFile.addEzsetCommand ("ylabel Pixel Value");
+        rPlotFile.addEzsetCommand ("lxfrac 0");
+        rPlotFile.addEzsetCommand ("curve 1");
+        rPlotFile.addEzsetCommand ("color 2");
+        rPlotFile.addEzsetCommand ("curve 2");
+        rPlotFile.addEzsetCommand ("color 4");
+        rPlotFile.addEzsetCommand ("dash 5");
+        rPlotFile.addEzsetCommand ("box");
+        rPlotFile.addEzsetCommand ("grid");
+        rPlotFile.setCurveSize (3, nx);
+        rPlotFile.addColumn (0, pX);
+        rPlotFile.addColumn (1, pY1);
+        rPlotFile.addColumn (2, pY2);
+        unsigned int iL;
+        for (iL = 0; iL < rIF.nLabels(); iL++) {
+          std::ostringstream os;
+          os << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8);
+          os << ": ";
+          os << rIF.labelGet(iL).getLabelString();
+          rPlotFile.addDescription (os.str().c_str());
+        }
+        for (iL = 0; iL < rCompareIF.nLabels(); iL++) {
+          std::ostringstream os;
+          os << dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << ": "
+             << rCompareIF.labelGet(iL).getLabelString();
+          rPlotFile.addDescription (os.str().c_str());
+        }
+        os << " between " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8) << " and "
+           << dynamic_cast<wxFrame*>(pCompareDoc->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8);
+        *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+        rPlotFile.addDescription (os.str().c_str());
+      }
+      delete pX;
+      delete pY1;
+      delete pY2;
+      if (theApp->getAskDeleteNewDocs())
+        pPlotDoc->Modify (true);
+      pPlotDoc->getView()->getFrame()->Show(true);
+      pPlotDoc->UpdateAllViews ();
+      pPlotDoc->Activate();
+    }
+  }
+}
+
+static int NUMBER_HISTOGRAM_BINS = 256;
+
+void
+ImageFileView::OnPlotHistogram (wxCommandEvent& event)
+{
+  const ImageFile& rIF = GetDocument()->getImageFile();
+  ImageFileArrayConst v = rIF.getArray();
+  int nx = rIF.nx();
+  int ny = rIF.ny();
+
+  if (v != NULL && nx > 0 && ny > 0) {
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+    if (! pPlotDoc) {
+      sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+      return;
+    }
+
+    double* pX = new double [NUMBER_HISTOGRAM_BINS];
+    double* pY = new double [NUMBER_HISTOGRAM_BINS];
+    double dMin, dMax;
+    rIF.getMinMax (dMin, dMax);
+    double dBinWidth = (dMax - dMin) / NUMBER_HISTOGRAM_BINS;
+
+    for (int i = 0; i < NUMBER_HISTOGRAM_BINS; i++) {
+      pX[i] = dMin + (i + 0.5) * dBinWidth;
+      pY[i] = 0;
+    }
+    for (int ix = 0; ix < nx; ix++)
+      for (int iy = 0; iy < ny; iy++) {
+        int iBin = nearest<int> ((v[ix][iy] - dMin) / dBinWidth);
+        if (iBin >= 0 && iBin < NUMBER_HISTOGRAM_BINS)
+          pY[iBin] += 1;
+      }
+
+      PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+      std::ostringstream os;
+      os << "Histogram";
+      std::string title("title ");
+      title += os.str();
+      rPlotFile.addEzsetCommand (title.c_str());
+      rPlotFile.addEzsetCommand ("xlabel Pixel Value");
+      rPlotFile.addEzsetCommand ("ylabel Count");
+      rPlotFile.addEzsetCommand ("box");
+      rPlotFile.addEzsetCommand ("grid");
+      rPlotFile.setCurveSize (2, NUMBER_HISTOGRAM_BINS);
+      rPlotFile.addColumn (0, pX);
+      rPlotFile.addColumn (1, pY);
+      for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) {
+        std::ostringstream os;
+        os << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().mb_str(wxConvUTF8);
+        os << ": " << rIF.labelGet(iL).getLabelString();
+        rPlotFile.addDescription (os.str().c_str());
+      }
+      os << " plot of " << wxConvUTF8.cWX2MB(dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str());
+      *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+      rPlotFile.addDescription (os.str().c_str());
+      delete pX;
+      delete pY;
+      if (theApp->getAskDeleteNewDocs())
+        pPlotDoc->Modify (true);
+      pPlotDoc->getView()->getFrame()->Show(true);
+      pPlotDoc->UpdateAllViews ();
+      pPlotDoc->Activate();
+  }
+}
+
+
+// PhantomCanvas
+
+PhantomCanvas::PhantomCanvas (PhantomFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style)
+  : wxScrolledWindow(frame, -1, pos, size, style), m_pView(v)
+{
+}
+
+PhantomCanvas::~PhantomCanvas ()
+{
+  m_pView = NULL;
+}
+
+void
+PhantomCanvas::OnDraw (wxDC& dc)
+{
+  if (m_pView)
+    m_pView->OnDraw(& dc);
+}
+
+wxSize
+PhantomCanvas::GetBestSize() const
+{
+  if (! m_pView)
+    return wxSize(0,0);
+
+  int xSize, ySize;
+  theApp->getMainFrame()->GetClientSize (&xSize, &ySize);
+  xSize = maxValue<int> (xSize, ySize);
+#ifdef CTSIM_MDI
+  ySize = xSize = (xSize / 4);
+#else
+  xSize = ySize = static_cast<int>(ySize * .7);
+#endif
+
+  return wxSize (xSize, ySize);
+}
+
+
+
+// PhantomFileView
+
+IMPLEMENT_DYNAMIC_CLASS(PhantomFileView, wxView)
+
+BEGIN_EVENT_TABLE(PhantomFileView, wxView)
+EVT_MENU(PHMMENU_FILE_PROPERTIES, PhantomFileView::OnProperties)
+EVT_MENU(PHMMENU_PROCESS_RASTERIZE, PhantomFileView::OnRasterize)
+EVT_MENU(PHMMENU_PROCESS_PROJECTIONS, PhantomFileView::OnProjections)
+END_EVENT_TABLE()
+
+PhantomFileView::PhantomFileView()
+: wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pFileMenu(0)
+{
+#if defined(DEBUG) || defined(_DEBUG)
+  m_iDefaultNDet = 165;
+  m_iDefaultNView = 180;
+  m_iDefaultNSample = 1;
+#else
+  m_iDefaultNDet = 367;
+  m_iDefaultNView = 320;
+  m_iDefaultNSample = 2;
+#endif
+  m_iDefaultOffsetView = 0;
+  m_dDefaultRotation = 1;
+  m_dDefaultFocalLength = 2;
+  m_dDefaultCenterDetectorLength = 2;
+  m_dDefaultViewRatio = 1;
+  m_dDefaultScanRatio = 1;
+  m_iDefaultGeometry = Scanner::GEOMETRY_PARALLEL;
+  m_iDefaultTrace = Trace::TRACE_NONE;
+
+#ifdef DEBUG
+  m_iDefaultRasterNX = 115;
+  m_iDefaultRasterNY = 115;
+  m_iDefaultRasterNSamples = 1;
+#else
+  m_iDefaultRasterNX = 256;
+  m_iDefaultRasterNY = 256;
+  m_iDefaultRasterNSamples = 2;
+#endif
+  m_dDefaultRasterViewRatio = 1;
+}
+
+PhantomFileView::~PhantomFileView()
+{
+  GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu);
+  GetDocumentManager()->ActivateView(this, FALSE);
+}
+
+void
+PhantomFileView::OnProperties (wxCommandEvent& event)
+{
+  const int idPhantom = GetDocument()->getPhantomID();
+  const wxString& namePhantom = GetDocument()->getPhantomName();
+  std::ostringstream os;
+  os << "Phantom " << namePhantom.c_str() << " (" << idPhantom << ")" << "\n";
+  const Phantom& rPhantom = GetDocument()->getPhantom();
+  rPhantom.printDefinitions (os);
+#if DEBUG
+  rPhantom.print (os);
+#endif
+  *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n");
+  wxMessageBox (wxConvUTF8.cMB2WX(os.str().c_str()), _T("Phantom Properties"));
+  GetDocument()->Activate();
+}
+
+
+void
+PhantomFileView::OnProjections (wxCommandEvent& event)
+{
+  DialogGetProjectionParameters dialogProjection (getFrameForChild(),
+    m_iDefaultNDet, m_iDefaultNView, m_iDefaultOffsetView, m_iDefaultNSample, m_dDefaultRotation,
+    m_dDefaultFocalLength, m_dDefaultCenterDetectorLength, m_dDefaultViewRatio, m_dDefaultScanRatio,
+    m_iDefaultGeometry, m_iDefaultTrace);
+  int retVal = dialogProjection.ShowModal();
+  if (retVal != wxID_OK)
+    return;
+
+  m_iDefaultNDet = dialogProjection.getNDet();
+  m_iDefaultNView = dialogProjection.getNView();
+  m_iDefaultOffsetView = dialogProjection.getOffsetView();
+  m_iDefaultNSample = dialogProjection.getNSamples();
+  m_iDefaultTrace = dialogProjection.getTrace();
+  m_dDefaultRotation = dialogProjection.getRotAngle();
+  m_dDefaultFocalLength = dialogProjection.getFocalLengthRatio();
+  m_dDefaultCenterDetectorLength = dialogProjection.getCenterDetectorLengthRatio();
+  m_dDefaultViewRatio = dialogProjection.getViewRatio();
+  m_dDefaultScanRatio = dialogProjection.getScanRatio();
+  wxString sGeometry (dialogProjection.getGeometry(), wxConvUTF8);
+  m_iDefaultGeometry = Scanner::convertGeometryNameToID (sGeometry.mb_str(wxConvUTF8));
+  double dRotationRadians = m_dDefaultRotation;
+  m_dDefaultRotation /= TWOPI;  // convert back to fraction of a circle
+
+  if (m_iDefaultNDet <= 0 || m_iDefaultNView <= 0 || sGeometry == _T(""))
+    return;
+
+  const Phantom& rPhantom = GetDocument()->getPhantom();
+  Scanner theScanner (rPhantom, sGeometry.mb_str(wxConvUTF8), m_iDefaultNDet, m_iDefaultNView, m_iDefaultOffsetView, m_iDefaultNSample,
+    dRotationRadians, m_dDefaultFocalLength, m_dDefaultCenterDetectorLength, m_dDefaultViewRatio, m_dDefaultScanRatio);
+  if (theScanner.fail()) {
+    wxString msg = _T("Failed making scanner\n");
+    msg += wxConvUTF8.cMB2WX(theScanner.failMessage().c_str());
+    *theApp->getLog() << msg << _T("\n");
+    wxMessageBox (msg, _T("Error"));
+    return;
+  }
+
+  std::ostringstream os;
+  os << "Projections for " << rPhantom.name().c_str()
+     << ": nDet=" << m_iDefaultNDet
+     << ", nView=" << m_iDefaultNView
+     << ", gantry offset=" << m_iDefaultOffsetView
+     << ", nSamples=" << m_iDefaultNSample
+     << ", RotAngle=" << m_dDefaultRotation
+     << ", FocalLengthRatio=" << m_dDefaultFocalLength
+     << ", CenterDetectorLengthRatio=" << m_dDefaultCenterDetectorLength
+     << ", ViewRatio=" << m_dDefaultViewRatio
+     << ", ScanRatio=" << m_dDefaultScanRatio
+     << ", Geometry=" << sGeometry.mb_str(wxConvUTF8)
+     << ", FanBeamAngle=" << convertRadiansToDegrees (theScanner.fanBeamAngle());
+
+  Timer timer;
+  Projections* pProj = NULL;
+  if (m_iDefaultTrace > Trace::TRACE_CONSOLE) {
+    pProj = new Projections;
+    pProj->initFromScanner (theScanner);
+
+    ProjectionsDialog dialogProjections (theScanner, *pProj, rPhantom, m_iDefaultTrace, dynamic_cast<wxWindow*>(getFrameForChild()));
+    for (int iView = 0; iView < pProj->nView(); iView++) {
+      ::wxYield();
+      if (dialogProjections.isCancelled() || ! dialogProjections.projectView (iView)) {
+        delete pProj;
+        return;
+      }
+      ::wxYield();
+      while (dialogProjections.isPaused()) {
+        ::wxYield();
+        ::wxMilliSleep(50);
+      }
+    }
+  } else {
+#if HAVE_WXTHREADS
+    if (theApp->getUseBackgroundTasks()) {
+      ProjectorSupervisorThread* pProjector = new ProjectorSupervisorThread
+        (this, m_iDefaultNDet, m_iDefaultNView, m_iDefaultOffsetView, 
+         sGeometry.mb_str(wxConvUTF8), m_iDefaultNSample, dRotationRadians,
+         m_dDefaultFocalLength, m_dDefaultCenterDetectorLength, m_dDefaultViewRatio, 
+         m_dDefaultScanRatio, wxConvUTF8.cMB2WX(os.str().c_str()));
+      if (pProjector->Create() != wxTHREAD_NO_ERROR) {
+        sys_error (ERR_SEVERE, "Error creating projector thread");
+        delete pProjector;
+        return;
+      }
+      pProjector->SetPriority(60);
+      pProjector->Run();
+      return;
+    } else
+#endif // HAVE_WXTHREADS
+    {
+      pProj = new Projections;
+      pProj->initFromScanner (theScanner);
+      wxProgressDialog dlgProgress (_T("Projection"), _T("Projection Progress"), pProj->nView() + 1, getFrameForChild(), wxPD_CAN_ABORT );
+      for (int i = 0; i < pProj->nView(); i++) {
+        //theScanner.collectProjections (*pProj, rPhantom, i, 1, true, m_iDefaultTrace);
+        theScanner.collectProjections (*pProj, rPhantom, i, 1, theScanner.offsetView(), true, m_iDefaultTrace);
+        if ((i + 1) % ITER_PER_UPDATE == 0)
+          if (! dlgProgress.Update (i+1)) {
+            delete pProj;
+            return;
+          }
+      }
+    }
+  }
+
+  *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+  pProj->setRemark (os.str());
+  pProj->setCalcTime (timer.timerEnd());
+
+  ProjectionFileDocument* pProjectionDoc = theApp->newProjectionDoc();
+  if (! pProjectionDoc) {
+    sys_error (ERR_SEVERE, "Unable to create projection document");
+    return;
+  }
+  pProjectionDoc->setProjections (pProj);
+  if (theApp->getAskDeleteNewDocs())
+    pProjectionDoc-> Modify(true);
+  OnUpdate(this, NULL);
+  pProjectionDoc->UpdateAllViews (this);
+  pProjectionDoc->getView()->setInitialClientSize();
+  pProjectionDoc->Activate();
+}
+void
+PhantomFileView::OnRasterize (wxCommandEvent& event)
+{
+  DialogGetRasterParameters dialogRaster (getFrameForChild(), m_iDefaultRasterNX, m_iDefaultRasterNY,
+    m_iDefaultRasterNSamples, m_dDefaultRasterViewRatio);
+  int retVal = dialogRaster.ShowModal();
+  if (retVal != wxID_OK)
+    return;
+
+  m_iDefaultRasterNX = dialogRaster.getXSize();
+  m_iDefaultRasterNY  = dialogRaster.getYSize();
+  m_iDefaultRasterNSamples = dialogRaster.getNSamples();
+  m_dDefaultRasterViewRatio = dialogRaster.getViewRatio();
+  if (m_iDefaultRasterNSamples < 1)
+    m_iDefaultRasterNSamples = 1;
+  if (m_dDefaultRasterViewRatio < 0)
+    m_dDefaultRasterViewRatio = 0;
+  if (m_iDefaultRasterNX <= 0 || m_iDefaultRasterNY <= 0)
+    return;
+
+  const Phantom& rPhantom = GetDocument()->getPhantom();
+  std::ostringstream os;
+  os << "Rasterize Phantom " << rPhantom.name() << ": XSize=" << m_iDefaultRasterNX << ", YSize="
+    << m_iDefaultRasterNY << ", ViewRatio=" << m_dDefaultRasterViewRatio << ", nSamples="
+    << m_iDefaultRasterNSamples;;
+
+#if HAVE_WXTHREADS
+  if (theApp->getUseBackgroundTasks()) {
+    RasterizerSupervisorThread* pThread = new RasterizerSupervisorThread
+      (this, m_iDefaultRasterNX, m_iDefaultRasterNY,
+       m_iDefaultRasterNSamples, m_dDefaultRasterViewRatio, 
+       wxConvUTF8.cMB2WX(os.str().c_str()));
+    if (pThread->Create() != wxTHREAD_NO_ERROR) {
+      *theApp->getLog() << _T("Error creating rasterizer thread\n");
+      return;
+    }
+    pThread->SetPriority (60);
+    pThread->Run();
+  } else
+#endif
+  {
+    ImageFile* pImageFile = new ImageFile (m_iDefaultRasterNX, m_iDefaultRasterNY);
+
+    wxProgressDialog dlgProgress (_T("Rasterize"),
+                                  _T("Rasterization Progress"),
+                                  pImageFile->nx() + 1,
+                                  getFrameForChild(),
+                                  wxPD_CAN_ABORT );
+    Timer timer;
+    for (unsigned int i = 0; i < pImageFile->nx(); i++) {
+      rPhantom.convertToImagefile (*pImageFile, m_dDefaultRasterViewRatio,
+                                   m_iDefaultRasterNSamples, Trace::TRACE_NONE,
+                                   i, 1, true);
+      if ((i + 1) % ITER_PER_UPDATE == 0)
+        if (! dlgProgress.Update (i+1)) {
+          delete pImageFile;
+          return;
+        }
+    }
+
+    ImageFileDocument* pRasterDoc = theApp->newImageDoc();
+    if (! pRasterDoc) {
+      sys_error (ERR_SEVERE, "Unable to create image file");
+      return;
+    }
+    pRasterDoc->setImageFile (pImageFile);
+    if (theApp->getAskDeleteNewDocs())
+      pRasterDoc->Modify (true);
+    *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+    pImageFile->labelAdd (os.str().c_str(), timer.timerEnd());
+
+    pRasterDoc->UpdateAllViews(this);
+    pRasterDoc->getView()->setInitialClientSize();
+    pRasterDoc->Activate();
+  }
+}
+
+
+PhantomCanvas*
+PhantomFileView::CreateCanvas (wxFrame *parent)
+{
+  PhantomCanvas* pCanvas =
+    new PhantomCanvas (this, parent, wxPoint(-1,-1),
+                       wxSize(-1,-1), wxFULL_REPAINT_ON_RESIZE);
+  pCanvas->SetBackgroundColour(*wxWHITE);
+  pCanvas->ClearBackground();
+  return pCanvas;
+}
+
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view)
+{
+#if CTSIM_MDI
+  wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Phantom Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#else
+  wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Phantom Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#endif
+  theApp->setIconForFrame (subframe);
+
+  m_pFileMenu = new wxMenu;
+
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+  m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As..."));
+  m_pFileMenu->Append(wxID_CLOSE, _T("&Close"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(PHMMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(wxID_PRINT, _T("&Print..."));
+  m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+  m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+  GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu);
+
+  wxMenu *process_menu = new wxMenu;
+  process_menu->Append(PHMMENU_PROCESS_RASTERIZE, _T("&Rasterize...\tCtrl-R"));
+  process_menu->Append(PHMMENU_PROCESS_PROJECTIONS, _T("&Projections...\tCtrl-J"));
+
+  wxMenu *help_menu = new wxMenu;
+  help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips"));
+  help_menu->Append (IDH_QUICKSTART, _T("&Quick Start"));
+  help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar *menu_bar = new wxMenuBar;
+
+  menu_bar->Append(m_pFileMenu, _T("&File"));
+  menu_bar->Append(process_menu, _T("&Process"));
+  menu_bar->Append(help_menu, _T("&Help"));
+
+  subframe->SetMenuBar(menu_bar);
+  subframe->Centre(wxBOTH);
+
+  wxAcceleratorEntry accelEntries[3];
+  accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('J'), PHMMENU_PROCESS_PROJECTIONS);
+  accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('R'), PHMMENU_PROCESS_RASTERIZE);
+  accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('I'), PHMMENU_FILE_PROPERTIES);
+  wxAcceleratorTable accelTable (3, accelEntries);
+  subframe->SetAcceleratorTable (accelTable);
+
+  return subframe;
+}
+
+
+bool
+PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+{
+  m_pFrame = CreateChildFrame(doc, this);
+  SetFrame(m_pFrame);
+  m_pCanvas = CreateCanvas (m_pFrame);
+  m_pFrame->SetClientSize (m_pCanvas->GetBestSize());
+  m_pCanvas->SetClientSize (m_pCanvas->GetBestSize());
+  m_pFrame->SetTitle (doc->GetFilename());
+
+  m_pFrame->Show(true);
+  Activate(true);
+
+  return true;
+}
+
+void
+PhantomFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+{
+  if (m_pCanvas)
+    m_pCanvas->Refresh();
+}
+
+bool
+PhantomFileView::OnClose (bool deleteWindow)
+{
+  if (! GetDocument() || ! GetDocument()->Close())
+    return false;
+
+  Activate(false);
+  if (m_pCanvas) {
+    m_pCanvas->setView(NULL);
+    m_pCanvas = NULL;
+  }
+  wxString s(wxTheApp->GetAppName());
+  if (m_pFrame)
+    m_pFrame->SetTitle(s);
+
+  SetFrame(NULL);
+
+  if (deleteWindow) {
+    delete m_pFrame;
+    m_pFrame = NULL;
+    if (GetDocument() && GetDocument()->getBadFileOpen())
+      ::wxYield();  // wxWindows bug workaround
+  }
+
+  return true;
+}
+
+void
+PhantomFileView::OnDraw (wxDC* dc)
+{
+  int xsize, ysize;
+  m_pCanvas->GetClientSize (&xsize, &ysize);
+  SGPDriver driver (dc, xsize, ysize);
+  SGP sgp (driver);
+  const Phantom& rPhantom = GetDocument()->getPhantom();
+  sgp.setColor (C_RED);
+  rPhantom.show (sgp);
+}
+
+// ProjectionCanvas
+
+ProjectionFileCanvas::ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style)
+: wxScrolledWindow(frame, -1, pos, size, style)
+{
+  m_pView = v;
+}
+
+ProjectionFileCanvas::~ProjectionFileCanvas ()
+{
+  m_pView = NULL;
+}
+
+void
+ProjectionFileCanvas::OnDraw(wxDC& dc)
+{
+  if (m_pView)
+    m_pView->OnDraw(& dc);
+}
+
+wxSize
+ProjectionFileCanvas::GetBestSize () const
+{
+  const int iMinX = 50;
+  const int iMinY = 20;
+  wxSize bestSize (iMinX,iMinY);
+
+  if (m_pView) {
+    Projections& rProj = m_pView->GetDocument()->getProjections();
+    bestSize.Set (rProj.nDet(), rProj.nView());
+  }
+
+  if (bestSize.x > 800)
+    bestSize.x = 800;
+  if (bestSize.y > 800)
+    bestSize.y = 800;
+
+  if (bestSize.x < iMinX)
+    bestSize.x = iMinX;
+  if (bestSize.y < iMinY)
+    bestSize.y = iMinY;
+
+  return bestSize;
+}
+
+
+// ProjectionFileView
+
+IMPLEMENT_DYNAMIC_CLASS(ProjectionFileView, wxView)
+
+BEGIN_EVENT_TABLE(ProjectionFileView, wxView)
+EVT_MENU(PJMENU_FILE_PROPERTIES, ProjectionFileView::OnProperties)
+EVT_MENU(PJMENU_RECONSTRUCT_FBP, ProjectionFileView::OnReconstructFBP)
+EVT_MENU(PJMENU_RECONSTRUCT_FBP_REBIN, ProjectionFileView::OnReconstructFBPRebin)
+EVT_MENU(PJMENU_RECONSTRUCT_FOURIER, ProjectionFileView::OnReconstructFourier)
+EVT_MENU(PJMENU_CONVERT_RECTANGULAR, ProjectionFileView::OnConvertRectangular)
+EVT_MENU(PJMENU_CONVERT_POLAR, ProjectionFileView::OnConvertPolar)
+EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar)
+EVT_MENU(PJMENU_CONVERT_PARALLEL, ProjectionFileView::OnConvertParallel)
+EVT_MENU(PJMENU_PLOT_TTHETA_SAMPLING, ProjectionFileView::OnPlotTThetaSampling)
+EVT_MENU(PJMENU_PLOT_HISTOGRAM, ProjectionFileView::OnPlotHistogram)
+  // EVT_MENU(PJMENU_ARTIFACT_REDUCTION, ProjectionFileView::OnArtifactReduction)
+END_EVENT_TABLE()
+
+
+ProjectionFileView::ProjectionFileView()
+  : wxView(), m_pBitmap(0), m_pFrame(0), m_pCanvas(0), m_pFileMenu(0)
+{
+#ifdef DEBUG
+  m_iDefaultNX = 115;
+  m_iDefaultNY = 115;
+#else
+  m_iDefaultNX = 256;
+  m_iDefaultNY = 256;
+#endif
+
+  m_iDefaultFilter = SignalFilter::FILTER_ABS_BANDLIMIT;
+  m_dDefaultFilterParam = 1.;
+#if HAVE_FFTW
+  m_iDefaultFilterMethod = ProcessSignal::FILTER_METHOD_RFFTW;
+  m_iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_INVERSE_FOURIER;
+#else
+  m_iDefaultFilterMethod = ProcessSignal::FILTER_METHOD_CONVOLUTION;
+  m_iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_DIRECT;
+#endif
+  m_iDefaultZeropad = 2;
+  m_iDefaultBackprojector = Backprojector::BPROJ_IDIFF;
+  m_iDefaultInterpolation = Backprojector::INTERP_LINEAR;
+  m_iDefaultInterpParam = 1;
+  m_iDefaultTrace = Trace::TRACE_NONE;
+
+  m_iDefaultPolarNX = 256;
+  m_iDefaultPolarNY = 256;
+  m_iDefaultPolarInterpolation = Projections::POLAR_INTERP_BILINEAR;
+  m_iDefaultPolarZeropad = 2;
+}
+
+ProjectionFileView::~ProjectionFileView()
+{
+  GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu);
+  GetDocumentManager()->ActivateView(this, FALSE);;
+}
+
+void
+ProjectionFileView::OnProperties (wxCommandEvent& event)
+{
+  const Projections& rProj = GetDocument()->getProjections();
+  std::ostringstream os;
+  rProj.printScanInfo(os);
+  *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<\n");
+  wxMessageDialog dialogMsg (getFrameForChild(), wxConvUTF8.cMB2WX(os.str().c_str()), _T("Projection File Properties"), wxOK | wxICON_INFORMATION);
+  dialogMsg.ShowModal();
+  GetDocument()->Activate();
+}
+
+
+void
+ProjectionFileView::OnConvertRectangular (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+
+  int nDet = rProj.nDet();
+  int nView = rProj.nView();
+  ImageFile* pIF = new ImageFile (nDet, nView);
+  ImageFileArray v = pIF->getArray();
+  for (int iv = 0; iv < nView; iv++) {
+    DetectorValue* detval = rProj.getDetectorArray(iv).detValues();
+
+    for (int id = 0; id < nDet; id++)
+      v[id][iv] = detval[id];
+  }
+
+  ImageFileDocument* pRectDoc = theApp->newImageDoc ();
+  if (! pRectDoc) {
+    sys_error (ERR_SEVERE, "Unable to create image file");
+    return;
+  }
+  pRectDoc->setImageFile (pIF);
+  pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime());
+  std::ostringstream os;
+  os << "Convert projection file " << getFrame()->GetTitle().c_str() << " to rectangular image";
+  *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+  pIF->labelAdd (os.str().c_str());
+  if (theApp->getAskDeleteNewDocs())
+    pRectDoc->Modify (true);
+  pRectDoc->UpdateAllViews();
+  pRectDoc->getView()->setInitialClientSize();
+  pRectDoc->Activate();
+}
+
+void
+ProjectionFileView::OnConvertPolar (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  DialogGetConvertPolarParameters dialogPolar (getFrameForChild(), _T("Convert Polar"), m_iDefaultPolarNX, m_iDefaultPolarNY,
+    m_iDefaultPolarInterpolation, -1, IDH_DLG_POLAR);
+  if (dialogPolar.ShowModal() == wxID_OK) {
+    wxProgressDialog dlgProgress (_T("Convert Polar"), _T("Conversion Progress"), 1, getFrameForChild(), wxPD_APP_MODAL);
+    wxString strInterpolation (dialogPolar.getInterpolationName(), wxConvUTF8);
+    m_iDefaultPolarNX = dialogPolar.getXSize();
+    m_iDefaultPolarNY = dialogPolar.getYSize();
+    ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY);
+    m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.mb_str(wxConvUTF8));
+
+    if (! rProj.convertPolar (*pIF, m_iDefaultPolarInterpolation)) {
+      delete pIF;
+      *theApp->getLog() << _T("Error converting to Polar\n");
+      return;
+    }
+
+    ImageFileDocument* pPolarDoc = theApp->newImageDoc();
+    if (! pPolarDoc) {
+      sys_error (ERR_SEVERE, "Unable to create image file");
+      return;
+    }
+    pPolarDoc->setImageFile (pIF);
+    pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime());
+    std::ostringstream os;
+    os << "Convert projection file " << getFrame()->GetTitle().c_str() << " to polar image: xSize="
+      << m_iDefaultPolarNX << ", ySize=" << m_iDefaultPolarNY << ", interpolation="
+      << strInterpolation.c_str();
+    *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+    pIF->labelAdd (os.str().c_str());
+    if (theApp->getAskDeleteNewDocs())
+      pPolarDoc->Modify (true);
+    pPolarDoc->UpdateAllViews ();
+    pPolarDoc->getView()->setInitialClientSize();
+    pPolarDoc->Activate();
+  }
+}
+
+void
+ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  DialogGetConvertPolarParameters dialogPolar (getFrameForChild(), _T("Convert to FFT Polar"), m_iDefaultPolarNX, m_iDefaultPolarNY,
+    m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad, IDH_DLG_FFT_POLAR);
+  if (dialogPolar.ShowModal() == wxID_OK) {
+    wxProgressDialog dlgProgress (_T("Convert FFT Polar"), _T("Conversion Progress"), 1, getFrameForChild(), wxPD_APP_MODAL);
+    wxString strInterpolation (dialogPolar.getInterpolationName(), wxConvUTF8);
+    m_iDefaultPolarNX = dialogPolar.getXSize();
+    m_iDefaultPolarNY = dialogPolar.getYSize();
+    m_iDefaultPolarZeropad = dialogPolar.getZeropad();
+    ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY);
+
+    m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.mb_str(wxConvUTF8));
+    if (! rProj.convertFFTPolar (*pIF, m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad)) {
+      delete pIF;
+      *theApp->getLog() << _T("Error converting to polar\n");
+      return;
+    }
+    ImageFileDocument* pPolarDoc = theApp->newImageDoc();
+    if (! pPolarDoc) {
+      sys_error (ERR_SEVERE, "Unable to create image file");
+      return;
+    }
+    pPolarDoc->setImageFile (pIF);
+    pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime());
+    std::ostringstream os;
+    os << "Convert projection file " << getFrame()->GetTitle().c_str() << " to FFT polar image: xSize="
+      << m_iDefaultPolarNX << ", ySize=" << m_iDefaultPolarNY << ", interpolation="
+      << strInterpolation.c_str() << ", zeropad=" << m_iDefaultPolarZeropad;
+    *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+    pIF->labelAdd (os.str().c_str());
+    if (theApp->getAskDeleteNewDocs())
+      pPolarDoc->Modify (true);
+    pPolarDoc->UpdateAllViews (this);
+    pPolarDoc->getView()->setInitialClientSize();
+    pPolarDoc->Activate();
+  }
+}
+
+void
+ProjectionFileView::OnPlotTThetaSampling (wxCommandEvent& event)
+{
+  DialogGetThetaRange dlgTheta (this->getFrame(), ParallelRaysums::THETA_RANGE_UNCONSTRAINED);
+  if (dlgTheta.ShowModal() != wxID_OK)
+    return;
+
+  int iThetaRange = dlgTheta.getThetaRange();
+
+  Projections& rProj = GetDocument()->getProjections();
+  ParallelRaysums parallel (&rProj, iThetaRange);
+  PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+  PlotFile& rPlot = pPlotDoc->getPlotFile();
+  ParallelRaysums::CoordinateContainer& coordContainer = parallel.getCoordinates();
+  double* pdT = new double [parallel.getNumCoordinates()];
+  double* pdTheta = new double [parallel.getNumCoordinates()];
+
+  for (int i = 0; i < parallel.getNumCoordinates(); i++) {
+    pdT[i] = coordContainer[i]->m_dT;
+    pdTheta[i] = coordContainer[i]->m_dTheta;
+  }
+  rPlot.setCurveSize (2, parallel.getNumCoordinates(), true);
+  rPlot.addEzsetCommand ("title T-Theta Sampling");
+  rPlot.addEzsetCommand ("xlabel T");
+  rPlot.addEzsetCommand ("ylabel Theta");
+  rPlot.addEzsetCommand ("curve 1");
+  if (rProj.nDet() < 50 && rProj.nView() < 50)
+    rPlot.addEzsetCommand ("symbol 1"); // x symbol
+  else
+    rPlot.addEzsetCommand ("symbol 6"); // point symbol
+  rPlot.addEzsetCommand ("noline");
+  rPlot.addColumn (0, pdT);
+  rPlot.addColumn (1, pdTheta);
+  delete pdT;
+  delete pdTheta;
+  if (theApp->getAskDeleteNewDocs())
+    pPlotDoc->Modify (true);
+  pPlotDoc->getView()->getFrame()->Show(true);
+  pPlotDoc->UpdateAllViews ();
+  pPlotDoc->Activate();
+}
+
+
+void
+ProjectionFileView::OnPlotHistogram (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  int nDet = rProj.nDet();
+  int nView = rProj.nView();
+
+  if (nDet < 1 || nView < 1)
+    return;
+
+  PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
+  if (! pPlotDoc) {
+    sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
+    return;
+  }
+
+  DetectorValue* pdDetval = rProj.getDetectorArray(0).detValues();
+  double dMin = pdDetval[0], dMax = pdDetval[0];
+
+  for (int iv = 0; iv < nView; iv++) {
+    pdDetval = rProj.getDetectorArray(iv).detValues();
+    for (int id = 0; id < nDet; id++) {
+      double dV = pdDetval[id];
+      if (dV < dMin)
+        dMin = dV;
+      else if (dV > dMax)
+        dMax = dV;
+    }
+  }
+
+  double* pX = new double [NUMBER_HISTOGRAM_BINS];
+  double* pY = new double [NUMBER_HISTOGRAM_BINS];
+  double dBinWidth = (dMax - dMin) / NUMBER_HISTOGRAM_BINS;
+
+  for (int i = 0; i < NUMBER_HISTOGRAM_BINS; i++) {
+    pX[i] = dMin + (i + 0.5) * dBinWidth;
+    pY[i] = 0;
+  }
+  for (int j = 0; j < nView; j++) {
+    pdDetval = rProj.getDetectorArray(j).detValues();
+    for (int id = 0; id < nDet; id++) {
+      int iBin = nearest<int> ((pdDetval[id] - dMin) / dBinWidth);
+      if (iBin >= 0 && iBin < NUMBER_HISTOGRAM_BINS)
+        pY[iBin] += 1;
+    }
+  }
+  PlotFile& rPlotFile = pPlotDoc->getPlotFile();
+  std::ostringstream os;
+  os << "Histogram";
+  std::string title("title ");
+  title += os.str();
+  rPlotFile.addEzsetCommand (title.c_str());
+  rPlotFile.addEzsetCommand ("xlabel Detector Value");
+  rPlotFile.addEzsetCommand ("ylabel Count");
+  rPlotFile.addEzsetCommand ("box");
+  rPlotFile.addEzsetCommand ("grid");
+  rPlotFile.setCurveSize (2, NUMBER_HISTOGRAM_BINS);
+  rPlotFile.addColumn (0, pX);
+  rPlotFile.addColumn (1, pY);
+  rPlotFile.addDescription (rProj.remark());
+  os << " plot of " << dynamic_cast<wxFrame*>(GetDocument()->GetFirstView()->GetFrame())->GetTitle().c_str();
+  *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+  rPlotFile.addDescription (os.str().c_str());
+  delete pX;
+  delete pY;
+  if (theApp->getAskDeleteNewDocs())
+    pPlotDoc->Modify (true);
+  pPlotDoc->getView()->getFrame()->Show(true);
+  pPlotDoc->UpdateAllViews ();
+  pPlotDoc->Activate();
+}
+
+
+void
+ProjectionFileView::OnConvertParallel (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  if (rProj.geometry() == Scanner::GEOMETRY_PARALLEL) {
+    wxMessageBox (_T("Projections are already parallel"), _T("Error"));
+    return;
+  }
+  wxProgressDialog dlgProgress (_T("Convert to Parallel"), _T("Conversion Progress"), 1, getFrameForChild(), wxPD_APP_MODAL);
+  Projections* pProjNew = rProj.interpolateToParallel();
+  ProjectionFileDocument* pProjDocNew = theApp->newProjectionDoc();
+  pProjDocNew->setProjections (pProjNew);
+
+  if (ProjectionFileView* projView = pProjDocNew->getView()) {
+    projView->OnUpdate (projView, NULL);
+    if (projView->getCanvas())
+      projView->getCanvas()->SetClientSize (pProjNew->nDet(), pProjNew->nView());
+    if (wxFrame* pFrame = projView->getFrame()) {
+      pFrame->Show(true);
+      pFrame->SetFocus();
+      pFrame->Raise();
+    }
+    GetDocumentManager()->ActivateView (projView, true);
+  }
+  if (theApp->getAskDeleteNewDocs())
+    pProjDocNew-> Modify(true);
+  pProjDocNew->UpdateAllViews (this);
+  pProjDocNew->getView()->setInitialClientSize();
+  pProjDocNew->Activate();
+}
+
+void
+ProjectionFileView::OnReconstructFourier (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  DialogGetConvertPolarParameters dialogPolar (getFrameForChild(), _T("Fourier Reconstruction"), m_iDefaultPolarNX, m_iDefaultPolarNY,
+    m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad, IDH_DLG_RECON_FOURIER);
+  if (dialogPolar.ShowModal() == wxID_OK) {
+    wxProgressDialog dlgProgress (_T("Reconstruction Fourier"), _T("Reconstruction Progress"), 1, getFrameForChild(), wxPD_APP_MODAL);
+    wxString strInterpolation (dialogPolar.getInterpolationName(), wxConvUTF8);
+    m_iDefaultPolarNX = dialogPolar.getXSize();
+    m_iDefaultPolarNY = dialogPolar.getYSize();
+    m_iDefaultPolarZeropad = dialogPolar.getZeropad();
+    ImageFile* pIF = new ImageFile (m_iDefaultPolarNX, m_iDefaultPolarNY);
+
+    m_iDefaultPolarInterpolation = Projections::convertInterpNameToID (strInterpolation.mb_str(wxConvUTF8));
+    if (! rProj.convertFFTPolar (*pIF, m_iDefaultPolarInterpolation, m_iDefaultPolarZeropad)) {
+      delete pIF;
+      *theApp->getLog() << _T("Error converting to polar\n");
+      return;
+    }
+#ifdef HAVE_FFT
+    pIF->ifft(*pIF);
+#endif
+    pIF->magnitude(*pIF);
+    Fourier::shuffleFourierToNaturalOrder (*pIF);
+
+    ImageFileDocument* pPolarDoc = theApp->newImageDoc();
+    if (! pPolarDoc) {
+      sys_error (ERR_SEVERE, "Unable to create image file");
+      return;
+    }
+    pPolarDoc->setImageFile (pIF);
+    pIF->labelAdd (rProj.getLabel().getLabelString().c_str(), rProj.calcTime());
+    std::ostringstream os;
+    os << "Reconstruct Fourier " << getFrame()->GetTitle().mb_str(wxConvUTF8) << ": xSize="
+      << m_iDefaultPolarNX << ", ySize=" << m_iDefaultPolarNY << ", interpolation="
+      << strInterpolation.mb_str(wxConvUTF8) << ", zeropad=" << m_iDefaultPolarZeropad;
+    *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+    pIF->labelAdd (os.str().c_str());
+    if (theApp->getAskDeleteNewDocs())
+      pPolarDoc->Modify (true);
+    pPolarDoc->UpdateAllViews ();
+    pPolarDoc->getView()->setInitialClientSize();
+    pPolarDoc->Activate();
+  }
+}
+
+void
+ProjectionFileView::OnReconstructFBPRebin (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  doReconstructFBP (rProj, true);
+}
+
+void
+ProjectionFileView::OnReconstructFBP (wxCommandEvent& event)
+{
+  Projections& rProj = GetDocument()->getProjections();
+  doReconstructFBP (rProj, false);
+}
+
+void
+ProjectionFileView::doReconstructFBP (const Projections& rProj, bool bRebinToParallel)
+{
+  ReconstructionROI defaultROI;
+  defaultROI.m_dXMin = -rProj.phmLen() / 2;
+  defaultROI.m_dXMax = defaultROI.m_dXMin + rProj.phmLen();
+  defaultROI.m_dYMin = -rProj.phmLen() / 2;
+  defaultROI.m_dYMax = defaultROI.m_dYMin + rProj.phmLen();
+
+  DialogGetReconstructionParameters dialogReconstruction (getFrameForChild(), m_iDefaultNX, m_iDefaultNY,
+    m_iDefaultFilter, m_dDefaultFilterParam, m_iDefaultFilterMethod, m_iDefaultFilterGeneration,
+    m_iDefaultZeropad, m_iDefaultInterpolation, m_iDefaultInterpParam, m_iDefaultBackprojector,
+    m_iDefaultTrace,  &defaultROI);
+
+  int retVal = dialogReconstruction.ShowModal();
+  if (retVal != wxID_OK)
+    return;
+
+  m_iDefaultNX = dialogReconstruction.getXSize();
+  m_iDefaultNY = dialogReconstruction.getYSize();
+  wxString optFilterName (dialogReconstruction.getFilterName(), wxConvUTF8);
+  m_iDefaultFilter = SignalFilter::convertFilterNameToID (optFilterName.mb_str(wxConvUTF8));
+  m_dDefaultFilterParam = dialogReconstruction.getFilterParam();
+  wxString optFilterMethodName (dialogReconstruction.getFilterMethodName(), wxConvUTF8);
+  m_iDefaultFilterMethod = ProcessSignal::convertFilterMethodNameToID(optFilterMethodName.mb_str(wxConvUTF8));
+  m_iDefaultZeropad = dialogReconstruction.getZeropad();
+  wxString optFilterGenerationName (dialogReconstruction.getFilterGenerationName(), wxConvUTF8);
+  m_iDefaultFilterGeneration = ProcessSignal::convertFilterGenerationNameToID (optFilterGenerationName.mb_str(wxConvUTF8));
+  wxString optInterpName (dialogReconstruction.getInterpName(), wxConvUTF8);
+  m_iDefaultInterpolation = Backprojector::convertInterpNameToID (optInterpName.mb_str(wxConvUTF8));
+  m_iDefaultInterpParam = dialogReconstruction.getInterpParam();
+  wxString optBackprojectName (dialogReconstruction.getBackprojectName(), wxConvUTF8);
+  m_iDefaultBackprojector = Backprojector::convertBackprojectNameToID (optBackprojectName.mb_str(wxConvUTF8));
+  m_iDefaultTrace = dialogReconstruction.getTrace();
+  dialogReconstruction.getROI (&defaultROI);
+
+  if (m_iDefaultNX <= 0 && m_iDefaultNY <= 0)
+    return;
+
+  std::ostringstream os;
+  os << "Reconstruct " << rProj.getFilename() << ": xSize=" << m_iDefaultNX << ", ySize=" << m_iDefaultNY << ", Filter=" << optFilterName.mb_str(wxConvUTF8) << ", FilterParam=" << m_dDefaultFilterParam << ", FilterMethod=" << optFilterMethodName.mb_str(wxConvUTF8) << ", FilterGeneration=" << optFilterGenerationName.mb_str(wxConvUTF8) << ", Zeropad=" << m_iDefaultZeropad << ", Interpolation=" << optInterpName.mb_str(wxConvUTF8) << ", InterpolationParam=" << m_iDefaultInterpParam << ", Bac [...]
+  if (bRebinToParallel)
+    os << "; Interpolate to Parallel";
+
+  Timer timerRecon;
+  ImageFile* pImageFile = NULL;
+  if (m_iDefaultTrace > Trace::TRACE_CONSOLE) {
+    pImageFile = new ImageFile (m_iDefaultNX, m_iDefaultNY);
+    Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.mb_str(wxConvUTF8),
+      m_dDefaultFilterParam, optFilterMethodName.mb_str(wxConvUTF8), m_iDefaultZeropad, optFilterGenerationName.mb_str(wxConvUTF8),
+      optInterpName.mb_str(wxConvUTF8), m_iDefaultInterpParam, optBackprojectName.mb_str(wxConvUTF8), m_iDefaultTrace,
+      &defaultROI, bRebinToParallel);
+
+    ReconstructDialog* pDlgReconstruct = new ReconstructDialog (*pReconstructor, rProj, *pImageFile, m_iDefaultTrace, getFrameForChild());
+    for (int iView = 0; iView < rProj.nView(); iView++) {
+      ::wxYield();
+      if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView, true)) {
+        delete pDlgReconstruct;
+        delete pReconstructor;
+        return;
+      }
+      ::wxYield();
+      ::wxYield();
+      while (pDlgReconstruct->isPaused()) {
+        ::wxYield();
+        ::wxMilliSleep(50);
+      }
+    }
+    pReconstructor->postProcessing();
+    delete pDlgReconstruct;
+    delete pReconstructor;
+  } else {
+#if HAVE_WXTHREADS
+    if (theApp->getUseBackgroundTasks()) {
+      ReconstructorSupervisorThread* pReconstructor = new ReconstructorSupervisorThread
+        (this, m_iDefaultNX, m_iDefaultNY, optFilterName.mb_str(wxConvUTF8), 
+         m_dDefaultFilterParam, optFilterMethodName.mb_str(wxConvUTF8),
+         m_iDefaultZeropad, optFilterGenerationName.mb_str(wxConvUTF8), 
+         optInterpName.mb_str(wxConvUTF8), m_iDefaultInterpParam,
+         optBackprojectName.mb_str(wxConvUTF8), 
+         wxConvUTF8.cMB2WX(os.str().c_str()), &defaultROI, bRebinToParallel);
+      if (pReconstructor->Create() != wxTHREAD_NO_ERROR) {
+        sys_error (ERR_SEVERE, "Error creating reconstructor thread");
+        delete pReconstructor;
+        return;
+      }
+      pReconstructor->SetPriority (60);
+      pReconstructor->Run();
+      return;
+    } else
+#endif
+    {
+      pImageFile = new ImageFile (m_iDefaultNX, m_iDefaultNY);
+      wxProgressDialog dlgProgress (_T("Reconstruction"), _T("Reconstruction Progress"), rProj.nView() + 1, getFrameForChild(), wxPD_CAN_ABORT );
+      Reconstructor* pReconstructor = new Reconstructor (rProj, *pImageFile, optFilterName.mb_str(wxConvUTF8),
+        m_dDefaultFilterParam, optFilterMethodName.mb_str(wxConvUTF8), m_iDefaultZeropad, optFilterGenerationName.mb_str(wxConvUTF8),
+        optInterpName.mb_str(wxConvUTF8), m_iDefaultInterpParam, optBackprojectName.mb_str(wxConvUTF8), m_iDefaultTrace,
+        &defaultROI, bRebinToParallel);
+
+      for (int iView = 0; iView < rProj.nView(); iView++) {
+        pReconstructor->reconstructView (iView, 1);
+        if ((iView + 1) % ITER_PER_UPDATE == 0)
+          if (! dlgProgress.Update (iView + 1)) {
+            delete pReconstructor;
+            return; // don't make new window, thread will do this
+          }
+      }
+      pReconstructor->postProcessing();
+      delete pReconstructor;
+    }
+  }
+  ImageFileDocument* pReconDoc = theApp->newImageDoc();
+  if (! pReconDoc) {
+    sys_error (ERR_SEVERE, "Unable to create image file");
+    return;
+  }
+  *theApp->getLog() << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("\n");
+  pImageFile->labelAdd (rProj.getLabel());
+  pImageFile->labelAdd (os.str().c_str(), timerRecon.timerEnd());
+
+  pReconDoc->setImageFile (pImageFile);
+  if (theApp->getAskDeleteNewDocs())
+    pReconDoc->Modify (true);
+  pReconDoc->UpdateAllViews();
+  pReconDoc->getView()->setInitialClientSize();
+  pReconDoc->Activate();
+}
+
+
+void
+ProjectionFileView::OnArtifactReduction (wxCommandEvent& event)
+{
+}
+
+
+ProjectionFileCanvas*
+ProjectionFileView::CreateCanvas (wxFrame *parent)
+{
+  ProjectionFileCanvas* pCanvas;
+  int width, height;
+  parent->GetClientSize(&width, &height);
+
+  pCanvas = new ProjectionFileCanvas (this, parent, wxPoint(-1,-1), wxSize(width, height), 0);
+
+  pCanvas->SetScrollbars(20, 20, 50, 50);
+  pCanvas->SetBackgroundColour(*wxWHITE);
+  pCanvas->ClearBackground();
+
+  return pCanvas;
+}
+
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
+{
+#ifdef CTSIM_MDI
+  wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Projection Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#else
+  wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Projection Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#endif
+  theApp->setIconForFrame (subframe);
+
+  m_pFileMenu = new wxMenu;
+
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+  m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S"));
+  m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As..."));
+  m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(PJMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(wxID_PRINT, _T("&Print..."));
+  m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+  m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+  GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu);
+
+  m_pConvertMenu = new wxMenu;
+  m_pConvertMenu->Append (PJMENU_CONVERT_RECTANGULAR, _T("&Rectangular Image"));
+  m_pConvertMenu->Append (PJMENU_CONVERT_POLAR, _T("&Polar Image...\tCtrl-L"));
+  m_pConvertMenu->Append (PJMENU_CONVERT_FFT_POLAR, _T("FF&T->Polar Image...\tCtrl-T"));
+  m_pConvertMenu->AppendSeparator();
+  m_pConvertMenu->Append (PJMENU_CONVERT_PARALLEL, _T("&Interpolate to Parallel"));
+
+  //  wxMenu* filter_menu = new wxMenu;
+  //  filter_menu->Append (PJMENU_ARTIFACT_REDUCTION, _T("&Artifact Reduction"));
+
+  wxMenu* analyze_menu = new wxMenu;
+  analyze_menu->Append (PJMENU_PLOT_HISTOGRAM, _T("&Plot Histogram"));
+  analyze_menu->Append (PJMENU_PLOT_TTHETA_SAMPLING, _T("Plot T-T&heta Sampling...\tCtrl-H"));
+
+  m_pReconstructMenu = new wxMenu;
+  m_pReconstructMenu->Append (PJMENU_RECONSTRUCT_FBP, _T("&Filtered Backprojection...\tCtrl-R"), _T("Reconstruct image using filtered backprojection"));
+  m_pReconstructMenu->Append (PJMENU_RECONSTRUCT_FBP_REBIN, _T("Filtered &Backprojection (Rebin to Parallel)...\tCtrl-B"), _T("Reconstruct image using filtered backprojection"));
+  m_pReconstructMenu->Append (PJMENU_RECONSTRUCT_FOURIER, _T("&Inverse Fourier...\tCtrl-E"), _T("Direct inverse Fourier"));
+
+  wxMenu *help_menu = new wxMenu;
+  help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips"));
+  help_menu->Append (IDH_QUICKSTART, _T("&Quick Start"));
+  help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar *menu_bar = new wxMenuBar;
+
+  menu_bar->Append (m_pFileMenu, _T("&File"));
+  menu_bar->Append (m_pConvertMenu, _T("&Convert"));
+  //  menu_bar->Append (filter_menu, _T("Fi&lter"));
+  menu_bar->Append (analyze_menu, _T("&Analyze"));
+  menu_bar->Append (m_pReconstructMenu, _T("&Reconstruct"));
+  menu_bar->Append (help_menu, _T("&Help"));
+
+  subframe->SetMenuBar(menu_bar);
+  subframe->Centre(wxBOTH);
+
+  wxAcceleratorEntry accelEntries[7];
+  accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('L'), PJMENU_CONVERT_POLAR);
+  accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('T'), PJMENU_CONVERT_FFT_POLAR);
+  accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('R'), PJMENU_RECONSTRUCT_FBP);
+  accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('B'), PJMENU_RECONSTRUCT_FBP_REBIN);
+  accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('E'), PJMENU_RECONSTRUCT_FOURIER);
+  accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('I'), PJMENU_FILE_PROPERTIES);
+  accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('H'), PJMENU_PLOT_TTHETA_SAMPLING);
+  wxAcceleratorTable accelTable (7, accelEntries);
+  subframe->SetAcceleratorTable (accelTable);
+
+  return subframe;
+}
+
+
+bool
+ProjectionFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+{
+  m_pFrame = CreateChildFrame(doc, this);
+  SetFrame(m_pFrame);
+  m_pCanvas = CreateCanvas (m_pFrame);
+  m_pFrame->SetClientSize (m_pCanvas->GetBestSize());
+  m_pCanvas->SetClientSize (m_pCanvas->GetBestSize());
+  m_pFrame->SetTitle (doc->GetFilename());
+
+  m_pFrame->Show(true);
+  Activate(true);
+
+  return true;
+}
+
+void
+ProjectionFileView::OnDraw (wxDC* dc)
+{
+  if (m_pBitmap && m_pBitmap->Ok())
+    dc->DrawBitmap (*m_pBitmap, 0, 0, false);
+}
+
+
+void
+ProjectionFileView::setInitialClientSize ()
+{
+  if (m_pFrame && m_pCanvas) {
+    wxSize bestSize = m_pCanvas->GetBestSize();
+
+    m_pFrame->SetClientSize (bestSize);
+    m_pFrame->Show (true);
+    m_pFrame->SetFocus();
+  }
+}
+
+void
+ProjectionFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+{
+  const Projections& rProj = GetDocument()->getProjections();
+  const int nDet = rProj.nDet();
+  const int nView = rProj.nView();
+  if (rProj.geometry() == Scanner::GEOMETRY_PARALLEL) {
+    m_pReconstructMenu->Enable (PJMENU_RECONSTRUCT_FBP_REBIN, false);
+    m_pConvertMenu->Enable (PJMENU_CONVERT_PARALLEL, false);
+  } else {
+    m_pReconstructMenu->Enable (PJMENU_RECONSTRUCT_FBP_REBIN, true);
+    m_pConvertMenu->Enable (PJMENU_CONVERT_PARALLEL, true);
+  }
+
+  if (nDet != 0 && nView != 0) {
+    const DetectorArray& detarray = rProj.getDetectorArray(0);
+    const DetectorValue* detval = detarray.detValues();
+    double min = detval[0];
+    double max = detval[0];
+    for (int iy = 0; iy < nView; iy++) {
+      const DetectorArray& detarray = rProj.getDetectorArray(iy);
+      const DetectorValue* detval = detarray.detValues();
+      for (int ix = 0; ix < nDet; ix++) {
+        if (min > detval[ix])
+          min = detval[ix];
+        else if (max < detval[ix])
+          max = detval[ix];
+      }
+    }
+
+    unsigned char* imageData = new unsigned char [nDet * nView * 3];
+    if (! imageData) {
+      sys_error (ERR_SEVERE, "Unable to allocate memory for image display");
+      return;
+    }
+    double scale = (max - min) / 255;
+    for (int iy2 = 0; iy2 < nView; iy2++) {
+      const DetectorArray& detarray = rProj.getDetectorArray (iy2);
+      const DetectorValue* detval = detarray.detValues();
+      for (int ix = 0; ix < nDet; ix++) {
+        int intensity = static_cast<int>(((detval[ix] - min) / scale) + 0.5);
+        intensity = clamp(intensity, 0, 255);
+        int baseAddr = (iy2 * nDet + ix) * 3;
+        imageData[baseAddr] = imageData[baseAddr+1] = imageData[baseAddr+2] = intensity;
+      }
+    }
+    wxImage image (nDet, nView, imageData, true);
+    if (m_pBitmap) {
+      delete m_pBitmap;
+      m_pBitmap = NULL;
+    }
+    m_pBitmap = new wxBitmap (image);
+    delete imageData;
+  }
+
+    m_pCanvas->SetScrollbars(20, 20, nDet/20, nView/20);
+    m_pCanvas->SetBackgroundColour(*wxWHITE);
+
+    if (m_pCanvas)
+      m_pCanvas->Refresh();
+}
+
+bool
+ProjectionFileView::OnClose (bool deleteWindow)
+{
+  //GetDocumentManager()->ActivateView (this, false);
+  if (! GetDocument() || ! GetDocument()->Close())
+    return false;
+
+  Activate(false);
+  if (m_pCanvas) {
+        m_pCanvas->setView(NULL);
+    m_pCanvas = NULL;
+  }
+  wxString s(wxTheApp->GetAppName());
+  if (m_pFrame)
+    m_pFrame->SetTitle(s);
+
+  SetFrame(NULL);
+
+  if (deleteWindow) {
+    delete m_pFrame;
+    m_pFrame = NULL;
+    if (GetDocument() && GetDocument()->getBadFileOpen())
+      ::wxYield();  // wxWindows bug workaround
+  }
+
+  return true;
+}
+
+
+
+// PlotFileCanvas
+PlotFileCanvas::PlotFileCanvas (PlotFileView* v, wxFrame *frame,
+                                const wxPoint& pos, const wxSize& size,
+                                const long style)
+  : wxScrolledWindow(frame, -1, pos, size, style), m_pView(v)
+{
+}
+
+PlotFileCanvas::~PlotFileCanvas ()
+{
+}
+
+wxSize
+PlotFileCanvas::GetBestSize() const
+{
+  return wxSize (500, 300);
+}
+
+
+void
+PlotFileCanvas::OnDraw(wxDC& dc)
+{
+  if (m_pView)
+    m_pView->OnDraw(& dc);
+}
+
+
+// PlotFileView
+
+IMPLEMENT_DYNAMIC_CLASS(PlotFileView, wxView)
+
+BEGIN_EVENT_TABLE(PlotFileView, wxView)
+EVT_MENU(PLOTMENU_FILE_PROPERTIES, PlotFileView::OnProperties)
+EVT_MENU(PLOTMENU_VIEW_SCALE_MINMAX, PlotFileView::OnScaleMinMax)
+EVT_MENU(PLOTMENU_VIEW_SCALE_AUTO, PlotFileView::OnScaleAuto)
+EVT_MENU(PLOTMENU_VIEW_SCALE_FULL, PlotFileView::OnScaleFull)
+END_EVENT_TABLE()
+
+PlotFileView::PlotFileView()
+: wxView(), m_pFrame(0), m_pCanvas(0), m_pEZPlot(0), m_pFileMenu(0),
+  m_bMinSpecified(false), m_bMaxSpecified(false)
+{
+}
+
+PlotFileView::~PlotFileView()
+{
+  if (m_pEZPlot)
+    delete m_pEZPlot;
+
+  GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu);
+  GetDocumentManager()->ActivateView(this, FALSE);
+}
+
+void
+PlotFileView::OnProperties (wxCommandEvent& event)
+{
+  const PlotFile& rPlot = GetDocument()->getPlotFile();
+  std::ostringstream os;
+  os << "Columns: " << rPlot.getNumColumns() << ", Records: " << rPlot.getNumRecords() << "\n";
+  rPlot.printHeadersBrief (os);
+  *theApp->getLog() << _T(">>>>\n") << wxConvUTF8.cMB2WX(os.str().c_str()) << _T("<<<<<\n");
+  wxMessageDialog dialogMsg (getFrameForChild(), wxConvUTF8.cMB2WX(os.str().c_str()), _T("Plot File Properties"), 
+                             wxOK | wxICON_INFORMATION);
+  dialogMsg.ShowModal();
+  GetDocument()->Activate();
+}
+
+
+void
+PlotFileView::OnScaleAuto (wxCommandEvent& event)
+{
+  const PlotFile& rPlotFile = GetDocument()->getPlotFile();
+  double min, max, mean, mode, median, stddev;
+  rPlotFile.statistics (1, min, max, mean, mode, median, stddev);
+  DialogAutoScaleParameters dialogAutoScale (getFrameForChild(), mean, mode, median, stddev, m_dAutoScaleFactor);
+  int iRetVal = dialogAutoScale.ShowModal();
+  if (iRetVal == wxID_OK) {
+    m_bMinSpecified = true;
+    m_bMaxSpecified = true;
+    double dMin, dMax;
+    if (dialogAutoScale.getMinMax (&dMin, &dMax)) {
+      m_dMinPixel = dMin;
+      m_dMaxPixel = dMax;
+      m_dAutoScaleFactor = dialogAutoScale.getAutoScaleFactor();
+      OnUpdate (this, NULL);
+    }
+  }
+  GetDocument()->Activate();
+}
+
+void
+PlotFileView::OnScaleMinMax (wxCommandEvent& event)
+{
+  const PlotFile& rPlotFile = GetDocument()->getPlotFile();
+  double min, max;
+
+  if (! m_bMinSpecified || ! m_bMaxSpecified) {
+    if (! rPlotFile.getMinMax (1, min, max)) {
+      *theApp->getLog() << _T("Error: unable to find Min/Max\n");
+      return;
+    }
+  }
+
+  if (m_bMinSpecified)
+    min = m_dMinPixel;
+  if (m_bMaxSpecified)
+    max = m_dMaxPixel;
+
+  DialogGetMinMax dialogMinMax (getFrameForChild(), _T("Set Y-axis Minimum & Maximum"), min, max);
+  int retVal = dialogMinMax.ShowModal();
+  if (retVal == wxID_OK) {
+    m_bMinSpecified = true;
+    m_bMaxSpecified = true;
+    m_dMinPixel = dialogMinMax.getMinimum();
+    m_dMaxPixel = dialogMinMax.getMaximum();
+    OnUpdate (this, NULL);
+  }
+  GetDocument()->Activate();
+}
+
+void
+PlotFileView::OnScaleFull (wxCommandEvent& event)
+{
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  OnUpdate (this, NULL);
+  GetDocument()->Activate();
+}
+
+
+PlotFileCanvas*
+PlotFileView::CreateCanvas (wxFrame* parent)
+{
+  PlotFileCanvas* pCanvas;
+
+  pCanvas = new PlotFileCanvas (this, parent, wxPoint(-1,-1), wxSize(-1,-1),
+                                wxFULL_REPAINT_ON_RESIZE);
+  pCanvas->SetBackgroundColour(*wxWHITE);
+  pCanvas->ClearBackground();
+
+  return pCanvas;
+}
+
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view)
+{
+#ifdef CTSIM_MDI
+  wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("Plot Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#else
+  wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, _T("Plot Frame"), wxPoint(-1,-1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE);
+#endif
+  theApp->setIconForFrame (subframe);
+
+  m_pFileMenu = new wxMenu;
+
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+  m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S"));
+  m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As..."));
+  m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(PLOTMENU_FILE_PROPERTIES, _T("P&roperties\tCtrl-I"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(wxID_PRINT, _T("&Print..."));
+  m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+  m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+  GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu);
+
+  wxMenu *view_menu = new wxMenu;
+  view_menu->Append(PLOTMENU_VIEW_SCALE_MINMAX, _T("Display Scale &Set...\tCtrl-E"));
+  view_menu->Append(PLOTMENU_VIEW_SCALE_AUTO, _T("Display Scale &Auto...\tCtrl-A"));
+  view_menu->Append(PLOTMENU_VIEW_SCALE_FULL, _T("Display &Full Scale\tCtrl-U"));
+
+  wxMenu *help_menu = new wxMenu;
+  help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips"));
+  help_menu->Append (IDH_QUICKSTART, _T("&Quick Start"));
+  help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar *menu_bar = new wxMenuBar;
+
+  menu_bar->Append(m_pFileMenu, _T("&File"));
+  menu_bar->Append(view_menu, _T("&View"));
+  menu_bar->Append(help_menu, _T("&Help"));
+
+  subframe->SetMenuBar(menu_bar);
+  subframe->Centre(wxBOTH);
+
+  wxAcceleratorEntry accelEntries[4];
+  accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('E'), PLOTMENU_VIEW_SCALE_MINMAX);
+  accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('A'), PLOTMENU_VIEW_SCALE_AUTO);
+  accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('U'), PLOTMENU_VIEW_SCALE_FULL);
+  accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('I'), PLOTMENU_FILE_PROPERTIES);
+  wxAcceleratorTable accelTable (4, accelEntries);
+  subframe->SetAcceleratorTable (accelTable);
+
+  return subframe;
+}
+
+
+bool
+PlotFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
+{
+  m_bMinSpecified = false;
+  m_bMaxSpecified = false;
+  m_dAutoScaleFactor = 1.;
+
+  m_pFrame = CreateChildFrame(doc, this);
+  SetFrame(m_pFrame);
+  m_pCanvas = CreateCanvas (m_pFrame);
+  m_pFrame->SetClientSize (m_pCanvas->GetBestSize());
+  m_pCanvas->SetClientSize (m_pCanvas->GetBestSize());
+  m_pFrame->SetTitle (_T("test"));
+  *theApp->getLog() << _T("Plot doc name: ") << doc->GetDocumentName() << _T("\n");
+  *theApp->getLog() << _T("Plot file name: ") << doc->GetFilename() << _T("\n");
+  m_pFrame->SetTitle (doc->GetFilename());
+
+  m_pFrame->Show(true);
+  Activate(true);
+
+  return true;
+}
+
+void
+PlotFileView::setInitialClientSize ()
+{
+  if (m_pFrame && m_pCanvas) {
+    wxSize bestSize = m_pCanvas->GetBestSize();
+
+    m_pFrame->SetClientSize (bestSize);
+    m_pFrame->Show (true);
+    m_pFrame->SetFocus();
+  }
+}
+
+
+void
+PlotFileView::OnDraw (wxDC* dc)
+{
+  const PlotFile& rPlotFile = GetDocument()->getPlotFile();
+  const int iNColumns = rPlotFile.getNumColumns();
+  const int iNRecords = rPlotFile.getNumRecords();
+
+  if (iNColumns > 0 && iNRecords > 0) {
+    int xsize, ysize;
+    m_pCanvas->GetClientSize (&xsize, &ysize);
+    SGPDriver driver (dc, xsize, ysize);
+    SGP sgp (driver);
+    if (m_pEZPlot)
+      m_pEZPlot->plot (&sgp);
+  }
+}
+
+
+void
+PlotFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+{
+  const PlotFile& rPlotFile = GetDocument()->getPlotFile();
+  const int iNColumns = rPlotFile.getNumColumns();
+  const int iNRecords = rPlotFile.getNumRecords();
+  const bool bScatterPlot = rPlotFile.getIsScatterPlot();
+
+  if (iNColumns > 0 && iNRecords > 0) {
+    if (m_pEZPlot)
+      delete m_pEZPlot;
+    m_pEZPlot = new EZPlot;
+
+    for (unsigned int iEzset = 0; iEzset < rPlotFile.getNumEzsetCommands(); iEzset++)
+      m_pEZPlot->ezset (rPlotFile.getEzsetCommand (iEzset));
+
+    if (m_bMinSpecified) {
+      std::ostringstream os;
+      os << "ymin " << m_dMinPixel;
+      m_pEZPlot->ezset (os.str());
+    }
+
+    if (m_bMaxSpecified) {
+      std::ostringstream os;
+      os << "ymax " << m_dMaxPixel;
+      m_pEZPlot->ezset (os.str());
+    }
+
+    m_pEZPlot->ezset("box");
+    m_pEZPlot->ezset("grid");
+
+    double* pdX = new double [iNRecords];
+    double* pdY = new double [iNRecords];
+    if (! bScatterPlot) {
+      rPlotFile.getColumn (0, pdX);
+
+      for (int iCol = 1; iCol < iNColumns; iCol++) {
+        rPlotFile.getColumn (iCol, pdY);
+        m_pEZPlot->addCurve (pdX, pdY, iNRecords);
+      }
+    } else {
+      rPlotFile.getColumn (0, pdX);
+      rPlotFile.getColumn (1, pdY);
+      m_pEZPlot->addCurve (pdX, pdY, iNRecords);
+    }
+    delete pdX;
+    delete pdY;
+  }
+
+  if (m_pCanvas) {
+    m_pCanvas->Refresh();
+  }
+}
+
+bool
+PlotFileView::OnClose (bool deleteWindow)
+{
+  if (! GetDocument() || ! GetDocument()->Close())
+    return false;
+
+  Activate(false);
+  if (m_pCanvas) {
+    m_pCanvas->setView (NULL);
+    m_pCanvas = NULL;
+  }
+  wxString s(wxTheApp->GetAppName());
+  if (m_pFrame)
+    m_pFrame->SetTitle(s);
+
+  SetFrame(NULL);
+  if (deleteWindow) {
+    delete m_pFrame;
+    m_pFrame = NULL;
+    if (GetDocument() && GetDocument()->getBadFileOpen())
+      ::wxYield();  // wxWindows bug workaround
+  }
+
+  return true;
+}
+
+
+////////////////////////////////////////////////////////////////
+
+
+IMPLEMENT_DYNAMIC_CLASS(TextFileView, wxView)
+
+TextFileView::~TextFileView()
+{
+  GetDocumentManager()->FileHistoryRemoveMenu (m_pFileMenu);
+  GetDocumentManager()->ActivateView(this, FALSE);;
+}
+
+bool TextFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+{
+  m_pFrame = CreateChildFrame(doc, this);
+  SetFrame (m_pFrame);
+
+  int width, height;
+  m_pFrame->GetClientSize(&width, &height);
+  m_pFrame->SetTitle(doc->GetFilename());
+  m_pCanvas = new TextFileCanvas (this, m_pFrame, wxPoint(-1,-1), wxSize(width, height), wxTE_MULTILINE | wxTE_READONLY);
+
+  m_pFrame->Show (true);
+  Activate (true);
+
+  return true;
+}
+
+// Handled by wxTextWindow
+void TextFileView::OnDraw(wxDC *WXUNUSED(dc) )
+{
+}
+
+void TextFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+{
+}
+
+bool
+TextFileView::OnClose (bool deleteWindow)
+{
+  if (! theApp->getMainFrame()->getShuttingDown())
+    return false;
+
+  Activate(false);
+  //GetDocumentManager()->ActivateView (this, false);
+  if (! GetDocument() || ! GetDocument()->Close())
+    return false;
+
+  SetFrame(NULL);
+  if (deleteWindow) {
+    delete m_pFrame;
+    m_pFrame = NULL;
+    if (GetDocument() && GetDocument()->getBadFileOpen())
+      ::wxYield();  // wxWindows bug workaround
+  }
+
+  return TRUE;
+}
+
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+TextFileView::CreateChildFrame (wxDocument *doc, wxView *view)
+{
+#if CTSIM_MDI
+  wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, _T("TextFile Frame"), wxPoint(-1, -1), wxSize(-1,-1), wxDEFAULT_FRAME_STYLE, _T("Log"));
+#else
+  wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, _T("TextFile Frame"), wxPoint(-1, -1), wxSize(300, 150), wxDEFAULT_FRAME_STYLE, _T("Log"));
+#endif
+  theApp->setIconForFrame (subframe);
+
+  m_pFileMenu = new wxMenu;
+
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_PHANTOM, _T("Cr&eate Phantom...\tCtrl-P"));
+  m_pFileMenu->Append(MAINMENU_FILE_CREATE_FILTER, _T("Create &Filter...\tCtrl-F"));
+  m_pFileMenu->Append(wxID_OPEN, _T("&Open...\tCtrl-O"));
+  m_pFileMenu->Append(wxID_SAVE, _T("&Save\tCtrl-S"));
+  m_pFileMenu->Append(wxID_SAVEAS, _T("Save &As..."));
+  //  m_pFileMenu->Append(wxID_CLOSE, _T("&Close\tCtrl-W"));
+
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(wxID_PRINT, _T("&Print..."));
+  m_pFileMenu->Append(wxID_PRINT_SETUP, _T("Print &Setup..."));
+  m_pFileMenu->Append(wxID_PREVIEW, _T("Print Pre&view"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append(MAINMENU_IMPORT, _T("&Import...\tCtrl-M"));
+  m_pFileMenu->AppendSeparator();
+  m_pFileMenu->Append (MAINMENU_FILE_PREFERENCES, _T("Prefere&nces..."));
+  m_pFileMenu->Append(MAINMENU_FILE_EXIT, _T("E&xit"));
+  GetDocumentManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  GetDocumentManager()->FileHistoryUseMenu(m_pFileMenu);
+
+  wxMenu *help_menu = new wxMenu;
+  help_menu->Append(MAINMENU_HELP_CONTENTS, _T("&Contents\tF1"));
+  help_menu->Append (MAINMENU_HELP_TIPS, _T("&Tips"));
+  help_menu->Append (IDH_QUICKSTART, _T("&Quick Start"));
+  help_menu->Append(MAINMENU_HELP_ABOUT, _T("&About"));
+
+  wxMenuBar *menu_bar = new wxMenuBar;
+
+  menu_bar->Append(m_pFileMenu, _T("&File"));
+  menu_bar->Append(help_menu, _T("&Help"));
+
+  subframe->SetMenuBar(menu_bar);
+  subframe->Centre(wxBOTH);
+
+  return subframe;
+}
+
+
+// Define a constructor for my text subwindow
+TextFileCanvas::TextFileCanvas (TextFileView* v, wxFrame* frame, const wxPoint& pos, const wxSize& size, long style)
+  : wxTextCtrl (frame, -1, _T(""), pos, size, style), m_pView(v)
+{
+}
+
+TextFileCanvas::~TextFileCanvas ()
+{
+  m_pView = NULL;
+}
+
+wxSize
+TextFileCanvas::GetBestSize() const
+{
+  int xSize, ySize;
+  theApp->getMainFrame()->GetClientSize (&xSize, &ySize);
+  xSize = maxValue<int> (xSize, ySize);
+#ifdef CTSIM_MDI
+  ySize = xSize = (xSize / 4);
+#else
+  ySize = xSize;
+#endif
+  return wxSize (xSize, ySize);
+}
diff --git a/src/views.h b/src/views.h
new file mode 100644
index 0000000..47c8fe2
--- /dev/null
+++ b/src/views.h
@@ -0,0 +1,503 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          view.h
+**   Purpose:       Header file for View & Canvas routines of CTSim program
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  July 2000
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifndef __VIEWSH__
+#define __VIEWSH__
+
+#include "wx/wx.h"
+#include "docs.h"
+#include "imagefile.h"
+#include "threadrecon.h"
+
+#if wxUSE_GLCANVAS
+#include "graph3dview.h"
+#endif
+
+class ImageFileCanvas;
+class ImageFileView : public wxView
+{
+private:
+  DECLARE_DYNAMIC_CLASS(ImageFileView)
+
+  wxMemoryDC m_memoryDC;
+  wxBitmap* m_pBitmap;
+  wxMenu* m_pMenuAnalyze;
+
+  ImageFileCanvas *CreateCanvas (wxFrame* parent);
+#if CTSIM_MDI
+  wxDocMDIChildFrame* m_pFrame;
+  wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+  wxDocChildFrame* m_pFrame;
+  wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+
+  ImageFileCanvas *m_pCanvas;
+  wxMenu* m_pFileMenu;
+  wxMenu* m_pFilterMenu;
+  bool m_bMinSpecified;
+  bool m_bMaxSpecified;
+  double m_dMinPixel;
+  double m_dMaxPixel;
+  double m_dAutoScaleFactor;
+
+  int m_iDefaultExportFormatID;
+
+  wxFrame* getFrameForChild()
+#if CTSIM_MDI
+  { return theApp->getMainFrame(); }
+#else
+  { return m_pFrame; }
+#endif
+
+public:
+  ImageFileView();
+  virtual ~ImageFileView();
+  void canvasClosed()
+  { m_pCanvas = NULL; m_pFrame = NULL; }
+
+  wxMenu* getFileMenu()
+  { return m_pFileMenu; }
+
+  bool OnCreate(wxDocument *doc, long flags);
+  void OnDraw(wxDC* dc);
+  void OnUpdate(wxView *sender, wxObject *hint = NULL);
+  bool OnClose (bool deleteWindow = true);
+
+  void OnEditCopy (wxCommandEvent& event);
+  void OnEditCut (wxCommandEvent& event);
+  void OnEditPaste (wxCommandEvent& event);
+
+  void OnRevert (wxCommandEvent& event);
+  void OnExport (wxCommandEvent& event);
+  void OnProperties (wxCommandEvent& event);
+
+  void OnCompare (wxCommandEvent& event);
+  void OnScaleSize (wxCommandEvent& event);
+  void OnInvertValues (wxCommandEvent& event);
+  void OnSquare (wxCommandEvent& event);
+  void OnSquareRoot (wxCommandEvent& event);
+  void OnLog (wxCommandEvent& event);
+  void OnExp (wxCommandEvent& event);
+  void OnAdd (wxCommandEvent& event);
+  void OnSubtract (wxCommandEvent& event);
+  void OnMultiply (wxCommandEvent& event);
+  void OnDivide (wxCommandEvent& event);
+  void OnFourier (wxCommandEvent& event);
+  void OnInverseFourier (wxCommandEvent& event);
+  void OnShuffleNaturalToFourierOrder (wxCommandEvent& event);
+  void OnShuffleFourierToNaturalOrder (wxCommandEvent& event);
+#if wxUSE_GLCANVAS
+  void OnConvert3d (wxCommandEvent& event);
+#endif
+
+#ifdef HAVE_FFT
+  void OnFFT (wxCommandEvent& event);
+  void OnIFFT (wxCommandEvent& event);
+  void OnFFTRows (wxCommandEvent& event);
+  void OnIFFTRows (wxCommandEvent& event);
+  void OnFFTCols (wxCommandEvent& event);
+  void OnIFFTCols (wxCommandEvent& event);
+#endif
+
+  void OnMagnitude (wxCommandEvent& event);
+  void OnPhase (wxCommandEvent& event);
+  void OnReal (wxCommandEvent& event);
+  void OnImaginary (wxCommandEvent& event);
+
+  void OnScaleAuto (wxCommandEvent& event);
+  void OnScaleMinMax (wxCommandEvent& event);
+  void OnScaleFull (wxCommandEvent& event);
+  void OnPlotRow (wxCommandEvent& event);
+  void OnPlotCol (wxCommandEvent& event);
+#if HAVE_FFT
+  void OnPlotFFTRow (wxCommandEvent& event);
+  void OnPlotFFTCol (wxCommandEvent& event);
+#endif
+  void OnPlotHistogram (wxCommandEvent& event);
+  void OnCompareRow (wxCommandEvent& event);
+  void OnCompareCol (wxCommandEvent& event);
+
+#if CTSIM_MDI
+  wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+  wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+  void setInitialClientSize();
+
+  wxMenu* getMenuAnalyze() { return m_pMenuAnalyze; }
+
+  ImageFileDocument* GetDocument()
+  { return dynamic_cast<ImageFileDocument*>(wxView::GetDocument()); }
+
+  DECLARE_EVENT_TABLE()
+};
+
+class ImageFileCanvas: public wxScrolledWindow
+{
+private:
+  ImageFileView* m_pView;
+
+  int m_xCursor;
+  int m_yCursor;
+
+public:
+  ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~ImageFileCanvas();
+
+  virtual void OnDraw(wxDC& dc);
+  void OnChar(wxKeyEvent& event);
+  void OnMouseEvent(wxMouseEvent& event);
+  void DrawRubberBandCursor (wxDC& dc, int x, int y);
+  bool GetCurrentCursor (int& x, int& y);
+
+  virtual wxSize GetBestSize() const;
+  void setView(ImageFileView* pView)
+  { m_pView = pView; }
+
+
+  DECLARE_EVENT_TABLE()
+};
+
+
+class ProjectionFileCanvas;
+class ProjectionFileView : public wxView
+{
+private:
+  DECLARE_DYNAMIC_CLASS(ProjectionFileView)
+
+  wxMemoryDC m_memoryDC;
+  wxBitmap* m_pBitmap;
+
+  ProjectionFileCanvas *CreateCanvas (wxFrame* parent);
+#if CTSIM_MDI
+  wxDocMDIChildFrame* m_pFrame;
+  wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+  wxDocChildFrame* m_pFrame;
+  wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+
+  ProjectionFileCanvas *m_pCanvas;
+  wxMenu* m_pFileMenu;
+  wxMenu* m_pReconstructMenu;
+  wxMenu* m_pConvertMenu;
+
+  int m_iDefaultNX;
+  int m_iDefaultNY;
+  int m_iDefaultFilter;
+  int m_iDefaultFilterMethod;
+  double m_dDefaultFilterParam;
+  int m_iDefaultFilterGeneration;
+  int m_iDefaultZeropad;
+  int m_iDefaultInterpolation;
+  int m_iDefaultInterpParam;
+  int m_iDefaultBackprojector;
+  int m_iDefaultTrace;
+
+  int m_iDefaultPolarNX;
+  int m_iDefaultPolarNY;
+  int m_iDefaultPolarInterpolation;
+  int m_iDefaultPolarZeropad;
+
+  wxWindow* getFrameForChild()
+#if CTSIM_MDI
+  { return theApp->getMainFrame(); }
+#else
+  { return m_pFrame; }
+#endif
+
+public:
+  ProjectionFileView();
+  virtual ~ProjectionFileView();
+  void canvasClosed()
+  { m_pCanvas = NULL; m_pFrame = NULL; }
+
+  bool OnCreate(wxDocument *doc, long flags);
+  void OnDraw(wxDC* dc);
+  void OnUpdate(wxView *sender, wxObject *hint = NULL);
+  bool OnClose (bool deleteWindow = true);
+  void OnProperties (wxCommandEvent& event);
+  void OnReconstructFBP (wxCommandEvent& event);
+  void OnReconstructFBPRebin (wxCommandEvent& event);
+  void OnReconstructFourier (wxCommandEvent& event);
+  void OnConvertRectangular (wxCommandEvent& event);
+  void OnConvertPolar (wxCommandEvent& event);
+  void OnConvertFFTPolar (wxCommandEvent& event);
+  void OnPlotTThetaSampling (wxCommandEvent& event);
+  void OnPlotHistogram (wxCommandEvent& event);
+  void OnConvertParallel (wxCommandEvent& event);
+  void OnArtifactReduction (wxCommandEvent& event);
+
+  void doReconstructFBP (const Projections& rProj, bool bRebinToParallel);
+
+#if CTSIM_MDI
+  wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+  wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+  ProjectionFileCanvas* getCanvas() { return m_pCanvas; }
+  void setInitialClientSize();
+
+  wxMenu* getFileMenu()  { return m_pFileMenu; }
+  wxMenu* getReconstructMenu()  { return m_pReconstructMenu; }
+
+  ProjectionFileDocument* GetDocument()
+  { return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
+  DECLARE_EVENT_TABLE()
+};
+
+class ProjectionFileCanvas: public wxScrolledWindow
+{
+private:
+  ProjectionFileView* m_pView;
+
+public:
+  ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~ProjectionFileCanvas() ;
+
+  virtual wxSize GetBestSize() const;
+  virtual void OnDraw(wxDC& dc);
+  void setView(ProjectionFileView* pView)
+  { m_pView = pView; }
+};
+
+
+class PhantomCanvas;
+class PhantomFileView : public wxView
+{
+private:
+  DECLARE_DYNAMIC_CLASS(PhantomFileView)
+  DECLARE_EVENT_TABLE()
+
+  PhantomCanvas *CreateCanvas (wxFrame* parent);
+#if CTSIM_MDI
+  wxDocMDIChildFrame* m_pFrame;
+  wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+  wxDocChildFrame* m_pFrame;
+  wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+
+  PhantomCanvas *m_pCanvas;
+  wxMenu* m_pFileMenu;
+
+  int m_iDefaultNDet;
+  int m_iDefaultNView;
+  int m_iDefaultOffsetView;
+  int m_iDefaultNSample;
+  int m_iDefaultGeometry;
+  int m_iDefaultTrace;
+  double m_dDefaultRotation;
+  double m_dDefaultFocalLength;
+  double m_dDefaultCenterDetectorLength;
+  double m_dDefaultViewRatio;
+  double m_dDefaultScanRatio;
+
+  int m_iDefaultRasterNX;
+  int m_iDefaultRasterNY;
+  int m_iDefaultRasterNSamples;
+  double m_dDefaultRasterViewRatio;
+
+  wxWindow* getFrameForChild()
+#if CTSIM_MDI
+  { return theApp->getMainFrame(); }
+#else
+  { return m_pFrame; }
+#endif
+
+public:
+  PhantomFileView();
+  virtual ~PhantomFileView();
+  void canvasClosed()
+  { m_pCanvas = NULL; m_pFrame = NULL; }
+
+  bool OnCreate(wxDocument *doc, long flags);
+  void OnUpdate(wxView *sender, wxObject *hint = NULL);
+  bool OnClose (bool deleteWindow = true);
+  void OnDraw(wxDC* dc);
+  void OnProperties (wxCommandEvent& event);
+  void OnRasterize (wxCommandEvent& event);
+  void OnProjections (wxCommandEvent& event);
+
+  PhantomFileDocument* GetDocument()
+  { return dynamic_cast<PhantomFileDocument*>(wxView::GetDocument()); }
+
+  wxMenu* getFileMenu() { return m_pFileMenu; }
+#if CTSIM_MDI
+  wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+  wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+};
+
+class PhantomCanvas: public wxScrolledWindow
+{
+private:
+  PhantomFileView* m_pView;
+
+public:
+  PhantomCanvas (PhantomFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~PhantomCanvas();
+
+  virtual wxSize GetBestSize() const;
+  void setView(PhantomFileView* pView)
+  { m_pView = pView; }
+  virtual void OnDraw(wxDC& dc);
+};
+
+class PlotFileCanvas;
+class PlotFileView : public wxView
+{
+  DECLARE_DYNAMIC_CLASS(PlotFileView)
+
+private:
+#if CTSIM_MDI
+  wxDocMDIChildFrame* m_pFrame;
+  wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+  wxDocChildFrame* m_pFrame;
+  wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+
+  PlotFileCanvas *m_pCanvas;
+  EZPlot* m_pEZPlot;
+  wxMenu* m_pFileMenu;
+
+  bool m_bMinSpecified;
+  bool m_bMaxSpecified;
+  double m_dMinPixel;
+  double m_dMaxPixel;
+  double m_dAutoScaleFactor;
+
+  PlotFileCanvas *CreateCanvas (wxFrame* parent);
+  wxWindow* getFrameForChild()
+#if CTSIM_MDI
+  { return theApp->getMainFrame(); }
+#else
+  { return m_pFrame; }
+#endif
+
+public:
+  PlotFileView();
+  virtual ~PlotFileView();
+  void canvasClosed()
+  { m_pCanvas = NULL; m_pFrame = NULL; }
+
+  bool OnCreate(wxDocument *doc, long flags);
+  void OnDraw(wxDC* dc);
+  void OnUpdate(wxView *sender, wxObject *hint = NULL);
+  bool OnClose (bool deleteWindow = true);
+
+  void OnProperties (wxCommandEvent& event);
+  void OnScaleMinMax (wxCommandEvent& event);
+  void OnScaleAuto (wxCommandEvent& event);
+  void OnScaleFull (wxCommandEvent& event);
+
+#if CTSIM_MDI
+  wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+  wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+
+  void setInitialClientSize();
+  wxMenu* getFileMenu() { return m_pFileMenu; }
+  PlotFileDocument* GetDocument()
+  { return dynamic_cast<PlotFileDocument*>(wxView::GetDocument()); }
+
+  DECLARE_EVENT_TABLE()
+};
+
+class PlotFileCanvas: public wxScrolledWindow
+{
+private:
+  PlotFileView* m_pView;
+
+public:
+  PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~PlotFileCanvas();
+
+  virtual void OnDraw(wxDC& dc);
+  virtual wxSize GetBestSize() const;
+
+  void setView (PlotFileView* pView)
+  { m_pView = pView; }
+};
+
+
+class TextFileCanvas;
+class TextFileView: public wxView
+{
+private:
+  DECLARE_DYNAMIC_CLASS(TextFileView)
+
+#if CTSIM_MDI
+  wxDocMDIChildFrame* m_pFrame;
+  wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+  wxDocChildFrame* m_pFrame;
+  wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+    wxMenu* m_pFileMenu;
+    TextFileCanvas *m_pCanvas;
+
+public:
+    TextFileView()
+      : wxView() , m_pFrame(0), m_pCanvas(0)
+    {}
+    ~TextFileView();
+    void canvasClosed()
+    { m_pFrame = NULL; }
+
+    bool OnCreate (wxDocument *doc, long flags);
+    void OnDraw (wxDC *dc);
+    void OnUpdate (wxView *sender, wxObject *hint = (wxObject *) NULL);
+    bool OnClose (bool deleteWindow = TRUE);
+
+    TextFileDocument* GetDocument()
+    { return dynamic_cast<TextFileDocument*>(wxView::GetDocument()); }
+
+    TextFileCanvas* getTextCtrl() { return m_pCanvas; }
+    wxMenu* getFileMenu() { return m_pFileMenu; }
+#if CTSIM_MDI
+  wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+  wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+};
+
+class TextFileCanvas: public wxTextCtrl
+{
+    TextFileView *m_pView;
+
+public:
+    TextFileCanvas (TextFileView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style);
+    ~TextFileCanvas ();
+    virtual wxSize GetBestSize() const;
+};
+
+
+#endif
+
diff --git a/tools/Makefile b/tools/Makefile
new file mode 100644
index 0000000..e8d4225
--- /dev/null
+++ b/tools/Makefile
@@ -0,0 +1,518 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# tools/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+srcdir = .
+top_srcdir = ..
+
+pkgdatadir = $(datadir)/ctsim
+pkglibdir = $(libdir)/ctsim
+pkgincludedir = $(includedir)/ctsim
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+bin_PROGRAMS =  ctsimtext$(EXEEXT)
+EXTRA_PROGRAMS = ctsimtext-lam$(EXEEXT)
+ctsimtext_lam_DEPENDENCIES =
+subdir = tools
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/sample-ctsim.sh.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = sample-ctsim.sh
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_ctsimtext_OBJECTS = ctsimtext.$(OBJEXT) if1.$(OBJEXT) if2.$(OBJEXT) \
+	ifinfo.$(OBJEXT) ifexport.$(OBJEXT) phm2if.$(OBJEXT) \
+	phm2pj.$(OBJEXT) pj2if.$(OBJEXT) pjinfo.$(OBJEXT) \
+	pjrec.$(OBJEXT) nographics.$(OBJEXT) phm2helix.$(OBJEXT) \
+	pjHinterp.$(OBJEXT) linogram.$(OBJEXT)
+ctsimtext_OBJECTS = $(am_ctsimtext_OBJECTS)
+am_ctsimtext_lam_OBJECTS = ctsimtext.$(OBJEXT) if1.$(OBJEXT) \
+	if2.$(OBJEXT) ifinfo.$(OBJEXT) ifexport.$(OBJEXT) \
+	phm2if.$(OBJEXT) phm2pj.$(OBJEXT) pj2if.$(OBJEXT) \
+	pjinfo.$(OBJEXT) pjrec.$(OBJEXT) nographics.$(OBJEXT) \
+	mpiworld.$(OBJEXT) phm2helix.$(OBJEXT) pjHinterp.$(OBJEXT) \
+	linogram.$(OBJEXT)
+ctsimtext_lam_OBJECTS = $(am_ctsimtext_lam_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(ctsimtext_SOURCES) $(ctsimtext_lam_SOURCES)
+DIST_SOURCES = $(ctsimtext_SOURCES) $(ctsimtext_lam_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/kevin/pub/src/ctsim/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /home/kevin/pub/src/ctsim/missing --run tar
+AUTOCONF = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/kevin/pub/src/ctsim/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/kevin/pub/src/ctsim/missing --run automake-1.9
+AWK = mawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CPP = gcc -E
+CPPFLAGS =  -DDATADIR="\"${datarootdir}\""
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =    -O2 -DNDEBUG -fomit-frame-pointer -Wall -I/usr/include/ctn -I../include -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+CYGPATH_W = echo
+DEBUG_FALSE = 
+DEBUG_TRUE = #
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+GREP = /bin/grep
+HAVE_SGP_FALSE = #
+HAVE_SGP_TRUE = 
+HAVE_WXWINDOWS_FALSE = #
+HAVE_WXWINDOWS_TRUE = 
+INCLUDED_GETOPT_LONG_FALSE = #
+INCLUDED_GETOPT_LONG_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LDFLAGS =  -L/usr/lib/ctn -L/usr/local/lib -L../libctgraphics -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L../libctsupport -L../libctsim
+LIBOBJS = 
+LIBS = -lm 
+LTLIBOBJS = 
+MAINT = #
+MAINTAINER_MODE_FALSE = 
+MAINTAINER_MODE_TRUE = #
+MAKEINFO = ${SHELL} /home/kevin/pub/src/ctsim/missing --run makeinfo
+NO_X_FALSE = 
+NO_X_TRUE = #
+OBJEXT = o
+PACKAGE = ctsim
+PACKAGE_BUGREPORT = 
+PACKAGE_NAME = 
+PACKAGE_STRING = 
+PACKAGE_TARNAME = 
+PACKAGE_URL = 
+PACKAGE_VERSION = 
+PATH_SEPARATOR = :
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = 
+USE_HTML_FALSE = #
+USE_HTML_TRUE = 
+USE_LAM_FALSE = 
+USE_LAM_TRUE = #
+VERSION = 5.0.0
+XMKMF = 
+X_BASIC_LIBS = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+X_TOOLKIT_LIBS = 
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+cgibindir = 
+cgibinurl = 
+cgiprograms = 
+ctlibs =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+htmldata = simulate.html
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /home/kevin/pub/src/ctsim/install-sh
+lamdefs = 
+lamdir = 
+lamprograms = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+mpienable = 
+my_includes =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+webdatadir = 
+webdataurl = 
+webenabled = 
+wxcflags = -I/usr/lib/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread
+wxconfig = /usr/bin/wx-config
+wxlibs = 
+INCLUDES =  -I../include -I.. -I/usr/local/include -I/usr/X11R6/include
+#SOURCE_DEPEND = ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a
+SOURCE_DEPEND = ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a ../libctgraphics/libctgraphics.a
+ctsimtext_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp
+ctsimtext_LDADD =  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  -lwx_gtk2u_gl-2.8    -lctsupport  -lpng -lz -lfftw3 -lctn
+ctsimtext_DEPENDENCIES = $(SOURCE_DEPEND)
+CLEANFILES = \*.pgm \*.if \*~ \*.pj sample-ctsim.sh
+ctsimtext_lam_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp mpiworld.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp
+ctsimtext_lam_LDADD = @ctlamlibs@
+#CC_LAM = $(lamdir)/bin/hcp
+#LAM_EXTRA_SRC = mpiworld.cpp
+#ctsimtext_lam_DEPENDENCIES = $(SOURCE_DEPEND)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  tools/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  tools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: # $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+sample-ctsim.sh: $(top_builddir)/config.status $(srcdir)/sample-ctsim.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ctsimtext$(EXEEXT): $(ctsimtext_OBJECTS) $(ctsimtext_DEPENDENCIES) 
+	@rm -f ctsimtext$(EXEEXT)
+	$(CXXLINK) $(ctsimtext_LDFLAGS) $(ctsimtext_OBJECTS) $(ctsimtext_LDADD) $(LIBS)
+ctsimtext-lam$(EXEEXT): $(ctsimtext_lam_OBJECTS) $(ctsimtext_lam_DEPENDENCIES) 
+	@rm -f ctsimtext-lam$(EXEEXT)
+	$(CXXLINK) $(ctsimtext_lam_LDFLAGS) $(ctsimtext_lam_OBJECTS) $(ctsimtext_lam_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include ./$(DEPDIR)/ctsimtext.Po
+include ./$(DEPDIR)/if1.Po
+include ./$(DEPDIR)/if2.Po
+include ./$(DEPDIR)/ifexport.Po
+include ./$(DEPDIR)/ifinfo.Po
+include ./$(DEPDIR)/linogram.Po
+include ./$(DEPDIR)/mpiworld.Po
+include ./$(DEPDIR)/nographics.Po
+include ./$(DEPDIR)/phm2helix.Po
+include ./$(DEPDIR)/phm2if.Po
+include ./$(DEPDIR)/phm2pj.Po
+include ./$(DEPDIR)/pj2if.Po
+include ./$(DEPDIR)/pjHinterp.Po
+include ./$(DEPDIR)/pjinfo.Po
+include ./$(DEPDIR)/pjrec.Po
+
+.cpp.o:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+#	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-exec install-exec-am \
+	install-exec-hook install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-info-am
+
+
+install-exec-hook:
+	ln -sf ctsimtext $(bindir)/if1
+	ln -sf ctsimtext $(bindir)/if2
+	ln -sf ctsimtext $(bindir)/ifexport
+	ln -sf ctsimtext $(bindir)/ifinfo
+	ln -sf ctsimtext $(bindir)/phm2if
+	ln -sf ctsimtext $(bindir)/phm2pj
+	ln -sf ctsimtext $(bindir)/phm2helix
+	ln -sf ctsimtext $(bindir)/pj2if
+	ln -sf ctsimtext $(bindir)/pjinfo
+	ln -sf ctsimtext $(bindir)/pjrec
+	ln -sf ctsimtext $(bindir)/pjHinterp
+	ln -sf ctsimtext $(bindir)/linogram
+
+#ctsimtext-lam$(EXEEXT): ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp mpiworld.cpp linogram.cpp ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a
+#	$(CC_LAM) -DHAVE_CONFIG_H  $(CFLAGS) $(INCLUDES) -DHAVE_MPI -DNO_MAIN ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp -o ctsimtext-lam $(LDFLAGS) $(LAM_EXTRA_SRC)  -lreadline -lncurses -lctsim  -lreadline -lncurses -lctgraphics   -lGL -lGLU -pthread   -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -l [...]
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644
index 0000000..49b82a9
--- /dev/null
+++ b/tools/Makefile.am
@@ -0,0 +1,46 @@
+bin_PROGRAMS = @lamprograms@  ctsimtext 
+EXTRA_PROGRAMS = ctsimtext-lam
+INCLUDES=@my_includes@
+
+if HAVE_SGP
+SOURCE_DEPEND=../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a ../libctgraphics/libctgraphics.a
+else
+SOURCE_DEPEND=../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a
+endif
+
+install-exec-hook:
+	ln -sf ctsimtext $(bindir)/if1
+	ln -sf ctsimtext $(bindir)/if2
+	ln -sf ctsimtext $(bindir)/ifexport
+	ln -sf ctsimtext $(bindir)/ifinfo
+	ln -sf ctsimtext $(bindir)/phm2if
+	ln -sf ctsimtext $(bindir)/phm2pj
+	ln -sf ctsimtext $(bindir)/phm2helix
+	ln -sf ctsimtext $(bindir)/pj2if
+	ln -sf ctsimtext $(bindir)/pjinfo
+	ln -sf ctsimtext $(bindir)/pjrec
+	ln -sf ctsimtext $(bindir)/pjHinterp
+	ln -sf ctsimtext $(bindir)/linogram
+
+ctsimtext_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp
+ctsimtext_LDADD=@ctlibs@
+ctsimtext_DEPENDENCIES=$(SOURCE_DEPEND)
+
+CLEANFILES=\*.pgm \*.if \*~ \*.pj sample-ctsim.sh
+
+ctsimtext_lam_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp mpiworld.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp
+ctsimtext_lam_LDADD=@ctlamlibs@
+
+if USE_LAM
+CC_LAM = $(lamdir)/bin/hcp
+LAM_EXTRA_SRC = mpiworld.cpp
+
+ctsimtext_lam_DEPENDENCIES=$(SOURCE_DEPEND)
+
+ctsimtext-lam$(EXEEXT): ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp mpiworld.cpp linogram.cpp ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a
+	$(CC_LAM) @DEFS@ @lamdefs@ $(CFLAGS) $(INCLUDES) -DHAVE_MPI -DNO_MAIN ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp -o ctsimtext-lam $(LDFLAGS) $(LAM_EXTRA_SRC) @ctlibs@
+
+endif
+
+
+
diff --git a/tools/Makefile.in b/tools/Makefile.in
new file mode 100644
index 0000000..3896568
--- /dev/null
+++ b/tools/Makefile.in
@@ -0,0 +1,551 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = @lamprograms@ ctsimtext$(EXEEXT)
+EXTRA_PROGRAMS = ctsimtext-lam$(EXEEXT)
+ at USE_LAM_FALSE@ctsimtext_lam_DEPENDENCIES =
+subdir = tools
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/sample-ctsim.sh.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = sample-ctsim.sh
+CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+PROGRAMS = $(bin_PROGRAMS)
+am_ctsimtext_OBJECTS = ctsimtext.$(OBJEXT) if1.$(OBJEXT) if2.$(OBJEXT) \
+	ifinfo.$(OBJEXT) ifexport.$(OBJEXT) phm2if.$(OBJEXT) \
+	phm2pj.$(OBJEXT) pj2if.$(OBJEXT) pjinfo.$(OBJEXT) \
+	pjrec.$(OBJEXT) nographics.$(OBJEXT) phm2helix.$(OBJEXT) \
+	pjHinterp.$(OBJEXT) linogram.$(OBJEXT)
+ctsimtext_OBJECTS = $(am_ctsimtext_OBJECTS)
+am_ctsimtext_lam_OBJECTS = ctsimtext.$(OBJEXT) if1.$(OBJEXT) \
+	if2.$(OBJEXT) ifinfo.$(OBJEXT) ifexport.$(OBJEXT) \
+	phm2if.$(OBJEXT) phm2pj.$(OBJEXT) pj2if.$(OBJEXT) \
+	pjinfo.$(OBJEXT) pjrec.$(OBJEXT) nographics.$(OBJEXT) \
+	mpiworld.$(OBJEXT) phm2helix.$(OBJEXT) pjHinterp.$(OBJEXT) \
+	linogram.$(OBJEXT)
+ctsimtext_lam_OBJECTS = $(am_ctsimtext_lam_OBJECTS)
+DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+am__mv = mv -f
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+	-o $@
+SOURCES = $(ctsimtext_SOURCES) $(ctsimtext_lam_SOURCES)
+DIST_SOURCES = $(ctsimtext_SOURCES) $(ctsimtext_lam_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_BASIC_LIBS = @X_BASIC_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+X_TOOLKIT_LIBS = @X_TOOLKIT_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+cgibindir = @cgibindir@
+cgibinurl = @cgibinurl@
+cgiprograms = @cgiprograms@
+ctlibs = @ctlibs@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldata = @htmldata@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lamdefs = @lamdefs@
+lamdir = @lamdir@
+lamprograms = @lamprograms@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mpienable = @mpienable@
+my_includes = @my_includes@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+webdatadir = @webdatadir@
+webdataurl = @webdataurl@
+webenabled = @webenabled@
+wxcflags = @wxcflags@
+wxconfig = @wxconfig@
+wxlibs = @wxlibs@
+INCLUDES = @my_includes@
+ at HAVE_SGP_FALSE@SOURCE_DEPEND = ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a
+ at HAVE_SGP_TRUE@SOURCE_DEPEND = ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a ../libctgraphics/libctgraphics.a
+ctsimtext_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp
+ctsimtext_LDADD = @ctlibs@
+ctsimtext_DEPENDENCIES = $(SOURCE_DEPEND)
+CLEANFILES = \*.pgm \*.if \*~ \*.pj sample-ctsim.sh
+ctsimtext_lam_SOURCES = ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp nographics.cpp mpiworld.cpp phm2helix.cpp pjHinterp.cpp linogram.cpp
+ctsimtext_lam_LDADD = @ctlamlibs@
+ at USE_LAM_TRUE@CC_LAM = $(lamdir)/bin/hcp
+ at USE_LAM_TRUE@LAM_EXTRA_SRC = mpiworld.cpp
+ at USE_LAM_TRUE@ctsimtext_lam_DEPENDENCIES = $(SOURCE_DEPEND)
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu tools/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+sample-ctsim.sh: $(top_builddir)/config.status $(srcdir)/sample-ctsim.sh.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	for p in $$list; do echo "$$p $$p"; done | \
+	sed 's/$(EXEEXT)$$//' | \
+	while read p p1; do if test -f $$p; \
+	  then echo "$$p"; echo "$$p"; else :; fi; \
+	done | \
+	sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+	sed 'N;N;N;s,\n, ,g' | \
+	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+	    else { print "f", $$3 "/" $$4, $$1; } } \
+	  END { for (d in files) print "f", d, files[d] }' | \
+	while read type dir files; do \
+	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+	    test -z "$$files" || { \
+	      echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+	      $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+	    } \
+	; done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+	files=`for p in $$list; do echo "$$p"; done | \
+	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+	      -e 's/$$/$(EXEEXT)/' `; \
+	test -n "$$list" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+ctsimtext$(EXEEXT): $(ctsimtext_OBJECTS) $(ctsimtext_DEPENDENCIES) 
+	@rm -f ctsimtext$(EXEEXT)
+	$(CXXLINK) $(ctsimtext_OBJECTS) $(ctsimtext_LDADD) $(LIBS)
+ at USE_LAM_FALSE@ctsimtext-lam$(EXEEXT): $(ctsimtext_lam_OBJECTS) $(ctsimtext_lam_DEPENDENCIES) 
+ at USE_LAM_FALSE@	@rm -f ctsimtext-lam$(EXEEXT)
+ at USE_LAM_FALSE@	$(CXXLINK) $(ctsimtext_lam_OBJECTS) $(ctsimtext_lam_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ctsimtext.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/if1.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/if2.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ifexport.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ifinfo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/linogram.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/mpiworld.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/nographics.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/phm2helix.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/phm2if.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/phm2pj.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pj2if.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pjHinterp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pjinfo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pjrec.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	set x; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && $(am__cd) $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-exec-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic ctags distclean distclean-compile \
+	distclean-generic distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-exec-hook install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-binPROGRAMS
+
+
+install-exec-hook:
+	ln -sf ctsimtext $(bindir)/if1
+	ln -sf ctsimtext $(bindir)/if2
+	ln -sf ctsimtext $(bindir)/ifexport
+	ln -sf ctsimtext $(bindir)/ifinfo
+	ln -sf ctsimtext $(bindir)/phm2if
+	ln -sf ctsimtext $(bindir)/phm2pj
+	ln -sf ctsimtext $(bindir)/phm2helix
+	ln -sf ctsimtext $(bindir)/pj2if
+	ln -sf ctsimtext $(bindir)/pjinfo
+	ln -sf ctsimtext $(bindir)/pjrec
+	ln -sf ctsimtext $(bindir)/pjHinterp
+	ln -sf ctsimtext $(bindir)/linogram
+
+ at USE_LAM_TRUE@ctsimtext-lam$(EXEEXT): ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp mpiworld.cpp linogram.cpp ../include/ct.h ../libctsim/libctsim.a ../libctsupport/libctsupport.a
+ at USE_LAM_TRUE@	$(CC_LAM) @DEFS@ @lamdefs@ $(CFLAGS) $(INCLUDES) -DHAVE_MPI -DNO_MAIN ctsimtext.cpp if1.cpp if2.cpp ifinfo.cpp ifexport.cpp phm2if.cpp phm2pj.cpp pj2if.cpp pjinfo.cpp pjrec.cpp -o ctsimtext-lam $(LDFLAGS) $(LAM_EXTRA_SRC) @ctlibs@
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/tools/ctsimtext.cpp b/tools/ctsimtext.cpp
new file mode 100644
index 0000000..5a569c4
--- /dev/null
+++ b/tools/ctsimtext.cpp
@@ -0,0 +1,329 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          ctsimtext.cpp
+**   Purpose:       Text mode shell for CTSim
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Jan 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+#ifdef HAVE_READLINE_H
+extern "C" {
+#include <readline.h>
+#include <history.h>
+};
+#elif defined(HAVE_READLINE_READLINE_H)
+extern "C" {
+#include <readline/readline.h>
+#include <readline/history.h>
+};
+#endif
+#include <exception>
+
+// Master shell for all command-line tools
+// If called as ctsimtext, program will look to next token on command-line as the function name
+// If linked to ctsimtext, but executed as another name, eg pjrec, then program will use that
+// linked name as name of function.
+
+static const char* const g_szIdStr = "$Id$";
+static const char* const s_szProgramName = "ctsimtext";
+static const char* const s_szProgramName2 = "ctsimtext.exe";
+static const char* const s_szProgramName3 = "ctsimtext-lam";
+
+extern int if1_main (int argc, char* const argv[]);
+extern int if2_main (int argc, char* const argv[]);
+extern int ifexport_main (int argc, char* const argv[]);
+extern int ifinfo_main (int argc, char* const argv[]);
+extern int phm2if_main (int argc, char* const argv[]);
+extern int phm2pj_main (int argc, char* const argv[]);
+extern int phm2helix_main (int argc, char* const argv[]);
+extern int pjHinterp_main (int argc, char* const argv[]);
+extern int pj2if_main (int argc, char* const argv[]);
+extern int pjinfo_main (int argc, char* const argv[]);
+extern int pjrec_main (int argc, char* const argv[]);
+extern int linogram_main (int argc, char* const argv[]);
+
+static int processCommand (int argc, char* const argv[]);
+static void convertStringToArgcv (char* szLine, int* piArgc, char*** pppArgv);
+
+
+void
+ctsimtext_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " ctsim-function-name ctstim-function-parameters...\n";
+  std::cout << "CTSim text shell";
+#ifdef VERSION
+  std::cout << ", Version " <<VERSION;
+#endif
+  std::cout << "\n\n";
+  std::cout << "  if1           Single image file conversion\n";
+  std::cout << "  if2           Dual image file conversions\n";
+  std::cout << "  ifexport      Export an imagefile to a graphics file\n";
+  std::cout << "  ifinfo        Image file information\n";
+  std::cout << "  pj2if         Convert an projection file into an imagefile\n";
+  std::cout << "  pjinfo        Projection file information\n";
+  std::cout << "  pjrec         Projection reconstruction\n";
+  std::cout << "  phm2if        Convert a geometric phantom into an imagefile\n";
+  std::cout << "  phm2pj        Take projections of a phantom object\n";
+  std::cout << "  phm2helix     Take projections of a phantom object\n";
+  std::cout << "  pjHinterp     Interpolate helical projections of a phantom object\n";
+  std::cout << "  linogram      Print linogram sampling\n";
+}
+
+void
+interactive_usage ()
+{
+  std::cout << "usage: function-name parameters...\n";
+  std::cout << "Available functions:\n";
+  std::cout << "  ifexport      Export an imagefile to a graphics file\n";
+  std::cout << "  ifinfo        Image file information\n";
+  std::cout << "  if1           Single image file conversion\n";
+  std::cout << "  if2           Dual image file conversions\n";
+  std::cout << "  phm2if        Convert a geometric phantom into an imagefile\n";
+  std::cout << "  phm2pj        Take projections of a phantom object\n";
+  std::cout << "  phm2helix     Take projections of a phantom object\n";
+  std::cout << "  pjinfo        Projection file information\n";
+  std::cout << "  pj2if         Convert an projection file into an imagefile\n";
+  std::cout << "  pjHinterp     Interpolate helical projections of a phantom object\n";
+  std::cout << "  pjrec         Projection reconstruction\n";
+  std::cout << "  quit          Quits shell\n";
+  std::cout << "  linogram      Display linogram sampling\n";
+  std::cout << "All functions accept --help as parameter for online help\n\n";
+}
+
+static bool s_bInteractive = false;
+
+int
+ctsimtext_main (int argc, char * argv[])
+{
+  int iReturn = 0;
+
+  if (argc > 1 && (strcmp(s_szProgramName, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName2, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName3, fileBasename (argv[0])) == 0)) {
+    argv++;
+    argc--;
+    iReturn = processCommand (argc, argv);
+  } else if (argc >= 1 && ! (strcmp(s_szProgramName, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName2, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName3, fileBasename (argv[0])) == 0)) {
+    iReturn = processCommand (argc, argv);
+  } else {
+    s_bInteractive = true;
+    char szPrompt[] = "CTSim> ";
+    std::cout << "CTSim Text Shell";
+#ifdef VERSION
+    std::cout << ", Version " << VERSION;
+#endif
+    std::cout << " (Type \"quit\" to end)\n\n";
+
+    while (1) {
+#ifdef HAVE_READLINE
+      char* pszInputLine = readline (szPrompt);
+      if (! pszInputLine)
+        break;
+      if (*pszInputLine != EOS)
+        add_history (pszInputLine);
+
+#else  // DONT_HAVE_READLINE
+
+      static const int s_MaxLineLength = 1024;
+      char* pszInputLine = new char [s_MaxLineLength+1];
+      std::cout << szPrompt;
+      std::cin.getline (pszInputLine, s_MaxLineLength);
+
+#ifdef DEBUG
+      std::cout << "#" << pszInputLine << "#\n";
+#endif
+
+      std::cout << std::flush;
+      std::cout << "\n";
+#endif  // DONT_HAVE_READLINE
+
+      if (strncasecmp (pszInputLine, "quit", 4) == 0)
+        break;
+
+      convertStringToArgcv (pszInputLine, &argc, &argv);
+#ifdef DEBUG
+      for (int i = 0; i < argc; i++)
+        std::cout << "Token " << i << ": " << argv[i] << "\n";
+#endif
+      iReturn = processCommand (argc, argv);
+
+      delete pszInputLine;
+    }
+  }
+
+  return iReturn;
+}
+
+static void
+convertStringToArgcv (char* pszLine, int* piArgc, char*** pppArgv)
+{
+  char* pCurrentPos = pszLine;
+  int nTokens = 0;
+  std::vector<char*> vecpszToken;
+
+  // Process line
+  bool bInDoubleQuote = false;
+  bool bInSingleQuote = false;
+  bool bInToken = false;
+
+  while (*pCurrentPos) {
+    if (isspace (*pCurrentPos)) {
+      if (! bInToken)
+        *pCurrentPos = 0;
+      else if (bInSingleQuote || bInDoubleQuote)
+        ;
+      else { // in non-quote token
+        *pCurrentPos = 0;
+        bInToken = false;
+      }
+    }
+    else if (*pCurrentPos == '\"') {
+      if (bInSingleQuote) {
+        bInSingleQuote = false;
+        *pCurrentPos = 0;
+      } else {
+        bInSingleQuote = true;
+        if (! bInToken) {
+          bInToken = true;
+          nTokens++;
+          vecpszToken.push_back (pCurrentPos+1);
+        }
+      }
+    } else if (*pCurrentPos == '\'') {
+      if (bInDoubleQuote) {
+        bInDoubleQuote = false;
+        *pCurrentPos = 0;
+      } else {
+        bInDoubleQuote = true;
+        if (! bInToken) {
+          bInToken = true;
+          nTokens++;
+          vecpszToken.push_back (pCurrentPos+1);
+        }
+      }
+    } else if (! bInToken) {   // nonwhite, non-quote character
+      bInToken = true;
+      nTokens++;
+      vecpszToken.push_back (pCurrentPos);
+    }
+
+    pCurrentPos++;
+  }
+
+  *piArgc = nTokens;
+  if (nTokens > 0) {
+    *pppArgv = new char* [nTokens];
+    for (unsigned int iToken = 0; iToken < vecpszToken.size(); iToken++)
+      (*pppArgv)[iToken] = vecpszToken[iToken];
+  } else
+    *pppArgv = NULL;
+}
+
+static int
+processCommand (int argc, char* const argv[])
+{
+  if (argc < 1)
+    return 1;
+
+  const char* const pszFunction = fileBasename (argv[0]);
+
+  try {
+    if (strcasecmp (pszFunction, "if1") == 0)
+      return if1_main (argc, argv);
+    else if (strcasecmp (pszFunction, "if2") == 0)
+      return if2_main (argc, argv);
+    else if (strcasecmp (pszFunction, "ifexport") == 0)
+      return ifexport_main (argc, argv);
+    else if (strcasecmp (pszFunction, "ifinfo") == 0)
+      return ifinfo_main (argc, argv);
+    else if (strcasecmp (pszFunction, "phm2if") == 0)
+      return phm2if_main (argc, argv);
+    else if (strcasecmp (pszFunction, "phm2pj") == 0)
+      return phm2pj_main (argc, argv);
+    else if (strcasecmp (pszFunction, "phm2helix") == 0)
+      return phm2helix_main (argc, argv);
+    else if (strcasecmp (pszFunction, "pjHinterp") == 0)
+      return pjHinterp_main (argc, argv);
+    else if (strcasecmp (pszFunction, "pj2if") == 0)
+      return pj2if_main (argc, argv);
+    else if (strcasecmp (pszFunction, "pjinfo") == 0)
+      return pjinfo_main (argc, argv);
+    else if (strcasecmp (pszFunction, "pjrec") == 0)
+      return pjrec_main (argc, argv);
+    else if (strcasecmp (pszFunction, "linogram") == 0)
+      return linogram_main (argc, argv);
+    else {
+      std::cout << "Unknown function name: " << pszFunction << "\n";
+      if (s_bInteractive)
+        interactive_usage();
+      else
+        ctsimtext_usage (s_szProgramName);
+      return 1;
+    }
+  } catch (std::exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception caught\n";
+  }
+
+  return 1;
+}
+
+int
+main (int argc, char* argv[])
+{
+#if defined(HAVE_FFTW) && defined(HAVE_GETENV)
+  const char* const pszHome = getenv("HOME");
+  char* pszWisdom = NULL;
+
+  if (pszHome) {
+    const char szFileBase[] = ".fftw3-wisdom";
+    int nHome = strlen(pszHome);
+    int nBase = strlen(szFileBase);
+    int len = nHome + nBase + 1;
+    pszWisdom = new char [ len + 1 ];
+    strcpy (pszWisdom, pszHome);
+    pszWisdom[nHome] = '/';
+    strcpy(pszWisdom+nHome+1,szFileBase);
+    pszWisdom[nHome+nBase+2] = 0;
+
+    FILE *wisdom = fopen(pszWisdom,"r");
+    if (wisdom) {
+      fftw_import_wisdom_from_file(wisdom);
+      fclose(wisdom);
+    }
+  }
+#endif
+
+  int retval = ctsimtext_main(argc, argv);
+
+#if defined(HAVE_FFTW) && defined(HAVE_GETENV)
+  if (pszWisdom) {
+    FILE* wisdom = fopen(pszWisdom,"w+");
+    if (wisdom) {
+      fftw_export_wisdom_to_file(wisdom);
+      fclose(wisdom);
+      delete [] pszWisdom;
+    }
+  }
+#endif
+
+  return retval;
+}
diff --git a/tools/if1.cpp b/tools/if1.cpp
new file mode 100644
index 0000000..e823255
--- /dev/null
+++ b/tools/if1.cpp
@@ -0,0 +1,185 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          if1.cpp
+**   Purpose:       Manipulate a single image file
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Aug 1984
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+/* FILE
+ *   if1.c             Filter a single IF file
+ */
+
+#include "ct.h"
+
+enum {O_LOG, O_EXP, O_SQRT, O_SQR, O_INVERT, O_VERBOSE, O_HELP, O_VERSION};
+
+static struct option my_options[] =
+{
+  {"invert", 0, 0, O_INVERT},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"log", 0, 0, O_LOG},
+  {"exp", 0, 0, O_EXP},
+  {"sqr", 0, 0, O_SQR},
+  {"sqrt", 0, 0, O_SQRT},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void
+if1_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " infile outfile [OPTIONS]" << std::endl;
+  std::cout << "Generate a IF file from a IF file" << std::endl;
+  std::cout << std::endl;
+  std::cout << "     --invert   Invert image" << std::endl;
+  std::cout << "     --log      Natural logrithm of image" << std::endl;
+  std::cout << "     --exp      Natural exponential of image" << std::endl;
+  std::cout << "     --sqr      Square of image" << std::endl;
+  std::cout << "     --sqrt     Square root of image" << std::endl;
+  std::cout << "     --verbose  Verbose mode" << std::endl;
+  std::cout << "     --version  Print version" << std::endl;
+  std::cout << "     --help     Print this help message" << std::endl;
+}
+
+int
+if1_main (int argc, char *const argv[])
+{
+  char *in_file;
+  char *out_file;
+  int opt_verbose = 0;
+  int opt_invert = 0;
+  int opt_log = 0;
+  int opt_exp = 0;
+  int opt_sqr = 0;
+  int opt_sqrt = 0;
+
+  while (1)
+    {
+      int c = getopt_long (argc, argv, "", my_options, NULL);
+
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case O_INVERT:
+          opt_invert = 1;
+          break;
+        case O_LOG:
+          opt_log = 1;
+          break;
+        case O_SQR:
+          opt_sqr = 1;
+          break;
+        case O_SQRT:
+          opt_sqrt = 1;
+          break;
+        case O_EXP:
+          opt_exp = 1;
+          break;
+        case O_VERBOSE:
+          opt_verbose = 1;
+          break;
+        case O_VERSION:
+#ifdef VERSION
+          std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+          std::cout << "Unknown version number" << std::endl;
+#endif
+          return (0);
+        case O_HELP:
+        case '?':
+          if1_usage(argv[0]);
+          return (0);
+        default:
+          if1_usage(argv[0]);
+          return (1);
+        }
+    }
+
+  if (optind + 2 != argc)
+    {
+      if1_usage(argv[0]);
+      return (1);
+    }
+
+  in_file = argv[optind];
+  out_file = argv[optind + 1];
+
+  std::string histString;
+
+  if (opt_invert || opt_log || opt_exp || opt_sqr || opt_sqrt) {
+    ImageFile im_in;
+    im_in.fileRead (in_file);
+    int nx = im_in.nx();
+    int ny = im_in.ny();
+    ImageFile im_out (nx, ny);
+
+    if (opt_invert) {
+      im_in.invertPixelValues (im_out);
+      histString = "Invert transformation";
+    }
+    if (opt_log) {
+      im_in.log (im_out);
+      histString = "Logrithmic transformation";
+    }
+    if (opt_exp) {
+      im_in.exp (im_out);
+      histString = "Exponential transformation";
+    }
+    if (opt_sqr) {
+      im_in.square (im_out);
+      histString = "Square transformation";
+    }
+    if (opt_sqrt) {
+      im_in.sqrt (im_out);
+      histString = "Square root transformation";
+    }
+
+    im_out.labelsCopy (im_in);
+    im_out.labelAdd (Array2dFileLabel::L_HISTORY, histString.c_str());
+    im_out.fileWrite (out_file);
+  }
+
+  return (0);
+}
+
+#ifndef NO_MAIN
+int
+main (int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = if1_main(argc, argv);
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception" << std::endl;
+  }
+
+  return (retval);
+}
+#endif
+
diff --git a/tools/if2.cpp b/tools/if2.cpp
new file mode 100644
index 0000000..bc984c8
--- /dev/null
+++ b/tools/if2.cpp
@@ -0,0 +1,322 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          if2.cpp
+**   Purpose:       Manipulate two image files
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  May 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+
+#include "ct.h"
+#include "timer.h"
+
+enum {O_ADD, O_SUB, O_MUL, O_DIVIDE, O_COMP, O_ROW_PLOT, O_COLUMN_PLOT, O_VERBOSE, O_HELP, O_VERSION};
+
+static struct option my_options[] =
+{
+  {"add", 0, 0, O_ADD},
+  {"sub", 0, 0, O_SUB},
+  {"multiply", 0, 0, O_MUL},
+  {"divide", 0, 0, O_DIVIDE},
+  {"comp", 0, 0, O_COMP},
+  {"column-plot", 1, 0, O_COLUMN_PLOT},
+  {"row-plot", 1, 0, O_ROW_PLOT},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void
+if2_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " infile1 infile2 outfile [OPTIONS]\n";
+  std::cout << "Perform functions on two input image files\n";
+  std::cout << std::endl;
+  std::cout << "     infile1            Name of first input IF file\n";
+  std::cout << "     infile2            Name of second input IF file\n";
+  std::cout << "     outfile            Name of output Image or Plot file\n";
+  std::cout << "     --add              Add images\n";
+  std::cout << "     --sub              Subtract image 2 from image 1\n";
+  std::cout << "     --mul              Multiply images\n";
+  std::cout << "     --comp             Compare images\n";
+  std::cout << "     --column-plot n    Plot column\n";
+  std::cout << "     --row-plot n       Plot row\n";
+  std::cout << "     --verbose          Verbose modem\n";
+  std::cout << "     --version          Print version\n";
+  std::cout << "     --help             Print this help message\n";
+}
+
+int
+if2_main (int argc, char *const argv[])
+{
+  ImageFile* pim_in1;
+  ImageFile* pim_in2;
+  ImageFile* pim_out = NULL;
+  std::string in_file1;
+  std::string in_file2;
+  std::string strOutFile;
+  int opt_verbose = 0;
+  int opt_add = 0;
+  int opt_sub = 0;
+  int opt_mul = 0;
+  bool opt_divide = false;
+  int opt_comp = 0;
+  bool opt_bImageOutputFile = false;
+  bool opt_bPlotOutputFile = false;
+  int opt_rowPlot = -1;
+  int opt_columnPlot = -1;
+  Timer timerProgram;
+
+  while (1) {
+    char* endptr;
+    int c = getopt_long (argc, argv, "", my_options, NULL);
+
+    if (c == -1)
+      break;
+
+    switch (c) {
+    case O_ADD:
+      opt_add = 1;
+      opt_bImageOutputFile = true;
+      break;
+    case O_SUB :
+      opt_sub = 1;
+      opt_bImageOutputFile = true;
+      break;
+    case O_MUL:
+      opt_mul = 1;
+      opt_bImageOutputFile = true;
+      break;
+    case O_DIVIDE:
+      opt_divide = true;
+      opt_bImageOutputFile = true;
+      break;
+    case O_ROW_PLOT:
+      opt_rowPlot = strtol(optarg, &endptr, 10);
+      if (endptr != optarg + strlen(optarg)) {
+        if2_usage(argv[0]);
+      }
+      opt_bPlotOutputFile = true;
+      break;
+    case O_COLUMN_PLOT:
+      opt_columnPlot = strtol(optarg, &endptr, 10);
+      if (endptr != optarg + strlen(optarg)) {
+        if2_usage(argv[0]);
+      }
+      opt_bPlotOutputFile = true;
+      break;
+    case O_COMP:
+      opt_comp = 1;
+      break;
+    case O_VERBOSE:
+      opt_verbose = 1;
+      break;
+    case O_VERSION:
+#ifdef VERSION
+      std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+      std::cout << "Unknown version number\n";
+#endif
+      return (0);
+    case O_HELP:
+    case '?':
+      if2_usage(argv[0]);
+      return (0);
+    default:
+      if2_usage(argv[0]);
+      return (1);
+    }
+  }
+
+  if ((opt_bImageOutputFile || opt_bPlotOutputFile) && (optind + 3 != argc)) {
+    if2_usage(argv[0]);
+    return (1);
+  }
+  else if (! (opt_bImageOutputFile || opt_bPlotOutputFile) && optind + 2 != argc) {
+    if2_usage(argv[0]);
+    return (1);
+  }
+
+  in_file1 = argv[optind];
+  in_file2 = argv[optind + 1];
+  if (opt_bImageOutputFile || opt_bPlotOutputFile)
+    strOutFile = argv[optind + 2];
+
+  pim_in1 = new ImageFile ();
+  pim_in2 = new ImageFile ();
+  ImageFile& im_in1 = *pim_in1;
+  ImageFile& im_in2 = *pim_in2;
+
+  if (! im_in1.fileRead(in_file1) || ! im_in2.fileRead(in_file2)) {
+    sys_error (ERR_WARNING, "Error reading an image");
+    return (1);
+  }
+
+  if (im_in1.nx() != im_in2.nx() || im_in1.ny() != im_in2.ny()) {
+    sys_error (ERR_SEVERE, "Error: Size of image 1 (%d,%d) and image 2 (%d,%d) do not match",
+      im_in1.nx(), im_in1.ny(), im_in2.nx(), im_in2.ny());
+    return(1);
+  }
+  if (im_in1.nx() < 0 || im_in1.ny() < 0) {
+    sys_error (ERR_SEVERE, "Error: Size of image < 0");
+    return(1);
+  }
+
+  ImageFileArray v1 = im_in1.getArray();
+  ImageFileArray v2 = im_in2.getArray();
+  ImageFileArray vout = NULL;
+
+  if (opt_bImageOutputFile && opt_bPlotOutputFile) {
+    sys_error (ERR_SEVERE, "Both Image and Plot output files can not be selected simultaneously");
+    return (1);
+  }
+  if (opt_bImageOutputFile) {
+    pim_out = new ImageFile (im_in1.nx(), im_in1.ny());
+    vout = pim_out->getArray();
+  }
+
+  std::string strOperation;
+  int nx = im_in1.nx();
+  int ny = im_in1.ny();
+  int nx2 = im_in2.nx();
+  int ny2 = im_in2.ny();
+
+  if (opt_add) {
+    strOperation = "Add Images";
+    im_in1.addImages (im_in2, *pim_out);
+  } else if (opt_sub) {
+    strOperation = "Subtract Images";
+    im_in1.subtractImages (im_in2, *pim_out);
+  } else if (opt_mul) {
+    strOperation = "Multiply Images";
+    im_in1.multiplyImages (im_in2, *pim_out);
+  } else if (opt_divide) {
+    strOperation = "Divide Images";
+    im_in1.divideImages (im_in2, *pim_out);
+  }
+  if (opt_comp) {
+    double d, r, e;
+    im_in1.comparativeStatistics (im_in2, d, r, e);
+    std::cout << "d=" << d << ", r=" << r << ", e=" << e << std::endl;
+  }
+
+  int i;
+  if (opt_columnPlot > 0) {
+    if (opt_columnPlot >= nx || opt_columnPlot >= nx2) {
+      sys_error (ERR_SEVERE, "column-plot > nx");
+      return (1);
+    }
+    double* plot_xaxis = new double [nx];
+    for (i = 0; i < nx; i++)
+      plot_xaxis[i] = i;
+
+    PlotFile plotFile (3, nx);
+
+    plotFile.addColumn (0, plot_xaxis);
+    plotFile.addColumn (1, v1[opt_columnPlot]);
+    plotFile.addColumn (2, v2[opt_columnPlot]);
+    std::ostringstream os;
+    os << "Column " << opt_columnPlot << " Comparison";
+    plotFile.addDescription (os.str().c_str());
+    std::string title("title ");
+    title += os.str();
+    plotFile.addEzsetCommand (title.c_str());
+    plotFile.addEzsetCommand ("xlabel Column");
+    plotFile.addEzsetCommand ("ylabel Pixel Value");
+    plotFile.addEzsetCommand ("box");
+    plotFile.addEzsetCommand ("grid");
+    plotFile.addEzsetCommand ("xticks major 5");
+
+    plotFile.fileWrite (strOutFile.c_str());
+
+    delete plot_xaxis;
+  }
+
+  if (opt_rowPlot > 0) {
+    if (opt_rowPlot >= ny || opt_rowPlot >= ny2) {
+      sys_error (ERR_SEVERE, "row_plot > ny");
+      return (1);
+    }
+    double* plot_xaxis = new double [ny];
+    double* v1Row = new double [ny];
+    double* v2Row = new double [ny2];
+
+    for (i = 0; i < ny; i++)
+      plot_xaxis[i] = i;
+    for (i = 0; i < ny; i++)
+      v1Row[i] = v1[i][opt_rowPlot];
+    for (i = 0; i < ny2; i++)
+      v2Row[i] = v2[i][opt_rowPlot];
+
+    PlotFile plotFile (3, ny);
+
+    plotFile.addColumn (0, plot_xaxis);
+    plotFile.addColumn (1, v1Row);
+    plotFile.addColumn (2, v2Row);
+    std::ostringstream os;
+    os << "Row " << opt_rowPlot << " Comparison";
+    plotFile.addDescription (os.str().c_str());
+    std::string title("title ");
+    title += os.str();
+    plotFile.addEzsetCommand (title.c_str());
+    plotFile.addEzsetCommand ("xlabel Row");
+    plotFile.addEzsetCommand ("ylabel Pixel Value");
+    plotFile.addEzsetCommand ("box");
+    plotFile.addEzsetCommand ("grid");
+    plotFile.addEzsetCommand ("xticks major 5");
+
+    plotFile.fileWrite (strOutFile.c_str());
+
+    delete plot_xaxis;
+    delete v1Row;
+    delete v2Row;
+  }
+
+  if (opt_bImageOutputFile) {
+    pim_out->labelsCopy (im_in1, "if2 file 1: ");
+    pim_out->labelsCopy (im_in2, "if2 file 2: ");
+    pim_out->labelAdd (Array2dFileLabel::L_HISTORY, strOperation.c_str(), timerProgram.timerEnd());
+    pim_out->fileWrite (strOutFile);
+  }
+
+  return (0);
+}
+
+#ifndef NO_MAIN
+int
+main (int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = if2_main(argc, argv);
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
+
diff --git a/tools/ifexport.cpp b/tools/ifexport.cpp
new file mode 100644
index 0000000..f40a34d
--- /dev/null
+++ b/tools/ifexport.cpp
@@ -0,0 +1,385 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          ifexport.cpp
+**   Purpose:       Convert an image file to a viewable image
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  April 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2010 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+
+enum { O_SCALE, O_MIN, O_MAX, O_AUTO, O_CENTER, O_STATS, O_FORMAT, O_LABELS,
+       O_HELP, O_VERBOSE, O_VERSION, O_DEBUG };
+
+static struct option my_options[] =
+{
+  {"scale", 1, 0, O_SCALE},
+  {"min", 1, 0, O_MIN},
+  {"max", 1, 0, O_MAX},
+  {"auto", 1, 0, O_AUTO},
+  {"center", 1, 0, O_CENTER},
+  {"format", 1, 0, O_FORMAT},
+  {"labels", 0, 0, O_LABELS},
+  {"stats", 0, 0, O_STATS},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"debug", 0, 0, O_DEBUG},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+enum { O_AUTO_FULL, O_AUTO_STD0_1, O_AUTO_STD0_5, O_AUTO_STD1, O_AUTO_STD2, O_AUTO_STD3 };
+static const char O_AUTO_FULL_STR[]="full";
+static const char O_AUTO_STD0_1_STR[]="std0.1";
+static const char O_AUTO_STD0_5_STR[]="std0.5";
+static const char O_AUTO_STD1_STR[]="std1";
+static const char O_AUTO_STD2_STR[]="std2";
+static const char O_AUTO_STD3_STR[]="std3";
+
+enum { O_CENTER_MEDIAN, O_CENTER_MEAN, O_CENTER_MODE };
+static const char O_CENTER_MEAN_STR[]="mean";
+static const char O_CENTER_MODE_STR[]="mode";
+static const char O_CENTER_MEDIAN_STR[]="median";
+
+enum { O_FORMAT_PNG, O_FORMAT_PNG16, O_FORMAT_PGM, O_FORMAT_PGMASC, O_FORMAT_RAW, O_FORMAT_TEXT };
+static const char O_FORMAT_PNG_STR[]="png" ;
+static const char O_FORMAT_PNG16_STR[]="png16" ;
+static const char O_FORMAT_PGM_STR[]="pgm";
+static const char O_FORMAT_PGMASC_STR[]="pgmasc";
+static const char O_FORMAT_TEXT_STR[]="text";
+static const char O_FORMAT_RAW_STR[]="raw";
+
+void
+ifexport_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " ifname outfile [OPTIONS]\n";
+  std::cout << "Convert IF file to an image file\n";
+  std::cout << std::endl;
+  std::cout << "     ifname     Name of input file\n";
+  std::cout << "     outfile    Name of output file\n";
+  std::cout << "     --format   Output format\n";
+  std::cout << "         pgm    PGM (portable graymap) format (default)\n";
+  std::cout << "         pgmasc PGM (portable graymap) ASCII format\n";
+  std::cout << "         text   Text format\n";
+  std::cout << "         raw    Raw format\n";
+#ifdef HAVE_PNG
+  std::cout << "         png    PNG (8-bit) format\n";
+  std::cout << "         png16  PNG (16-bit) format\n";
+#endif
+  std::cout << "     --center   Center of window\n";
+  std::cout << "         median Median is center of window (default)\n";
+  std::cout << "         mode   Mode is center of window\n";
+  std::cout << "         mean   Mean is center of window\n";
+  std::cout << "     --auto     Set auto window\n";
+  std::cout << "         full   Use full window (default)\n";
+  std::cout << "         std0.1 Use 0.1 standard deviation about center\n";
+  std::cout << "         std0.5 Use 0.5 standard deviation about center\n";
+  std::cout << "         std1   Use one standard deviation about center\n";
+  std::cout << "         std2   Use two standard deviations about center\n";
+  std::cout << "         std3   Use three standard deviations about center\n";
+  std::cout << "     --scale    Scaling factor for output size\n";
+  std::cout << "     --min      Set minimum intensity\n";
+  std::cout << "     --max      Set maximum intensity\n";
+  std::cout << "     --stats    Print image statistics\n";
+  std::cout << "     --labels   Print image labels\n";
+  std::cout << "     --debug    Set debug mode\n";
+  std::cout << "     --verbose  Set verbose mode\n";
+  std::cout << "     --version  Print version\n";
+  std::cout << "     --help     Print this help message\n";
+}
+
+
+int
+ifexport_main (int argc, char *const argv[])
+{
+  ImageFile* pim = NULL;
+  double densmin = HUGE_VAL, densmax = -HUGE_VAL;
+  char *in_file, *out_file;
+  int opt_verbose = 0;
+  int opt_scale = 1;
+  int opt_auto = O_AUTO_FULL;
+  int opt_set_max = 0;
+  int opt_set_min = 0;
+  int opt_stats = 0;
+  int opt_debug = 0;
+  int opt_center = O_CENTER_MEDIAN;
+  int opt_format = O_FORMAT_PGM;
+  int opt_labels = 0;
+
+  while (1)
+    {
+      int c = getopt_long (argc, argv, "", my_options, NULL);
+      char *endptr = NULL;
+      char *endstr;
+
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case O_MIN:
+          opt_set_min = 1;
+          densmin = strtod(optarg, &endptr);
+          endstr = optarg + strlen(optarg);
+          if (endptr != endstr)
+            {
+              sys_error (ERR_SEVERE, "Error setting --min to %s", optarg);
+              ifexport_usage(argv[0]);
+              return (1);
+            }
+          break;
+        case O_MAX:
+          opt_set_max = 1;
+          densmax = strtod(optarg, &endptr);
+          endstr = optarg + strlen(optarg);
+          if (endptr != endstr)
+            {
+              sys_error (ERR_SEVERE, "Error setting --max to %s", optarg);
+              ifexport_usage(argv[0]);
+              return (1);
+            }
+          break;
+        case O_SCALE:
+          opt_scale = strtol(optarg, &endptr, 10);
+          endstr = optarg + strlen(optarg);
+          if (endptr != endstr)
+            {
+              sys_error (ERR_SEVERE, "Error setting --scale to %s", optarg);
+              ifexport_usage(argv[0]);
+              return (1);
+            }
+          break;
+        case O_AUTO:
+          if (strcmp(optarg, O_AUTO_FULL_STR) == 0)
+            opt_auto = O_AUTO_FULL;
+          else if (strcmp(optarg, O_AUTO_STD1_STR) == 0)
+            opt_auto = O_AUTO_STD1;
+          else if (strcmp(optarg, O_AUTO_STD0_5_STR) == 0)
+            opt_auto = O_AUTO_STD0_5;
+          else if (strcmp(optarg, O_AUTO_STD0_1_STR) == 0)
+            opt_auto = O_AUTO_STD0_1;
+          else if (strcmp(optarg, O_AUTO_STD2_STR) == 0)
+            opt_auto = O_AUTO_STD2;
+          else if (strcmp(optarg, O_AUTO_STD3_STR) == 0)
+            opt_auto = O_AUTO_STD3;
+          else
+            {
+              sys_error (ERR_SEVERE, "Invalid auto mode %s", optarg);
+              ifexport_usage(argv[0]);
+              return (1);
+            }
+                break;
+        case O_CENTER:
+          if (strcmp(optarg, O_CENTER_MEDIAN_STR) == 0)
+            opt_center = O_CENTER_MEDIAN;
+          else if (strcmp(optarg, O_CENTER_MEAN_STR) == 0)
+            opt_center = O_CENTER_MEAN;
+          else if (strcmp(optarg, O_CENTER_MODE_STR) == 0)
+            opt_center = O_CENTER_MODE;
+          else
+            {
+              sys_error (ERR_SEVERE, "Invalid center mode %s", optarg);
+              ifexport_usage(argv[0]);
+              return (1);
+            }
+          break;
+        case O_FORMAT:
+          if (strcmp(optarg, O_FORMAT_PGM_STR) == 0)
+            opt_format = O_FORMAT_PGM;
+          else if (strcmp(optarg, O_FORMAT_PGMASC_STR) == 0)
+            opt_format = O_FORMAT_PGMASC;
+#if HAVE_PNG
+          else if (strcmp(optarg, O_FORMAT_PNG_STR) == 0)
+            opt_format = O_FORMAT_PNG;
+          else if (strcmp(optarg, O_FORMAT_PNG16_STR) == 0)
+            opt_format = O_FORMAT_PNG16;
+#endif
+          else if (strcmp(optarg, O_FORMAT_TEXT_STR) == 0)
+                opt_format = O_FORMAT_TEXT;
+          else if (strcmp(optarg, O_FORMAT_RAW_STR) == 0)
+                opt_format = O_FORMAT_RAW;
+#if HAVE_GIF
+          else if (strcmp(optarg, O_FORMAT_GIF_STR) == 0)
+            opt_format = O_FORMAT_GIF;
+#endif
+  else {
+              sys_error (ERR_SEVERE, "Invalid format mode %s", optarg);
+              ifexport_usage(argv[0]);
+              return (1);
+            }
+          break;
+        case O_LABELS:
+          opt_labels = 1;
+          break;
+        case O_VERBOSE:
+          opt_verbose = 1;
+          break;
+        case O_DEBUG:
+          opt_debug = 1;
+          break;
+        case O_STATS:
+          opt_stats = 1;
+          break;
+        case O_VERSION:
+#ifdef VERSION
+          std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+          std::cout << "Unknown version number\n";
+#endif
+          return (0);
+        case O_HELP:
+        case '?':
+          ifexport_usage(argv[0]);
+          return (0);
+        default:
+          ifexport_usage(argv[0]);
+          return (1);
+        }
+    }
+
+  if (optind + 2 != argc) {
+    ifexport_usage(argv[0]);
+    return (1);
+  }
+
+  in_file = argv[optind];
+  out_file = argv[optind+1];
+
+  pim = new ImageFile ();
+  ImageFile& im = *pim;
+  if (! im.fileRead(in_file)) {
+    sys_error (ERR_FATAL, "File %s does not exist", in_file);
+    return (1);
+  }
+
+  if (opt_labels)
+    im.printLabels(std::cout);
+
+  if (opt_stats || (! (opt_set_max && opt_set_min))) {
+      double min, max, mean, mode, median, stddev;
+      double window = 0;
+      im.statistics(min, max, mean, mode, median, stddev);
+
+      if (opt_auto == O_AUTO_FULL) {
+        if (! opt_set_max)
+            densmax = max;
+        if (! opt_set_min)
+            densmin = min;
+      }
+      if (opt_stats || opt_auto != O_AUTO_FULL) {
+
+          if (opt_auto == O_AUTO_FULL)
+              ;
+          else if (opt_auto == O_AUTO_STD1)
+              window = stddev;
+          else if (opt_auto == O_AUTO_STD0_1)
+              window = stddev * 0.1;
+          else if (opt_auto == O_AUTO_STD0_5)
+              window = stddev * 0.5;
+          else if (opt_auto == O_AUTO_STD2)
+              window = stddev * 2;
+          else if (opt_auto == O_AUTO_STD3)
+              window = stddev * 3;
+          else {
+              sys_error (ERR_SEVERE, "Internal Error: Invalid auto mode %d", opt_auto);
+              return (1);
+          }
+      }
+      if (opt_stats) {
+          std::cout <<"nx: " << im.nx() << std::endl;
+          std::cout <<"ny: " << im.ny() << std::endl;
+          std::cout <<"min: " << min << std::endl;
+          std::cout <<"max: " << max << std::endl;
+          std::cout <<"mean: " << mean << std::endl;
+          std::cout <<"mode: " << mode << std::endl;
+          std::cout <<"stddev: " << stddev << std::endl;
+      }
+      if (opt_auto != O_AUTO_FULL) {
+          double center;
+
+          if (opt_center == O_CENTER_MEDIAN)
+              center = median;
+          else if (opt_center == O_CENTER_MODE)
+              center = mode;
+          else if (opt_center == O_CENTER_MEAN)
+              center = mean;
+          else {
+              sys_error (ERR_SEVERE, "Internal Error: Invalid center mode %d", opt_center);
+              return (1);
+          }
+          if (! opt_set_max)
+              densmax = center + window;
+          if (! opt_set_min)
+              densmin = center - window;
+      }
+  }
+
+  if (opt_stats) {
+    std::cout << "min display: " << densmin << std::endl;
+    std::cout << "max display: " << densmax << std::endl;
+  }
+
+  if (opt_format == O_FORMAT_PGM)
+    im.writeImagePGM (out_file, opt_scale, opt_scale, densmin, densmax);
+  else if (opt_format == O_FORMAT_PGMASC)
+    im.writeImagePGMASCII (out_file, opt_scale, opt_scale, densmin, densmax);
+#if HAVE_PNG
+  else if (opt_format == O_FORMAT_PNG)
+    im.writeImagePNG (out_file, 8, opt_scale, opt_scale, densmin, densmax);
+  else if (opt_format == O_FORMAT_PNG16)
+    im.writeImagePNG (out_file, 16, opt_scale, opt_scale, densmin, densmax);
+#endif
+#if HAVE_GIF
+  else if (opt_format == O_FORMAT_GIF)
+    im.writeImageGIF (out_file, opt_scale, opt_scale, densmin, densmax);
+#endif
+  else if (opt_format == O_FORMAT_TEXT)
+        im.writeImageText (out_file);
+  else if (opt_format == O_FORMAT_RAW)
+        im.writeImageRaw (out_file, opt_scale, opt_scale);
+  else
+    {
+      sys_error (ERR_SEVERE, "Internal Error: Invalid format mode %d", opt_format);
+      return (1);
+    }
+  return (0);
+}
+
+
+#ifndef NO_MAIN
+int
+main (int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = ifexport_main(argc, argv);
+  } catch (exception e) {
+          std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+          std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/ifinfo.cpp b/tools/ifinfo.cpp
new file mode 100644
index 0000000..7dd85f8
--- /dev/null
+++ b/tools/ifinfo.cpp
@@ -0,0 +1,168 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          ifinfo.cpp
+**   Purpose:       Display information about an image file
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  April 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+/* FILE
+ *   ifinfo.c             Display info on sdf files
+ */
+
+#include "ct.h"
+
+enum { O_LABELS, O_STATS, O_NO_STATS, O_NO_LABELS, O_VERBOSE, O_HELP, O_VERSION, O_DEBUG };
+
+static struct option my_options[] =
+{
+  {"labels", 0, 0, O_LABELS},
+  {"no-labels", 0, 0, O_NO_LABELS},
+  {"stats", 0, 0, O_STATS},
+  {"no-stats", 0, 0, O_NO_STATS},
+  {"debug", 0, 0, O_DEBUG},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+
+void
+ifinfo_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " image-filename [OPTIONS]\n";
+  std::cout << "Imagefile information\n";
+  std::cout << std::endl;
+  std::cout << "     infile       Name of input IF file\n";
+  std::cout << "     --display    Display image\n";
+  std::cout << "     --labels     Print image labels (default)\n";
+  std::cout << "     --no-labels  Do not print image labels\n";
+  std::cout << "     --stats      Print image statistics (default)\n";
+  std::cout << "     --no-stats   Do not print image statistics\n";
+  std::cout << "     --debug      Debug mode\n";
+  std::cout << "     --verbose    Verbose mode\n";
+  std::cout << "     --version    Print version\n";
+  std::cout << "     --help       Print this help message\n";
+}
+
+int
+ifinfo_main (int argc, char *const argv[])
+{
+  ImageFile *im = NULL;
+  std::string in_file;
+  int opt_verbose = 0;
+  int opt_stats = 1;
+  int opt_labels = 1;
+  int opt_debug = 0;
+
+  while (1)
+    {
+      int c = getopt_long (argc, argv, "", my_options, NULL);
+
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case O_LABELS:
+          opt_labels = 1;
+          break;
+        case O_STATS:
+          opt_stats = 1;
+          break;
+        case O_NO_LABELS:
+          opt_labels = 0;
+          break;
+        case O_NO_STATS:
+          opt_stats = 0;
+          break;
+        case O_VERBOSE:
+          opt_verbose = 1;
+          break;
+        case O_DEBUG:
+          opt_debug = 0;
+          break;
+        case O_VERSION:
+#ifdef VERSION
+          std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+          std::cout << "Unknown version number\n";
+#endif
+          return (0);
+        case O_HELP:
+        case '?':
+          ifinfo_usage(argv[0]);
+          return (0);
+        default:
+          ifinfo_usage(argv[0]);
+          return (1);
+        }
+    }
+
+  if (optind + 1 != argc) {
+    ifinfo_usage (argv[0]);
+    return (1);
+  }
+
+  in_file = argv[optind];
+
+  im = new ImageFile ();
+  if (! im->fileRead (in_file)) {
+    sys_error (ERR_WARNING, "Unable to read file %s", in_file.c_str());
+    return (1);
+  }
+
+  if (opt_labels)
+    im->printLabels (std::cout);
+
+  if (opt_stats) {
+    std::cout << "Size: (" << im->nx() << "," << im->ny() << ")\n";
+    std::cout << "Data type: ";
+    if (im->dataType() == Array2dFile::DATA_TYPE_COMPLEX)
+      std::cout << "Complex\n";
+    else
+      std::cout << "Real\n";
+
+    im->printStatistics (std::cout);
+  }
+
+  return (0);
+}
+
+#ifndef NO_MAIN
+int
+main (int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = ifinfo_main(argc, argv);
+  } catch (exception e) {
+          std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+          std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/linogram.cpp b/tools/linogram.cpp
new file mode 100644
index 0000000..45c45f1
--- /dev/null
+++ b/tools/linogram.cpp
@@ -0,0 +1,197 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          linogram.cpp
+**   Purpose:       Display linogram sampling
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  April 2003
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+
+enum { O_XY, O_POLAR_RT, O_VERBOSE, O_HELP, O_VERSION, O_DEBUG };
+
+static struct option my_options[] =
+{
+  {"xy", 0, 0, O_XY},
+  {"polar-rt", 0, 0, O_POLAR_RT},
+  {"debug", 0, 0, O_DEBUG},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+
+void
+linogram_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " n d [OPTIONS]\n";
+  std::cout << "Imagefile information\n";
+  std::cout << std::endl;
+  std::cout << "     n            Linogram N\n";
+  std::cout << "     d            Max detector spacing\n";
+  std::cout << "     --xy         Output x,y pairs\n";
+  std::cout << "     --polar-rt   Output r,t pairs\n";
+  std::cout << "     --debug      Debug mode\n";
+  std::cout << "     --verbose    Verbose mode\n";
+  std::cout << "     --version    Print version\n";
+  std::cout << "     --help       Print this help message\n";
+}
+
+int
+linogram_main (int argc, char *const argv[])
+{
+  int opt_polar_rt = 0;
+  int opt_xy = 0;
+  int opt_verbose = 0;
+  int opt_debug = 0;
+
+  while (1)
+    {
+      int c = getopt_long (argc, argv, "", my_options, NULL);
+
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case O_XY:
+          opt_xy = 1;
+          break;
+        case O_POLAR_RT:
+          opt_polar_rt = 1;
+          break;
+        case O_VERBOSE:
+          opt_verbose = 1;
+          break;
+        case O_DEBUG:
+          opt_debug = 0;
+          break;
+        case O_VERSION:
+#ifdef VERSION
+          std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+          std::cout << "Unknown version number\n";
+#endif
+          return (0);
+        case O_HELP:
+        case '?':
+          linogram_usage(argv[0]);
+          return (0);
+        default:
+          linogram_usage(argv[0]);
+          return (1);
+        }
+    }
+
+  if (optind + 2 != argc) {
+    linogram_usage (argv[0]);
+    return (1);
+  }
+
+  const char* in_n = argv[optind];
+  const char* in_d = argv[optind+1];
+
+  int n = atol (in_n);
+  double d = atof (in_d);
+  int size = 4 * n + 3;
+  int max = 2 * n + 1;
+  int min = -max;
+  double theta_base = PI/4;
+  //  theta_base = 0;
+
+  double theta_vec [size];
+  for (int i = 0; i < size; i++) {
+    int m = i - (2 * n + 1);
+    theta_vec[i] = atan (static_cast<double>(2 * m) / size);
+  }
+
+  if (opt_xy) {
+    int m;
+    for (m = 0; m < size; m++) {
+      double step = d * cos(theta_vec[m]);
+      for (int id = min; id <= max; id++) {
+        double r = id * step;
+        double x = r * cos(theta_vec[m] + theta_base);
+        double y = r * sin(theta_vec[m] + theta_base);
+        printf ("%lf,%lf ", x, y);
+      }
+      printf ("\n");
+    }
+
+    for (m = 0; m < size; m++) {
+      double step = d * cos(theta_vec[m]);
+      for (int id = min; id <= max; id++) {
+        double r = id * step;
+        double x = r * cos(theta_vec[m] + PI/2 + theta_base);
+        double y = r * sin(theta_vec[m] + PI/2 + theta_base);
+        printf ("%lf,%lf ", x, y);
+      }
+      printf ("\n");
+    }
+  } else {
+    int m;
+    for (m = 0; m < size; m++) {
+      if (! opt_polar_rt)
+        printf ("%lf: ", theta_vec[m] + theta_base);
+      double step = d * cos(theta_vec[m]);
+      for (int id = min; id <= max; id++) {
+        if (opt_polar_rt)
+          printf ("%lf,", theta_vec[m] + theta_base);
+        printf ("%lf ", id * step);
+      }
+      printf ("\n");
+    }
+
+    for (m = 0; m < size; m++) {
+      if (! opt_polar_rt)
+        printf ("%lf: ", theta_vec[m] + PI/2 + theta_base);
+      double step = d * cos(theta_vec[m]);
+      for (int id = min; id <= max; id++) {
+        if (opt_polar_rt)
+          printf ("%lf,", theta_vec[m] + PI/2 + theta_base);
+        printf ("%lf ", id * step);
+      }
+      printf ("\n");
+    }
+  }
+
+  return (0);
+}
+
+#ifndef NO_MAIN
+int
+main (int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = linogram_main(argc, argv);
+  } catch (exception e) {
+          std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+          std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/mpiworld.cpp b/tools/mpiworld.cpp
new file mode 100644
index 0000000..6896d65
--- /dev/null
+++ b/tools/mpiworld.cpp
@@ -0,0 +1,82 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          mpiworld.cpp
+**   Purpose:       MPI Support class
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  June 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include <mpi++.h>
+#include <mpiworld.h>
+
+
+MPIWorld::MPIWorld (int& argc, char* const *& argv)
+{
+  MPI::Init (argc, const_cast<char**&>(argv));
+  m_comm = MPI::COMM_WORLD.Dup();
+  m_nProcessors = m_comm.Get_size();
+  m_myRank = m_comm.Get_rank();
+  m_vLocalWorkUnits.reserve (m_nProcessors);
+  m_vStartWorkUnit.reserve (m_nProcessors);
+  m_vEndWorkUnit.reserve (m_nProcessors);
+}
+
+
+void
+MPIWorld::setTotalWorkUnits(int totalWorkUnits)
+{
+  if (m_nProcessors < 1)
+      return;
+
+  int baseLocalWorkUnits = totalWorkUnits / m_nProcessors;
+  int remainderWorkUnits = totalWorkUnits % m_nProcessors;
+
+  int currWorkUnits = 0;
+  for (int iProc = 0; iProc < m_nProcessors; iProc++) {
+    m_vLocalWorkUnits[iProc] = baseLocalWorkUnits;
+    if (iProc < remainderWorkUnits)
+      m_vLocalWorkUnits[iProc]++;
+
+    m_vStartWorkUnit[iProc] = currWorkUnits;
+    m_vEndWorkUnit[iProc] = m_vStartWorkUnit[iProc] + m_vLocalWorkUnits[iProc]  - 1;
+
+    currWorkUnits += m_vLocalWorkUnits[iProc];
+  }
+
+}
+
+void
+MPIWorld::BcastString (string& str)
+{
+  int len;
+
+  if (m_myRank == 0)
+    len = str.length();
+  m_comm.Bcast (&len, 1, MPI::INT, 0);
+  char buf [ len + 1];
+
+  if (m_myRank == 0)
+    strcpy (buf, str.c_str());
+
+  m_comm.Bcast (buf, len + 1, MPI::CHAR, 0);
+
+  if (m_myRank > 0)
+    str = buf;
+}
diff --git a/tools/nographics.cpp b/tools/nographics.cpp
new file mode 100644
index 0000000..a344fc4
--- /dev/null
+++ b/tools/nographics.cpp
@@ -0,0 +1,45 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          nographics.cpp
+**   Purpose:       Empty functions for duplicates of graphcal functions
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Mar 2001
+**
+**  This is part of the CTSim program
+**  Copyright (c) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "nographics.h"
+
+
+#ifdef HAVE_WXWINDOWS
+EZPlotDialog::EZPlotDialog (wxWindow *parent, bool bCancelButton)
+{}
+
+EZPlot*
+EZPlotDialog::getEZPlot()
+{ return NULL; }
+
+int
+EZPlotDialog::ShowModal()
+{ return 0; }
+
+#endif
diff --git a/tools/phm2helix.cpp b/tools/phm2helix.cpp
new file mode 100644
index 0000000..7729472
--- /dev/null
+++ b/tools/phm2helix.cpp
@@ -0,0 +1,357 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          phm2helix.cpp
+**   Purpose:       Take projections of a phantom object
+**   Programmers:   Ian Kay and Kevin Rosenberg
+**   Date Started:  Aug 2001
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include "timer.h"
+
+
+enum { O_PHANTOMPROG, O_PHMFILE,  O_DESC, O_NRAY, O_ROTANGLE, O_GEOMETRY, O_FOCAL_LENGTH, O_CENTER_DETECTOR_LENGTH,
+  O_VIEW_RATIO, O_SCAN_RATIO, O_OFFSETVIEW,  O_TRACE, O_VERBOSE, O_HELP, O_DEBUG, O_VERSION };
+
+static struct option phm2helix_options[] =
+{
+  {"phantom", 1, 0, O_PHANTOMPROG},
+  {"desc", 1, 0, O_DESC},
+  {"nray", 1, 0, O_NRAY},
+  {"rotangle", 1, 0, O_ROTANGLE},
+  {"geometry", 1, 0, O_GEOMETRY},
+  {"focal-length", 1, 0, O_FOCAL_LENGTH},
+  {"center-detector-length", 1, 0, O_CENTER_DETECTOR_LENGTH},
+  {"view-ratio", 1, 0, O_VIEW_RATIO},
+  {"scan-ratio", 1, 0, O_SCAN_RATIO},
+  {"offsetview", 1, 0, O_OFFSETVIEW},
+  {"trace", 1, 0, O_TRACE},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"debug", 0, 0, O_DEBUG},
+  {"version", 0, 0, O_VERSION},
+  {"phmfile", 1, 0, O_PHMFILE},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+
+void
+phm2helix_usage (const char *program)
+{
+          std::cout << "usage: " << fileBasename(program) << " outfile ndet nview phmprog [OPTIONS]\n";
+          std::cout << "Calculate (projections) through time varying phantom object  \n\n";
+          std::cout << "     outfile          Name of output file for projectsions\n";
+          std::cout << "     ndet             Number of detectors\n";
+          std::cout << "     nview            Number of rotated views\n";
+          std::cout << "     phmprog          Name of phm generation executable\n";
+          std::cout << "     --phmfile        Temp phantom file name \n";
+          std::cout << "     --desc           Description of raysum\n";
+          std::cout << "     --nray           Number of rays per detector (default = 1)\n";
+          std::cout << "     --rotangle       Angle to rotate view through (fraction of a circle)\n";
+          std::cout << "                      (default = select appropriate for geometry)\n";
+          std::cout << "     --geometry       Geometry of scanning\n";
+          std::cout << "        parallel      Parallel scan beams (default)\n";
+          std::cout << "        equilinear    Equilinear divergent scan beams\n";
+          std::cout << "        equiangular   Equiangular divergent scan beams\n";
+          std::cout << "     --focal-length   Focal length ratio (ratio to radius of phantom)\n";
+          std::cout << "                      (default = 1)\n";
+          std::cout << "     --view-ratio     Length to view (view diameter to phantom diameter)\n";
+          std::cout << "                      (default = 1)\n";
+          std::cout << "     --scan-ratio     Length to scan (scan diameter to view diameter)\n";
+          std::cout << "                      (default = 1)\n";
+          std::cout << "     --offsetview      Intial gantry offset in  'views' (default = 0)\n";
+          std::cout << "     --trace          Trace level to use\n";
+          std::cout << "        none          No tracing (default)\n";
+          std::cout << "        console       Trace text level\n";
+          std::cout << "     --verbose        Verbose mode\n";
+          std::cout << "     --debug          Debug mode\n";
+          std::cout << "     --version        Print version\n";
+          std::cout << "     --help           Print this help message\n";
+}
+
+
+int
+phm2helix_main (int argc, char* const argv[])
+{
+        Phantom phm;
+        std::string optGeometryName = Scanner::convertGeometryIDToName(Scanner::GEOMETRY_PARALLEL);
+        char *opt_outfile = NULL;
+        std::string opt_desc;
+        std::string opt_PhmProg;
+        std::string opt_PhmFileName = "tmpphmfile";
+        int opt_ndet;
+        int opt_nview;
+        int opt_offsetview = 0;
+        int opt_nray = 1;
+        double dOptFocalLength = 2.;
+        double dOptCenterDetectorLength = 2;
+        double dOptViewRatio = 1.;
+        double dOptScanRatio = 1.;
+        int opt_trace = Trace::TRACE_NONE;
+        int opt_verbose = 0;
+        int opt_debug = 0;
+        double opt_rotangle = -1;
+        char* endptr = NULL;
+        char* endstr;
+
+        Timer timerProgram;
+
+        while (1) {
+                int c = getopt_long(argc, argv, "", phm2helix_options, NULL);
+
+                if (c == -1)
+                break;
+
+        switch (c) {
+        case O_VERBOSE:
+                opt_verbose = 1;
+                break;
+        case O_DEBUG:
+                opt_debug = 1;
+                break;
+        case O_TRACE:
+                if ((opt_trace = Trace::convertTraceNameToID(optarg))
+                                                                == Trace::TRACE_INVALID) {
+                        phm2helix_usage(argv[0]);
+                        return (1);
+                }
+                break;
+                          case O_PHMFILE:
+                                opt_PhmFileName = optarg;
+                                break;
+                          case O_DESC:
+                                opt_desc = optarg;
+                                break;
+                          case O_ROTANGLE:
+                                opt_rotangle = strtod(optarg, &endptr);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                        std::cerr << "Error setting --rotangle to " << optarg << std::endl;
+                                        phm2helix_usage(argv[0]);
+                                        return (1);
+                                }
+                                break;
+                          case O_GEOMETRY:
+                                optGeometryName = optarg;
+                                break;
+                          case O_FOCAL_LENGTH:
+                                dOptFocalLength = strtod(optarg, &endptr);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                        std::cerr << "Error setting --focal-length to " << optarg << std::endl;
+                                        phm2helix_usage(argv[0]);
+                                        return (1);
+                                }
+                                break;
+                          case  O_CENTER_DETECTOR_LENGTH:
+                                dOptCenterDetectorLength = strtod(optarg, &endptr);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                        std::cerr << "Error setting --center-detector-length to " << optarg << std::endl;
+                                        phm2helix_usage(argv[0]);
+                                        return (1);
+                                }
+                          break;
+                          case O_VIEW_RATIO:
+                                dOptViewRatio = strtod(optarg, &endptr);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                        std::cerr << "Error setting --view-ratio to " << optarg << std::endl;
+                                        phm2helix_usage(argv[0]);
+                                        return (1);
+                                }
+                                break;
+                          case O_SCAN_RATIO:
+                                dOptScanRatio = strtod(optarg, &endptr);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                        std::cerr << "Error setting --scan-ratio to " << optarg << std::endl;
+                                        phm2helix_usage(argv[0]);
+                                        return (1);
+                                }
+                                break;
+                          case O_NRAY:
+                                opt_nray = strtol(optarg, &endptr, 10);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                  std::cerr << "Error setting --nray to %s" << optarg << std::endl;
+                                  phm2helix_usage(argv[0]);
+                                  return (1);
+                                }
+                                break;
+                          case O_OFFSETVIEW:
+                                opt_offsetview = strtol(optarg, &endptr, 10);
+                                endstr = optarg + strlen(optarg);
+                                if (endptr != endstr) {
+                                  std::cerr << "Error setting --offsetview to %s" << optarg << std::endl;
+                                  phm2helix_usage(argv[0]);
+                                  return (1);
+                                }
+                                break;
+                          case O_VERSION:
+#ifdef VERSION
+                                  std::cout << "Version: " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+                                          std::cout << "Unknown version number\n";
+#endif
+                                  return (0);
+                          case O_HELP:
+                          case '?':
+                                phm2helix_usage(argv[0]);
+                                return (0);
+                          default:
+                                phm2helix_usage(argv[0]);
+                                return (1);
+                        } // end of switch
+          } // end of while loop
+
+          if (optind + 4 != argc) {
+                phm2helix_usage(argv[0]);
+                return (1);
+          }
+
+          opt_outfile = argv[optind];
+          opt_ndet = strtol(argv[optind+1], &endptr, 10);
+          endstr = argv[optind+1] + strlen(argv[optind+1]);
+          if (endptr != endstr) {
+                std::cerr << "Error setting --ndet to " << argv[optind+1] << std::endl;
+                phm2helix_usage(argv[0]);
+                return (1);
+          }
+          opt_nview = strtol(argv[optind+2], &endptr, 10);
+          endstr = argv[optind+2] + strlen(argv[optind+2]);
+          if (endptr != endstr) {
+                std::cerr << "Error setting --nview to " << argv[optind+2] << std::endl;
+                phm2helix_usage(argv[0]);
+                return (1);
+          }
+          opt_PhmProg = argv[optind+3];
+
+          if (opt_rotangle < 0) {
+                if (optGeometryName.compare ("parallel") == 0)
+                  opt_rotangle = 0.5;
+                else
+                  opt_rotangle = 1.0;
+          }
+
+          std::ostringstream desc;
+          desc << "phm2helix: NDet=" << opt_ndet
+                   << ", Nview=" << opt_nview
+                   << ", NRay=" << opt_nray
+                   << ", RotAngle=" << opt_rotangle
+                   << ", OffsetView =" << opt_offsetview
+                   << ", Geometry=" << optGeometryName
+                   << ", PhantomProg=" << opt_PhmProg
+                   << ", PhmFileName=" << opt_PhmFileName;
+          if (opt_desc.length()) {
+                desc << ": " << opt_desc;
+          }
+          opt_desc = desc.str();
+
+          opt_rotangle *= TWOPI;
+
+          int stat;
+          char extcommand[100];
+          if(opt_debug != 0)
+                        std::cout  <<  opt_PhmProg  <<  " " << 0 << " " <<  opt_nview << " " << opt_PhmFileName  << std::endl;
+           //extcommand <<  opt_PhmProg  <<  " " << 0 << " " <<  opt_nview << " " << opt_PhmFileName ;
+
+          sprintf(extcommand, "%s %d %d %s",    opt_PhmProg.c_str(), 0, opt_nview, opt_PhmFileName.c_str() );
+
+           stat = system( extcommand );
+          if (stat != 0 )
+                        std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl;
+
+          phm.createFromFile (opt_PhmFileName.c_str());
+          remove(opt_PhmFileName.c_str());
+
+          Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview,
+                                opt_offsetview, opt_nray, opt_rotangle, dOptFocalLength,
+                                dOptCenterDetectorLength, dOptViewRatio, dOptScanRatio);
+          if (scanner.fail()) {
+                 std::cout << "Scanner Creation Error: " << scanner.failMessage()
+                                                        << std::endl;
+                 return (1);
+          }
+
+          Projections pjGlobal(scanner);
+
+
+          for( int iView = 0; iView < opt_nview; iView++ ){
+                if(opt_debug != 0)
+                        std::cout  <<  opt_PhmProg  <<  " " << iView << " " <<  opt_nview << " " << opt_PhmFileName  << std::endl;
+           //extcommand <<  opt_PhmProg  <<  " " << iView << " " <<  opt_nview << " " << opt_PhmFileName ;
+
+                sprintf(extcommand, "%s %d %d %s",      
+                        opt_PhmProg.c_str(), iView, opt_nview, 
+                        opt_PhmFileName.c_str() );
+                stat = system( extcommand );
+
+                if (stat != 0 )
+                        std::cerr << "Error executing external phantom program " << opt_PhmProg << " with command " << extcommand << std::endl;
+                Phantom phmtmp;
+                phmtmp.createFromFile (opt_PhmFileName.c_str());
+
+                scanner.collectProjections (pjGlobal, phmtmp, iView,
+                          1, scanner.offsetView(), true, opt_trace);
+                remove(opt_PhmFileName.c_str());
+          }
+
+
+          pjGlobal.setCalcTime (timerProgram.timerEnd());
+          pjGlobal.setRemark (opt_desc);
+          pjGlobal.write (opt_outfile);
+          if (opt_verbose) {
+            phm.print (std::cout);
+            std::cout << std::endl;
+            std::ostringstream os;
+            pjGlobal.printScanInfo (os);
+            std::cout << os.str() << std::endl;
+            std::cout << "  Remark: " << pjGlobal.remark() << std::endl;
+            std::cout << "Run time: " << pjGlobal.calcTime() << " seconds\n";
+          }
+          
+          return (0);
+}
+
+
+#ifndef NO_MAIN
+int
+main (int argc, char* argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = phm2helix_main(argc, argv);
+#if HAVE_DMALLOC
+    //    dmalloc_shutdown();
+#endif
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
+
diff --git a/tools/phm2if.cpp b/tools/phm2if.cpp
new file mode 100644
index 0000000..ce08c25
--- /dev/null
+++ b/tools/phm2if.cpp
@@ -0,0 +1,406 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          phm2if.cpp
+**   Purpose:       Convert an phantom object to an image file
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  1984
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include "timer.h"
+
+
+enum { O_PHANTOM, O_DESC, O_NSAMPLE, O_FILTER, O_VIEW_RATIO, O_TRACE, O_VERBOSE, O_HELP,
+O_PHMFILE, O_FILTER_DOMAIN, O_FILTER_BW, O_FILTER_PARAM, O_DEBUG, O_VERSION };
+
+static struct option my_options[] =
+{
+  {"phantom", 1, 0, O_PHANTOM},
+  {"phmfile", 1, 0, O_PHMFILE},
+  {"desc", 1, 0, O_DESC},
+  {"nsample", 1, 0, O_NSAMPLE},
+  {"filter", 1, 0, O_FILTER},
+  {"filter-domain", 1, 0, O_FILTER_DOMAIN},
+  {"filter-bw", 1, 0, O_FILTER_BW},
+  {"filter-param", 1, 0, O_FILTER_PARAM},
+  {"trace", 1, 0, O_TRACE},
+  {"view-ratio", 1, 0, O_VIEW_RATIO},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"debug", 0, 0, O_DEBUG},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void
+phm2if_usage (const char *program)
+{
+  std::cout << "phm2if_usage: " << fileBasename(program) << " outfile nx ny [--phantom phantom-name] [--phmfile filename] [--filter filter-name] [OPTIONS]\n";
+  std::cout << "Generate phantom image from a predefined --phantom or a --phmfile\n";
+  std::cout << std::endl;
+  std::cout << "     outfile         Name of output file for image\n";
+  std::cout << "     nx              Number of pixels X-axis\n";
+  std::cout << "     ny              Number of pixels Y-axis\n";
+  std::cout << "     --view-ratio    View diameter to phantom diameter ratio (default = 1)\n";
+  std::cout << "     --phantom       Phantom to use for projection\n";
+  std::cout << "        herman       Herman head phantom\n";
+  std::cout << "        shepp-logan  Shepp-Logan head phantom\n";
+  std::cout << "        unit-pulse    Unit pulse phantom\n";
+  std::cout << "     --phmfile       Generate Phantom from phantom file\n";
+  std::cout << "     --filter        Generate Phantom from a filter function\n";
+  std::cout << "       abs_bandlimit Abs * Bandlimiting\n";
+  std::cout << "       abs_sinc      Abs * Sinc\n";
+  std::cout << "       abs_cos       Abs * Cosine\n";
+  std::cout << "       abs_hamming   Abs * Hamming\n";
+  std::cout << "       shepp         Shepp-Logan\n";
+  std::cout << "       bandlimit     Bandlimiting\n";
+  std::cout << "       sinc          Sinc\n";
+  std::cout << "       cos           Cosine\n";
+  std::cout << "       triangle      Triangle\n";
+  std::cout << "       hamming       Hamming\n";
+  std::cout << "     --filter-param  Alpha level for Hamming filter\n";
+  std::cout << "     --filter-domain Set domain of filter\n";
+  std::cout << "         spatial     Spatial domain (default)\n";
+  std::cout << "         freq        Frequency domain\n";
+  std::cout << "     --filter-bw     Filter bandwidth (default = 1)\n";
+  std::cout << "     --desc          Description of raysum\n";
+  std::cout << "     --nsample       Number of samples per axis per pixel (default = 1)\n";
+  std::cout << "     --trace         Trace level to use\n";
+  std::cout << "        none         No tracing (default)\n";
+  std::cout << "        console      Trace text level\n";
+  std::cout << "     --debug         Debug mode\n";
+  std::cout << "     --verbose       Verbose mode\n";
+  std::cout << "     --version       Print version\n";
+  std::cout << "     --help          Print this help message\n";
+}
+
+#ifdef HAVE_MPI
+void mpi_gather_image (MPIWorld& mpiWorld, ImageFile* pImGlobal, ImageFile* pImLocal, const int optDebug);
+#endif
+
+int
+phm2if_main (int argc, char* const argv[])
+{
+  ImageFile* pImGlobal = NULL;
+  Phantom phm;
+  std::string optPhmName;
+  std::string optFilterName;
+  std::string optDomainName (SignalFilter::convertDomainIDToName (SignalFilter::DOMAIN_SPATIAL));
+  std::string optOutFilename;
+  std::string optDesc;
+  std::string optPhmFilename;
+  int opt_nx = 0;
+  int opt_ny = 0;
+  int opt_nsample = 1;
+  double optViewRatio = 1.;
+  double optFilterParam = 1.;
+  double optFilterBW = 1.;
+  int optTrace = Trace::TRACE_NONE;
+  bool optVerbose = false;
+  bool optDebug = false;
+  char *endptr = NULL;
+  char *endstr;
+  Timer timerProgram;
+
+#ifdef HAVE_MPI
+  ImageFile* pImLocal = NULL;
+  MPIWorld mpiWorld (argc, argv);
+  if (mpiWorld.getRank() == 0) {
+#endif
+    while (1) {
+      int c = getopt_long(argc, argv, "", my_options, NULL);
+      if (c == -1)
+        break;
+
+      switch (c) {
+      case O_PHANTOM:
+        optPhmName = optarg;
+        break;
+      case O_PHMFILE:
+        optPhmFilename = optarg;
+        break;
+      case O_VERBOSE:
+        optVerbose = true;
+        break;
+      case O_DEBUG:
+        optDebug = true;
+        break;
+      case O_TRACE:
+        if ((optTrace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) {
+          phm2if_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_FILTER:
+        optFilterName = optarg;
+        break;
+      case O_FILTER_DOMAIN:
+        optDomainName = optarg;
+        break;
+      case O_DESC:
+        optDesc =  optarg;
+        break;
+      case O_FILTER_BW:
+        optFilterBW = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          sys_error(ERR_SEVERE,"Error setting --filter-bw to %s\n", optarg);
+          phm2if_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_VIEW_RATIO:
+        optViewRatio = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          sys_error(ERR_SEVERE,"Error setting --view-ratio to %s\n", optarg);
+          phm2if_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_FILTER_PARAM:
+        optFilterParam = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          sys_error(ERR_SEVERE,"Error setting --filter-param to %s\n", optarg);
+          phm2if_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_NSAMPLE:
+        opt_nsample = strtol(optarg, &endptr, 10);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          sys_error(ERR_SEVERE,"Error setting --nsample to %s\n", optarg);
+          phm2if_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_VERSION:
+#ifdef VERSION
+        std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+        std::cerr << "Unknown version number\n";
+#endif
+      case O_HELP:
+      case '?':
+        phm2if_usage(argv[0]);
+        return (0);
+      default:
+        phm2if_usage(argv[0]);
+        return (1);
+      }
+    }
+
+    if (optPhmName == "" && optFilterName == "" && optPhmFilename == "") {
+      std::cerr << "No phantom defined\n" << std::endl;
+      phm2if_usage(argv[0]);
+      return (1);
+    }
+
+    if (optind + 3 != argc) {
+      phm2if_usage(argv[0]);
+      return (1);
+    }
+    optOutFilename = argv[optind];
+    opt_nx = strtol(argv[optind+1], &endptr, 10);
+    endstr = argv[optind+1] + strlen(argv[optind+1]);
+    if (endptr != endstr) {
+      sys_error(ERR_SEVERE,"Error setting nx to %s\n", argv[optind+1]);
+      phm2if_usage(argv[0]);
+      return (1);
+    }
+    opt_ny = strtol(argv[optind+2], &endptr, 10);
+    endstr = argv[optind+2] + strlen(argv[optind+2]);
+    if (endptr != endstr) {
+      sys_error(ERR_SEVERE,"Error setting ny to %s\n", argv[optind+2]);
+      phm2if_usage(argv[0]);
+      return (1);
+    }
+
+    std::ostringstream oss;
+    oss << "phm2if: nx=" << opt_nx << ", ny=" << opt_ny << ", viewRatio=" << optViewRatio << ", nsample=" << opt_nsample << ", ";
+    if (optPhmFilename != "")
+      oss << "phantomFile=" << optPhmFilename;
+    else if (optPhmName != "")
+      oss << "phantom=" << optPhmName;
+    else if (optFilterName != "") {
+      oss << "filter=" << optFilterName << " - " << optDomainName;
+    }
+    if (optDesc != "")
+      oss << ": " << optDesc;
+    optDesc = oss.str();
+
+    if (optPhmName != "") {
+      phm.createFromPhantom (optPhmName.c_str());
+      if (phm.fail()) {
+        std::cout << phm.failMessage() << std::endl << std::endl;
+        phm2if_usage(argv[0]);
+        return (1);
+      }
+    }
+
+    if (optPhmFilename != "") {
+      phm.createFromFile(optPhmFilename.c_str());
+#ifdef HAVE_MPI
+      if (mpiWorld.getRank() == 0)
+        std::cerr << "Can't use phantom from file in MPI mode\n";
+      return (1);
+#endif
+    }
+
+    if (optVerbose)
+      std::cout << "Rasterize Phantom to Image\n" << std::endl;
+#ifdef HAVE_MPI
+  }
+#endif
+
+#ifdef HAVE_MPI
+  TimerCollectiveMPI timerBcast (mpiWorld.getComm());
+  mpiWorld.BcastString (optPhmName);
+  mpiWorld.getComm().Bcast (&optVerbose, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&optDebug, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&optTrace, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_nx, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_ny, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_nsample, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&optViewRatio, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&optFilterParam, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&optFilterBW, 1, MPI::DOUBLE, 0);
+
+  mpiWorld.BcastString (optFilterName);
+  mpiWorld.BcastString (optDomainName);
+
+  if (optVerbose)
+    timerBcast.timerEndAndReport ("Time to broadcast variables");
+
+  mpiWorld.setTotalWorkUnits (opt_nx);
+
+  if (mpiWorld.getRank() > 0 && optPhmName != "")
+    phm.createFromPhantom (optPhmName.c_str());
+
+  if (mpiWorld.getRank() == 0) {
+    pImGlobal = new ImageFile (opt_nx, opt_ny);
+  }
+  pImLocal = new ImageFile (opt_nx, opt_ny);
+#else
+  pImGlobal = new ImageFile (opt_nx, opt_ny);
+#endif
+
+  ImageFileArray v = NULL;
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0)
+    v = pImGlobal->getArray ();
+
+  if (phm.getComposition() == P_UNIT_PULSE) {
+    if (mpiWorld.getRank() == 0) {
+      v[opt_nx/2][opt_ny/2] = 1.;
+    }
+  } else if (optFilterName != "") {
+    if (mpiWorld.getRank() == 0) {
+      pImGlobal->filterResponse (optDomainName.c_str(), optFilterBW, optFilterName.c_str(), optFilterParam);
+    }
+  } else {
+    TimerCollectiveMPI timerRasterize (mpiWorld.getComm());
+    phm.convertToImagefile (*pImLocal, optViewRatio, opt_nsample, optTrace, mpiWorld.getMyStartWorkUnit(), mpiWorld.getMyLocalWorkUnits(), false);
+    if (optVerbose)
+      timerRasterize.timerEndAndReport ("Time to rasterize phantom");
+
+    TimerCollectiveMPI timerGather (mpiWorld.getComm());
+    mpi_gather_image (mpiWorld, pImGlobal, pImLocal, optDebug);
+    if (optVerbose)
+      timerGather.timerEndAndReport ("Time to gather image");
+  }
+#else
+  v = pImGlobal->getArray ();
+  if (phm.getComposition() == P_UNIT_PULSE) {
+    v[opt_nx/2][opt_ny/2] = 1.;
+  } else if (optFilterName != "") {
+    pImGlobal->filterResponse (optDomainName.c_str(), optFilterBW, optFilterName.c_str(), optFilterParam);
+  } else {
+    phm.convertToImagefile (*pImGlobal, optViewRatio, opt_nsample, optTrace);
+  }
+#endif
+
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0)
+#endif
+  {
+    double calctime = timerProgram.timerEnd ();
+    pImGlobal->labelAdd (Array2dFileLabel::L_HISTORY, optDesc.c_str(), calctime);
+    pImGlobal->fileWrite (optOutFilename.c_str());
+    if (optVerbose)
+      std::cout << "Time to rasterize phantom: " << calctime << " seconds\n";
+  }
+
+  delete pImGlobal;
+#ifdef HAVE_MPI
+  delete pImLocal;
+#endif
+
+  return (0);
+}
+
+
+
+#ifdef HAVE_MPI
+void mpi_gather_image (MPIWorld& mpiWorld, ImageFile* pImGlobal, ImageFile* pImLocal, const int optDebug)
+{
+  ImageFileArray vLocal = pImLocal->getArray();
+  ImageFileArray vGlobal = NULL;
+  int nyLocal = pImLocal->ny();
+
+  if (mpiWorld.getRank() == 0)
+    vGlobal = pImGlobal->getArray();
+
+  for (int iw = 0; iw < mpiWorld.getMyLocalWorkUnits(); iw++)
+    mpiWorld.getComm().Send(vLocal[iw], nyLocal, pImLocal->getMPIDataType(), 0, 0);
+
+  if (mpiWorld.getRank() == 0) {
+    for (int iProc = 0; iProc < mpiWorld.getNumProcessors(); iProc++) {
+      for (int iw = mpiWorld.getStartWorkUnit(iProc); iw <= mpiWorld.getEndWorkUnit(iProc); iw++) {
+        MPI::Status status;
+        mpiWorld.getComm().Recv(vGlobal[iw], nyLocal, pImLocal->getMPIDataType(), iProc, 0, status);
+      }
+    }
+  }
+
+}
+#endif
+
+#ifndef NO_MAIN
+int
+main (int argc, char* argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = phm2if_main(argc, argv);
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/phm2pj.cpp b/tools/phm2pj.cpp
new file mode 100644
index 0000000..1b08de1
--- /dev/null
+++ b/tools/phm2pj.cpp
@@ -0,0 +1,457 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          phm2pj.cpp
+**   Purpose:       Take projections of a phantom object
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  1984
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include "timer.h"
+
+
+enum { O_PHANTOM, O_DESC, O_NRAY, O_ROTANGLE, O_PHMFILE, O_GEOMETRY, O_FOCAL_LENGTH, O_CENTER_DETECTOR_LENGTH,
+O_VIEW_RATIO, O_SCAN_RATIO, O_OFFSETVIEW, O_TRACE, O_VERBOSE, O_HELP, O_DEBUG, O_VERSION };
+
+static struct option phm2pj_options[] =
+{
+  {"phantom", 1, 0, O_PHANTOM},
+  {"phmfile", 1, 0, O_PHMFILE},
+  {"desc", 1, 0, O_DESC},
+  {"nray", 1, 0, O_NRAY},
+  {"rotangle", 1, 0, O_ROTANGLE},
+  {"geometry", 1, 0, O_GEOMETRY},
+  {"focal-length", 1, 0, O_FOCAL_LENGTH},
+  {"center-detector-length", 1, 0, O_CENTER_DETECTOR_LENGTH},
+  {"offsetview", 1, 0, O_OFFSETVIEW},
+  {"view-ratio", 1, 0, O_VIEW_RATIO},
+  {"scan-ratio", 1, 0, O_SCAN_RATIO},
+  {"trace", 1, 0, O_TRACE},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"debug", 0, 0, O_DEBUG},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+
+void
+phm2pj_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " outfile ndet nview [--phantom phantom-name] [--phmfile filename] [OPTIONS]\n";
+  std::cout << "Calculate (projections) through phantom object, either a predefined --phantom or a --phmfile\n\n";
+  std::cout << "     outfile          Name of output file for projections\n";
+  std::cout << "     ndet             Number of detectors\n";
+  std::cout << "     nview            Number of rotated views\n";
+  std::cout << "     --phantom        Phantom to use for projection\n";
+  std::cout << "        herman        Herman head phantom\n";
+  std::cout << "        shepp-logan   Shepp-Logan head phantom\n";
+  std::cout << "        unit-pulse     Unit pulse phantom\n";
+  std::cout << "     --phmfile        Get Phantom from phantom file\n";
+  std::cout << "     --desc           Description of raysum\n";
+  std::cout << "     --nray           Number of rays per detector (default = 1)\n";
+  std::cout << "     --rotangle       Angle to rotate view through (fraction of a circle)\n";
+  std::cout << "                      (default = select appropriate for geometry)\n";
+  std::cout << "     --geometry       Geometry of scanning\n";
+  std::cout << "        parallel      Parallel scan beams (default)\n";
+  std::cout << "        equilinear    Equilinear divergent scan beams\n";
+  std::cout << "        equiangular   Equiangular divergent scan beams\n";
+  std::cout << "     --focal-length   Focal length ratio (ratio to radius of view area)\n";
+  std::cout << "                      (default = 2)\n";
+  std::cout << "     --center-detector-length  Distance from center of phantom to detector array\n";
+  std::cout << "                      (ratio to radius of view area) (default = 2)\n";
+  std::cout << "     --view-ratio     Length to view (view diameter to phantom diameter)\n";
+  std::cout << "                      (default = 1)\n";
+  std::cout << "     --scan-ratio     Length to scan (scan diameter to view diameter)\n";
+  std::cout << "                      (default = 1)\n";
+  std::cout << "     --offsetview     Initial gantry offset in 'views' (default = 0)\n";
+  std::cout << "     --trace          Trace level to use\n";
+  std::cout << "        none          No tracing (default)\n";
+  std::cout << "        console       Trace text level\n";
+  std::cout << "     --verbose        Verbose mode\n";
+  std::cout << "     --debug          Debug mode\n";
+  std::cout << "     --version        Print version\n";
+  std::cout << "     --help           Print this help message\n";
+}
+
+#ifdef HAVE_MPI
+void GatherProjectionsMPI (MPIWorld& mpiWorld, Projections& pjGlobal, Projections& pjLocal, const int opt_debug);
+#endif
+
+int
+phm2pj_main (int argc, char* const argv[])
+{
+  Phantom phm;
+  std::string optGeometryName = Scanner::convertGeometryIDToName(Scanner::GEOMETRY_PARALLEL);
+  char *opt_outfile = NULL;
+  std::string opt_desc;
+  std::string optPhmName;
+  std::string optPhmFileName;
+  int opt_ndet;
+  int opt_nview;
+  int opt_offsetview = 0;
+  int opt_nray = 1;
+  double dOptFocalLength = 2.;
+  double dOptCenterDetectorLength = 2.;
+  double dOptViewRatio = 1.;
+  double dOptScanRatio = 1.;
+  int opt_trace = Trace::TRACE_NONE;
+  int opt_verbose = 0;
+  int opt_debug = 0;
+  double opt_rotangle = -1;
+  char* endptr = NULL;
+  char* endstr;
+
+#ifdef HAVE_MPI
+  MPIWorld mpiWorld (argc, argv);
+#endif
+
+  Timer timerProgram;
+
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0) {
+#endif
+    while (1) {
+      int c = getopt_long(argc, argv, "", phm2pj_options, NULL);
+
+      if (c == -1)
+        break;
+
+      switch (c) {
+      case O_PHANTOM:
+        optPhmName = optarg;
+        break;
+      case O_PHMFILE:
+        optPhmFileName = optarg;
+        break;
+      case O_VERBOSE:
+        opt_verbose = 1;
+        break;
+      case O_DEBUG:
+        opt_debug = 1;
+        break;
+        break;
+      case O_TRACE:
+        if ((opt_trace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) {
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_DESC:
+        opt_desc = optarg;
+        break;
+      case O_ROTANGLE:
+        opt_rotangle = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          std::cerr << "Error setting --rotangle to " << optarg << std::endl;
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_GEOMETRY:
+        optGeometryName = optarg;
+        break;
+      case O_FOCAL_LENGTH:
+        dOptFocalLength = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          std::cerr << "Error setting --focal-length to " << optarg << std::endl;
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_CENTER_DETECTOR_LENGTH:
+        dOptCenterDetectorLength = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          std::cerr << "Error setting --center-detector-length to " << optarg << std::endl;
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_VIEW_RATIO:
+        dOptViewRatio = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          std::cerr << "Error setting --view-ratio to " << optarg << std::endl;
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_SCAN_RATIO:
+        dOptScanRatio = strtod(optarg, &endptr);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          std::cerr << "Error setting --scan-ratio to " << optarg << std::endl;
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+      case O_NRAY:
+        opt_nray = strtol(optarg, &endptr, 10);
+        endstr = optarg + strlen(optarg);
+        if (endptr != endstr) {
+          std::cerr << "Error setting --nray to %s" << optarg << std::endl;
+          phm2pj_usage(argv[0]);
+          return (1);
+        }
+        break;
+          case O_OFFSETVIEW:
+                opt_offsetview = strtol(optarg, &endptr, 10);
+                endstr = optarg + strlen(optarg);
+                if (endptr != endstr) {
+                  std::cerr << "Error setting --offsetview to %s" << optarg << std::endl;
+                  phm2pj_usage(argv[0]);
+                  return (1);
+                }
+                break;
+
+      case O_VERSION:
+#ifdef VERSION
+        std::cout << "Version: " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+        std::cout << "Unknown version number\n";
+#endif
+        return (0);
+      case O_HELP:
+      case '?':
+        phm2pj_usage(argv[0]);
+        return (0);
+      default:
+        phm2pj_usage(argv[0]);
+        return (1);
+      }
+    }
+
+    if (optPhmName == "" && optPhmFileName == "") {
+      std::cerr << "No phantom defined\n" << std::endl;
+      phm2pj_usage(argv[0]);
+      return (1);
+    }
+    if (optind + 3 != argc) {
+      phm2pj_usage(argv[0]);
+      return (1);
+    }
+
+    opt_outfile = argv[optind];
+    opt_ndet = strtol(argv[optind+1], &endptr, 10);
+    endstr = argv[optind+1] + strlen(argv[optind+1]);
+    if (endptr != endstr) {
+      std::cerr << "Error setting --ndet to " << argv[optind+1] << std::endl;
+      phm2pj_usage(argv[0]);
+      return (1);
+    }
+    opt_nview = strtol(argv[optind+2], &endptr, 10);
+    endstr = argv[optind+2] + strlen(argv[optind+2]);
+    if (endptr != endstr) {
+      std::cerr << "Error setting --nview to " << argv[optind+2] << std::endl;
+      phm2pj_usage(argv[0]);
+      return (1);
+    }
+
+    if (opt_rotangle < 0) {
+      if (optGeometryName.compare ("parallel") == 0)
+        opt_rotangle = 0.5;
+      else
+        opt_rotangle = 1.0;
+    }
+
+    std::ostringstream desc;
+    desc << "phm2pj: NDet=" << opt_ndet << ", Nview=" << opt_nview << ", NRay=" << opt_nray << ", RotAngle=" << opt_rotangle << "OffsetView =" << opt_offsetview << ", Geometry=" << optGeometryName << ", ";
+    if (optPhmFileName.length()) {
+      desc << "PhantomFile=" << optPhmFileName;
+    } else if (optPhmName != "") {
+      desc << "Phantom=" << optPhmName;
+    }
+    if (opt_desc.length()) {
+      desc << ": " << opt_desc;
+    }
+    opt_desc = desc.str();
+
+    if (optPhmName != "") {
+      phm.createFromPhantom (optPhmName.c_str());
+      if (phm.fail()) {
+        std::cout << phm.failMessage() << std::endl << std::endl;
+        phm2pj_usage(argv[0]);
+        return (1);
+      }
+    }
+
+    if (optPhmFileName != "") {
+#ifdef HAVE_MPI
+      std::cerr << "Can not read phantom from file in MPI mode\n";
+      return (1);
+#endif
+      phm.createFromFile (optPhmFileName.c_str());
+    }
+
+#ifdef HAVE_MPI
+  }
+#endif
+
+#ifdef HAVE_MPI
+  TimerCollectiveMPI timerBcast(mpiWorld.getComm());
+  mpiWorld.BcastString (optPhmName);
+  mpiWorld.getComm().Bcast (&opt_rotangle, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&dOptFocalLength, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&dOptCenterDetectorLength, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&dOptViewRatio, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&dOptScanRatio, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&opt_nview, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_ndet, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_nray, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_verbose, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_debug, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&opt_trace, 1, MPI::INT, 0);
+  if (opt_verbose)
+    timerBcast.timerEndAndReport ("Time to broadcast variables");
+
+  if (mpiWorld.getRank() > 0 && optPhmName != "")
+    phm.createFromPhantom (optPhmName.c_str());
+#endif
+
+  opt_rotangle *= TWOPI;
+  Scanner scanner (phm, optGeometryName.c_str(), opt_ndet, opt_nview, opt_offsetview, opt_nray,
+                opt_rotangle, dOptFocalLength, dOptCenterDetectorLength, dOptViewRatio, dOptScanRatio);
+  if (scanner.fail()) {
+    std::cout << "Scanner Creation Error: " << scanner.failMessage() << std::endl;
+    return (1);
+  }
+#ifdef HAVE_MPI
+  mpiWorld.setTotalWorkUnits (opt_nview);
+
+  Projections pjGlobal;
+  if (mpiWorld.getRank() == 0)
+    pjGlobal.initFromScanner (scanner);
+
+  if (opt_verbose) {
+    std::ostringstream os;
+    pjGlobal.printScanInfo(os);
+    std::cout << os.str();
+  }
+
+  Projections pjLocal (scanner);
+  pjLocal.setNView (mpiWorld.getMyLocalWorkUnits());
+
+  if (opt_debug)
+    std::cout << "pjLocal->nview = " << pjLocal.nView() << " (process " << mpiWorld.getRank() << ")\n";;
+
+  TimerCollectiveMPI timerProject (mpiWorld.getComm());
+  scanner.collectProjections (pjLocal, phm, mpiWorld.getMyStartWorkUnit(), mpiWorld.getMyLocalWorkUnits(), false, opt_trace);
+  if (opt_verbose)
+    timerProject.timerEndAndReport ("Time to collect projections");
+
+  TimerCollectiveMPI timerGather (mpiWorld.getComm());
+  GatherProjectionsMPI (mpiWorld, pjGlobal, pjLocal, opt_debug);
+  if (opt_verbose)
+    timerGather.timerEndAndReport ("Time to gather projections");
+
+#else
+  Projections pjGlobal (scanner);
+  scanner.collectProjections (pjGlobal, phm, 0, opt_nview, opt_offsetview, true, opt_trace);
+#endif
+
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0)
+#endif
+  {
+    pjGlobal.setCalcTime (timerProgram.timerEnd());
+    pjGlobal.setRemark (opt_desc);
+    pjGlobal.write (opt_outfile);
+    if (opt_verbose) {
+      phm.print (std::cout);
+      std::cout << std::endl;
+      std::ostringstream os;
+      pjGlobal.printScanInfo (os);
+      std::cout << os.str() << std::endl;
+      std::cout << "  Remark: " << pjGlobal.remark() << std::endl;
+      std::cout << "Run time: " << pjGlobal.calcTime() << " seconds\n";
+    }
+  }
+
+  return (0);
+}
+
+
+/* FUNCTION
+*    GatherProjectionsMPI
+*
+* SYNOPSIS
+*    Gather's raysums from all processes in pjLocal in pjGlobal in process 0
+*/
+
+#ifdef HAVE_MPI
+void GatherProjectionsMPI (MPIWorld& mpiWorld, Projections& pjGlobal, Projections& pjLocal, const int opt_debug)
+{
+  for (int iw = 0; iw < mpiWorld.getMyLocalWorkUnits(); iw++) {
+    DetectorArray& detArray = pjLocal.getDetectorArray(iw);
+    double viewAngle = detArray.viewAngle();
+    int nDet = detArray.nDet();
+    DetectorValue* detval = detArray.detValues();
+
+    mpiWorld.getComm().Send(&viewAngle, 1, MPI::DOUBLE, 0, 0);
+    mpiWorld.getComm().Send(&nDet, 1, MPI::INT, 0, 0);
+    mpiWorld.getComm().Send(detval, nDet, MPI::FLOAT, 0, 0);
+  }
+
+  if (mpiWorld.getRank() == 0) {
+    for (int iProc = 0; iProc < mpiWorld.getNumProcessors(); iProc++) {
+      for (int iw = mpiWorld.getStartWorkUnit(iProc); iw <= mpiWorld.getEndWorkUnit(iProc); iw++) {
+        MPI::Status status;
+        double viewAngle;
+        int nDet;
+        DetectorArray& detArray = pjGlobal.getDetectorArray(iw);
+        DetectorValue* detval = detArray.detValues();
+
+        mpiWorld.getComm().Recv(&viewAngle, 1, MPI::DOUBLE, iProc, 0, status);
+        mpiWorld.getComm().Recv(&nDet, 1, MPI::INT, iProc, 0, status);
+        mpiWorld.getComm().Recv(detval, nDet, MPI::FLOAT, iProc, 0, status);
+        detArray.setViewAngle (viewAngle);
+      }
+    }
+  }
+}
+#endif
+
+
+#ifndef NO_MAIN
+int
+main (int argc, char* argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = phm2pj_main(argc, argv);
+#if HAVE_DMALLOC
+    //    dmalloc_shutdown();
+#endif
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
+
diff --git a/tools/pj2if.cpp b/tools/pj2if.cpp
new file mode 100644
index 0000000..19eb14d
--- /dev/null
+++ b/tools/pj2if.cpp
@@ -0,0 +1,154 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          pj2if.cpp
+**   Purpose:       Convert an projection data file to an image file
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  April 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+/* FILE
+ *   pj2if.c                    Convert Raysum to image
+ *
+ * DATE
+ *   Apr 1999
+ */
+
+#include "ct.h"
+#include "timer.h"
+
+
+enum { O_VERBOSE, O_HELP, O_VERSION, O_POLAR };
+
+static struct option my_options[] =
+{
+  {"polar", 0, 0, O_POLAR},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void
+pj2if_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " in-proj-file out-if-file [OPTIONS]\n";
+  std::cout << "Converts a projection file to a imagefile\n";
+  std::cout << std::endl;
+  std::cout << "   --polar     Convert to polar format\n";
+  std::cout << "   --verbose   Verbose mode\n";
+  std::cout << "   --version   Print version\n";
+  std::cout << "   --help      Print this help message\n";
+}
+
+int
+pj2if_main (const int argc, char *const argv[])
+{
+  char *pj_name, *im_name;
+  bool optVerbose = false;
+  extern int optind;
+  Timer timerProgram;
+
+  while (1)
+    {
+      int c = getopt_long (argc, argv, "", my_options, NULL);
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case O_VERBOSE:
+          optVerbose = true;
+          break;
+        case O_VERSION:
+#ifdef VERSION
+          std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+          std::cout << "Unknown version number\n";
+#endif
+          return (0);
+        case O_HELP:
+        case '?':
+          pj2if_usage(argv[0]);
+          return (0);
+        default:
+          pj2if_usage(argv[0]);
+          return (1);
+        }
+    }
+
+  if (argc - optind != 2) {
+    pj2if_usage(argv[0]);
+    return (1);
+  }
+
+  pj_name = argv[optind];
+  im_name = argv[optind + 1];
+
+  Projections pj;
+  if (! pj.read (pj_name)) {
+    sys_error (ERR_SEVERE, "Can not open projection file %s", pj_name);
+    return (1);
+  }
+
+  if (optVerbose) {
+    std::ostringstream os;
+    pj.printScanInfo (os);
+    std::cout << os.str();
+  }
+
+  ImageFile im (pj.nDet(), pj.nView());
+
+  ImageFileArray v = im.getArray();
+
+  for (int iy = 0; iy < pj.nView(); iy++) {
+    const DetectorArray& detarray = pj.getDetectorArray (pj.nView() - iy - 1);
+    const DetectorValue* detval = detarray.detValues();
+    for (int ix = 0; ix < pj.nDet(); ix++) {
+      v[ix][iy] = detval[ix];
+    }
+  }
+
+  im.labelAdd (pj.getLabel());
+  im.labelAdd (Array2dFileLabel::L_HISTORY, "Conversion from .pj to .if", timerProgram.timerEnd());
+  im.fileWrite (im_name);
+
+  return(0);
+}
+
+
+#ifndef NO_MAIN
+int
+main (const int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = pj2if_main(argc, argv);
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/pjHinterp.cpp b/tools/pjHinterp.cpp
new file mode 100644
index 0000000..bd16744
--- /dev/null
+++ b/tools/pjHinterp.cpp
@@ -0,0 +1,168 @@
+/*****************************************************************************
+ ** FILE IDENTIFICATION
+ **
+ **   Name:          pjHinterp.cpp
+ **   Purpose:       Interpolate helical data in projection space
+ **   Programmer:    Ian Kay and Kevin Rosenberg
+ **   Date Started:  Aug 2001
+ **
+ **  This is part of the CTSim program
+ **  Copyright (C) 1983-2009 Kevin Rosenberg
+ **
+ **  This program is free software; you can redistribute it and/or modify
+ **  it under the terms of the GNU General Public License (version 2) as
+ **  published by the Free Software Foundation.
+ **
+ **  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ ******************************************************************************/
+
+#include "ct.h"
+#include "timer.h"
+
+
+enum { O_INTERPVIEW, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION};
+
+static struct option my_options[] =
+{
+        {"interpview", 1, 0, O_INTERPVIEW},
+        {"trace", 1, 0, O_TRACE},
+        {"debug", 0, 0, O_DEBUG},
+        {"verbose", 0, 0, O_VERBOSE},
+        {"help", 0, 0, O_HELP},
+        {"version", 0, 0, O_VERSION},
+        {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void pjHinterp_usage ( const char *program )
+{
+  std::cout << "usage: " << fileBasename(program) << " projection-file interp-projection-file [OPTIONS]" << std::endl;
+  std::cout << "Interpolation of helical data in raw data space" << std::endl;
+  std::cout << "  projection-file Input projection file" << std::endl;
+  std::cout << "  interp-file     Output interpolated projection file " << std::endl;
+  std::cout << "  --trace         Set tracing to level" << std::endl;
+  std::cout << "     none         No tracing (default)" << std::endl;
+  std::cout << "     console      Text level tracing" << std::endl;
+  std::cout << "  --verbose       Turn on verbose mode" << std::endl;
+  std::cout << "  --debug         Turn on debug mode" << std::endl;
+  std::cout << "  --version       Print version" << std::endl;
+  std::cout << "  --help          Print this help message" << std::endl;
+}
+
+
+int
+pjHinterp_main(int argc, char * const argv[])
+{
+  Projections projGlobal;
+  char* pszProjFilename = NULL;
+  char* pszInterpFilename = NULL;
+  bool bOptVerbose = false;
+  bool bOptDebug = 1;
+  int optTrace = Trace::TRACE_NONE;
+  char *endptr = NULL;
+  char *endstr;
+  int opt_interpview=-1;
+
+  while (1) {
+    int c = getopt_long(argc, argv, "", my_options, NULL);
+
+    if (c == -1)
+      break;
+
+    switch (c) {
+    case O_INTERPVIEW:
+      opt_interpview = strtol(optarg, &endptr, 10);
+      endstr = optarg + strlen(optarg);
+      if (endptr != endstr) {
+        std::cerr << "Error setting --interpview to %s" << optarg << std::endl;
+        pjHinterp_usage(argv[0]);
+        return(1);
+      }
+      break;
+    case O_VERBOSE:
+      bOptVerbose = true;
+      break;
+    case O_DEBUG:
+      bOptDebug = true;
+      break;
+    case O_TRACE:
+      if ((optTrace = Trace::convertTraceNameToID(optarg))
+          == Trace::TRACE_INVALID) {
+        pjHinterp_usage(argv[0]);
+        return (1);
+      }
+      break;
+    case O_VERSION:
+#ifdef VERSION
+      std::cout <<  "Version " <<  VERSION << std::endl <<
+        g_szIdStr << std::endl;
+#else
+      std::cout << "Unknown version number" << std::endl;
+#endif
+      return (0);
+
+    case O_HELP:
+    case '?':
+      pjHinterp_usage(argv[0]);
+      return (0);
+    default:
+      pjHinterp_usage(argv[0]);
+      return (1);
+    } // end switch
+  } // end while
+
+  if (optind + 2 != argc) {
+    pjHinterp_usage(argv[0]);
+    return (1);
+  }
+
+  pszProjFilename = argv[optind];
+
+  pszInterpFilename = argv[optind + 1];
+
+  Projections projections;
+  if ( projections.read(pszProjFilename) != true ){
+    std::cerr << "Error reading input file " << pszProjFilename << std::endl;
+    return (1);
+  }
+  if (bOptVerbose) {
+          std::ostringstream os;
+    projections.printScanInfo(os);
+    std::cout << os.str();
+  }
+
+  int status = projections.Helical180LI(opt_interpview);
+  if ( status != 0 )  return (1);
+  status = projections.HalfScanFeather();
+  if ( status != 0 )  return (1);
+  projections.write( pszInterpFilename  );
+
+  return (0);
+}
+
+
+#ifndef NO_MAIN
+int
+main (int argc, char* argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = pjHinterp_main(argc, argv);
+  } catch (exception e) {
+      std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+      std::cerr << "Unknown exception" << std::endl;
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/pjinfo.cpp b/tools/pjinfo.cpp
new file mode 100644
index 0000000..85d1964
--- /dev/null
+++ b/tools/pjinfo.cpp
@@ -0,0 +1,181 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          pjinfo.cpp
+**   Purpose:       Convert an projection data file to an image file
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  April 2000
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+/* FILE
+*   pjinfo.c                    Convert Raysum to image
+*
+* DATE
+*   August 2000
+*/
+
+#include "ct.h"
+#include "timer.h"
+
+
+enum { O_BINARYHEADER, O_BINARYVIEWS, O_STARTVIEW, O_ENDVIEW, O_DUMP, O_HELP, O_VERSION };
+
+static struct option my_options[] =
+{
+  {"binaryheader", 0, 0, O_BINARYHEADER},
+  {"binaryviews", 0, 0, O_BINARYVIEWS},
+  {"startview", 1, 0, O_STARTVIEW},
+  {"endview", 1, 0, O_ENDVIEW},
+  {"dump", 0, 0, O_DUMP},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void
+pjinfo_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " proj-file [OPTIONS]\n";
+  std::cout << "Display projection file information\n";
+  std::cout << "\n";
+  std::cout << "   --binaryheader  Dump binary header data\n";
+  std::cout << "   --binaryviews   Dump binary view data\n";
+  std::cout << "   --startview n   Beginning view number to display (default=0)\n";
+  std::cout << "   --endview n     Ending view number to display (default=last view)\n";
+  std::cout << "   --dump          Print all scan data ASCII format\n";
+  std::cout << "   --version       Print version\n";
+  std::cout << "   --help          Print this help message\n";
+}
+
+
+
+int
+pjinfo_main (const int argc, char *const argv[])
+{
+  std::string pj_name;
+  bool optDump = false;
+  bool optBinaryHeader = false;
+  bool optBinaryViews = false;
+  int optStartView = 0;
+  int optEndView = -1;  // tells copyViewData to use default last view
+  extern int optind;
+
+  while (1)
+  {
+    char *endptr, *endstr;
+    int c = getopt_long (argc, argv, "", my_options, NULL);
+    if (c == -1)
+      break;
+
+    switch (c)
+    {
+    case O_DUMP:
+      optDump = true;
+      break;
+    case O_BINARYHEADER:
+      optBinaryHeader = true;
+      break;
+    case O_BINARYVIEWS:
+      optBinaryViews = true;
+      break;
+    case O_STARTVIEW:
+      optStartView = strtol(optarg, &endptr, 10);
+      endstr = optarg + strlen(optarg);
+      if (endptr != endstr) {
+        std::cerr << "Error setting --startview to %s" << optarg << std::endl;
+        pjinfo_usage(argv[0]);
+        return (1);
+      }
+      break;
+    case O_ENDVIEW:
+      optEndView = strtol(optarg, &endptr, 10);
+      endstr = optarg + strlen(optarg);
+      if (endptr != endstr) {
+        std::cerr << "Error setting --endview to %s" << optarg << std::endl;
+        pjinfo_usage(argv[0]);
+        return (1);
+      }
+      break;
+    case O_VERSION:
+#ifdef VERSION
+      std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
+#else
+      std::cout << "Unknown version number\n";
+#endif
+      return (0);
+    case O_HELP:
+    case '?':
+      pjinfo_usage(argv[0]);
+      return (0);
+    default:
+      pjinfo_usage(argv[0]);
+      return (1);
+    }
+  }
+
+  if (argc - optind != 1) {
+    pjinfo_usage(argv[0]);
+    return (1);
+  }
+
+  pj_name = argv[optind];
+
+  if (optBinaryHeader)
+    Projections::copyHeader (pj_name, std::cout);
+  else if (optBinaryViews)
+    Projections::copyViewData (pj_name, std::cout, optStartView, optEndView);
+  else {
+    Projections pj;
+    if (! pj.read (pj_name)) {
+      sys_error (ERR_SEVERE, "Can not open projection file %s", pj_name.c_str());
+      return (1);
+    }
+
+    if (optDump) {
+      pj.printProjectionData (optStartView, optEndView);
+    } else {
+      std::ostringstream os;
+      pj.printScanInfo (os);
+      std::cout << os.str();
+    }
+  }
+
+  return(0);
+}
+
+
+#ifndef NO_MAIN
+int
+main (const int argc, char *const argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = pjinfo_main(argc, argv);
+  } catch (exception e) {
+    std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+    std::cerr << "Unknown exception\n";
+  }
+
+  return (retval);
+}
+#endif
diff --git a/tools/pjrec.cpp b/tools/pjrec.cpp
new file mode 100644
index 0000000..5aa16d0
--- /dev/null
+++ b/tools/pjrec.cpp
@@ -0,0 +1,440 @@
+/*****************************************************************************
+** FILE IDENTIFICATION
+**
+**   Name:          pjrec.cpp
+**   Purpose:       Reconstruct an image from projections
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  Aug 1984
+**
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2009 Kevin Rosenberg
+**
+**  This program is free software; you can redistribute it and/or modify
+**  it under the terms of the GNU General Public License (version 2) as
+**  published by the Free Software Foundation.
+**
+**  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+******************************************************************************/
+
+#include "ct.h"
+#include "timer.h"
+
+enum {O_INTERP, O_FILTER, O_FILTER_METHOD, O_ZEROPAD, O_FILTER_PARAM, O_FILTER_GENERATION, O_BACKPROJ, O_PREINTERPOLATION_FACTOR, O_VERBOSE, O_TRACE, O_HELP, O_DEBUG, O_VERSION};
+
+static struct option my_options[] =
+{
+  {"interp", 1, 0, O_INTERP},
+  {"preinterpolation-factor", 1, 0, O_PREINTERPOLATION_FACTOR},
+  {"filter", 1, 0, O_FILTER},
+  {"filter-method", 1, 0, O_FILTER_METHOD},
+  {"zeropad", 1, 0, O_ZEROPAD},
+  {"filter-generation", 1, 0, O_FILTER_GENERATION},
+  {"filter-param", 1, 0, O_FILTER_PARAM},
+  {"backproj", 1, 0, O_BACKPROJ},
+  {"trace", 1, 0, O_TRACE},
+  {"debug", 0, 0, O_DEBUG},
+  {"verbose", 0, 0, O_VERBOSE},
+  {"help", 0, 0, O_HELP},
+  {"version", 0, 0, O_VERSION},
+  {0, 0, 0, 0}
+};
+
+static const char* g_szIdStr = "$Id$";
+
+void
+pjrec_usage (const char *program)
+{
+  std::cout << "usage: " << fileBasename(program) << " raysum-file image-file nx-image ny-image [OPTIONS]" << std::endl;
+  std::cout << "Image reconstruction from raysum projections" << std::endl;
+  std::cout << std::endl;
+  std::cout << "  raysum-file     Input raysum file" << std::endl;
+  std::cout << "  image-file      Output image file in SDF2D format" << std::endl;
+  std::cout << "  nx-image        Number of columns in output image" << std::endl;
+  std::cout << "  ny-image        Number of rows in output image" << std::endl;
+  std::cout << "  --interp        Interpolation method during backprojection" << std::endl;
+  std::cout << "    nearest         Nearest neighbor interpolation" << std::endl;
+  std::cout << "    linear          Linear interpolation (default)" << std::endl;
+  std::cout << "    cubic           Cubic interpolation\n";
+#if HAVE_BSPLINE_INTERP
+  std::cout << "    bspline         B-spline interpolation" << std::endl;
+#endif
+  std::cout << "  --preinterpolate  Preinterpolation factor (default = 1)\n";
+  std::cout << "                    Used only with frequency-based filtering\n";
+  std::cout << "  --filter       Filter name" << std::endl;
+  std::cout << "    abs_bandlimit  Abs * Bandlimiting (default)" << std::endl;
+  std::cout << "    abs_sinc       Abs * Sinc" << std::endl;
+  std::cout << "    abs_cosine     Abs * Cosine" << std::endl;
+  std::cout << "    abs_hamming    Abs * Hamming" << std::endl;
+  std::cout << "    abs_hanning    Abs * Hanning" << std::endl;
+  std::cout << "    shepp          Shepp-Logan" << std::endl;
+  std::cout << "    bandlimit      Bandlimiting" << std::endl;
+  std::cout << "    sinc           Sinc" << std::endl;
+  std::cout << "    cosine         Cosine" << std::endl;
+  std::cout << "    triangle       Triangle" << std::endl;
+  std::cout << "    hamming        Hamming" << std::endl;
+  std::cout << "    hanning        Hanning" << std::endl;
+  std::cout << "  --filter-method  Filter method before backprojections\n";;
+  std::cout << "    convolution      Spatial filtering (default)\n";
+  std::cout << "    fourier          Frequency filtering with discete fourier\n";
+  std::cout << "    fourier_table    Frequency filtering with table lookup fourier\n";
+  std::cout << "    fft              Fast Fourier Transform\n";
+#if HAVE_FFTW
+  std::cout << "    fftw             Fast Fourier Transform West library\n";
+  std::cout << "    rfftw            Fast Fourier Transform West (real-mode) library\n";
+#endif
+  std::cout << "  --zeropad n   Set zeropad level (default = 0)\n";
+  std::cout << "                set n to number of powers to two to pad\n";
+  std::cout << "  --filter-generation  Filter Generation mode\n";
+  std::cout << "    direct       Use direct filter in spatial or frequency domain (default)\n";
+  std::cout << "    inverse_fourier  Use inverse fourier transform of inverse filter\n";
+  std::cout << "  --backproj    Backprojection Method" << std::endl;
+  std::cout << "    trig        Trigometric functions at every point" << std::endl;
+  std::cout << "    table       Trigometric functions with precalculated table" << std::endl;
+  std::cout << "    diff        Difference method" << std::endl;
+  std::cout << "    idiff       Difference method with integer math [default]" << std::endl;
+  std::cout << "  --filter-param Alpha level for Hamming filter" << std::endl;
+  std::cout << "  --trace        Set tracing to level" << std::endl;
+  std::cout << "     none        No tracing (default)" << std::endl;
+  std::cout << "     console     Text level tracing" << std::endl;
+  std::cout << "  --verbose      Turn on verbose mode" << std::endl;
+  std::cout << "  --debug        Turn on debug mode" << std::endl;
+  std::cout << "  --version      Print version" << std::endl;
+  std::cout << "  --help         Print this help message" << std::endl;
+}
+
+
+#ifdef HAVE_MPI
+static void ScatterProjectionsMPI (MPIWorld& mpiWorld, Projections& projGlobal, Projections& projLocal, const bool bDebug);
+static void ReduceImageMPI (MPIWorld& mpiWorld, ImageFile* imLocal, ImageFile* imGlobal);
+#endif
+
+
+int
+pjrec_main (int argc, char * const argv[])
+{
+  Projections projGlobal;
+  ImageFile* imGlobal = NULL;
+  char* pszFilenameProj = NULL;
+  char* pszFilenameImage = NULL;
+  std::string sRemark;
+  bool bOptVerbose = false;
+  bool bOptDebug = 1;
+  int iOptZeropad = 1;
+  int optTrace = Trace::TRACE_NONE;
+  double dOptFilterParam = -1;
+  std::string sOptFilterName (SignalFilter::convertFilterIDToName (SignalFilter::FILTER_ABS_BANDLIMIT));
+  std::string sOptFilterMethodName (ProcessSignal::convertFilterMethodIDToName (ProcessSignal::FILTER_METHOD_CONVOLUTION));
+  std::string sOptFilterGenerationName (ProcessSignal::convertFilterGenerationIDToName (ProcessSignal::FILTER_GENERATION_DIRECT));
+  std::string sOptInterpName (Backprojector::convertInterpIDToName (Backprojector::INTERP_LINEAR));
+  std::string sOptBackprojectName (Backprojector::convertBackprojectIDToName (Backprojector::BPROJ_IDIFF));
+  int iOptPreinterpolationFactor = 1;
+  int nx, ny;
+  char *endptr;
+#ifdef HAVE_MPI
+  ImageFile* imLocal;
+  int mpi_nview, mpi_ndet;
+  double mpi_detinc, mpi_rotinc, mpi_phmlen;
+  MPIWorld mpiWorld (argc, argv);
+#endif
+
+  Timer timerProgram;
+
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0) {
+#endif
+    while (1) {
+      int c = getopt_long(argc, argv, "", my_options, NULL);
+      char *endptr = NULL;
+
+      if (c == -1)
+        break;
+
+      switch (c)
+        {
+        case O_INTERP:
+          sOptInterpName = optarg;
+          break;
+        case O_PREINTERPOLATION_FACTOR:
+          iOptPreinterpolationFactor = strtol(optarg, &endptr, 10);
+          if (endptr != optarg + strlen(optarg)) {
+            pjrec_usage(argv[0]);
+            return(1);
+          }
+          break;
+        case O_FILTER:
+          sOptFilterName = optarg;
+          break;
+        case O_FILTER_METHOD:
+          sOptFilterMethodName = optarg;
+          break;
+        case O_FILTER_GENERATION:
+          sOptFilterGenerationName = optarg;
+          break;
+        case O_FILTER_PARAM:
+          dOptFilterParam = strtod(optarg, &endptr);
+          if (endptr != optarg + strlen(optarg)) {
+            pjrec_usage(argv[0]);
+            return(1);
+          }
+          break;
+        case O_ZEROPAD:
+          iOptZeropad = strtol(optarg, &endptr, 10);
+          if (endptr != optarg + strlen(optarg)) {
+            pjrec_usage(argv[0]);
+            return(1);
+          }
+          break;
+        case O_BACKPROJ:
+          sOptBackprojectName = optarg;
+          break;
+        case O_VERBOSE:
+          bOptVerbose = true;
+          break;
+        case O_DEBUG:
+          bOptDebug = true;
+          break;
+        case O_TRACE:
+          if ((optTrace = Trace::convertTraceNameToID(optarg)) == Trace::TRACE_INVALID) {
+            pjrec_usage(argv[0]);
+            return (1);
+          }
+          break;
+        case O_VERSION:
+#ifdef VERSION
+          std::cout <<  "Version " <<  VERSION << std::endl << g_szIdStr << std::endl;
+#else
+          std::cout << "Unknown version number" << std::endl;
+#endif
+          return (0);
+        case O_HELP:
+        case '?':
+          pjrec_usage(argv[0]);
+          return (0);
+        default:
+          pjrec_usage(argv[0]);
+          return (1);
+        }
+    }
+
+    if (optind + 4 != argc) {
+      pjrec_usage(argv[0]);
+      return (1);
+    }
+
+    pszFilenameProj = argv[optind];
+
+    pszFilenameImage = argv[optind + 1];
+
+    nx = strtol(argv[optind + 2], &endptr, 10);
+    ny = strtol(argv[optind + 3], &endptr, 10);
+
+    std::ostringstream filterDesc;
+    if (dOptFilterParam >= 0)
+      filterDesc << sOptFilterName << ": alpha=" << dOptFilterParam;
+    else
+      filterDesc << sOptFilterName;
+
+    std::ostringstream label;
+    label << "pjrec: " << nx << "x" << ny << ", " << filterDesc.str() << ", " << sOptInterpName << ", preinterpolationFactor=" << iOptPreinterpolationFactor << ", " << sOptBackprojectName;
+    sRemark = label.str();
+
+    if (bOptVerbose)
+      std::cout << "SRemark: " << sRemark << std::endl;
+#ifdef HAVE_MPI
+  }
+#endif
+
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0) {
+    projGlobal.read (pszFilenameProj);
+    if (bOptVerbose) {
+      ostringstream os;
+      projGlobal.printScanInfo (os);
+      std::cout << os.str();
+    }
+
+    mpi_ndet = projGlobal.nDet();
+    mpi_nview = projGlobal.nView();
+    mpi_detinc = projGlobal.detInc();
+    mpi_phmlen = projGlobal.phmLen();
+    mpi_rotinc = projGlobal.rotInc();
+  }
+
+  TimerCollectiveMPI timerBcast (mpiWorld.getComm());
+  mpiWorld.BcastString (sOptBackprojectName);
+  mpiWorld.BcastString (sOptFilterName);
+  mpiWorld.BcastString (sOptFilterMethodName);
+  mpiWorld.BcastString (sOptInterpName);
+  mpiWorld.getComm().Bcast (&bOptVerbose, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&bOptDebug, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&optTrace, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&dOptFilterParam, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&iOptZeropad, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&iOptPreinterpolationFactor, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&mpi_ndet, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&mpi_nview, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&mpi_detinc, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&mpi_phmlen, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&mpi_rotinc, 1, MPI::DOUBLE, 0);
+  mpiWorld.getComm().Bcast (&nx, 1, MPI::INT, 0);
+  mpiWorld.getComm().Bcast (&ny, 1, MPI::INT, 0);
+  if (bOptVerbose)
+      timerBcast.timerEndAndReport ("Time to broadcast variables");
+
+  mpiWorld.setTotalWorkUnits (mpi_nview);
+
+  Projections projLocal (mpiWorld.getMyLocalWorkUnits(), mpi_ndet);
+  projLocal.setDetInc (mpi_detinc);
+  projLocal.setPhmLen (mpi_phmlen);
+  projLocal.setRotInc (mpi_rotinc);
+
+  TimerCollectiveMPI timerScatter (mpiWorld.getComm());
+  ScatterProjectionsMPI (mpiWorld, projGlobal, projLocal, bOptDebug);
+  if (bOptVerbose)
+      timerScatter.timerEndAndReport ("Time to scatter projections");
+
+  if (mpiWorld.getRank() == 0) {
+    imGlobal = new ImageFile (nx, ny);
+  }
+
+  imLocal = new ImageFile (nx, ny);
+#else
+
+  if (! projGlobal.read (pszFilenameProj)) {
+    fprintf(stderr, "Unable to read projectfile file %s\n", pszFilenameProj);
+    exit(1);
+  }
+
+  if (bOptVerbose) {
+    std::ostringstream os;
+    projGlobal.printScanInfo(os);
+    std::cout << os.str();
+  }
+
+  imGlobal = new ImageFile (nx, ny);
+#endif
+
+#ifdef HAVE_MPI
+  TimerCollectiveMPI timerReconstruct (mpiWorld.getComm());
+
+  Reconstructor reconstruct (projLocal, *imLocal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace);
+  if (reconstruct.fail()) {
+    std::cout << reconstruct.failMessage();
+    return (1);
+  }
+  reconstruct.reconstructAllViews();
+
+  if (bOptVerbose)
+      timerReconstruct.timerEndAndReport ("Time to reconstruct");
+
+  TimerCollectiveMPI timerReduce (mpiWorld.getComm());
+  ReduceImageMPI (mpiWorld, imLocal, imGlobal);
+  if (bOptVerbose)
+      timerReduce.timerEndAndReport ("Time to reduce image");
+#else
+  Reconstructor reconstruct (projGlobal, *imGlobal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace);
+  if (reconstruct.fail()) {
+    std::cout << reconstruct.failMessage();
+    return (1);
+  }
+  reconstruct.reconstructAllViews();
+#endif
+
+#ifdef HAVE_MPI
+  if (mpiWorld.getRank() == 0)
+#endif
+    {
+      double dCalcTime = timerProgram.timerEnd();
+      imGlobal->labelAdd (projGlobal.getLabel());
+      imGlobal->labelAdd (Array2dFileLabel::L_HISTORY, sRemark.c_str(), dCalcTime);
+      imGlobal->fileWrite (pszFilenameImage);
+      if (bOptVerbose)
+        std::cout << "Run time: " << dCalcTime << " seconds" << std::endl;
+    }
+#ifdef HAVE_MPI
+  MPI::Finalize();
+#endif
+
+  return (0);
+}
+
+
+//////////////////////////////////////////////////////////////////////////////////////
+// MPI Support Routines
+//
+//////////////////////////////////////////////////////////////////////////////////////
+
+#ifdef HAVE_MPI
+static void ScatterProjectionsMPI (MPIWorld& mpiWorld, Projections& projGlobal, Projections& projLocal, const bool bOptDebug)
+{
+  if (mpiWorld.getRank() == 0) {
+    for (int iProc = 0; iProc < mpiWorld.getNumProcessors(); iProc++) {
+      for (int iw = mpiWorld.getStartWorkUnit(iProc); iw <= mpiWorld.getEndWorkUnit(iProc); iw++) {
+        DetectorArray& detarray = projGlobal.getDetectorArray( iw );
+        int nDet = detarray.nDet();
+        DetectorValue* detval = detarray.detValues();
+
+        double viewAngle = detarray.viewAngle();
+        mpiWorld.getComm().Send(&nDet, 1, MPI::INT, iProc, 0);
+        mpiWorld.getComm().Send(&viewAngle, 1, MPI::DOUBLE, iProc, 0);
+        mpiWorld.getComm().Send(detval, nDet, MPI::FLOAT, iProc, 0);
+      }
+    }
+  }
+
+  for (int iw = 0; iw < mpiWorld.getMyLocalWorkUnits(); iw++) {
+    MPI::Status status;
+    int nDet;
+    double viewAngle;
+    DetectorValue* detval = projLocal.getDetectorArray(iw).detValues();
+
+    mpiWorld.getComm().Recv(&nDet, 1, MPI::INT, 0, 0, status);
+    mpiWorld.getComm().Recv(&viewAngle, 1, MPI::DOUBLE, 0, 0, status);
+    mpiWorld.getComm().Recv(detval, nDet, MPI::FLOAT, 0, 0, status);
+    projLocal.getDetectorArray(iw).setViewAngle( viewAngle );
+  }
+}
+
+static void
+ReduceImageMPI (MPIWorld& mpiWorld, ImageFile* imLocal, ImageFile* imGlobal)
+{
+  ImageFileArray vLocal = imLocal->getArray();
+
+  for (unsigned int ix = 0; ix < imLocal->nx(); ix++) {
+    void *recvbuf = NULL;
+    if (mpiWorld.getRank() == 0) {
+      ImageFileArray vGlobal = imGlobal->getArray();
+      recvbuf = vGlobal[ix];
+    }
+    mpiWorld.getComm().Reduce (vLocal[ix], recvbuf, imLocal->ny(), imLocal->getMPIDataType(), MPI::SUM, 0);
+  }
+}
+
+#endif
+
+
+#ifndef NO_MAIN
+int
+main (int argc, char* argv[])
+{
+  int retval = 1;
+
+  try {
+    retval = pjrec_main(argc, argv);
+  } catch (exception e) {
+          std::cerr << "Exception: " << e.what() << std::endl;
+  } catch (...) {
+          std::cerr << "Unknown exception" << std::endl;
+  }
+
+  return (retval);
+}
+#endif
+
diff --git a/tools/sample-ctsim.sh.in b/tools/sample-ctsim.sh.in
new file mode 100644
index 0000000..ad2c998
--- /dev/null
+++ b/tools/sample-ctsim.sh.in
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+if test "$1" != "" ; then
+  bin=$1
+else
+  bin="@prefix@/bin/"
+fi
+
+if test "$1" = "clean" ; then
+  rm -f sample-phm.png sample-phm16.png sample-phm.if sample-pj.pj sample-pj.if sample-pj.png sample-pj16.png sample-rec.if sample-rec.png sample-rec16.png
+  exit
+fi
+
+# Generate phantom image
+
+${bin}ctsimtext phm2if sample-phm.if 256 256 --nsample 2 --phantom herman
+if [ -f sample-phm.if ] ; then
+  ${bin}ctsimtext ifexport sample-phm.if sample-phm.png --format png
+  ${bin}ctsimtext ifexport sample-phm.if sample-phm16.png --format png16
+fi
+
+# Simulate CT data collection and generate raysum sinugram for display
+${bin}ctsimtext phm2pj  sample-pj.pj 367 320 --nray 2  --phantom herman
+if [ -f sample-pj.pj ]; then
+  ${bin}ctsimtext pj2if  sample-pj.pj sample-pj.if
+fi
+if [ -f sample-pj.if ]; then
+  ${bin}ctsimtext ifexport sample-pj.if sample-pj.png --format png
+  ${bin}ctsimtext ifexport sample-pj.if sample-pj16.png --format png16
+fi
+
+# Reconstruct raysums and generate image for display
+${bin}ctsimtext pjrec   sample-pj.pj sample-rec.if 256 256 
+if [ -f sample-rec.if ]; then 
+  ${bin}ctsimtext ifexport sample-rec.if sample-rec.png --format png
+  ${bin}ctsimtext ifexport sample-rec.if sample-rec16.png --format png16
+
+  # Display comparison statistics
+  ${bin}ctsimtext if2 sample-phm.if sample-rec.if --comp
+fi
+
+# Files sample-phm.png, sample-pj.png, and sample-rec.png are ready for display

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/ctsim.git



More information about the debian-med-commit mailing list